Merge "Update location time docs" into sc-dev
diff --git a/Android.bp b/Android.bp
index ca014bc..da52c23 100644
--- a/Android.bp
+++ b/Android.bp
@@ -408,6 +408,7 @@
         "core/java/android/annotation/MainThread.java",
         "core/java/android/annotation/NonNull.java",
         "core/java/android/annotation/Nullable.java",
+        "core/java/android/annotation/RequiresNoPermission.java",
         "core/java/android/annotation/RequiresPermission.java",
         "core/java/android/annotation/SdkConstant.java",
         "core/java/android/annotation/StringDef.java",
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index 175fb38..65b2511 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -22,7 +22,7 @@
 
 strings_lint_hook = ${REPO_ROOT}/frameworks/base/tools/stringslint/stringslint_sha.sh ${PREUPLOAD_COMMIT}
 
-hidden_api_txt_checksorted_hook = ${REPO_ROOT}/frameworks/base/tools/hiddenapi/checksorted_sha.sh ${PREUPLOAD_COMMIT} ${REPO_ROOT}
+hidden_api_txt_checksorted_hook = ${REPO_ROOT}/tools/platform-compat/hiddenapi/checksorted_sha.sh ${PREUPLOAD_COMMIT} ${REPO_ROOT}
 
 hidden_api_txt_exclude_hook = ${REPO_ROOT}/frameworks/base/tools/hiddenapi/exclude.sh ${PREUPLOAD_COMMIT} ${REPO_ROOT}
 
diff --git a/ProtoLibraries.bp b/ProtoLibraries.bp
index 14415db..7e3cc27 100644
--- a/ProtoLibraries.bp
+++ b/ProtoLibraries.bp
@@ -35,6 +35,7 @@
     srcs: [
         ":ipconnectivity-proto-src",
         ":libstats_atom_enum_protos",
+        ":libstats_atom_message_protos",
         ":libtombstone_proto-src",
         "core/proto/**/*.proto",
         "libs/incident/**/*.proto",
@@ -64,6 +65,7 @@
     srcs: [
         ":ipconnectivity-proto-src",
         ":libstats_atom_enum_protos",
+        ":libstats_atom_message_protos",
         "core/proto/**/*.proto",
         "libs/incident/**/*.proto",
         ":service-permission-protos",
@@ -78,6 +80,7 @@
     srcs: [
         ":ipconnectivity-proto-src",
         ":libstats_atom_enum_protos",
+        ":libstats_atom_message_protos",
         ":libstats_internal_protos",
         ":statsd_internal_protos",
         "cmds/am/proto/instrumentation_data.proto",
@@ -116,6 +119,7 @@
     srcs: [
         ":ipconnectivity-proto-src",
         ":libstats_atom_enum_protos",
+        ":libstats_atom_message_protos",
         "core/proto/**/*.proto",
         "libs/incident/proto/android/os/**/*.proto",
         ":service-permission-protos",
@@ -133,6 +137,7 @@
     srcs: [
         ":ipconnectivity-proto-src",
         ":libstats_atom_enum_protos",
+        ":libstats_atom_message_protos",
         "core/proto/**/*.proto",
         "libs/incident/proto/android/os/**/*.proto",
         ":service-permission-protos",
@@ -169,6 +174,7 @@
     srcs: [
         ":ipconnectivity-proto-src",
         ":libstats_atom_enum_protos",
+        ":libstats_atom_message_protos",
         "core/proto/**/*.proto",
         ":service-permission-protos",
     ],
diff --git a/StubLibraries.bp b/StubLibraries.bp
index 23dc720..bc3f131 100644
--- a/StubLibraries.bp
+++ b/StubLibraries.bp
@@ -96,6 +96,8 @@
     ],
     api_levels_annotations_enabled: false,
     filter_packages: packages_to_document,
+    defaults_visibility: ["//visibility:private"],
+    visibility: ["//frameworks/base/api"],
 }
 
 /////////////////////////////////////////////////////////////////////
@@ -352,6 +354,8 @@
         tag: ".jar",
         dest: "android-non-updatable.jar",
     },
+    defaults_visibility: ["//visibility:private"],
+    visibility: ["//visibility:private"],
 }
 
 java_library_static {
@@ -405,6 +409,8 @@
     system_modules: "none",
     java_version: "1.8",
     compile_dex: true,
+    defaults_visibility: ["//visibility:private"],
+    visibility: ["//visibility:public"],
 }
 
 java_defaults {
@@ -417,6 +423,7 @@
         tag: ".jar",
         dest: "android.jar",
     },
+    defaults_visibility: ["//frameworks/base/services"],
 }
 
 java_library_static {
@@ -516,6 +523,7 @@
         "metalava-manual",
     ],
     args: priv_apps,
+    visibility: ["//visibility:private"],
 }
 
 java_library_static {
@@ -525,4 +533,5 @@
     srcs: [
         ":hwbinder-stubs-docs",
     ],
+    visibility: ["//visibility:public"],
 }
diff --git a/apct-tests/perftests/core/src/android/graphics/perftests/TypefaceSerializationPerfTest.java b/apct-tests/perftests/core/src/android/graphics/perftests/TypefaceSerializationPerfTest.java
index 5473690..d272507 100644
--- a/apct-tests/perftests/core/src/android/graphics/perftests/TypefaceSerializationPerfTest.java
+++ b/apct-tests/perftests/core/src/android/graphics/perftests/TypefaceSerializationPerfTest.java
@@ -20,6 +20,7 @@
 import android.os.SharedMemory;
 import android.perftests.utils.BenchmarkState;
 import android.perftests.utils.PerfStatusReporter;
+import android.util.ArrayMap;
 
 import androidx.test.filters.LargeTest;
 import androidx.test.runner.AndroidJUnit4;
@@ -55,9 +56,10 @@
         ByteBuffer buffer = memory.mapReadOnly().order(ByteOrder.BIG_ENDIAN);
         BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
 
+        ArrayMap<String, Typeface> out = new ArrayMap<>();
         while (state.keepRunning()) {
             buffer.position(0);
-            Typeface.deserializeFontMap(buffer);
+            Typeface.deserializeFontMap(buffer, out);
         }
     }
 
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.java
index 35cea3e..6c62426 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.java
@@ -26,6 +26,7 @@
 
 import java.util.Collections;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * Provides results for AppSearch batch operations which encompass multiple documents.
@@ -180,7 +181,7 @@
         public Builder<KeyType, ValueType> setSuccess(
                 @NonNull KeyType key, @Nullable ValueType result) {
             Preconditions.checkState(!mBuilt, "Builder has already been used");
-            Preconditions.checkNotNull(key);
+            Objects.requireNonNull(key);
             return setResult(key, AppSearchResult.newSuccessfulResult(result));
         }
 
@@ -198,7 +199,7 @@
                 @AppSearchResult.ResultCode int resultCode,
                 @Nullable String errorMessage) {
             Preconditions.checkState(!mBuilt, "Builder has already been used");
-            Preconditions.checkNotNull(key);
+            Objects.requireNonNull(key);
             return setResult(key, AppSearchResult.newFailedResult(resultCode, errorMessage));
         }
 
@@ -214,8 +215,8 @@
         public Builder<KeyType, ValueType> setResult(
                 @NonNull KeyType key, @NonNull AppSearchResult<ValueType> result) {
             Preconditions.checkState(!mBuilt, "Builder has already been used");
-            Preconditions.checkNotNull(key);
-            Preconditions.checkNotNull(result);
+            Objects.requireNonNull(key);
+            Objects.requireNonNull(result);
             if (result.isSuccess()) {
                 mSuccesses.put(key, result.getResultValue());
                 mFailures.remove(key);
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
index 9776827..8af91b4 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
@@ -29,14 +29,16 @@
 /**
  * Provides access to the centralized AppSearch index maintained by the system.
  *
- * <p>AppSearch is a search library for managing structured data featuring:
+ * <p>AppSearch is an offline, on-device search library for managing structured data featuring:
  *
  * <ul>
- *   <li>A fully offline on-device solution
- *   <li>A set of APIs for applications to index documents and retrieve them via full-text search
- *   <li>APIs for applications to allow the System to display their content on system UI surfaces
- *   <li>Similarly, APIs for applications to allow the System to share their content with other
- *       specified applications.
+ *   <li>APIs to index and retrieve data via full-text search.
+ *   <li>An API for applications to explicitly grant read-access permission of their data to other
+ *   applications.
+ *   <b>See: {@link SetSchemaRequest.Builder#setSchemaTypeVisibilityForPackage}</b>
+ *   <li>An API for applications to opt into or out of having their data displayed on System UI
+ *   surfaces by the System-designated global querier.
+ *   <b>See: {@link SetSchemaRequest.Builder#setSchemaTypeDisplayedBySystem}</b>
  * </ul>
  *
  * <p>Applications create a database by opening an {@link AppSearchSession}.
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java
index ac91bdb..c85c4c3 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java
@@ -19,9 +19,9 @@
 import android.annotation.CallbackExecutor;
 import android.annotation.NonNull;
 import android.annotation.UserIdInt;
+import android.app.appsearch.exceptions.AppSearchException;
 import android.app.appsearch.util.SchemaMigrationUtil;
 import android.os.Bundle;
-import android.os.ParcelableException;
 import android.os.RemoteException;
 import android.os.SystemClock;
 import android.util.ArrayMap;
@@ -274,12 +274,14 @@
             mService.putDocuments(mPackageName, mDatabaseName, documentBundles, mUserId,
                     /*binderCallStartTimeMillis=*/ SystemClock.elapsedRealtime(),
                     new IAppSearchBatchResultCallback.Stub() {
+                        @Override
                         public void onResult(AppSearchBatchResult result) {
                             executor.execute(() -> callback.onResult(result));
                         }
 
-                        public void onSystemError(ParcelableException exception) {
-                            executor.execute(() -> callback.onSystemError(exception.getCause()));
+                        @Override
+                        public void onSystemError(AppSearchResult result) {
+                            executor.execute(() -> sendSystemErrorToCallback(result, callback));
                         }
                     });
             mIsMutated = true;
@@ -321,6 +323,7 @@
                     request.getProjectionsInternal(),
                     mUserId,
                     new IAppSearchBatchResultCallback.Stub() {
+                        @Override
                         public void onResult(AppSearchBatchResult result) {
                             executor.execute(() -> {
                                 AppSearchBatchResult.Builder<String, GenericDocument>
@@ -359,8 +362,9 @@
                             });
                         }
 
-                        public void onSystemError(ParcelableException exception) {
-                            executor.execute(() -> callback.onSystemError(exception.getCause()));
+                        @Override
+                        public void onSystemError(AppSearchResult result) {
+                            executor.execute(() -> sendSystemErrorToCallback(result, callback));
                         }
                     });
         } catch (RemoteException e) {
@@ -515,12 +519,14 @@
             mService.removeByUri(mPackageName, mDatabaseName, request.getNamespace(),
                     new ArrayList<>(request.getUris()), mUserId,
                     new IAppSearchBatchResultCallback.Stub() {
+                        @Override
                         public void onResult(AppSearchBatchResult result) {
                             executor.execute(() -> callback.onResult(result));
                         }
 
-                        public void onSystemError(ParcelableException exception) {
-                            executor.execute(() -> callback.onSystemError(exception.getCause()));
+                        @Override
+                        public void onSystemError(AppSearchResult result) {
+                            executor.execute(() -> sendSystemErrorToCallback(result, callback));
                         }
                     });
             mIsMutated = true;
@@ -817,4 +823,21 @@
             }
         });
     }
+
+    /**
+     * Calls {@link BatchResultCallback#onSystemError} with a throwable derived from the given
+     * failed {@link AppSearchResult}.
+     *
+     * <p>The {@link AppSearchResult} generally comes from
+     * {@link IAppSearchBatchResultCallback#onSystemError}.
+     *
+     * <p>This method should be called from the callback executor thread.
+     */
+    private void sendSystemErrorToCallback(
+            @NonNull AppSearchResult<?> failedResult, @NonNull BatchResultCallback<?, ?> callback) {
+        Preconditions.checkArgument(!failedResult.isSuccess());
+        Throwable throwable = new AppSearchException(
+                failedResult.getResultCode(), failedResult.getErrorMessage());
+        callback.onSystemError(throwable);
+    }
 }
diff --git a/apex/appsearch/framework/java/android/app/appsearch/BatchResultCallback.java b/apex/appsearch/framework/java/android/app/appsearch/BatchResultCallback.java
index 49049b6..28f8a7a 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/BatchResultCallback.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/BatchResultCallback.java
@@ -36,13 +36,23 @@
     void onResult(@NonNull AppSearchBatchResult<KeyType, ValueType> result);
 
     /**
-     * Called when a system error occurred.
+     * Called when a system error occurs.
      *
-     * @param throwable The cause throwable.
+     * <p>This method is only called the infrastructure is fundamentally broken or unavailable, such
+     * that none of the requests could be started. For example, it will be called if the AppSearch
+     * service unexpectedly fails to initialize and can't be recovered by any means, or if
+     * communicating to the server over Binder fails (e.g. system service crashed or device is
+     * rebooting).
+     *
+     * <p>The error is not expected to be recoverable and there is no specific recommended action
+     * other than displaying a permanent message to the user.
+     *
+     * <p>Normal errors that are caused by invalid inputs or recoverable/retriable situations
+     * are reported associated with the input that caused them via the {@link #onResult} method.
+     *
+     * @param throwable an exception describing the system error
      */
     default void onSystemError(@Nullable Throwable throwable) {
-        if (throwable != null) {
-            throw new RuntimeException(throwable);
-        }
+        throw new RuntimeException("Unrecoverable system error", throwable);
     }
 }
diff --git a/apex/appsearch/framework/java/android/app/appsearch/IAppSearchBatchResultCallback.aidl b/apex/appsearch/framework/java/android/app/appsearch/IAppSearchBatchResultCallback.aidl
index b1bbd18..64b331e 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/IAppSearchBatchResultCallback.aidl
+++ b/apex/appsearch/framework/java/android/app/appsearch/IAppSearchBatchResultCallback.aidl
@@ -16,10 +16,10 @@
 package android.app.appsearch;
 
 import android.app.appsearch.AppSearchBatchResult;
-import android.os.ParcelableException;
+import android.app.appsearch.AppSearchResult;
 
 /** {@hide} */
 oneway interface IAppSearchBatchResultCallback {
     void onResult(in AppSearchBatchResult result);
-    void onSystemError(in ParcelableException exception);
-}
\ No newline at end of file
+    void onSystemError(in AppSearchResult result);
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/IAppSearchResultCallback.aidl b/apex/appsearch/framework/java/android/app/appsearch/IAppSearchResultCallback.aidl
index 27729a5..299c9957 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/IAppSearchResultCallback.aidl
+++ b/apex/appsearch/framework/java/android/app/appsearch/IAppSearchResultCallback.aidl
@@ -16,9 +16,8 @@
 package android.app.appsearch;
 
 import android.app.appsearch.AppSearchResult;
-import android.os.ParcelableException;
 
 /** {@hide} */
 oneway interface IAppSearchResultCallback {
     void onResult(in AppSearchResult result);
-}
\ No newline at end of file
+}
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
index c3f1978..f6f5c98 100644
--- a/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
+++ b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
@@ -44,7 +44,6 @@
 import android.os.Binder;
 import android.os.Bundle;
 import android.os.ParcelFileDescriptor;
-import android.os.ParcelableException;
 import android.os.RemoteException;
 import android.os.SystemClock;
 import android.os.UserHandle;
@@ -55,7 +54,6 @@
 import android.util.Slog;
 
 import com.android.internal.annotations.GuardedBy;
-import com.android.internal.util.Preconditions;
 import com.android.server.LocalServices;
 import com.android.server.SystemService;
 import com.android.server.appsearch.external.localstorage.AppSearchImpl;
@@ -76,7 +74,7 @@
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.Executor;
-import java.util.concurrent.SynchronousQueue;
+import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
@@ -95,7 +93,7 @@
     // mutate requests will need to gain write lock and query requests need to gain read lock.
     private static final Executor EXECUTOR = new ThreadPoolExecutor(/*corePoolSize=*/1,
             Runtime.getRuntime().availableProcessors(), /*keepAliveTime*/ 60L, TimeUnit.SECONDS,
-            new SynchronousQueue<Runnable>());
+            new LinkedBlockingQueue<>());
 
     // Cache of unlocked user ids so we don't have to query UserManager service each time. The
     // "locked" suffix refers to the fact that access to the field should be locked; unrelated to
@@ -182,10 +180,10 @@
                 int schemaVersion,
                 @UserIdInt int userId,
                 @NonNull IAppSearchResultCallback callback) {
-            Preconditions.checkNotNull(packageName);
-            Preconditions.checkNotNull(databaseName);
-            Preconditions.checkNotNull(schemaBundles);
-            Preconditions.checkNotNull(callback);
+            Objects.requireNonNull(packageName);
+            Objects.requireNonNull(databaseName);
+            Objects.requireNonNull(schemaBundles);
+            Objects.requireNonNull(callback);
             int callingUid = Binder.getCallingUid();
             int callingUserId = handleIncomingUser(userId, callingUid);
             EXECUTOR.execute(() -> {
@@ -231,9 +229,9 @@
                 @NonNull String databaseName,
                 @UserIdInt int userId,
                 @NonNull IAppSearchResultCallback callback) {
-            Preconditions.checkNotNull(packageName);
-            Preconditions.checkNotNull(databaseName);
-            Preconditions.checkNotNull(callback);
+            Objects.requireNonNull(packageName);
+            Objects.requireNonNull(databaseName);
+            Objects.requireNonNull(callback);
             int callingUid = Binder.getCallingUid();
             int callingUserId = handleIncomingUser(userId, callingUid);
             EXECUTOR.execute(() -> {
@@ -258,9 +256,9 @@
                 @NonNull String databaseName,
                 @UserIdInt int userId,
                 @NonNull IAppSearchResultCallback callback) {
-            Preconditions.checkNotNull(packageName);
-            Preconditions.checkNotNull(databaseName);
-            Preconditions.checkNotNull(callback);
+            Objects.requireNonNull(packageName);
+            Objects.requireNonNull(databaseName);
+            Objects.requireNonNull(callback);
             int callingUid = Binder.getCallingUid();
             int callingUserId = handleIncomingUser(userId, callingUid);
             EXECUTOR.execute(() -> {
@@ -286,10 +284,10 @@
                 @UserIdInt int userId,
                 @ElapsedRealtimeLong long binderCallStartTimeMillis,
                 @NonNull IAppSearchBatchResultCallback callback) {
-            Preconditions.checkNotNull(packageName);
-            Preconditions.checkNotNull(databaseName);
-            Preconditions.checkNotNull(documentBundles);
-            Preconditions.checkNotNull(callback);
+            Objects.requireNonNull(packageName);
+            Objects.requireNonNull(databaseName);
+            Objects.requireNonNull(documentBundles);
+            Objects.requireNonNull(callback);
             int callingUid = Binder.getCallingUid();
             int callingUserId = handleIncomingUser(userId, callingUid);
             EXECUTOR.execute(() -> {
@@ -360,11 +358,11 @@
                 @NonNull Map<String, List<String>> typePropertyPaths,
                 @UserIdInt int userId,
                 @NonNull IAppSearchBatchResultCallback callback) {
-            Preconditions.checkNotNull(packageName);
-            Preconditions.checkNotNull(databaseName);
-            Preconditions.checkNotNull(namespace);
-            Preconditions.checkNotNull(uris);
-            Preconditions.checkNotNull(callback);
+            Objects.requireNonNull(packageName);
+            Objects.requireNonNull(databaseName);
+            Objects.requireNonNull(namespace);
+            Objects.requireNonNull(uris);
+            Objects.requireNonNull(callback);
             int callingUid = Binder.getCallingUid();
             int callingUserId = handleIncomingUser(userId, callingUid);
             EXECUTOR.execute(() -> {
@@ -405,11 +403,11 @@
                 @NonNull Bundle searchSpecBundle,
                 @UserIdInt int userId,
                 @NonNull IAppSearchResultCallback callback) {
-            Preconditions.checkNotNull(packageName);
-            Preconditions.checkNotNull(databaseName);
-            Preconditions.checkNotNull(queryExpression);
-            Preconditions.checkNotNull(searchSpecBundle);
-            Preconditions.checkNotNull(callback);
+            Objects.requireNonNull(packageName);
+            Objects.requireNonNull(databaseName);
+            Objects.requireNonNull(queryExpression);
+            Objects.requireNonNull(searchSpecBundle);
+            Objects.requireNonNull(callback);
             int callingUid = Binder.getCallingUid();
             int callingUserId = handleIncomingUser(userId, callingUid);
             EXECUTOR.execute(() -> {
@@ -440,10 +438,10 @@
                 @NonNull Bundle searchSpecBundle,
                 @UserIdInt int userId,
                 @NonNull IAppSearchResultCallback callback) {
-            Preconditions.checkNotNull(packageName);
-            Preconditions.checkNotNull(queryExpression);
-            Preconditions.checkNotNull(searchSpecBundle);
-            Preconditions.checkNotNull(callback);
+            Objects.requireNonNull(packageName);
+            Objects.requireNonNull(queryExpression);
+            Objects.requireNonNull(searchSpecBundle);
+            Objects.requireNonNull(callback);
             int callingUid = Binder.getCallingUid();
             int callingUserId = handleIncomingUser(userId, callingUid);
             EXECUTOR.execute(() -> {
@@ -472,7 +470,7 @@
                 long nextPageToken,
                 @UserIdInt int userId,
                 @NonNull IAppSearchResultCallback callback) {
-            Preconditions.checkNotNull(callback);
+            Objects.requireNonNull(callback);
             int callingUid = Binder.getCallingUid();
             int callingUserId = handleIncomingUser(userId, callingUid);
             // TODO(b/162450968) check nextPageToken is being advanced by the same uid as originally
@@ -645,10 +643,10 @@
                 @NonNull List<String> uris,
                 @UserIdInt int userId,
                 @NonNull IAppSearchBatchResultCallback callback) {
-            Preconditions.checkNotNull(packageName);
-            Preconditions.checkNotNull(databaseName);
-            Preconditions.checkNotNull(uris);
-            Preconditions.checkNotNull(callback);
+            Objects.requireNonNull(packageName);
+            Objects.requireNonNull(databaseName);
+            Objects.requireNonNull(uris);
+            Objects.requireNonNull(callback);
             int callingUid = Binder.getCallingUid();
             int callingUserId = handleIncomingUser(userId, callingUid);
             EXECUTOR.execute(() -> {
@@ -685,11 +683,11 @@
                 @NonNull Bundle searchSpecBundle,
                 @UserIdInt int userId,
                 @NonNull IAppSearchResultCallback callback) {
-            Preconditions.checkNotNull(packageName);
-            Preconditions.checkNotNull(databaseName);
-            Preconditions.checkNotNull(queryExpression);
-            Preconditions.checkNotNull(searchSpecBundle);
-            Preconditions.checkNotNull(callback);
+            Objects.requireNonNull(packageName);
+            Objects.requireNonNull(databaseName);
+            Objects.requireNonNull(queryExpression);
+            Objects.requireNonNull(searchSpecBundle);
+            Objects.requireNonNull(callback);
             int callingUid = Binder.getCallingUid();
             int callingUserId = handleIncomingUser(userId, callingUid);
             EXECUTOR.execute(() -> {
@@ -718,9 +716,9 @@
                 @NonNull String databaseName,
                 @UserIdInt int userId,
                 @NonNull IAppSearchResultCallback callback) {
-            Preconditions.checkNotNull(packageName);
-            Preconditions.checkNotNull(databaseName);
-            Preconditions.checkNotNull(callback);
+            Objects.requireNonNull(packageName);
+            Objects.requireNonNull(databaseName);
+            Objects.requireNonNull(callback);
             int callingUid = Binder.getCallingUid();
             int callingUserId = handleIncomingUser(userId, callingUid);
             EXECUTOR.execute(() -> {
@@ -758,7 +756,7 @@
 
         @Override
         public void initialize(@UserIdInt int userId, @NonNull IAppSearchResultCallback callback) {
-            Preconditions.checkNotNull(callback);
+            Objects.requireNonNull(callback);
             int callingUid = Binder.getCallingUid();
             int callingUserId = handleIncomingUser(userId, callingUid);
             EXECUTOR.execute(() -> {
@@ -789,7 +787,7 @@
         }
 
         private void verifyCallingPackage(int callingUid, @NonNull String callingPackage) {
-            Preconditions.checkNotNull(callingPackage);
+            Objects.requireNonNull(callingPackage);
             if (mPackageManagerInternal.getPackageUid(
                             callingPackage, /*flags=*/ 0, UserHandle.getUserId(callingUid))
                     != callingUid) {
@@ -837,13 +835,12 @@
         /**
          * Invokes the {@link IAppSearchBatchResultCallback} with an unexpected internal throwable.
          *
-         * <p>The throwable is converted to {@link ParcelableException}.
+         * <p>The throwable is converted to {@link AppSearchResult}.
          */
         private void invokeCallbackOnError(
-                IAppSearchBatchResultCallback callback, Throwable throwable) {
+                @NonNull IAppSearchBatchResultCallback callback, @NonNull Throwable throwable) {
             try {
-                //TODO(b/175067650) verify ParcelableException could propagate throwable correctly.
-                callback.onSystemError(new ParcelableException(throwable));
+                callback.onSystemError(throwableToFailedResult(throwable));
             } catch (RemoteException e) {
                 Log.e(TAG, "Unable to send error to the callback", e);
             }
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/VisibilityStore.java b/apex/appsearch/service/java/com/android/server/appsearch/VisibilityStore.java
index c1b8294..4de52fb 100644
--- a/apex/appsearch/service/java/com/android/server/appsearch/VisibilityStore.java
+++ b/apex/appsearch/service/java/com/android/server/appsearch/VisibilityStore.java
@@ -35,7 +35,6 @@
 import android.util.ArraySet;
 import android.util.Log;
 
-import com.android.internal.util.Preconditions;
 import com.android.server.appsearch.external.localstorage.util.PrefixUtil;
 
 import java.util.ArrayList;
@@ -43,6 +42,7 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 
 /**
@@ -333,9 +333,9 @@
             @NonNull Set<String> schemasNotPlatformSurfaceable,
             @NonNull Map<String, List<PackageIdentifier>> schemasPackageAccessible)
             throws AppSearchException {
-        Preconditions.checkNotNull(prefix);
-        Preconditions.checkNotNull(schemasNotPlatformSurfaceable);
-        Preconditions.checkNotNull(schemasPackageAccessible);
+        Objects.requireNonNull(prefix);
+        Objects.requireNonNull(schemasNotPlatformSurfaceable);
+        Objects.requireNonNull(schemasPackageAccessible);
 
         // Persist the document
         GenericDocument.Builder<?> visibilityDocument =
@@ -383,8 +383,8 @@
     /** Checks whether {@code prefixedSchema} can be searched over by the {@code callerUid}. */
     public boolean isSchemaSearchableByCaller(
             @NonNull String prefix, @NonNull String prefixedSchema, int callerUid) {
-        Preconditions.checkNotNull(prefix);
-        Preconditions.checkNotNull(prefixedSchema);
+        Objects.requireNonNull(prefix);
+        Objects.requireNonNull(prefixedSchema);
 
         // We compare appIds here rather than direct uids because the package's uid may change based
         // on the user that's running.
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/stats/PlatformLogger.java b/apex/appsearch/service/java/com/android/server/appsearch/stats/PlatformLogger.java
index 1c04d99..731ab35 100644
--- a/apex/appsearch/service/java/com/android/server/appsearch/stats/PlatformLogger.java
+++ b/apex/appsearch/service/java/com/android/server/appsearch/stats/PlatformLogger.java
@@ -29,7 +29,6 @@
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.FrameworkStatsLog;
-import com.android.internal.util.Preconditions;
 import com.android.server.appsearch.external.localstorage.AppSearchLogger;
 import com.android.server.appsearch.external.localstorage.stats.CallStats;
 import com.android.server.appsearch.external.localstorage.stats.PutDocumentStats;
@@ -38,6 +37,7 @@
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Random;
 
 /**
@@ -162,15 +162,15 @@
      * Westworld constructor
      */
     public PlatformLogger(@NonNull Context context, int userId, @NonNull Config config) {
-        mContext = Preconditions.checkNotNull(context);
-        mConfig = Preconditions.checkNotNull(config);
+        mContext = Objects.requireNonNull(context);
+        mConfig = Objects.requireNonNull(config);
         mUserId = userId;
     }
 
     /** Logs {@link CallStats}. */
     @Override
     public void logStats(@NonNull CallStats stats) {
-        Preconditions.checkNotNull(stats);
+        Objects.requireNonNull(stats);
         synchronized (mLock) {
             if (shouldLogForTypeLocked(stats.getCallType())) {
                 logStatsImplLocked(stats);
@@ -181,7 +181,7 @@
     /** Logs {@link PutDocumentStats}. */
     @Override
     public void logStats(@NonNull PutDocumentStats stats) {
-        Preconditions.checkNotNull(stats);
+        Objects.requireNonNull(stats);
         synchronized (mLock) {
             if (shouldLogForTypeLocked(CallStats.CALL_TYPE_PUT_DOCUMENT)) {
                 logStatsImplLocked(stats);
@@ -197,7 +197,7 @@
     */
     public int removeCachedUidForPackage(@NonNull String packageName) {
         // TODO(b/173532925) This needs to be called when we get PACKAGE_REMOVED intent
-        Preconditions.checkNotNull(packageName);
+        Objects.requireNonNull(packageName);
         synchronized (mLock) {
             Integer uid = mPackageUidCacheLocked.remove(packageName);
             return uid != null ? uid : Process.INVALID_UID;
diff --git a/apex/appsearch/testing/java/com/android/server/appsearch/testing/AppSearchSessionShimImpl.java b/apex/appsearch/testing/java/com/android/server/appsearch/testing/AppSearchSessionShimImpl.java
index f0de496..6193367 100644
--- a/apex/appsearch/testing/java/com/android/server/appsearch/testing/AppSearchSessionShimImpl.java
+++ b/apex/appsearch/testing/java/com/android/server/appsearch/testing/AppSearchSessionShimImpl.java
@@ -40,11 +40,11 @@
 
 import androidx.test.core.app.ApplicationProvider;
 
-import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 
+import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -81,8 +81,8 @@
 
     private AppSearchSessionShimImpl(
             @NonNull AppSearchSession session, @NonNull ExecutorService executor) {
-        mAppSearchSession = Preconditions.checkNotNull(session);
-        mExecutor = Preconditions.checkNotNull(executor);
+        mAppSearchSession = Objects.requireNonNull(session);
+        mExecutor = Objects.requireNonNull(executor);
     }
 
     @Override
diff --git a/apex/appsearch/testing/java/com/android/server/appsearch/testing/GlobalSearchSessionShimImpl.java b/apex/appsearch/testing/java/com/android/server/appsearch/testing/GlobalSearchSessionShimImpl.java
index 5042ce0..c35849d 100644
--- a/apex/appsearch/testing/java/com/android/server/appsearch/testing/GlobalSearchSessionShimImpl.java
+++ b/apex/appsearch/testing/java/com/android/server/appsearch/testing/GlobalSearchSessionShimImpl.java
@@ -30,11 +30,11 @@
 
 import androidx.test.core.app.ApplicationProvider;
 
-import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 
+import java.util.Objects;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
@@ -69,8 +69,8 @@
 
     private GlobalSearchSessionShimImpl(
             @NonNull GlobalSearchSession session, @NonNull ExecutorService executor) {
-        mGlobalSearchSession = Preconditions.checkNotNull(session);
-        mExecutor = Preconditions.checkNotNull(executor);
+        mGlobalSearchSession = Objects.requireNonNull(session);
+        mExecutor = Objects.requireNonNull(executor);
     }
 
     @NonNull
diff --git a/apex/appsearch/testing/java/com/android/server/appsearch/testing/SearchResultsShimImpl.java b/apex/appsearch/testing/java/com/android/server/appsearch/testing/SearchResultsShimImpl.java
index 5f26e8c..72078f8 100644
--- a/apex/appsearch/testing/java/com/android/server/appsearch/testing/SearchResultsShimImpl.java
+++ b/apex/appsearch/testing/java/com/android/server/appsearch/testing/SearchResultsShimImpl.java
@@ -22,12 +22,12 @@
 import android.app.appsearch.SearchResults;
 import android.app.appsearch.SearchResultsShim;
 
-import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 
 import java.util.List;
+import java.util.Objects;
 import java.util.concurrent.Executor;
 
 /**
@@ -40,8 +40,8 @@
     private final SearchResults mSearchResults;
 
     SearchResultsShimImpl(@NonNull SearchResults searchResults, @NonNull Executor executor) {
-        mExecutor = Preconditions.checkNotNull(executor);
-        mSearchResults = Preconditions.checkNotNull(searchResults);
+        mExecutor = Objects.requireNonNull(executor);
+        mSearchResults = Objects.requireNonNull(searchResults);
     }
 
     @NonNull
diff --git a/apex/jobscheduler/framework/java/android/app/AlarmManager.java b/apex/jobscheduler/framework/java/android/app/AlarmManager.java
index 9ea6f79..01f31e4 100644
--- a/apex/jobscheduler/framework/java/android/app/AlarmManager.java
+++ b/apex/jobscheduler/framework/java/android/app/AlarmManager.java
@@ -19,6 +19,7 @@
 import android.Manifest;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
 import android.annotation.SystemApi;
@@ -591,8 +592,8 @@
      *        in milliseconds.  The alarm will be delivered no later than this many
      *        milliseconds after {@code windowStartMillis}.  Note that this parameter
      *        is a <i>duration,</i> not the timestamp of the end of the window.
-     * @param tag string describing the alarm, used for logging and battery-use
-     *         attribution
+     * @param tag Optional. A string describing the alarm, used for logging and battery-use
+     *         attribution.
      * @param listener {@link OnAlarmListener} instance whose
      *         {@link OnAlarmListener#onAlarm() onAlarm()} method will be
      *         called when the alarm time is reached.  A given OnAlarmListener instance can
@@ -605,9 +606,8 @@
     @SystemApi
     @RequiresPermission(Manifest.permission.SCHEDULE_PRIORITIZED_ALARM)
     public void setPrioritized(@AlarmType int type, long windowStartMillis, long windowLengthMillis,
-            @NonNull String tag, @NonNull Executor executor, @NonNull OnAlarmListener listener) {
+            @Nullable String tag, @NonNull Executor executor, @NonNull OnAlarmListener listener) {
         Objects.requireNonNull(executor);
-        Objects.requireNonNull(tag);
         Objects.requireNonNull(listener);
         setImpl(type, windowStartMillis, windowLengthMillis, 0, FLAG_PRIORITIZE, null, listener,
                 tag, executor, null, null);
@@ -782,6 +782,50 @@
                 targetHandler, workSource, null);
     }
 
+    /**
+     * Exact version of {@link #set(int, long, long, long, OnAlarmListener, Handler, WorkSource)}.
+     * This equivalent to calling the aforementioned API with {@code windowMillis} and
+     * {@code intervalMillis} set to 0.
+     * One subtle difference is that this API requires {@code workSource} to be non-null. If you
+     * don't want to attribute this alarm to another app for battery consumption, you should use
+     * {@link #setExact(int, long, String, OnAlarmListener, Handler)} instead.
+     *
+     * <p>
+     * Note that using this API requires you to hold
+     * {@link Manifest.permission#SCHEDULE_EXACT_ALARM}, unless you are on the system's power
+     * allowlist. This can be set, for example, by marking the app as {@code <allow-in-power-save>}
+     * within the system config.
+     *
+     * @param type            type of alarm
+     * @param triggerAtMillis The exact time in milliseconds, that the alarm should be delivered,
+     *                        expressed in the appropriate clock's units (depending on the alarm
+     *                        type).
+     * @param listener        {@link OnAlarmListener} instance whose
+     *                        {@link OnAlarmListener#onAlarm() onAlarm()} method will be called when
+     *                        the alarm time is reached.
+     * @param executor        The {@link Executor} on which to execute the listener's onAlarm()
+     *                        callback.
+     * @param tag             Optional. A string tag used to identify this alarm in logs and
+     *                        battery-attribution.
+     * @param workSource      A {@link WorkSource} object to attribute this alarm to the app that
+     *                        requested this work.
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(allOf = {
+            Manifest.permission.UPDATE_DEVICE_STATS,
+            Manifest.permission.SCHEDULE_EXACT_ALARM}, conditional = true)
+    public void setExact(@AlarmType int type, long triggerAtMillis, @Nullable String tag,
+            @NonNull Executor executor, @NonNull WorkSource workSource,
+            @NonNull OnAlarmListener listener) {
+        Objects.requireNonNull(executor);
+        Objects.requireNonNull(workSource);
+        Objects.requireNonNull(listener);
+        setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, 0, null, listener, tag, executor,
+                workSource, null);
+    }
+
+
     private void setImpl(@AlarmType int type, long triggerAtMillis, long windowMillis,
             long intervalMillis, int flags, PendingIntent operation, final OnAlarmListener listener,
             String listenerTag, Handler targetHandler, WorkSource workSource,
diff --git a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java
index 44e87c3..50f9a58 100644
--- a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java
+++ b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java
@@ -185,6 +185,11 @@
     public static final int REASON_OP_ACTIVATE_VPN = 68;
     /** @hide */
     public static final int REASON_OP_ACTIVATE_PLATFORM_VPN = 69;
+    /**
+     * Temporarily allowed to have FGS while-in-use permissions.
+     * @hide
+     */
+    public static final int REASON_TEMP_ALLOWED_WHILE_IN_USE = 70;
 
     /* BG-FGS-launch is allowed by temp-allow-list or system-allow-list.
        Reason code for temp and system allow list starts here.
@@ -283,9 +288,10 @@
      */
     public static final int REASON_PACKAGE_REPLACED = 311;
     /**
-     * LocationProviderManager.
+     * LocationProvider.
      * @hide
      */
+    @SystemApi
     public static final int REASON_LOCATION_PROVIDER = 312;
     /**
      * MediaButtonReceiver.
@@ -347,6 +353,7 @@
             REASON_ACTIVITY_VISIBILITY_GRACE_PERIOD,
             REASON_OP_ACTIVATE_VPN,
             REASON_OP_ACTIVATE_PLATFORM_VPN,
+            REASON_TEMP_ALLOWED_WHILE_IN_USE,
             // temp and system allow list reasons.
             REASON_GEOFENCING,
             REASON_PUSH_MESSAGING,
@@ -608,6 +615,8 @@
                 return "OP_ACTIVATE_VPN";
             case REASON_OP_ACTIVATE_PLATFORM_VPN:
                 return "OP_ACTIVATE_PLATFORM_VPN";
+            case REASON_TEMP_ALLOWED_WHILE_IN_USE:
+                return "TEMP_ALLOWED_WHILE_IN_USE";
             case REASON_GEOFENCING:
                 return "GEOFENCING";
             case REASON_PUSH_MESSAGING:
diff --git a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
index 29a5dee..4ce31e9 100644
--- a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
+++ b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
@@ -284,9 +284,10 @@
      */
     public static final int REASON_PACKAGE_REPLACED = PowerExemptionManager.REASON_PACKAGE_REPLACED;
     /**
-     * LocationProviderManager.
+     * LocationProvider.
      * @hide
      */
+    @SystemApi
     public static final int REASON_LOCATION_PROVIDER =
             PowerExemptionManager.REASON_LOCATION_PROVIDER;
     /**
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 31da201..03d9a96 100644
--- a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java
@@ -1684,17 +1684,13 @@
             }
         }
 
-        if ((flags & AlarmManager.FLAG_IDLE_UNTIL) != 0) {
-            // Do not support windows for idle-until alarms.
-            windowLength = AlarmManager.WINDOW_EXACT;
-        }
-
         // Snap the window to reasonable limits.
         if (windowLength > INTERVAL_DAY) {
             Slog.w(TAG, "Window length " + windowLength
                     + "ms suspiciously long; limiting to 1 day");
             windowLength = INTERVAL_DAY;
-        } else if (windowLength > 0 && windowLength < mConstants.MIN_WINDOW) {
+        } else if (windowLength > 0 && windowLength < mConstants.MIN_WINDOW
+                && (flags & FLAG_PRIORITIZE) == 0) {
             if (CompatChanges.isChangeEnabled(AlarmManager.ENFORCE_MINIMUM_WINDOW_ON_INEXACT_ALARMS,
                     callingPackage, UserHandle.getUserHandleForUid(callingUid))) {
                 Slog.w(TAG, "Window length " + windowLength + "ms too short; expanding to "
@@ -1741,7 +1737,7 @@
         final long triggerElapsed = (nominalTrigger > minTrigger) ? nominalTrigger : minTrigger;
 
         final long maxElapsed;
-        if (windowLength == AlarmManager.WINDOW_EXACT) {
+        if (windowLength == 0) {
             maxElapsed = triggerElapsed;
         } else if (windowLength < 0) {
             maxElapsed = maxTriggerTime(nowElapsed, triggerElapsed, interval);
@@ -2145,17 +2141,63 @@
                         + " does not belong to the calling uid " + callingUid);
             }
 
-            final boolean allowWhileIdle = (flags & FLAG_ALLOW_WHILE_IDLE) != 0;
-            final boolean exact = (windowLength == AlarmManager.WINDOW_EXACT);
+            // Repeating alarms must use PendingIntent, not direct listener
+            if (interval != 0 && directReceiver != null) {
+                throw new IllegalArgumentException("Repeating alarms cannot use AlarmReceivers");
+            }
 
-            // make sure the caller is allowed to use the requested kind of alarm, and also
+            if (workSource != null) {
+                getContext().enforcePermission(
+                        android.Manifest.permission.UPDATE_DEVICE_STATS,
+                        Binder.getCallingPid(), callingUid, "AlarmManager.set");
+            }
+
+            if ((flags & AlarmManager.FLAG_IDLE_UNTIL) != 0) {
+                // Only the system can use FLAG_IDLE_UNTIL -- this is used to tell the alarm
+                // manager when to come out of idle mode, which is only for DeviceIdleController.
+                if (callingUid != Process.SYSTEM_UID) {
+                    // TODO (b/169463012): Throw instead of tolerating this mistake.
+                    flags &= ~AlarmManager.FLAG_IDLE_UNTIL;
+                } else {
+                    // Do not support windows for idle-until alarms.
+                    windowLength = 0;
+                }
+            }
+
+            // Remove flags reserved for the service, we will apply those later as appropriate.
+            flags &= ~(FLAG_WAKE_FROM_IDLE | FLAG_ALLOW_WHILE_IDLE_UNRESTRICTED
+                    | FLAG_ALLOW_WHILE_IDLE_COMPAT);
+
+            // If this alarm is for an alarm clock, then it must be exact and we will
+            // use it to wake early from idle if needed.
+            if (alarmClock != null) {
+                flags |= FLAG_WAKE_FROM_IDLE;
+                windowLength = 0;
+
+            // If the caller is a core system component or on the user's allowlist, and not calling
+            // to do work on behalf of someone else, then always set ALLOW_WHILE_IDLE_UNRESTRICTED.
+            // This means we will allow these alarms to go off as normal even while idle, with no
+            // timing restrictions.
+            } else if (workSource == null && (UserHandle.isCore(callingUid)
+                    || UserHandle.isSameApp(callingUid, mSystemUiUid)
+                    || ((mAppStateTracker != null)
+                    && mAppStateTracker.isUidPowerSaveUserExempt(callingUid)))) {
+                flags |= FLAG_ALLOW_WHILE_IDLE_UNRESTRICTED;
+                flags &= ~(FLAG_ALLOW_WHILE_IDLE | FLAG_PRIORITIZE);
+            }
+
+            final boolean allowWhileIdle = (flags & FLAG_ALLOW_WHILE_IDLE) != 0;
+            final boolean exact = (windowLength == 0);
+
+            // Make sure the caller is allowed to use the requested kind of alarm, and also
             // decide what quota and broadcast options to use.
             Bundle idleOptions = null;
             if ((flags & FLAG_PRIORITIZE) != 0) {
                 getContext().enforcePermission(
                         Manifest.permission.SCHEDULE_PRIORITIZED_ALARM,
                         Binder.getCallingPid(), callingUid, "AlarmManager.setPrioritized");
-                flags &= ~(FLAG_ALLOW_WHILE_IDLE | FLAG_ALLOW_WHILE_IDLE_COMPAT);
+                // The API doesn't allow using both together.
+                flags &= ~FLAG_ALLOW_WHILE_IDLE;
             } else if (exact || allowWhileIdle) {
                 final boolean needsPermission;
                 boolean lowerQuota;
@@ -2193,55 +2235,11 @@
                 }
             }
 
-            // Repeating alarms must use PendingIntent, not direct listener
-            if (interval != 0) {
-                if (directReceiver != null) {
-                    throw new IllegalArgumentException(
-                            "Repeating alarms cannot use AlarmReceivers");
-                }
-            }
-
-            if (workSource != null) {
-                getContext().enforcePermission(
-                        android.Manifest.permission.UPDATE_DEVICE_STATS,
-                        Binder.getCallingPid(), callingUid, "AlarmManager.set");
-            }
-
-            // No incoming callers can request either WAKE_FROM_IDLE or
-            // ALLOW_WHILE_IDLE_UNRESTRICTED -- we will apply those later as appropriate.
-            flags &= ~(FLAG_WAKE_FROM_IDLE | FLAG_ALLOW_WHILE_IDLE_UNRESTRICTED);
-
-            // Only the system can use FLAG_IDLE_UNTIL -- this is used to tell the alarm
-            // manager when to come out of idle mode, which is only for DeviceIdleController.
-            if (callingUid != Process.SYSTEM_UID) {
-                flags &= ~AlarmManager.FLAG_IDLE_UNTIL;
-            }
-
             // If this is an exact time alarm, then it can't be batched with other alarms.
-            if (windowLength == AlarmManager.WINDOW_EXACT) {
+            if (exact) {
                 flags |= AlarmManager.FLAG_STANDALONE;
             }
 
-            // If this alarm is for an alarm clock, then it must be standalone and we will
-            // use it to wake early from idle if needed.
-            if (alarmClock != null) {
-                flags |= FLAG_WAKE_FROM_IDLE | AlarmManager.FLAG_STANDALONE;
-
-            // If the caller is a core system component or on the user's whitelist, and not calling
-            // to do work on behalf of someone else, then always set ALLOW_WHILE_IDLE_UNRESTRICTED.
-            // This means we will allow these alarms to go off as normal even while idle, with no
-            // timing restrictions.
-            } else if (workSource == null && (UserHandle.isCore(callingUid)
-                    || UserHandle.isSameApp(callingUid, mSystemUiUid)
-                    || ((mAppStateTracker != null)
-                        && mAppStateTracker.isUidPowerSaveUserExempt(callingUid)))) {
-                flags |= FLAG_ALLOW_WHILE_IDLE_UNRESTRICTED;
-                flags &= ~FLAG_ALLOW_WHILE_IDLE;
-                flags &= ~FLAG_ALLOW_WHILE_IDLE_COMPAT;
-                flags &= ~FLAG_PRIORITIZE;
-                idleOptions = null;
-            }
-
             setImpl(type, triggerAtTime, windowLength, interval, operation, directReceiver,
                     listenerTag, flags, workSource, alarmClock, callingUid, callingPackage,
                     idleOptions);
diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/LazyAlarmStore.java b/apex/jobscheduler/service/java/com/android/server/alarm/LazyAlarmStore.java
index c37d2c3..9b1b066 100644
--- a/apex/jobscheduler/service/java/com/android/server/alarm/LazyAlarmStore.java
+++ b/apex/jobscheduler/service/java/com/android/server/alarm/LazyAlarmStore.java
@@ -16,7 +16,6 @@
 
 package com.android.server.alarm;
 
-import static com.android.server.alarm.AlarmManagerService.TAG;
 import static com.android.server.alarm.AlarmManagerService.dumpAlarmList;
 import static com.android.server.alarm.AlarmManagerService.isTimeTickAlarm;
 
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java
index d94d638..7dbd803 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java
@@ -16,6 +16,7 @@
 
 package com.android.server.job;
 
+import static com.android.server.job.JobSchedulerService.MAX_JOB_CONTEXTS_COUNT;
 import static com.android.server.job.JobSchedulerService.sElapsedRealtimeClock;
 
 import android.annotation.IntDef;
@@ -39,7 +40,9 @@
 import android.util.ArraySet;
 import android.util.IndentingPrintWriter;
 import android.util.Pair;
+import android.util.Pools;
 import android.util.Slog;
+import android.util.SparseArrayMap;
 import android.util.SparseIntArray;
 import android.util.SparseLongArray;
 import android.util.TimeUtils;
@@ -60,6 +63,7 @@
 import java.lang.annotation.RetentionPolicy;
 import java.util.Iterator;
 import java.util.List;
+import java.util.function.Consumer;
 
 /**
  * This class decides, given the various configuration and the system status, which jobs can start
@@ -73,6 +77,12 @@
     private static final String KEY_SCREEN_OFF_ADJUSTMENT_DELAY_MS =
             CONFIG_KEY_PREFIX_CONCURRENCY + "screen_off_adjustment_delay_ms";
     private static final long DEFAULT_SCREEN_OFF_ADJUSTMENT_DELAY_MS = 30_000;
+    private static final String KEY_PKG_CONCURRENCY_LIMIT_EJ =
+            CONFIG_KEY_PREFIX_CONCURRENCY + "pkg_concurrency_limit_ej";
+    private static final int DEFAULT_PKG_CONCURRENCY_LIMIT_EJ = 3;
+    private static final String KEY_PKG_CONCURRENCY_LIMIT_REGULAR =
+            CONFIG_KEY_PREFIX_CONCURRENCY + "pkg_concurrency_limit_regular";
+    private static final int DEFAULT_PKG_CONCURRENCY_LIMIT_REGULAR = MAX_JOB_CONTEXTS_COUNT / 2;
 
     /**
      * Set of possible execution types that a job can have. The actual type(s) of a job are based
@@ -165,13 +175,11 @@
     private long mLastScreenOnRealtime;
     private long mLastScreenOffRealtime;
 
-    private static final int MAX_JOB_CONTEXTS_COUNT = JobSchedulerService.MAX_JOB_CONTEXTS_COUNT;
-
     private static final WorkConfigLimitsPerMemoryTrimLevel CONFIG_LIMITS_SCREEN_ON =
             new WorkConfigLimitsPerMemoryTrimLevel(
                     new WorkTypeConfig("screen_on_normal", 11,
                             // defaultMin
-                            List.of(Pair.create(WORK_TYPE_TOP, 2), Pair.create(WORK_TYPE_FGS, 1),
+                            List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 1),
                                     Pair.create(WORK_TYPE_EJ, 3), Pair.create(WORK_TYPE_BG, 2),
                                     Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1)),
                             // defaultMax
@@ -194,7 +202,7 @@
                             List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 1),
                                     Pair.create(WORK_TYPE_EJ, 1)),
                             // defaultMax
-                            List.of(Pair.create(WORK_TYPE_BG, 1),
+                            List.of(Pair.create(WORK_TYPE_BG, 2),
                                     Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1),
                                     Pair.create(WORK_TYPE_BGUSER, 1))
                     ),
@@ -210,23 +218,23 @@
             );
     private static final WorkConfigLimitsPerMemoryTrimLevel CONFIG_LIMITS_SCREEN_OFF =
             new WorkConfigLimitsPerMemoryTrimLevel(
-                    new WorkTypeConfig("screen_off_normal", 15,
+                    new WorkTypeConfig("screen_off_normal", 16,
                             // defaultMin
                             List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 2),
                                     Pair.create(WORK_TYPE_EJ, 3), Pair.create(WORK_TYPE_BG, 2),
                                     Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1)),
                             // defaultMax
-                            List.of(Pair.create(WORK_TYPE_BG, 6),
+                            List.of(Pair.create(WORK_TYPE_BG, 10),
                                     Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 2),
                                     Pair.create(WORK_TYPE_BGUSER, 3))
                     ),
-                    new WorkTypeConfig("screen_off_moderate", 15,
+                    new WorkTypeConfig("screen_off_moderate", 14,
                             // defaultMin
-                            List.of(Pair.create(WORK_TYPE_TOP, 6), Pair.create(WORK_TYPE_FGS, 2),
+                            List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 2),
                                     Pair.create(WORK_TYPE_EJ, 3), Pair.create(WORK_TYPE_BG, 2),
                                     Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1)),
                             // defaultMax
-                            List.of(Pair.create(WORK_TYPE_BG, 4),
+                            List.of(Pair.create(WORK_TYPE_BG, 7),
                                     Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1),
                                     Pair.create(WORK_TYPE_BGUSER, 1))
                     ),
@@ -235,7 +243,7 @@
                             List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 1),
                                     Pair.create(WORK_TYPE_EJ, 2), Pair.create(WORK_TYPE_BG, 1)),
                             // defaultMax
-                            List.of(Pair.create(WORK_TYPE_BG, 1),
+                            List.of(Pair.create(WORK_TYPE_BG, 3),
                                     Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1),
                                     Pair.create(WORK_TYPE_BGUSER, 1))
                     ),
@@ -274,11 +282,28 @@
 
     private final WorkCountTracker mWorkCountTracker = new WorkCountTracker();
 
+    private final Pools.Pool<PackageStats> mPkgStatsPool =
+            new Pools.SimplePool<>(MAX_JOB_CONTEXTS_COUNT);
+
+    private final SparseArrayMap<String, PackageStats> mActivePkgStats = new SparseArrayMap<>();
+
     private WorkTypeConfig mWorkTypeConfig = CONFIG_LIMITS_SCREEN_OFF.normal;
 
     /** Wait for this long after screen off before adjusting the job concurrency. */
     private long mScreenOffAdjustmentDelayMs = DEFAULT_SCREEN_OFF_ADJUSTMENT_DELAY_MS;
 
+    /**
+     * The maximum number of expedited jobs a single userId-package can have running simultaneously.
+     * TOP apps are not limited.
+     */
+    private long mPkgConcurrencyLimitEj = DEFAULT_PKG_CONCURRENCY_LIMIT_EJ;
+
+    /**
+     * The maximum number of regular jobs a single userId-package can have running simultaneously.
+     * TOP apps are not limited.
+     */
+    private long mPkgConcurrencyLimitRegular = DEFAULT_PKG_CONCURRENCY_LIMIT_REGULAR;
+
     /** Current memory trim level. */
     private int mLastMemoryTrimLevel;
 
@@ -286,6 +311,9 @@
     private long mNextSystemStateRefreshTime;
     private static final int SYSTEM_STATE_REFRESH_MIN_INTERVAL = 1000;
 
+    private final Consumer<PackageStats> mPackageStatsStagingCountClearer =
+            PackageStats::resetStagedCount;
+
     private final StatLogger mStatLogger = new StatLogger(new String[]{
             "assignJobsToContexts",
             "refreshSystemState",
@@ -330,6 +358,21 @@
         onInteractiveStateChanged(mPowerManager.isInteractive());
     }
 
+    @GuardedBy("mLock")
+    void onAppRemovedLocked(String pkgName, int uid) {
+        final PackageStats packageStats = mActivePkgStats.get(UserHandle.getUserId(uid), pkgName);
+        if (packageStats != null) {
+            if (packageStats.numRunningEj > 0 || packageStats.numRunningRegular > 0) {
+                // Don't delete the object just yet. We'll remove it in onJobCompleted() when the
+                // jobs officially stop running.
+                Slog.w(TAG,
+                        pkgName + "(" + uid + ") marked as removed before jobs stopped running");
+            } else {
+                mActivePkgStats.delete(UserHandle.getUserId(uid), pkgName);
+            }
+        }
+    }
+
     void onUserRemoved(int userId) {
         mGracePeriodObserver.onUserRemoved(userId);
     }
@@ -557,6 +600,7 @@
             boolean startingJob = false;
             int preemptReasonCode = JobParameters.STOP_REASON_UNDEFINED;
             String preemptReason = null;
+            final boolean pkgConcurrencyOkay = !isPkgConcurrencyLimitedLocked(nextPending);
             // TODO(141645789): rewrite this to look at empty contexts first so we don't
             // unnecessarily preempt
             for (int j = 0; j < MAX_JOB_CONTEXTS_COUNT; j++) {
@@ -566,7 +610,7 @@
                     final boolean preferredUidOkay = (preferredUid == nextPending.getUid())
                             || (preferredUid == JobServiceContext.NO_PREFERRED_UID);
 
-                    if (preferredUidOkay && workType != WORK_TYPE_NONE) {
+                    if (preferredUidOkay && pkgConcurrencyOkay && workType != WORK_TYPE_NONE) {
                         // This slot is free, and we haven't yet hit the limit on
                         // concurrent jobs...  we can just throw the job in to here.
                         selectedContextId = j;
@@ -579,9 +623,11 @@
                     continue;
                 }
                 if (job.getUid() != nextPending.getUid()) {
-                    // Maybe stop the job if it has had its day in the sun.
+                    // Maybe stop the job if it has had its day in the sun. Don't let a different
+                    // app preempt jobs started for TOP apps though.
                     final String reason = shouldStopJobReason[j];
-                    if (reason != null && mWorkCountTracker.canJobStart(allWorkTypes,
+                    if (job.lastEvaluatedPriority < JobInfo.PRIORITY_TOP_APP
+                            && reason != null && mWorkCountTracker.canJobStart(allWorkTypes,
                             activeServices.get(j).getRunningJobWorkType()) != WORK_TYPE_NONE) {
                         // Right now, the way the code is set up, we don't need to explicitly
                         // assign the new job to this context since we'll reassign when the
@@ -608,23 +654,27 @@
                     // actually starting a job, so don't set startingJob.
                 }
             }
+            final PackageStats packageStats = getPkgStatsLocked(
+                    nextPending.getSourceUserId(), nextPending.getSourcePackageName());
             if (selectedContextId != -1) {
                 contextIdToJobMap[selectedContextId] = nextPending;
                 slotChanged[selectedContextId] = true;
                 preemptReasonCodeForContext[selectedContextId] = preemptReasonCode;
                 preemptReasonForContext[selectedContextId] = preemptReason;
+                packageStats.adjustStagedCount(true, nextPending.shouldTreatAsExpeditedJob());
             }
             if (startingJob) {
                 // Increase the counters when we're going to start a job.
                 workTypeForContext[selectedContextId] = workType;
                 mWorkCountTracker.stageJob(workType, allWorkTypes);
+                mActivePkgStats.add(
+                        nextPending.getSourceUserId(), nextPending.getSourcePackageName(),
+                        packageStats);
             }
         }
         if (DEBUG) {
             Slog.d(TAG, printContextIdToJobMap(contextIdToJobMap, "running jobs final"));
-        }
 
-        if (DEBUG) {
             Slog.d(TAG, "assignJobsToContexts: " + mWorkCountTracker.toString());
         }
 
@@ -660,6 +710,7 @@
             }
         }
         mWorkCountTracker.resetStagingCount();
+        mActivePkgStats.forEach(mPackageStatsStagingCountClearer);
         noteConcurrency();
     }
 
@@ -702,18 +753,70 @@
     }
 
     @GuardedBy("mLock")
+    @NonNull
+    private PackageStats getPkgStatsLocked(int userId, @NonNull String packageName) {
+        PackageStats packageStats = mActivePkgStats.get(userId, packageName);
+        if (packageStats == null) {
+            packageStats = mPkgStatsPool.acquire();
+            if (packageStats == null) {
+                packageStats = new PackageStats();
+            }
+            packageStats.setPackage(userId, packageName);
+        }
+        return packageStats;
+    }
+
+    @GuardedBy("mLock")
+    private boolean isPkgConcurrencyLimitedLocked(@NonNull JobStatus jobStatus) {
+        if (jobStatus.lastEvaluatedPriority >= JobInfo.PRIORITY_TOP_APP) {
+            // Don't restrict top apps' concurrency. The work type limits will make sure
+            // background jobs have slots to run if the system has resources.
+            return false;
+        }
+        // Use < instead of <= as that gives us a little wiggle room in case a new job comes
+        // along very shortly.
+        if (mService.mPendingJobs.size() + mRunningJobs.size() < mWorkTypeConfig.getMaxTotal()) {
+            // Don't artificially limit a single package if we don't even have enough jobs to use
+            // the maximum number of slots. We'll preempt the job later if we need the slot.
+            return false;
+        }
+        final PackageStats packageStats =
+                mActivePkgStats.get(jobStatus.getSourceUserId(), jobStatus.getSourcePackageName());
+        if (packageStats == null) {
+            // No currently running jobs.
+            return false;
+        }
+        if (jobStatus.shouldTreatAsExpeditedJob()) {
+            return packageStats.numRunningEj + packageStats.numStagedEj < mPkgConcurrencyLimitEj;
+        } else {
+            return packageStats.numRunningRegular + packageStats.numStagedRegular
+                    < mPkgConcurrencyLimitRegular;
+        }
+    }
+
+    @GuardedBy("mLock")
     private void startJobLocked(@NonNull JobServiceContext worker, @NonNull JobStatus jobStatus,
             @WorkType final int workType) {
         final List<StateController> controllers = mService.mControllers;
-        for (int ic = 0; ic < controllers.size(); ic++) {
+        final int numControllers = controllers.size();
+        for (int ic = 0; ic < numControllers; ic++) {
             controllers.get(ic).prepareForExecutionLocked(jobStatus);
         }
+        final PackageStats packageStats =
+                getPkgStatsLocked(jobStatus.getSourceUserId(), jobStatus.getSourcePackageName());
+        packageStats.adjustStagedCount(false, jobStatus.shouldTreatAsExpeditedJob());
         if (!worker.executeRunnableJob(jobStatus, workType)) {
             Slog.e(TAG, "Error executing " + jobStatus);
             mWorkCountTracker.onStagedJobFailed(workType);
+            for (int ic = 0; ic < numControllers; ic++) {
+                controllers.get(ic).unprepareFromExecutionLocked(jobStatus);
+            }
         } else {
             mRunningJobs.add(jobStatus);
             mWorkCountTracker.onJobStarted(workType);
+            packageStats.adjustRunningCount(true, jobStatus.shouldTreatAsExpeditedJob());
+            mActivePkgStats.add(
+                    jobStatus.getSourceUserId(), jobStatus.getSourcePackageName(), packageStats);
         }
         final List<JobStatus> pendingJobs = mService.mPendingJobs;
         if (pendingJobs.remove(jobStatus)) {
@@ -726,6 +829,18 @@
             @WorkType final int workType) {
         mWorkCountTracker.onJobFinished(workType);
         mRunningJobs.remove(jobStatus);
+        final PackageStats packageStats =
+                mActivePkgStats.get(jobStatus.getSourceUserId(), jobStatus.getSourcePackageName());
+        if (packageStats == null) {
+            Slog.wtf(TAG, "Running job didn't have an active PackageStats object");
+        } else {
+            packageStats.adjustRunningCount(false, jobStatus.startedAsExpeditedJob);
+            if (packageStats.numRunningEj <= 0 && packageStats.numRunningRegular <= 0) {
+                mActivePkgStats.delete(packageStats.userId, packageStats.packageName);
+                mPkgStatsPool.release(packageStats);
+            }
+        }
+
         final List<JobStatus> pendingJobs = mService.mPendingJobs;
         if (worker.getPreferredUid() != JobServiceContext.NO_PREFERRED_UID) {
             updateCounterConfigLocked();
@@ -746,7 +861,7 @@
                 }
 
                 if (worker.getPreferredUid() != nextPending.getUid()) {
-                    if (backupJob == null) {
+                    if (backupJob == null && !isPkgConcurrencyLimitedLocked(nextPending)) {
                         int allWorkTypes = getJobWorkTypes(nextPending);
                         int workAsType = mWorkCountTracker.canJobStart(allWorkTypes);
                         if (workAsType != WORK_TYPE_NONE) {
@@ -758,6 +873,13 @@
                     continue;
                 }
 
+                // Only bypass the concurrent limit if we had preempted the job due to a higher
+                // priority job.
+                if (nextPending.lastEvaluatedPriority <= jobStatus.lastEvaluatedPriority
+                        && isPkgConcurrencyLimitedLocked(nextPending)) {
+                    continue;
+                }
+
                 if (highestPriorityJob == null
                         || highestPriorityJob.lastEvaluatedPriority
                         < nextPending.lastEvaluatedPriority) {
@@ -815,6 +937,10 @@
                     continue;
                 }
 
+                if (isPkgConcurrencyLimitedLocked(nextPending)) {
+                    continue;
+                }
+
                 final int allWorkTypes = getJobWorkTypes(nextPending);
                 final int workAsType = mWorkCountTracker.canJobStart(allWorkTypes);
                 if (workAsType == WORK_TYPE_NONE) {
@@ -979,8 +1105,16 @@
         CONFIG_LIMITS_SCREEN_OFF.moderate.update(properties);
         CONFIG_LIMITS_SCREEN_OFF.low.update(properties);
         CONFIG_LIMITS_SCREEN_OFF.critical.update(properties);
+
+        // Package concurrency limits must in the range [1, MAX_JOB_CONTEXTS_COUNT].
+        mPkgConcurrencyLimitEj = Math.max(1, Math.min(MAX_JOB_CONTEXTS_COUNT,
+                properties.getInt(KEY_PKG_CONCURRENCY_LIMIT_EJ, DEFAULT_PKG_CONCURRENCY_LIMIT_EJ)));
+        mPkgConcurrencyLimitRegular = Math.max(1, Math.min(MAX_JOB_CONTEXTS_COUNT,
+                properties.getInt(
+                        KEY_PKG_CONCURRENCY_LIMIT_REGULAR, DEFAULT_PKG_CONCURRENCY_LIMIT_REGULAR)));
     }
 
+    @GuardedBy("mLock")
     public void dumpLocked(IndentingPrintWriter pw, long now, long nowRealtime) {
         pw.println("Concurrency:");
 
@@ -989,6 +1123,8 @@
             pw.println("Configuration:");
             pw.increaseIndent();
             pw.print(KEY_SCREEN_OFF_ADJUSTMENT_DELAY_MS, mScreenOffAdjustmentDelayMs).println();
+            pw.print(KEY_PKG_CONCURRENCY_LIMIT_EJ, mPkgConcurrencyLimitEj).println();
+            pw.print(KEY_PKG_CONCURRENCY_LIMIT_REGULAR, mPkgConcurrencyLimitRegular).println();
             pw.println();
             CONFIG_LIMITS_SCREEN_ON.normal.dump(pw);
             pw.println();
@@ -1033,6 +1169,12 @@
             pw.println(mLastMemoryTrimLevel);
             pw.println();
 
+            pw.println("Active Package stats:");
+            pw.increaseIndent();
+            mActivePkgStats.forEach(pkgStats -> pkgStats.dumpLocked(pw));
+            pw.decreaseIndent();
+            pw.println();
+
             pw.print("User Grace Period: ");
             pw.println(mGracePeriodObserver.mGracePeriodExpiration);
             pw.println();
@@ -1620,4 +1762,53 @@
             return sb.toString();
         }
     }
+
+    private static class PackageStats {
+        public int userId;
+        public String packageName;
+        public int numRunningEj;
+        public int numRunningRegular;
+        public int numStagedEj;
+        public int numStagedRegular;
+
+        private void setPackage(int userId, @NonNull String packageName) {
+            this.userId = userId;
+            this.packageName = packageName;
+            numRunningEj = numRunningRegular = 0;
+            resetStagedCount();
+        }
+
+        private void resetStagedCount() {
+            numStagedEj = numStagedRegular = 0;
+        }
+
+        private void adjustRunningCount(boolean add, boolean forEj) {
+            if (forEj) {
+                numRunningEj = Math.max(0, numRunningEj + (add ? 1 : -1));
+            } else {
+                numRunningRegular = Math.max(0, numRunningRegular + (add ? 1 : -1));
+            }
+        }
+
+        private void adjustStagedCount(boolean add, boolean forEj) {
+            if (forEj) {
+                numStagedEj = Math.max(0, numStagedEj + (add ? 1 : -1));
+            } else {
+                numStagedRegular = Math.max(0, numStagedRegular + (add ? 1 : -1));
+            }
+        }
+
+        @GuardedBy("mLock")
+        private void dumpLocked(IndentingPrintWriter pw) {
+            pw.print("PackageStats{");
+            pw.print(userId);
+            pw.print("-");
+            pw.print(packageName);
+            pw.print("#runEJ", numRunningEj);
+            pw.print("#runReg", numRunningRegular);
+            pw.print("#stagedEJ", numStagedEj);
+            pw.print("#stagedReg", numStagedRegular);
+            pw.println("}");
+        }
+    }
 }
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
index d72f565b..1815661 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
@@ -816,6 +816,7 @@
                         mControllers.get(c).onAppRemovedLocked(pkgName, pkgUid);
                     }
                     mDebuggableApps.remove(pkgName);
+                    mConcurrencyManager.onAppRemovedLocked(pkgName, pkgUid);
                 }
             } else if (Intent.ACTION_USER_ADDED.equals(action)) {
                 final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0);
@@ -2233,7 +2234,8 @@
     }
 
     /** Returns true if both the calling and source users for the job are started. */
-    private boolean areUsersStartedLocked(final JobStatus job) {
+    @GuardedBy("mLock")
+    public boolean areUsersStartedLocked(final JobStatus job) {
         boolean sourceStarted = ArrayUtils.contains(mStartedUsers, job.getSourceUserId());
         if (job.getUserId() == job.getSourceUserId()) {
             return sourceStarted;
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/ComponentController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/ComponentController.java
index 999c53f..12d9c7f 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/ComponentController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/ComponentController.java
@@ -34,6 +34,7 @@
 import android.util.SparseArrayMap;
 import android.util.proto.ProtoOutputStream;
 
+import com.android.internal.annotations.GuardedBy;
 import com.android.server.job.JobSchedulerService;
 
 import java.util.Objects;
@@ -58,13 +59,28 @@
                 return;
             }
             switch (action) {
+                case Intent.ACTION_PACKAGE_ADDED:
+                    if (intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) {
+                        // Only do this for app updates since new installs won't have any jobs
+                        // scheduled.
+                        final Uri uri = intent.getData();
+                        final String pkg = uri != null ? uri.getSchemeSpecificPart() : null;
+                        if (pkg != null) {
+                            final int pkgUid = intent.getIntExtra(Intent.EXTRA_UID, -1);
+                            final int userId = UserHandle.getUserId(pkgUid);
+                            updateComponentStateForPackage(userId, pkg);
+                        }
+                    }
+                    break;
                 case Intent.ACTION_PACKAGE_CHANGED:
                     final Uri uri = intent.getData();
                     final String pkg = uri != null ? uri.getSchemeSpecificPart() : null;
                     final String[] changedComponents = intent.getStringArrayExtra(
                             Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST);
                     if (pkg != null && changedComponents != null && changedComponents.length > 0) {
-                        updateComponentStateForPackage(pkg);
+                        final int pkgUid = intent.getIntExtra(Intent.EXTRA_UID, -1);
+                        final int userId = UserHandle.getUserId(pkgUid);
+                        updateComponentStateForPackage(userId, pkg);
                     }
                     break;
                 case Intent.ACTION_USER_UNLOCKED:
@@ -86,6 +102,7 @@
         super(service);
 
         final IntentFilter filter = new IntentFilter();
+        filter.addAction(Intent.ACTION_PACKAGE_ADDED);
         filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
         filter.addDataScheme("package");
         mContext.registerReceiverAsUser(
@@ -99,6 +116,7 @@
     }
 
     @Override
+    @GuardedBy("mLock")
     public void maybeStartTrackingJobLocked(JobStatus jobStatus, JobStatus lastJob) {
         updateComponentEnabledStateLocked(jobStatus);
     }
@@ -108,30 +126,53 @@
             boolean forUpdate) {
     }
 
+    @Override
+    @GuardedBy("mLock")
+    public void onAppRemovedLocked(String packageName, int uid) {
+        clearComponentsForPackageLocked(UserHandle.getUserId(uid), packageName);
+    }
+
+    @Override
+    @GuardedBy("mLock")
+    public void onUserRemovedLocked(int userId) {
+        mServiceInfoCache.delete(userId);
+    }
+
     @Nullable
-    private ServiceInfo getServiceInfo(JobStatus jobStatus) {
+    @GuardedBy("mLock")
+    private ServiceInfo getServiceInfoLocked(JobStatus jobStatus) {
         final ComponentName service = jobStatus.getServiceComponent();
         final int userId = jobStatus.getUserId();
-        ServiceInfo si = mServiceInfoCache.get(userId, service);
-        if (si == null) {
-            try {
-                // createContextAsUser may potentially be expensive
-                // TODO: cache user context or improve ContextImpl implementation if this becomes
-                // a problem
-                si = mContext.createContextAsUser(UserHandle.of(userId), 0)
-                        .getPackageManager()
-                        .getServiceInfo(service, PackageManager.MATCH_DIRECT_BOOT_AUTO);
-            } catch (NameNotFoundException e) {
-                Slog.e(TAG, "Job exists for non-existent package: " + service.getPackageName());
-                return null;
-            }
-            mServiceInfoCache.add(userId, service, si);
+        if (mServiceInfoCache.contains(userId, service)) {
+            // Return whatever is in the cache, even if it's null. When something changes, we
+            // clear the cache.
+            return mServiceInfoCache.get(userId, service);
         }
+
+        ServiceInfo si;
+        try {
+            // createContextAsUser may potentially be expensive
+            // TODO: cache user context or improve ContextImpl implementation if this becomes
+            // a problem
+            si = mContext.createContextAsUser(UserHandle.of(userId), 0)
+                    .getPackageManager()
+                    .getServiceInfo(service, PackageManager.MATCH_DIRECT_BOOT_AUTO);
+        } catch (NameNotFoundException e) {
+            if (mService.areUsersStartedLocked(jobStatus)) {
+                // User is fully unlocked but PM still says the package doesn't exist.
+                Slog.e(TAG, "Job exists for non-existent package: " + service.getPackageName());
+            }
+            // Write null to the cache so we don't keep querying PM.
+            si = null;
+        }
+        mServiceInfoCache.add(userId, service, si);
+
         return si;
     }
 
+    @GuardedBy("mLock")
     private boolean updateComponentEnabledStateLocked(JobStatus jobStatus) {
-        final ServiceInfo service = getServiceInfo(jobStatus);
+        final ServiceInfo service = getServiceInfoLocked(jobStatus);
 
         if (DEBUG && service == null) {
             Slog.v(TAG, jobStatus.toShortString() + " component not present");
@@ -141,20 +182,26 @@
         return !Objects.equals(ogService, service);
     }
 
-    private void updateComponentStateForPackage(final String pkg) {
-        synchronized (mLock) {
-            for (int u = mServiceInfoCache.numMaps() - 1; u >= 0; --u) {
-                final int userId = mServiceInfoCache.keyAt(u);
-
-                for (int c = mServiceInfoCache.numElementsForKey(userId) - 1; c >= 0; --c) {
-                    final ComponentName cn = mServiceInfoCache.keyAt(u, c);
-                    if (cn.getPackageName().equals(pkg)) {
-                        mServiceInfoCache.delete(userId, cn);
-                    }
-                }
+    @GuardedBy("mLock")
+    private void clearComponentsForPackageLocked(final int userId, final String pkg) {
+        final int uIdx = mServiceInfoCache.indexOfKey(userId);
+        for (int c = mServiceInfoCache.numElementsForKey(userId) - 1; c >= 0; --c) {
+            final ComponentName cn = mServiceInfoCache.keyAt(uIdx, c);
+            if (cn.getPackageName().equals(pkg)) {
+                mServiceInfoCache.delete(userId, cn);
             }
-            updateComponentStatesLocked(
-                    jobStatus -> jobStatus.getServiceComponent().getPackageName().equals(pkg));
+        }
+    }
+
+    private void updateComponentStateForPackage(final int userId, final String pkg) {
+        synchronized (mLock) {
+            clearComponentsForPackageLocked(userId, pkg);
+            updateComponentStatesLocked(jobStatus -> {
+                // Using user ID instead of source user ID because the service will run under the
+                // user ID, not source user ID.
+                return jobStatus.getUserId() == userId
+                        && jobStatus.getServiceComponent().getPackageName().equals(pkg);
+            });
         }
     }
 
@@ -169,6 +216,7 @@
         }
     }
 
+    @GuardedBy("mLock")
     private void updateComponentStatesLocked(@NonNull Predicate<JobStatus> filter) {
         mComponentStateUpdateFunctor.reset();
         mService.getJobStore().forEachJob(filter, mComponentStateUpdateFunctor);
@@ -178,24 +226,40 @@
     }
 
     final class ComponentStateUpdateFunctor implements Consumer<JobStatus> {
+        @GuardedBy("mLock")
         boolean mChanged;
 
         @Override
+        @GuardedBy("mLock")
         public void accept(JobStatus jobStatus) {
             mChanged |= updateComponentEnabledStateLocked(jobStatus);
         }
 
+        @GuardedBy("mLock")
         private void reset() {
             mChanged = false;
         }
     }
 
     @Override
+    @GuardedBy("mLock")
     public void dumpControllerStateLocked(IndentingPrintWriter pw, Predicate<JobStatus> predicate) {
-
+        for (int u = 0; u < mServiceInfoCache.numMaps(); ++u) {
+            final int userId = mServiceInfoCache.keyAt(u);
+            for (int p = 0; p < mServiceInfoCache.numElementsForKey(userId); ++p) {
+                final ComponentName componentName = mServiceInfoCache.keyAt(u, p);
+                pw.print(userId);
+                pw.print("-");
+                pw.print(componentName);
+                pw.print(": ");
+                pw.print(mServiceInfoCache.valueAt(u, p));
+                pw.println();
+            }
+        }
     }
 
     @Override
+    @GuardedBy("mLock")
     public void dumpControllerStateLocked(ProtoOutputStream proto, long fieldId,
             Predicate<JobStatus> predicate) {
 
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java
index 500735b..2bdf656 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java
@@ -77,7 +77,7 @@
             || Log.isLoggable(TAG, Log.DEBUG);
 
     // The networking stack has a hard limit so we can't make this configurable.
-    private static final int MAX_NETWORK_CALLBACKS = 50;
+    private static final int MAX_NETWORK_CALLBACKS = 125;
     /**
      * Minimum amount of time that should have elapsed before we'll update a {@link UidStats}
      * instance.
@@ -148,7 +148,8 @@
             //   9. Enqueue time
             // TODO: maybe consider number of jobs
             // TODO: consider IMPORTANT_WHILE_FOREGROUND bit
-            final int runningPriority = prioritizeExistenceOver(0, us1.numRunning, us2.numRunning);
+            final int runningPriority = prioritizeExistenceOver(0,
+                    us1.runningJobs.size(), us2.runningJobs.size());
             if (runningPriority != 0) {
                 return runningPriority;
             }
@@ -256,7 +257,18 @@
         if (jobStatus.hasConnectivityConstraint()) {
             final UidStats uidStats =
                     getUidStats(jobStatus.getSourceUid(), jobStatus.getSourcePackageName(), true);
-            uidStats.numRunning++;
+            uidStats.runningJobs.add(jobStatus);
+        }
+    }
+
+    @GuardedBy("mLock")
+    @Override
+    public void unprepareFromExecutionLocked(JobStatus jobStatus) {
+        if (jobStatus.hasConnectivityConstraint()) {
+            final UidStats uidStats =
+                    getUidStats(jobStatus.getSourceUid(), jobStatus.getSourcePackageName(), true);
+            uidStats.runningJobs.remove(jobStatus);
+            postAdjustCallbacks();
         }
     }
 
@@ -272,12 +284,7 @@
             final UidStats uidStats =
                     getUidStats(jobStatus.getSourceUid(), jobStatus.getSourcePackageName(), true);
             uidStats.numReadyWithConnectivity--;
-            if (jobStatus.madeActive != 0) {
-                // numRunning would be 0 if the UidStats object didn't exist before this method
-                // was called. getUidStats() handles logging, so just make sure we don't save a
-                // negative value.
-                uidStats.numRunning = Math.max(0, uidStats.numRunning - 1);
-            }
+            uidStats.runningJobs.remove(jobStatus);
             maybeRevokeStandbyExceptionLocked(jobStatus);
             postAdjustCallbacks();
         }
@@ -1151,7 +1158,7 @@
     private static class UidStats {
         public final int uid;
         public int basePriority;
-        public int numRunning;
+        public final ArraySet<JobStatus> runningJobs = new ArraySet<>();
         public int numReadyWithConnectivity;
         public int numRequestedNetworkAvailable;
         public int numEJs;
@@ -1168,7 +1175,7 @@
             pw.print("UidStats{");
             pw.print("uid", uid);
             pw.print("pri", basePriority);
-            pw.print("#run", numRunning);
+            pw.print("#run", runningJobs.size());
             pw.print("#readyWithConn", numReadyWithConnectivity);
             pw.print("#netAvail", numRequestedNetworkAvailable);
             pw.print("#EJs", numEJs);
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/ContentObserverController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/ContentObserverController.java
index 8b0da34..e64233f 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/ContentObserverController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/ContentObserverController.java
@@ -136,6 +136,29 @@
     }
 
     @Override
+    public void unprepareFromExecutionLocked(JobStatus taskStatus) {
+        if (taskStatus.hasContentTriggerConstraint()) {
+            if (taskStatus.contentObserverJobInstance != null) {
+                if (taskStatus.contentObserverJobInstance.mChangedUris == null) {
+                    taskStatus.contentObserverJobInstance.mChangedUris = taskStatus.changedUris;
+                } else {
+                    taskStatus.contentObserverJobInstance.mChangedUris
+                            .addAll(taskStatus.changedUris);
+                }
+                if (taskStatus.contentObserverJobInstance.mChangedAuthorities == null) {
+                    taskStatus.contentObserverJobInstance.mChangedAuthorities =
+                            taskStatus.changedAuthorities;
+                } else {
+                    taskStatus.contentObserverJobInstance.mChangedAuthorities
+                            .addAll(taskStatus.changedAuthorities);
+                }
+                taskStatus.changedUris = null;
+                taskStatus.changedAuthorities = null;
+            }
+        }
+    }
+
+    @Override
     public void maybeStopTrackingJobLocked(JobStatus taskStatus, JobStatus incomingJob,
             boolean forUpdate) {
         if (taskStatus.clearTrackingController(JobStatus.TRACKING_CONTENT)) {
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java
index d4ce437..aace645 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java
@@ -34,7 +34,6 @@
 import android.annotation.UserIdInt;
 import android.app.ActivityManager;
 import android.app.AlarmManager;
-import android.app.AppGlobals;
 import android.app.IUidObserver;
 import android.app.usage.UsageEvents;
 import android.app.usage.UsageStatsManagerInternal;
@@ -677,27 +676,30 @@
     }
 
     @Override
-    public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob,
-            boolean forUpdate) {
-        if (jobStatus.clearTrackingController(JobStatus.TRACKING_QUOTA)) {
-            Timer timer = mPkgTimers.get(jobStatus.getSourceUserId(),
-                    jobStatus.getSourcePackageName());
+    public void unprepareFromExecutionLocked(JobStatus jobStatus) {
+        Timer timer = mPkgTimers.get(jobStatus.getSourceUserId(), jobStatus.getSourcePackageName());
+        if (timer != null) {
+            timer.stopTrackingJob(jobStatus);
+        }
+        if (jobStatus.isRequestedExpeditedJob()) {
+            timer = mEJPkgTimers.get(jobStatus.getSourceUserId(), jobStatus.getSourcePackageName());
             if (timer != null) {
                 timer.stopTrackingJob(jobStatus);
             }
-            if (jobStatus.isRequestedExpeditedJob()) {
-                timer = mEJPkgTimers.get(jobStatus.getSourceUserId(),
-                        jobStatus.getSourcePackageName());
-                if (timer != null) {
-                    timer.stopTrackingJob(jobStatus);
-                }
-            }
+        }
+        mTopStartedJobs.remove(jobStatus);
+    }
+
+    @Override
+    public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob,
+            boolean forUpdate) {
+        if (jobStatus.clearTrackingController(JobStatus.TRACKING_QUOTA)) {
+            unprepareFromExecutionLocked(jobStatus);
             ArraySet<JobStatus> jobs = mTrackedJobs.get(jobStatus.getSourceUserId(),
                     jobStatus.getSourcePackageName());
             if (jobs != null) {
                 jobs.remove(jobStatus);
             }
-            mTopStartedJobs.remove(jobStatus);
         }
     }
 
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java
index 334876f..f0fc3b0 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java
@@ -76,6 +76,12 @@
     }
 
     /**
+     * Optionally implement logic here for when a job that was about to be executed failed to start.
+     */
+    public void unprepareFromExecutionLocked(JobStatus jobStatus) {
+    }
+
+    /**
      * Remove task - this will happen if the task is cancelled, completed, etc.
      */
     public abstract void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob,
diff --git a/apex/jobscheduler/service/jni/Android.bp b/apex/jobscheduler/service/jni/Android.bp
index c630217..34a1fa2 100644
--- a/apex/jobscheduler/service/jni/Android.bp
+++ b/apex/jobscheduler/service/jni/Android.bp
@@ -24,30 +24,8 @@
     ],
 
     shared_libs: [
-         "libnativehelper",
-         "liblog",
-         "libbase",
-    ],
-
-    product_variables: {
-        arc: {
-            exclude_srcs: [
-                "com_android_server_alarm_AlarmManagerService.cpp",
-            ],
-            srcs: [
-                ":arctimersrcs",
-            ],
-        }
-    },
-}
-
-filegroup {
-    name: "lib_alarmManagerService_native",
-    srcs: [
-        "com_android_server_alarm_AlarmManagerService.cpp",
-    ],
-    visibility: [
-        // TODO: remove this
-        "//vendor:__subpackages__",
+        "libnativehelper",
+        "liblog",
+        "libbase",
     ],
 }
diff --git a/apex/media/framework/api/current.txt b/apex/media/framework/api/current.txt
index bebf019..b7d7ed8 100644
--- a/apex/media/framework/api/current.txt
+++ b/apex/media/framework/api/current.txt
@@ -10,7 +10,6 @@
     method @NonNull public java.util.List<java.lang.String> getUnsupportedVideoMimeTypes();
     method public boolean isFormatSpecified(@NonNull String);
     method public boolean isHdrTypeSupported(@NonNull String);
-    method public boolean isSlowMotionSupported();
     method public boolean isVideoMimeTypeSupported(@NonNull String);
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.media.ApplicationMediaCapabilities> CREATOR;
diff --git a/apex/media/framework/java/android/media/ApplicationMediaCapabilities.java b/apex/media/framework/java/android/media/ApplicationMediaCapabilities.java
index 3f30d3e..97fa0ec 100644
--- a/apex/media/framework/java/android/media/ApplicationMediaCapabilities.java
+++ b/apex/media/framework/java/android/media/ApplicationMediaCapabilities.java
@@ -242,7 +242,7 @@
                 }
             };
 
-    /*
+    /**
      * Query the video codec mime types supported by the application.
      * @return List of supported video codec mime types. The list will be empty if there are none.
      */
@@ -251,7 +251,7 @@
         return new ArrayList<>(mSupportedVideoMimeTypes);
     }
 
-    /*
+    /**
      * Query the video codec mime types that are not supported by the application.
      * @return List of unsupported video codec mime types. The list will be empty if there are none.
      */
@@ -260,7 +260,7 @@
         return new ArrayList<>(mUnsupportedVideoMimeTypes);
     }
 
-    /*
+    /**
      * Query all hdr types that are supported by the application.
      * @return List of supported hdr types. The list will be empty if there are none.
      */
@@ -269,7 +269,7 @@
         return new ArrayList<>(mSupportedHdrTypes);
     }
 
-    /*
+    /**
      * Query all hdr types that are not supported by the application.
      * @return List of unsupported hdr types. The list will be empty if there are none.
      */
@@ -278,7 +278,7 @@
         return new ArrayList<>(mUnsupportedHdrTypes);
     }
 
-    /*
+    /**
      * Whether handling of slow-motion video is supported
      * @hide
      */
diff --git a/boot/Android.bp b/boot/Android.bp
index 844dd64..ef2abc8 100644
--- a/boot/Android.bp
+++ b/boot/Android.bp
@@ -44,6 +44,19 @@
 platform_bootclasspath {
     name: "platform-bootclasspath",
 
+    // The bootclasspath_fragments that contribute to the platform
+    // bootclasspath.
+    fragments: [
+        {
+            apex: "com.android.art",
+            module: "art-bootclasspath-fragment",
+        },
+        {
+            apex: "com.android.i18n",
+            module: "i18n-bootclasspath-fragment",
+        },
+    ],
+
     // Additional information needed by hidden api processing.
     hidden_api: {
         unsupported: [
@@ -64,9 +77,6 @@
         max_target_o_low_priority: [
             "hiddenapi/hiddenapi-max-target-o.txt",
         ],
-        blocked: [
-            "hiddenapi/hiddenapi-force-blocked.txt",
-        ],
         unsupported_packages: [
             "hiddenapi/hiddenapi-unsupported-packages.txt",
         ],
diff --git a/boot/hiddenapi/hiddenapi-force-blocked.txt b/boot/hiddenapi/hiddenapi-force-blocked.txt
deleted file mode 100644
index b328f2a..0000000
--- a/boot/hiddenapi/hiddenapi-force-blocked.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-Ldalvik/system/VMRuntime;->setHiddenApiExemptions([Ljava/lang/String;)V
-Ldalvik/system/VMRuntime;->setTargetSdkVersion(I)V
-Ldalvik/system/VMRuntime;->setTargetSdkVersionNative(I)V
-Ljava/lang/invoke/MethodHandles$Lookup;->IMPL_LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
-Ljava/lang/invoke/VarHandle;->acquireFence()V
-Ljava/lang/invoke/VarHandle;->compareAndExchange([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->compareAndExchangeAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->compareAndExchangeRelease([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->compareAndSet([Ljava/lang/Object;)Z
-Ljava/lang/invoke/VarHandle;->fullFence()V
-Ljava/lang/invoke/VarHandle;->get([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndAdd([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndAddAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndAddRelease([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseAnd([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseAndAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseAndRelease([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseOr([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseOrAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseOrRelease([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseXor([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseXorAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndBitwiseXorRelease([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndSet([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndSetAcquire([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getAndSetRelease([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getOpaque([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->getVolatile([Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/VarHandle;->loadLoadFence()V
-Ljava/lang/invoke/VarHandle;->releaseFence()V
-Ljava/lang/invoke/VarHandle;->set([Ljava/lang/Object;)V
-Ljava/lang/invoke/VarHandle;->setOpaque([Ljava/lang/Object;)V
-Ljava/lang/invoke/VarHandle;->setRelease([Ljava/lang/Object;)V
-Ljava/lang/invoke/VarHandle;->setVolatile([Ljava/lang/Object;)V
-Ljava/lang/invoke/VarHandle;->storeStoreFence()V
-Ljava/lang/invoke/VarHandle;->weakCompareAndSet([Ljava/lang/Object;)Z
-Ljava/lang/invoke/VarHandle;->weakCompareAndSetAcquire([Ljava/lang/Object;)Z
-Ljava/lang/invoke/VarHandle;->weakCompareAndSetPlain([Ljava/lang/Object;)Z
-Ljava/lang/invoke/VarHandle;->weakCompareAndSetRelease([Ljava/lang/Object;)Z
diff --git a/boot/hiddenapi/hiddenapi-max-target-o.txt b/boot/hiddenapi/hiddenapi-max-target-o.txt
index 3fee568..45ebbb1 100644
--- a/boot/hiddenapi/hiddenapi-max-target-o.txt
+++ b/boot/hiddenapi/hiddenapi-max-target-o.txt
@@ -25375,7248 +25375,6 @@
 Landroid/hardware/usb/UsbRequest;->native_queue_array([BIZ)Z
 Landroid/hardware/usb/UsbRequest;->native_queue_direct(Ljava/nio/ByteBuffer;IZ)Z
 Landroid/hardware/usb/UsbRequest;->TAG:Ljava/lang/String;
-Landroid/icu/impl/BMPSet;->bmpBlockBits:[I
-Landroid/icu/impl/BMPSet;->containsSlow(III)Z
-Landroid/icu/impl/BMPSet;->findCodePoint(III)I
-Landroid/icu/impl/BMPSet;->initBits()V
-Landroid/icu/impl/BMPSet;->latin1Contains:[Z
-Landroid/icu/impl/BMPSet;->list4kStarts:[I
-Landroid/icu/impl/BMPSet;->list:[I
-Landroid/icu/impl/BMPSet;->listLength:I
-Landroid/icu/impl/BMPSet;->set32x64Bits([III)V
-Landroid/icu/impl/BMPSet;->table7FF:[I
-Landroid/icu/impl/CacheValue$NullValue;-><init>()V
-Landroid/icu/impl/CacheValue$SoftValue;-><init>(Ljava/lang/Object;)V
-Landroid/icu/impl/CacheValue$SoftValue;->ref:Ljava/lang/ref/Reference;
-Landroid/icu/impl/CacheValue$StrongValue;-><init>(Ljava/lang/Object;)V
-Landroid/icu/impl/CacheValue$StrongValue;->value:Ljava/lang/Object;
-Landroid/icu/impl/CacheValue;->NULL_VALUE:Landroid/icu/impl/CacheValue;
-Landroid/icu/impl/CacheValue;->strength:Landroid/icu/impl/CacheValue$Strength;
-Landroid/icu/impl/CalendarAstronomer$AngleFunc;->eval()D
-Landroid/icu/impl/CalendarAstronomer$CoordFunc;->eval()Landroid/icu/impl/CalendarAstronomer$Equatorial;
-Landroid/icu/impl/CalendarAstronomer$MoonAge;-><init>(D)V
-Landroid/icu/impl/CalendarAstronomer$MoonAge;->value:D
-Landroid/icu/impl/CalendarAstronomer$SolarLongitude;-><init>(D)V
-Landroid/icu/impl/CalendarAstronomer$SolarLongitude;->value:D
-Landroid/icu/impl/CalendarAstronomer;->clearCache()V
-Landroid/icu/impl/CalendarAstronomer;->DEG_RAD:D
-Landroid/icu/impl/CalendarAstronomer;->eclipObliquity:D
-Landroid/icu/impl/CalendarAstronomer;->eclipticObliquity()D
-Landroid/icu/impl/CalendarAstronomer;->EPOCH_2000_MS:J
-Landroid/icu/impl/CalendarAstronomer;->fGmtOffset:J
-Landroid/icu/impl/CalendarAstronomer;->fLatitude:D
-Landroid/icu/impl/CalendarAstronomer;->fLongitude:D
-Landroid/icu/impl/CalendarAstronomer;->getSiderealOffset()D
-Landroid/icu/impl/CalendarAstronomer;->getSunLongitude(D)[D
-Landroid/icu/impl/CalendarAstronomer;->INVALID:D
-Landroid/icu/impl/CalendarAstronomer;->JD_EPOCH:D
-Landroid/icu/impl/CalendarAstronomer;->julianCentury:D
-Landroid/icu/impl/CalendarAstronomer;->julianDay:D
-Landroid/icu/impl/CalendarAstronomer;->lstToUT(D)J
-Landroid/icu/impl/CalendarAstronomer;->meanAnomalySun:D
-Landroid/icu/impl/CalendarAstronomer;->moonA:D
-Landroid/icu/impl/CalendarAstronomer;->moonE:D
-Landroid/icu/impl/CalendarAstronomer;->moonEclipLong:D
-Landroid/icu/impl/CalendarAstronomer;->moonI:D
-Landroid/icu/impl/CalendarAstronomer;->moonL0:D
-Landroid/icu/impl/CalendarAstronomer;->moonLongitude:D
-Landroid/icu/impl/CalendarAstronomer;->moonN0:D
-Landroid/icu/impl/CalendarAstronomer;->moonP0:D
-Landroid/icu/impl/CalendarAstronomer;->moonPi:D
-Landroid/icu/impl/CalendarAstronomer;->moonPosition:Landroid/icu/impl/CalendarAstronomer$Equatorial;
-Landroid/icu/impl/CalendarAstronomer;->moonT0:D
-Landroid/icu/impl/CalendarAstronomer;->norm2PI(D)D
-Landroid/icu/impl/CalendarAstronomer;->normalize(DD)D
-Landroid/icu/impl/CalendarAstronomer;->normPI(D)D
-Landroid/icu/impl/CalendarAstronomer;->PI2:D
-Landroid/icu/impl/CalendarAstronomer;->PI:D
-Landroid/icu/impl/CalendarAstronomer;->radToDms(D)Ljava/lang/String;
-Landroid/icu/impl/CalendarAstronomer;->radToHms(D)Ljava/lang/String;
-Landroid/icu/impl/CalendarAstronomer;->RAD_DEG:D
-Landroid/icu/impl/CalendarAstronomer;->RAD_HOUR:D
-Landroid/icu/impl/CalendarAstronomer;->riseOrSet(Landroid/icu/impl/CalendarAstronomer$CoordFunc;ZDDJ)J
-Landroid/icu/impl/CalendarAstronomer;->siderealT0:D
-Landroid/icu/impl/CalendarAstronomer;->siderealTime:D
-Landroid/icu/impl/CalendarAstronomer;->sunLongitude:D
-Landroid/icu/impl/CalendarAstronomer;->SUN_E:D
-Landroid/icu/impl/CalendarAstronomer;->SUN_ETA_G:D
-Landroid/icu/impl/CalendarAstronomer;->SUN_OMEGA_G:D
-Landroid/icu/impl/CalendarAstronomer;->time:J
-Landroid/icu/impl/CalendarAstronomer;->timeOfAngle(Landroid/icu/impl/CalendarAstronomer$AngleFunc;DDJZ)J
-Landroid/icu/impl/CalendarAstronomer;->trueAnomaly(DD)D
-Landroid/icu/impl/CalendarCache;->arraySize:I
-Landroid/icu/impl/CalendarCache;->findIndex(J)I
-Landroid/icu/impl/CalendarCache;->hash(J)I
-Landroid/icu/impl/CalendarCache;->hash2(J)I
-Landroid/icu/impl/CalendarCache;->keys:[J
-Landroid/icu/impl/CalendarCache;->makeArrays(I)V
-Landroid/icu/impl/CalendarCache;->pIndex:I
-Landroid/icu/impl/CalendarCache;->primes:[I
-Landroid/icu/impl/CalendarCache;->rehash()V
-Landroid/icu/impl/CalendarCache;->size:I
-Landroid/icu/impl/CalendarCache;->threshold:I
-Landroid/icu/impl/CalendarCache;->values:[J
-Landroid/icu/impl/CharTrie;->m_data_:[C
-Landroid/icu/impl/CharTrie;->m_initialValue_:C
-Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->DEFAULT_CTX_MATCH:Ljava/lang/String;
-Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->DEFAULT_CUR_MATCH:Ljava/lang/String;
-Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->DEFAULT_INSERT:Ljava/lang/String;
-Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->symbols:[[Ljava/lang/String;
-Landroid/icu/impl/CurrencyData$DefaultInfo;-><init>(Z)V
-Landroid/icu/impl/CurrencyData$DefaultInfo;->fallback:Z
-Landroid/icu/impl/CurrencyData$DefaultInfo;->FALLBACK_INSTANCE:Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo;
-Landroid/icu/impl/CurrencyData$DefaultInfo;->NO_FALLBACK_INSTANCE:Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->AFTER:Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->AT:Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->BEFORE:Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->FROM:Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->fromStringOrNull(Ljava/lang/CharSequence;)Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->valueOf(Ljava/lang/String;)Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$CutoffType;->values()[Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$DayPeriod;->fromStringOrNull(Ljava/lang/CharSequence;)Landroid/icu/impl/DayPeriodRules$DayPeriod;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesCountSink;-><init>(Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;)V
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesCountSink;->data:Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;-><init>()V
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;->localesToRuleSetNumMap:Ljava/util/Map;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;->maxRuleSetNum:I
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;->rules:[Landroid/icu/impl/DayPeriodRules;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;-><init>(Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;)V
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->addCutoff(Landroid/icu/impl/DayPeriodRules$CutoffType;Ljava/lang/String;)V
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->cutoffs:[I
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->cutoffType:Landroid/icu/impl/DayPeriodRules$CutoffType;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->data:Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->parseHour(Ljava/lang/String;)I
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->period:Landroid/icu/impl/DayPeriodRules$DayPeriod;
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->processRules(Landroid/icu/impl/UResource$Table;Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->ruleSetNum:I
-Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->setDayPeriodForHoursFromCutoffs()V
-Landroid/icu/impl/DayPeriodRules;-><init>()V
-Landroid/icu/impl/DayPeriodRules;->add(IILandroid/icu/impl/DayPeriodRules$DayPeriod;)V
-Landroid/icu/impl/DayPeriodRules;->DATA:Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;
-Landroid/icu/impl/DayPeriodRules;->dayPeriodForHour:[Landroid/icu/impl/DayPeriodRules$DayPeriod;
-Landroid/icu/impl/DayPeriodRules;->getEndHourForDayPeriod(Landroid/icu/impl/DayPeriodRules$DayPeriod;)I
-Landroid/icu/impl/DayPeriodRules;->getStartHourForDayPeriod(Landroid/icu/impl/DayPeriodRules$DayPeriod;)I
-Landroid/icu/impl/DayPeriodRules;->hasMidnight:Z
-Landroid/icu/impl/DayPeriodRules;->hasNoon:Z
-Landroid/icu/impl/DayPeriodRules;->loadData()Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;
-Landroid/icu/impl/DayPeriodRules;->parseSetNum(Ljava/lang/String;)I
-Landroid/icu/impl/ICUBinary$DataFile;-><init>(Ljava/lang/String;)V
-Landroid/icu/impl/ICUBinary$DataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
-Landroid/icu/impl/ICUBinary$DataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary$DataFile;->itemPath:Ljava/lang/String;
-Landroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable;-><init>()V
-Landroid/icu/impl/ICUBinary$DatPackageReader;-><init>()V
-Landroid/icu/impl/ICUBinary$DatPackageReader;->addBaseName(Ljava/nio/ByteBuffer;ILjava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/util/Set;)Z
-Landroid/icu/impl/ICUBinary$DatPackageReader;->addBaseNamesInFolder(Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
-Landroid/icu/impl/ICUBinary$DatPackageReader;->binarySearch(Ljava/nio/ByteBuffer;Ljava/lang/CharSequence;)I
-Landroid/icu/impl/ICUBinary$DatPackageReader;->DATA_FORMAT:I
-Landroid/icu/impl/ICUBinary$DatPackageReader;->getData(Ljava/nio/ByteBuffer;Ljava/lang/CharSequence;)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary$DatPackageReader;->getDataOffset(Ljava/nio/ByteBuffer;I)I
-Landroid/icu/impl/ICUBinary$DatPackageReader;->getNameOffset(Ljava/nio/ByteBuffer;I)I
-Landroid/icu/impl/ICUBinary$DatPackageReader;->IS_ACCEPTABLE:Landroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable;
-Landroid/icu/impl/ICUBinary$DatPackageReader;->startsWithPackageName(Ljava/nio/ByteBuffer;I)Z
-Landroid/icu/impl/ICUBinary$DatPackageReader;->validate(Ljava/nio/ByteBuffer;)Z
-Landroid/icu/impl/ICUBinary$PackageDataFile;-><init>(Ljava/lang/String;Ljava/nio/ByteBuffer;)V
-Landroid/icu/impl/ICUBinary$PackageDataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
-Landroid/icu/impl/ICUBinary$PackageDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary$PackageDataFile;->pkgBytes:Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary$SingleDataFile;-><init>(Ljava/lang/String;Ljava/io/File;)V
-Landroid/icu/impl/ICUBinary$SingleDataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
-Landroid/icu/impl/ICUBinary$SingleDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary$SingleDataFile;->path:Ljava/io/File;
-Landroid/icu/impl/ICUBinary;->addDataFilesFromFolder(Ljava/io/File;Ljava/lang/StringBuilder;Ljava/util/List;)V
-Landroid/icu/impl/ICUBinary;->addDataFilesFromPath(Ljava/lang/String;Ljava/util/List;)V
-Landroid/icu/impl/ICUBinary;->CHAR_SET_:B
-Landroid/icu/impl/ICUBinary;->CHAR_SIZE_:B
-Landroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;I)I
-Landroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;[BI)I
-Landroid/icu/impl/ICUBinary;->getData(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Z)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary;->getDataFromFile(Ljava/lang/String;)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUBinary;->HEADER_AUTHENTICATION_FAILED_:Ljava/lang/String;
-Landroid/icu/impl/ICUBinary;->icuDataFiles:Ljava/util/List;
-Landroid/icu/impl/ICUBinary;->MAGIC1:B
-Landroid/icu/impl/ICUBinary;->MAGIC2:B
-Landroid/icu/impl/ICUBinary;->MAGIC_NUMBER_AUTHENTICATION_FAILED_:Ljava/lang/String;
-Landroid/icu/impl/ICUBinary;->mapFile(Ljava/io/File;)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;-><init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->fullNameSet:Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->getFullLocaleNameSet()Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->getLocaleList()[Ljava/util/Locale;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->getLocaleNameSet()Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->getULocaleList()[Landroid/icu/util/ULocale;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->loader:Ljava/lang/ClassLoader;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->locales:[Ljava/util/Locale;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->nameSet:Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->prefix:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;->ulocales:[Landroid/icu/util/ULocale;
-Landroid/icu/impl/ICUResourceBundle$Loader;-><init>()V
-Landroid/icu/impl/ICUResourceBundle$Loader;->load()Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundleReader;)V
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;->baseName:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;->loader:Ljava/lang/ClassLoader;
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;->localeID:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;->reader:Landroid/icu/impl/ICUResourceBundleReader;
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;->topLevelKeys:Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle$WholeBundle;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/impl/ICUResourceBundle;->addBundleBaseNamesFromClassLoader(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/Set;)V
-Landroid/icu/impl/ICUResourceBundle;->addLocaleIDsFromIndexBundle(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/Set;)V
-Landroid/icu/impl/ICUResourceBundle;->addLocaleIDsFromListFile(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/Set;)V
-Landroid/icu/impl/ICUResourceBundle;->BUNDLE_CACHE:Landroid/icu/impl/CacheBase;
-Landroid/icu/impl/ICUResourceBundle;->container:Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle;->countPathKeys(Ljava/lang/String;)I
-Landroid/icu/impl/ICUResourceBundle;->createFullLocaleNameSet(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle;->createLocaleNameSet(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set;
-Landroid/icu/impl/ICUResourceBundle;->createULocaleList(Ljava/lang/String;Ljava/lang/ClassLoader;)[Landroid/icu/util/ULocale;
-Landroid/icu/impl/ICUResourceBundle;->DEBUG:Z
-Landroid/icu/impl/ICUResourceBundle;->DEFAULT_TAG:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->findResourceWithFallback(Ljava/lang/String;Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle;->findResourceWithFallback([Ljava/lang/String;ILandroid/icu/impl/ICUResourceBundle;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle;->findStringWithFallback(Ljava/lang/String;Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->FULL_LOCALE_NAMES_LIST:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->get(Ljava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle;->getAllItemsWithFallback(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;Landroid/icu/impl/UResource$Sink;)V
-Landroid/icu/impl/ICUResourceBundle;->getAvailEntry(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle$AvailEntry;
-Landroid/icu/impl/ICUResourceBundle;->getBundle(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle;->getNoFallback()Z
-Landroid/icu/impl/ICUResourceBundle;->getResDepth()I
-Landroid/icu/impl/ICUResourceBundle;->getResPathKeys(Ljava/lang/String;I[Ljava/lang/String;I)V
-Landroid/icu/impl/ICUResourceBundle;->getResPathKeys([Ljava/lang/String;I)V
-Landroid/icu/impl/ICUResourceBundle;->GET_AVAILABLE_CACHE:Landroid/icu/impl/CacheBase;
-Landroid/icu/impl/ICUResourceBundle;->HYPHEN:C
-Landroid/icu/impl/ICUResourceBundle;->ICUDATA:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->ICU_RESOURCE_INDEX:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/impl/ICUResourceBundle;->LOCALE:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->localeIDStartsWithLangSubtag(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/impl/ICUResourceBundle;->RES_PATH_SEP_CHAR:C
-Landroid/icu/impl/ICUResourceBundle;->RES_PATH_SEP_STR:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundle;->wholeBundle:Landroid/icu/impl/ICUResourceBundle$WholeBundle;
-Landroid/icu/impl/ICUResourceBundleReader$Array16;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
-Landroid/icu/impl/ICUResourceBundleReader$Array16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Array32;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
-Landroid/icu/impl/ICUResourceBundleReader$Array32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Array;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$Container;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Container;->getContainer32Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Container;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Container;->getResource(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;)I
-Landroid/icu/impl/ICUResourceBundleReader$Container;->getSize()I
-Landroid/icu/impl/ICUResourceBundleReader$Container;->itemsOffset:I
-Landroid/icu/impl/ICUResourceBundleReader$Container;->size:I
-Landroid/icu/impl/ICUResourceBundleReader$IsAcceptable;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;->createInstance(Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundleReader;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;->baseName:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;->localeID:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getStringArray(Landroid/icu/impl/ICUResourceBundleReader$Array;)[Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;->reader:Landroid/icu/impl/ICUResourceBundleReader;
-Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;->res:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;-><init>(II)V
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->get(I)Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->keys:[I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->levelBitsList:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->mask:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->shift:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->values:[Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;-><init>(I)V
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->findSimple(I)I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->get(I)Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->keys:[I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->length:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->levelBitsList:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->makeKey(I)I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->maxOffsetBits:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->NEXT_BITS:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfCleared([Ljava/lang/Object;ILjava/lang/Object;I)Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->rootLevel:Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->ROOT_BITS:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->SIMPLE_LENGTH:I
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->storeDirectly(I)Z
-Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->values:[Ljava/lang/Object;
-Landroid/icu/impl/ICUResourceBundleReader$Table1632;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
-Landroid/icu/impl/ICUResourceBundleReader$Table1632;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Table16;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
-Landroid/icu/impl/ICUResourceBundleReader$Table16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Table32;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
-Landroid/icu/impl/ICUResourceBundleReader$Table32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
-Landroid/icu/impl/ICUResourceBundleReader$Table;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader$Table;->findTableItem(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/CharSequence;)I
-Landroid/icu/impl/ICUResourceBundleReader$Table;->getKey(Landroid/icu/impl/ICUResourceBundleReader;I)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader$Table;->getResource(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;)I
-Landroid/icu/impl/ICUResourceBundleReader$Table;->key32Offsets:[I
-Landroid/icu/impl/ICUResourceBundleReader$Table;->keyOffsets:[C
-Landroid/icu/impl/ICUResourceBundleReader$Table;->URESDATA_ITEM_NOT_FOUND:I
-Landroid/icu/impl/ICUResourceBundleReader;-><init>()V
-Landroid/icu/impl/ICUResourceBundleReader;-><init>(Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V
-Landroid/icu/impl/ICUResourceBundleReader;->b16BitUnits:Ljava/nio/CharBuffer;
-Landroid/icu/impl/ICUResourceBundleReader;->bytes:Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUResourceBundleReader;->CACHE:Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;
-Landroid/icu/impl/ICUResourceBundleReader;->compareKeys(Ljava/lang/CharSequence;C)I
-Landroid/icu/impl/ICUResourceBundleReader;->compareKeys32(Ljava/lang/CharSequence;I)I
-Landroid/icu/impl/ICUResourceBundleReader;->dataVersion:I
-Landroid/icu/impl/ICUResourceBundleReader;->DATA_FORMAT:I
-Landroid/icu/impl/ICUResourceBundleReader;->DEBUG:Z
-Landroid/icu/impl/ICUResourceBundleReader;->emptyByteBuffer:Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUResourceBundleReader;->emptyBytes:[B
-Landroid/icu/impl/ICUResourceBundleReader;->emptyChars:[C
-Landroid/icu/impl/ICUResourceBundleReader;->emptyInts:[I
-Landroid/icu/impl/ICUResourceBundleReader;->emptyString:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->EMPTY_16_BIT_UNITS:Ljava/nio/CharBuffer;
-Landroid/icu/impl/ICUResourceBundleReader;->EMPTY_ARRAY:Landroid/icu/impl/ICUResourceBundleReader$Array;
-Landroid/icu/impl/ICUResourceBundleReader;->EMPTY_TABLE:Landroid/icu/impl/ICUResourceBundleReader$Table;
-Landroid/icu/impl/ICUResourceBundleReader;->getAlias(I)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->getArray(I)Landroid/icu/impl/ICUResourceBundleReader$Array;
-Landroid/icu/impl/ICUResourceBundleReader;->getBinary(I)Ljava/nio/ByteBuffer;
-Landroid/icu/impl/ICUResourceBundleReader;->getBinary(I[B)[B
-Landroid/icu/impl/ICUResourceBundleReader;->getChars(II)[C
-Landroid/icu/impl/ICUResourceBundleReader;->getIndexesInt(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->getInt(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->getInts(II)[I
-Landroid/icu/impl/ICUResourceBundleReader;->getIntVector(I)[I
-Landroid/icu/impl/ICUResourceBundleReader;->getKey16String(I)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->getKey32String(I)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->getNoFallback()Z
-Landroid/icu/impl/ICUResourceBundleReader;->getReader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundleReader;
-Landroid/icu/impl/ICUResourceBundleReader;->getResourceByteOffset(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->getRootResource()I
-Landroid/icu/impl/ICUResourceBundleReader;->getString(I)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->getStringV2(I)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->getTable(I)Landroid/icu/impl/ICUResourceBundleReader$Table;
-Landroid/icu/impl/ICUResourceBundleReader;->getTable16KeyOffsets(I)[C
-Landroid/icu/impl/ICUResourceBundleReader;->getTable32KeyOffsets(I)[I
-Landroid/icu/impl/ICUResourceBundleReader;->getTableKeyOffsets(I)[C
-Landroid/icu/impl/ICUResourceBundleReader;->getUsesPoolBundle()Z
-Landroid/icu/impl/ICUResourceBundleReader;->getVersion()Landroid/icu/util/VersionInfo;
-Landroid/icu/impl/ICUResourceBundleReader;->ICU_RESOURCE_SUFFIX:Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->init(Ljava/nio/ByteBuffer;)V
-Landroid/icu/impl/ICUResourceBundleReader;->isNoInheritanceMarker(I)Z
-Landroid/icu/impl/ICUResourceBundleReader;->isPoolBundle:Z
-Landroid/icu/impl/ICUResourceBundleReader;->isStringV2NoInheritanceMarker(I)Z
-Landroid/icu/impl/ICUResourceBundleReader;->IS_ACCEPTABLE:Landroid/icu/impl/ICUResourceBundleReader$IsAcceptable;
-Landroid/icu/impl/ICUResourceBundleReader;->keyBytes:[B
-Landroid/icu/impl/ICUResourceBundleReader;->LARGE_SIZE:I
-Landroid/icu/impl/ICUResourceBundleReader;->localKeyLimit:I
-Landroid/icu/impl/ICUResourceBundleReader;->makeKeyStringFromBytes([BI)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->makeStringFromBytes(II)Ljava/lang/String;
-Landroid/icu/impl/ICUResourceBundleReader;->noFallback:Z
-Landroid/icu/impl/ICUResourceBundleReader;->NULL_READER:Landroid/icu/impl/ICUResourceBundleReader;
-Landroid/icu/impl/ICUResourceBundleReader;->poolBundleReader:Landroid/icu/impl/ICUResourceBundleReader;
-Landroid/icu/impl/ICUResourceBundleReader;->poolCheckSum:I
-Landroid/icu/impl/ICUResourceBundleReader;->poolStringIndex16Limit:I
-Landroid/icu/impl/ICUResourceBundleReader;->poolStringIndexLimit:I
-Landroid/icu/impl/ICUResourceBundleReader;->PUBLIC_TYPES:[I
-Landroid/icu/impl/ICUResourceBundleReader;->resourceCache:Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;
-Landroid/icu/impl/ICUResourceBundleReader;->RES_GET_INT(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->RES_GET_OFFSET(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->RES_GET_TYPE(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->RES_GET_UINT(I)I
-Landroid/icu/impl/ICUResourceBundleReader;->rootRes:I
-Landroid/icu/impl/ICUResourceBundleReader;->setKeyFromKey16(ILandroid/icu/impl/UResource$Key;)V
-Landroid/icu/impl/ICUResourceBundleReader;->setKeyFromKey32(ILandroid/icu/impl/UResource$Key;)V
-Landroid/icu/impl/ICUResourceBundleReader;->URES_ATT_IS_POOL_BUNDLE:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_ATT_NO_FALLBACK:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_ATT_USES_POOL_BUNDLE:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_16BIT_TOP:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_ATTRIBUTES:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_BUNDLE_TOP:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_KEYS_TOP:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_LENGTH:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_MAX_TABLE_LENGTH:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_POOL_CHECKSUM:I
-Landroid/icu/impl/ICUResourceBundleReader;->URES_IS_ARRAY(I)Z
-Landroid/icu/impl/ICUResourceBundleReader;->URES_IS_TABLE(I)Z
-Landroid/icu/impl/ICUResourceBundleReader;->usesPoolBundle:Z
-Landroid/icu/impl/locale/AsciiUtil$CaseInsensitiveKey;->_hash:I
-Landroid/icu/impl/locale/AsciiUtil$CaseInsensitiveKey;->_key:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale$Cache;-><init>()V
-Landroid/icu/impl/locale/BaseLocale$Cache;->createObject(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale;
-Landroid/icu/impl/locale/BaseLocale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/BaseLocale$Cache;->normalizeKey(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale$Key;
-Landroid/icu/impl/locale/BaseLocale$Cache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/impl/locale/BaseLocale$Key;->compareTo(Landroid/icu/impl/locale/BaseLocale$Key;)I
-Landroid/icu/impl/locale/BaseLocale$Key;->compareTo(Ljava/lang/Object;)I
-Landroid/icu/impl/locale/BaseLocale$Key;->normalize(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale$Key;
-Landroid/icu/impl/locale/BaseLocale$Key;->_hash:I
-Landroid/icu/impl/locale/BaseLocale$Key;->_lang:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale$Key;->_regn:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale$Key;->_scrt:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale$Key;->_vart:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/impl/locale/BaseLocale;->CACHE:Landroid/icu/impl/locale/BaseLocale$Cache;
-Landroid/icu/impl/locale/BaseLocale;->JDKIMPL:Z
-Landroid/icu/impl/locale/BaseLocale;->_hash:I
-Landroid/icu/impl/locale/BaseLocale;->_language:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale;->_region:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale;->_script:Ljava/lang/String;
-Landroid/icu/impl/locale/BaseLocale;->_variant:Ljava/lang/String;
-Landroid/icu/impl/locale/Extension;-><init>(CLjava/lang/String;)V
-Landroid/icu/impl/locale/Extension;->_key:C
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(C)V
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;->value()C
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;->_c:C
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveString;-><init>(Ljava/lang/String;)V
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveString;->value()Ljava/lang/String;
-Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveString;->_s:Ljava/lang/String;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->checkVariants(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/impl/locale/InternalLocaleBuilder;->JDKIMPL:Z
-Landroid/icu/impl/locale/InternalLocaleBuilder;->PRIVUSE_KEY:Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->removePrivateuseVariant(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->setExtensions(Ljava/util/List;Ljava/lang/String;)Landroid/icu/impl/locale/InternalLocaleBuilder;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->setUnicodeLocaleExtension(Ljava/lang/String;)V
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_extensions:Ljava/util/HashMap;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_language:Ljava/lang/String;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_region:Ljava/lang/String;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_script:Ljava/lang/String;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_uattributes:Ljava/util/HashSet;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_ukeywords:Ljava/util/HashMap;
-Landroid/icu/impl/locale/InternalLocaleBuilder;->_variant:Ljava/lang/String;
-Landroid/icu/impl/locale/LanguageTag;-><init>()V
-Landroid/icu/impl/locale/LanguageTag;->GRANDFATHERED:Ljava/util/Map;
-Landroid/icu/impl/locale/LanguageTag;->JDKIMPL:Z
-Landroid/icu/impl/locale/LanguageTag;->parseExtensions(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->parseExtlangs(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->parseLanguage(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->parsePrivateuse(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->parseRegion(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->parseScript(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->parseVariants(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-Landroid/icu/impl/locale/LanguageTag;->_extensions:Ljava/util/List;
-Landroid/icu/impl/locale/LanguageTag;->_extlangs:Ljava/util/List;
-Landroid/icu/impl/locale/LanguageTag;->_language:Ljava/lang/String;
-Landroid/icu/impl/locale/LanguageTag;->_privateuse:Ljava/lang/String;
-Landroid/icu/impl/locale/LanguageTag;->_region:Ljava/lang/String;
-Landroid/icu/impl/locale/LanguageTag;->_script:Ljava/lang/String;
-Landroid/icu/impl/locale/LanguageTag;->_variants:Ljava/util/List;
-Landroid/icu/impl/locale/LocaleExtensions;-><init>()V
-Landroid/icu/impl/locale/LocaleExtensions;-><init>(Ljava/util/Map;Ljava/util/Set;Ljava/util/Map;)V
-Landroid/icu/impl/locale/LocaleExtensions;->EMPTY_MAP:Ljava/util/SortedMap;
-Landroid/icu/impl/locale/LocaleExtensions;->toID(Ljava/util/SortedMap;)Ljava/lang/String;
-Landroid/icu/impl/locale/LocaleExtensions;->_id:Ljava/lang/String;
-Landroid/icu/impl/locale/LocaleExtensions;->_map:Ljava/util/SortedMap;
-Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object;
-Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->_key:Ljava/lang/Object;
-Landroid/icu/impl/locale/LocaleObjectCache;->cleanStaleEntries()V
-Landroid/icu/impl/locale/LocaleObjectCache;->_map:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/icu/impl/locale/LocaleObjectCache;->_queue:Ljava/lang/ref/ReferenceQueue;
-Landroid/icu/impl/locale/LocaleSyntaxException;->_index:I
-Landroid/icu/impl/locale/ParseStatus;->_errorIndex:I
-Landroid/icu/impl/locale/ParseStatus;->_errorMsg:Ljava/lang/String;
-Landroid/icu/impl/locale/ParseStatus;->_parseLength:I
-Landroid/icu/impl/locale/StringTokenIterator;->nextDelimiter(I)I
-Landroid/icu/impl/locale/StringTokenIterator;->_dlms:Ljava/lang/String;
-Landroid/icu/impl/locale/StringTokenIterator;->_done:Z
-Landroid/icu/impl/locale/StringTokenIterator;->_end:I
-Landroid/icu/impl/locale/StringTokenIterator;->_start:I
-Landroid/icu/impl/locale/StringTokenIterator;->_text:Ljava/lang/String;
-Landroid/icu/impl/locale/StringTokenIterator;->_token:Ljava/lang/String;
-Landroid/icu/impl/locale/XCldrStub$HashMultimap;-><init>()V
-Landroid/icu/impl/locale/XCldrStub$Joiner;-><init>(Ljava/lang/String;)V
-Landroid/icu/impl/locale/XCldrStub$Joiner;->separator:Ljava/lang/String;
-Landroid/icu/impl/locale/XCldrStub$LinkedHashMultimap;-><init>()V
-Landroid/icu/impl/locale/XCldrStub$Multimap;-><init>(Ljava/util/Map;Ljava/lang/Class;)V
-Landroid/icu/impl/locale/XCldrStub$Multimap;->createSetIfMissing(Ljava/lang/Object;)Ljava/util/Set;
-Landroid/icu/impl/locale/XCldrStub$Multimap;->getInstance()Ljava/util/Set;
-Landroid/icu/impl/locale/XCldrStub$Multimap;->map:Ljava/util/Map;
-Landroid/icu/impl/locale/XCldrStub$Multimap;->setClass:Ljava/lang/Class;
-Landroid/icu/impl/locale/XCldrStub$MultimapIterator;-><init>(Ljava/util/Map;)V
-Landroid/icu/impl/locale/XCldrStub$MultimapIterator;->entry:Landroid/icu/impl/locale/XCldrStub$ReusableEntry;
-Landroid/icu/impl/locale/XCldrStub$MultimapIterator;->it1:Ljava/util/Iterator;
-Landroid/icu/impl/locale/XCldrStub$MultimapIterator;->it2:Ljava/util/Iterator;
-Landroid/icu/impl/locale/XCldrStub$ReusableEntry;-><init>()V
-Landroid/icu/impl/locale/XCldrStub$ReusableEntry;->key:Ljava/lang/Object;
-Landroid/icu/impl/locale/XCldrStub$ReusableEntry;->value:Ljava/lang/Object;
-Landroid/icu/impl/locale/XCldrStub$Splitter;->pattern:Ljava/util/regex/Pattern;
-Landroid/icu/impl/locale/XCldrStub$Splitter;->trimResults:Z
-Landroid/icu/impl/locale/XCldrStub$TreeMultimap;-><init>()V
-Landroid/icu/impl/locale/XLikelySubtags$Aliases;->toAliases:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLikelySubtags$Aliases;->toCanonical:Ljava/util/Map;
-Landroid/icu/impl/locale/XLikelySubtags$LSR;->from(Ljava/lang/String;)Landroid/icu/impl/locale/XLikelySubtags$LSR;
-Landroid/icu/impl/locale/XLikelySubtags$Maker;-><init>()V
-Landroid/icu/impl/locale/XLikelySubtags$Maker;->getSubtable(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLikelySubtags$Maker;->HASHMAP:Landroid/icu/impl/locale/XLikelySubtags$Maker;
-Landroid/icu/impl/locale/XLikelySubtags$Maker;->make()Ljava/lang/Object;
-Landroid/icu/impl/locale/XLikelySubtags$Maker;->TREEMAP:Landroid/icu/impl/locale/XLikelySubtags$Maker;
-Landroid/icu/impl/locale/XLikelySubtags;->DEFAULT:Landroid/icu/impl/locale/XLikelySubtags;
-Landroid/icu/impl/locale/XLikelySubtags;->getDefaultRawData()Ljava/util/Map;
-Landroid/icu/impl/locale/XLikelySubtags;->init(Ljava/util/Map;Z)Ljava/util/Map;
-Landroid/icu/impl/locale/XLikelySubtags;->langTable:Ljava/util/Map;
-Landroid/icu/impl/locale/XLikelySubtags;->minimizeSubtags(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale$Minimize;)Landroid/icu/impl/locale/XLikelySubtags$LSR;
-Landroid/icu/impl/locale/XLikelySubtags;->set(Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/XLikelySubtags$LSR;)V
-Landroid/icu/impl/locale/XLikelySubtags;->set(Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
-Landroid/icu/impl/locale/XLikelySubtags;->show(Ljava/util/Map;Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
-Landroid/icu/impl/locale/XLocaleDistance$AddSub;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)V
-Landroid/icu/impl/locale/XLocaleDistance$AddSub;->desiredSub:Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance$AddSub;->r:Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;
-Landroid/icu/impl/locale/XLocaleDistance$AddSub;->supportedSub:Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance$AddSub;->test(Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;)Z
-Landroid/icu/impl/locale/XLocaleDistance$AddSub;->test(Ljava/lang/Object;)Z
-Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;-><init>()V
-Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;->compact(Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;)Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;
-Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;->compact(Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;
-Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;->compact(Ljava/util/Map;I)Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;-><init>(Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)V
-Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;->test(Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;)Z
-Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;->test(Ljava/lang/Object;)Z
-Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;->toCopy:Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;
-Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;->distance:I
-Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;->getCloser(I)Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;->getDistance(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/Output;Z)I
-Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;->toString(Z)Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;-><init>()V
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;-><init>(Ljava/lang/String;)V
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;-><init>(Ljava/lang/String;Ljava/lang/Object;)V
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->add(Ljava/lang/Object;)Ljava/lang/Integer;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->fromId(I)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->getOldAndAdd(Ljava/lang/Object;)Ljava/lang/Integer;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->intern(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->intToObject:Ljava/util/List;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->name:Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->objectToInt:Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->size()I
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->toId(Ljava/lang/Object;)Ljava/lang/Integer;
-Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->toId(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLocaleDistance$IdMapper;->toId(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;-><init>()V
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->add(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->build()Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->paradigms:Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->regionSet:Landroid/icu/impl/locale/XLocaleDistance$RegionSet;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->regionToRawPartition:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;-><init>(Landroid/icu/impl/locale/XCldrStub$Multimap;Ljava/util/Map;Landroid/icu/impl/locale/XCldrStub$Multimap;Ljava/util/Set;)V
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->getIdsFromVariable(Ljava/lang/String;)Ljava/util/Collection;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->macroToPartitions:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->paradigms:Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->regions()Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->regionToPartition:Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->toId(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->toId(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->variables()Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->variableToPartition:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->add:Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->remove:Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->valueOf(Ljava/lang/String;)Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->values()[Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;-><init>()V
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->add(Ljava/lang/String;II)V
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->changeSet(Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;Ljava/lang/String;)V
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->inverse()Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->operation:Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->parseSet(Ljava/lang/String;)Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->tempRegions:Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;-><init>(I)V
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;-><init>(ILandroid/icu/impl/locale/XLocaleDistance$DistanceTable;)V
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;->addSubtables(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;)V
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;->copyTables(Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)V
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;->distanceTable:Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;-><init>()V
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;-><init>(Ljava/util/Map;)V
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;->addSubtable(Ljava/lang/String;Ljava/lang/String;I)Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;->getNode(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;
-Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;->subtables:Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleDistance;->ALL_FINAL_REGIONS:Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance;->CONTAINER_TO_CONTAINED:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance;->CONTAINER_TO_CONTAINED_FINAL:Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance;->DEFAULT:Landroid/icu/impl/locale/XLocaleDistance;
-Landroid/icu/impl/locale/XLocaleDistance;->defaultLanguageDistance:I
-Landroid/icu/impl/locale/XLocaleDistance;->defaultRegionDistance:I
-Landroid/icu/impl/locale/XLocaleDistance;->defaultScriptDistance:I
-Landroid/icu/impl/locale/XLocaleDistance;->english:Landroid/icu/text/LocaleDisplayNames;
-Landroid/icu/impl/locale/XLocaleDistance;->fill(Ljava/lang/String;Landroid/icu/impl/locale/XCldrStub$TreeMultimap;Landroid/icu/impl/locale/XCldrStub$Multimap;)Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance;->fixAny(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance;->fixedName(Ljava/util/List;)Ljava/lang/String;
-Landroid/icu/impl/locale/XLocaleDistance;->getContainingMacrosFor(Ljava/util/Collection;Ljava/util/Set;)Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleDistance;->languageDesired2Supported:Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;
-Landroid/icu/impl/locale/XLocaleDistance;->newMap()Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleDistance;->printMatchXml(Ljava/util/List;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Boolean;)V
-Landroid/icu/impl/locale/XLocaleDistance;->PRINT_OVERRIDES:Z
-Landroid/icu/impl/locale/XLocaleDistance;->regionMapper:Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;
-Landroid/icu/impl/locale/XLocaleDistance;->xGetContainment()Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleDistance;->xGetLanguageMatcherData()Ljava/util/List;
-Landroid/icu/impl/locale/XLocaleDistance;->xGetMatchVariables()Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleDistance;->xGetParadigmLocales()Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleMatcher$Builder;->defaultLanguage:Landroid/icu/util/ULocale;
-Landroid/icu/impl/locale/XLocaleMatcher$Builder;->demotionPerAdditionalDesiredLocale:I
-Landroid/icu/impl/locale/XLocaleMatcher$Builder;->distanceOption:Landroid/icu/impl/locale/XLocaleDistance$DistanceOption;
-Landroid/icu/impl/locale/XLocaleMatcher$Builder;->localeDistance:Landroid/icu/impl/locale/XLocaleDistance;
-Landroid/icu/impl/locale/XLocaleMatcher$Builder;->supportedLanguagesList:Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleMatcher$Builder;->thresholdDistance:I
-Landroid/icu/impl/locale/XLocaleMatcher;-><init>(Landroid/icu/impl/locale/XLocaleMatcher$Builder;)V
-Landroid/icu/impl/locale/XLocaleMatcher;->asSet(Landroid/icu/util/LocalePriorityList;)Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleMatcher;->defaultLanguage:Landroid/icu/util/ULocale;
-Landroid/icu/impl/locale/XLocaleMatcher;->demotionPerAdditionalDesiredLocale:I
-Landroid/icu/impl/locale/XLocaleMatcher;->distanceOption:Landroid/icu/impl/locale/XLocaleDistance$DistanceOption;
-Landroid/icu/impl/locale/XLocaleMatcher;->exactSupportedLocales:Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleMatcher;->extractLsrMap(Ljava/util/Set;Ljava/util/Set;)Landroid/icu/impl/locale/XCldrStub$Multimap;
-Landroid/icu/impl/locale/XLocaleMatcher;->extractLsrSet(Ljava/util/Set;)Ljava/util/Set;
-Landroid/icu/impl/locale/XLocaleMatcher;->localeDistance:Landroid/icu/impl/locale/XLocaleDistance;
-Landroid/icu/impl/locale/XLocaleMatcher;->supportedLanguages:Ljava/util/Map;
-Landroid/icu/impl/locale/XLocaleMatcher;->thresholdDistance:I
-Landroid/icu/impl/locale/XLocaleMatcher;->UND:Landroid/icu/impl/locale/XLikelySubtags$LSR;
-Landroid/icu/impl/locale/XLocaleMatcher;->UND_LOCALE:Landroid/icu/util/ULocale;
-Landroid/icu/impl/Normalizer2Impl$IsAcceptable;-><init>()V
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->app:Ljava/lang/Appendable;
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->appIsStringBuilder:Z
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->codePointLimit:I
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->codePointStart:I
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->impl:Landroid/icu/impl/Normalizer2Impl;
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->insert(II)V
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->lastCC:I
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->previousCC()I
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->reorderStart:I
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->setIterator()V
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->skipPrevious()V
-Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->str:Ljava/lang/StringBuilder;
-Landroid/icu/impl/Normalizer2Impl;->addComposites(ILandroid/icu/text/UnicodeSet;)V
-Landroid/icu/impl/Normalizer2Impl;->addToStartSet(Landroid/icu/impl/Trie2Writable;II)V
-Landroid/icu/impl/Normalizer2Impl;->canonIterData:Landroid/icu/impl/Trie2_32;
-Landroid/icu/impl/Normalizer2Impl;->canonStartSets:Ljava/util/ArrayList;
-Landroid/icu/impl/Normalizer2Impl;->CANON_HAS_COMPOSITIONS:I
-Landroid/icu/impl/Normalizer2Impl;->CANON_HAS_SET:I
-Landroid/icu/impl/Normalizer2Impl;->CANON_NOT_SEGMENT_STARTER:I
-Landroid/icu/impl/Normalizer2Impl;->CANON_VALUE_MASK:I
-Landroid/icu/impl/Normalizer2Impl;->centerNoNoDelta:I
-Landroid/icu/impl/Normalizer2Impl;->combine(Ljava/lang/String;II)I
-Landroid/icu/impl/Normalizer2Impl;->dataVersion:Landroid/icu/util/VersionInfo;
-Landroid/icu/impl/Normalizer2Impl;->DATA_FORMAT:I
-Landroid/icu/impl/Normalizer2Impl;->decompose(IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)V
-Landroid/icu/impl/Normalizer2Impl;->decomposeShort(Ljava/lang/CharSequence;IIZZLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)I
-Landroid/icu/impl/Normalizer2Impl;->enumLcccRange(IIILandroid/icu/text/UnicodeSet;)V
-Landroid/icu/impl/Normalizer2Impl;->enumNorm16PropertyStartsRange(IIILandroid/icu/text/UnicodeSet;)V
-Landroid/icu/impl/Normalizer2Impl;->extraData:Ljava/lang/String;
-Landroid/icu/impl/Normalizer2Impl;->findNextCompBoundary(Ljava/lang/CharSequence;IIZ)I
-Landroid/icu/impl/Normalizer2Impl;->findNextFCDBoundary(Ljava/lang/CharSequence;II)I
-Landroid/icu/impl/Normalizer2Impl;->findPreviousCompBoundary(Ljava/lang/CharSequence;IZ)I
-Landroid/icu/impl/Normalizer2Impl;->findPreviousFCDBoundary(Ljava/lang/CharSequence;I)I
-Landroid/icu/impl/Normalizer2Impl;->getCCFromNoNo(I)I
-Landroid/icu/impl/Normalizer2Impl;->getCompositionsList(I)I
-Landroid/icu/impl/Normalizer2Impl;->getCompositionsListForComposite(I)I
-Landroid/icu/impl/Normalizer2Impl;->getCompositionsListForDecompYes(I)I
-Landroid/icu/impl/Normalizer2Impl;->getCompositionsListForMaybe(I)I
-Landroid/icu/impl/Normalizer2Impl;->getPreviousTrailCC(Ljava/lang/CharSequence;II)I
-Landroid/icu/impl/Normalizer2Impl;->getTrailCCFromCompYesAndZeroCC(I)I
-Landroid/icu/impl/Normalizer2Impl;->hangulLVT()I
-Landroid/icu/impl/Normalizer2Impl;->hasCompBoundaryAfter(Ljava/lang/CharSequence;IIZ)Z
-Landroid/icu/impl/Normalizer2Impl;->hasCompBoundaryBefore(II)Z
-Landroid/icu/impl/Normalizer2Impl;->hasCompBoundaryBefore(Ljava/lang/CharSequence;II)Z
-Landroid/icu/impl/Normalizer2Impl;->isCompYesAndZeroCC(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isDecompNoAlgorithmic(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isDecompYesAndZeroCC(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isHangulLV(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isHangulLVT(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isInert(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isJamoL(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isJamoVT(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isMaybe(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isMaybeOrNonZeroCC(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isMostDecompYesAndZeroCC(I)Z
-Landroid/icu/impl/Normalizer2Impl;->isTrailCC01ForCompBoundaryAfter(I)Z
-Landroid/icu/impl/Normalizer2Impl;->IS_ACCEPTABLE:Landroid/icu/impl/Normalizer2Impl$IsAcceptable;
-Landroid/icu/impl/Normalizer2Impl;->limitNoNo:I
-Landroid/icu/impl/Normalizer2Impl;->mapAlgorithmic(II)I
-Landroid/icu/impl/Normalizer2Impl;->maybeYesCompositions:Ljava/lang/String;
-Landroid/icu/impl/Normalizer2Impl;->minCompNoMaybeCP:I
-Landroid/icu/impl/Normalizer2Impl;->minDecompNoCP:I
-Landroid/icu/impl/Normalizer2Impl;->minLcccCP:I
-Landroid/icu/impl/Normalizer2Impl;->minMaybeYes:I
-Landroid/icu/impl/Normalizer2Impl;->minNoNo:I
-Landroid/icu/impl/Normalizer2Impl;->minNoNoCompBoundaryBefore:I
-Landroid/icu/impl/Normalizer2Impl;->minNoNoCompNoMaybeCC:I
-Landroid/icu/impl/Normalizer2Impl;->minNoNoEmpty:I
-Landroid/icu/impl/Normalizer2Impl;->minYesNo:I
-Landroid/icu/impl/Normalizer2Impl;->minYesNoMappingsOnly:I
-Landroid/icu/impl/Normalizer2Impl;->norm16HasCompBoundaryAfter(IZ)Z
-Landroid/icu/impl/Normalizer2Impl;->norm16HasCompBoundaryBefore(I)Z
-Landroid/icu/impl/Normalizer2Impl;->normTrie:Landroid/icu/impl/Trie2_16;
-Landroid/icu/impl/Normalizer2Impl;->recompose(Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;IZ)V
-Landroid/icu/impl/Normalizer2Impl;->segmentStarterMapper:Landroid/icu/impl/Trie2$ValueMapper;
-Landroid/icu/impl/Normalizer2Impl;->smallFCD:[B
-Landroid/icu/impl/number/AffixUtils;->getCodePoint(J)I
-Landroid/icu/impl/number/AffixUtils;->getOffset(J)I
-Landroid/icu/impl/number/AffixUtils;->getState(J)I
-Landroid/icu/impl/number/AffixUtils;->getType(J)I
-Landroid/icu/impl/number/AffixUtils;->makeTag(IIII)J
-Landroid/icu/impl/number/AffixUtils;->STATE_AFTER_QUOTE:I
-Landroid/icu/impl/number/AffixUtils;->STATE_BASE:I
-Landroid/icu/impl/number/AffixUtils;->STATE_FIFTH_CURR:I
-Landroid/icu/impl/number/AffixUtils;->STATE_FIRST_CURR:I
-Landroid/icu/impl/number/AffixUtils;->STATE_FIRST_QUOTE:I
-Landroid/icu/impl/number/AffixUtils;->STATE_FOURTH_CURR:I
-Landroid/icu/impl/number/AffixUtils;->STATE_INSIDE_QUOTE:I
-Landroid/icu/impl/number/AffixUtils;->STATE_OVERFLOW_CURR:I
-Landroid/icu/impl/number/AffixUtils;->STATE_SECOND_CURR:I
-Landroid/icu/impl/number/AffixUtils;->STATE_THIRD_CURR:I
-Landroid/icu/impl/number/AffixUtils;->TYPE_CODEPOINT:I
-Landroid/icu/impl/number/CompactData$CompactDataSink;-><init>(Landroid/icu/impl/number/CompactData;)V
-Landroid/icu/impl/number/CompactData$CompactDataSink;->data:Landroid/icu/impl/number/CompactData;
-Landroid/icu/impl/number/CompactData;->COMPACT_MAX_DIGITS:I
-Landroid/icu/impl/number/CompactData;->countZeros(Ljava/lang/String;)I
-Landroid/icu/impl/number/CompactData;->getIndex(ILandroid/icu/impl/StandardPlural;)I
-Landroid/icu/impl/number/CompactData;->getResourceBundleKey(Ljava/lang/String;Landroid/icu/text/CompactDecimalFormat$CompactStyle;Landroid/icu/impl/number/CompactData$CompactType;Ljava/lang/StringBuilder;)V
-Landroid/icu/impl/number/CompactData;->isEmpty:Z
-Landroid/icu/impl/number/CompactData;->largestMagnitude:B
-Landroid/icu/impl/number/CompactData;->multipliers:[B
-Landroid/icu/impl/number/CompactData;->patterns:[Ljava/lang/String;
-Landroid/icu/impl/number/CompactData;->USE_FALLBACK:Ljava/lang/String;
-Landroid/icu/impl/number/ConstantMultiFieldModifier;->strong:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->compactCustomData:Ljava/util/Map;
-Landroid/icu/impl/number/DecimalFormatProperties;->compactStyle:Landroid/icu/text/CompactDecimalFormat$CompactStyle;
-Landroid/icu/impl/number/DecimalFormatProperties;->currency:Landroid/icu/util/Currency;
-Landroid/icu/impl/number/DecimalFormatProperties;->currencyPluralInfo:Landroid/icu/text/CurrencyPluralInfo;
-Landroid/icu/impl/number/DecimalFormatProperties;->currencyUsage:Landroid/icu/util/Currency$CurrencyUsage;
-Landroid/icu/impl/number/DecimalFormatProperties;->decimalPatternMatchRequired:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->decimalSeparatorAlwaysShown:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->DEFAULT:Landroid/icu/impl/number/DecimalFormatProperties;
-Landroid/icu/impl/number/DecimalFormatProperties;->exponentSignAlwaysShown:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->formatWidth:I
-Landroid/icu/impl/number/DecimalFormatProperties;->groupingSize:I
-Landroid/icu/impl/number/DecimalFormatProperties;->magnitudeMultiplier:I
-Landroid/icu/impl/number/DecimalFormatProperties;->mathContext:Ljava/math/MathContext;
-Landroid/icu/impl/number/DecimalFormatProperties;->maximumFractionDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->maximumIntegerDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->maximumSignificantDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->minimumExponentDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->minimumFractionDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->minimumGroupingDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->minimumIntegerDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->minimumSignificantDigits:I
-Landroid/icu/impl/number/DecimalFormatProperties;->multiplier:Ljava/math/BigDecimal;
-Landroid/icu/impl/number/DecimalFormatProperties;->negativePrefix:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->negativePrefixPattern:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->negativeSuffix:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->negativeSuffixPattern:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->padPosition:Landroid/icu/impl/number/Padder$PadPosition;
-Landroid/icu/impl/number/DecimalFormatProperties;->padString:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->parseCaseSensitive:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->parseGroupingMode:Landroid/icu/impl/number/Parse$GroupingMode;
-Landroid/icu/impl/number/DecimalFormatProperties;->parseIntegerOnly:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->parseMode:Landroid/icu/impl/number/Parse$ParseMode;
-Landroid/icu/impl/number/DecimalFormatProperties;->parseNoExponent:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->parseToBigDecimal:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->pluralRules:Landroid/icu/text/PluralRules;
-Landroid/icu/impl/number/DecimalFormatProperties;->positivePrefix:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->positivePrefixPattern:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->positiveSuffix:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->positiveSuffixPattern:Ljava/lang/String;
-Landroid/icu/impl/number/DecimalFormatProperties;->readObjectImpl(Ljava/io/ObjectInputStream;)V
-Landroid/icu/impl/number/DecimalFormatProperties;->roundingIncrement:Ljava/math/BigDecimal;
-Landroid/icu/impl/number/DecimalFormatProperties;->roundingMode:Ljava/math/RoundingMode;
-Landroid/icu/impl/number/DecimalFormatProperties;->secondaryGroupingSize:I
-Landroid/icu/impl/number/DecimalFormatProperties;->signAlwaysShown:Z
-Landroid/icu/impl/number/DecimalFormatProperties;->writeObjectImpl(Ljava/io/ObjectOutputStream;)V
-Landroid/icu/impl/number/DecimalFormatProperties;->_clear()Landroid/icu/impl/number/DecimalFormatProperties;
-Landroid/icu/impl/number/DecimalFormatProperties;->_copyFrom(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/DecimalFormatProperties;
-Landroid/icu/impl/number/DecimalFormatProperties;->_equals(Landroid/icu/impl/number/DecimalFormatProperties;)Z
-Landroid/icu/impl/number/DecimalFormatProperties;->_equalsHelper(II)Z
-Landroid/icu/impl/number/DecimalFormatProperties;->_equalsHelper(Ljava/lang/Object;Ljava/lang/Object;)Z
-Landroid/icu/impl/number/DecimalFormatProperties;->_equalsHelper(ZZ)Z
-Landroid/icu/impl/number/DecimalFormatProperties;->_hashCode()I
-Landroid/icu/impl/number/DecimalFormatProperties;->_hashCodeHelper(I)I
-Landroid/icu/impl/number/DecimalFormatProperties;->_hashCodeHelper(Ljava/lang/Object;)I
-Landroid/icu/impl/number/DecimalFormatProperties;->_hashCodeHelper(Z)I
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->convertToAccurateDouble()V
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->DOUBLE_MULTIPLIERS:[D
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->fractionCount()I
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->fractionCountWithoutTrailingZeros()I
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->safeSubtract(II)I
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->SECTION_LOWER_EDGE:I
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->SECTION_UPPER_EDGE:I
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToBigDecimal(Ljava/math/BigDecimal;)V
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToBigInteger(Ljava/math/BigInteger;)V
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToDoubleFast(D)V
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToInt(I)V
-Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToLong(J)V
-Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->bcdBytes:[B
-Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->bcdLong:J
-Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->ensureCapacity()V
-Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->ensureCapacity(I)V
-Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->switchStorage()V
-Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->usingBytes:Z
-Landroid/icu/impl/number/MicroProps;->exhausted:Z
-Landroid/icu/impl/number/MicroProps;->immutable:Z
-Landroid/icu/impl/number/MultiplierImpl;-><init>(Landroid/icu/impl/number/MultiplierImpl;Landroid/icu/impl/number/MicroPropsGenerator;)V
-Landroid/icu/impl/number/MultiplierImpl;->bigDecimalMultiplier:Ljava/math/BigDecimal;
-Landroid/icu/impl/number/MultiplierImpl;->magnitudeMultiplier:I
-Landroid/icu/impl/number/MultiplierImpl;->parent:Landroid/icu/impl/number/MicroPropsGenerator;
-Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;-><init>(Landroid/icu/impl/number/ParameterizedModifier;Landroid/icu/text/PluralRules;Landroid/icu/impl/number/MicroPropsGenerator;)V
-Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->parent:Landroid/icu/impl/number/MicroPropsGenerator;
-Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->pm:Landroid/icu/impl/number/ParameterizedModifier;
-Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->rules:Landroid/icu/text/PluralRules;
-Landroid/icu/impl/number/MutablePatternModifier;->createConstantModifier(Landroid/icu/impl/number/NumberStringBuilder;Landroid/icu/impl/number/NumberStringBuilder;)Landroid/icu/impl/number/ConstantMultiFieldModifier;
-Landroid/icu/impl/number/MutablePatternModifier;->currency:Landroid/icu/util/Currency;
-Landroid/icu/impl/number/MutablePatternModifier;->enterCharSequenceMode(Z)V
-Landroid/icu/impl/number/MutablePatternModifier;->exitCharSequenceMode()V
-Landroid/icu/impl/number/MutablePatternModifier;->flags:I
-Landroid/icu/impl/number/MutablePatternModifier;->inCharSequenceMode:Z
-Landroid/icu/impl/number/MutablePatternModifier;->insertPrefix(Landroid/icu/impl/number/NumberStringBuilder;I)I
-Landroid/icu/impl/number/MutablePatternModifier;->insertSuffix(Landroid/icu/impl/number/NumberStringBuilder;I)I
-Landroid/icu/impl/number/MutablePatternModifier;->isNegative:Z
-Landroid/icu/impl/number/MutablePatternModifier;->isStrong:Z
-Landroid/icu/impl/number/MutablePatternModifier;->length:I
-Landroid/icu/impl/number/MutablePatternModifier;->parent:Landroid/icu/impl/number/MicroPropsGenerator;
-Landroid/icu/impl/number/MutablePatternModifier;->patternInfo:Landroid/icu/impl/number/AffixPatternProvider;
-Landroid/icu/impl/number/MutablePatternModifier;->perMilleReplacesPercent:Z
-Landroid/icu/impl/number/MutablePatternModifier;->plural:Landroid/icu/impl/StandardPlural;
-Landroid/icu/impl/number/MutablePatternModifier;->plusReplacesMinusSign:Z
-Landroid/icu/impl/number/MutablePatternModifier;->prependSign:Z
-Landroid/icu/impl/number/MutablePatternModifier;->rules:Landroid/icu/text/PluralRules;
-Landroid/icu/impl/number/MutablePatternModifier;->signDisplay:Landroid/icu/number/NumberFormatter$SignDisplay;
-Landroid/icu/impl/number/MutablePatternModifier;->symbols:Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/impl/number/MutablePatternModifier;->unitWidth:Landroid/icu/number/NumberFormatter$UnitWidth;
-Landroid/icu/impl/number/NumberStringBuilder;->chars:[C
-Landroid/icu/impl/number/NumberStringBuilder;->fields:[Landroid/icu/text/NumberFormat$Field;
-Landroid/icu/impl/number/NumberStringBuilder;->fieldToDebugChar:Ljava/util/Map;
-Landroid/icu/impl/number/NumberStringBuilder;->getCapacity()I
-Landroid/icu/impl/number/NumberStringBuilder;->length:I
-Landroid/icu/impl/number/NumberStringBuilder;->prepareForInsert(II)I
-Landroid/icu/impl/number/NumberStringBuilder;->prepareForInsertHelper(II)I
-Landroid/icu/impl/number/NumberStringBuilder;->zero:I
-Landroid/icu/impl/number/Padder;->addPaddingHelper(Ljava/lang/String;ILandroid/icu/impl/number/NumberStringBuilder;I)I
-Landroid/icu/impl/number/Padder;->paddingString:Ljava/lang/String;
-Landroid/icu/impl/number/Padder;->position:Landroid/icu/impl/number/Padder$PadPosition;
-Landroid/icu/impl/number/Padder;->targetWidth:I
-Landroid/icu/impl/number/ParameterizedModifier;->frozen:Z
-Landroid/icu/impl/number/ParameterizedModifier;->getModIndex(ZLandroid/icu/impl/StandardPlural;)I
-Landroid/icu/impl/number/ParameterizedModifier;->mods:[Landroid/icu/impl/number/Modifier;
-Landroid/icu/impl/number/ParameterizedModifier;->negative:Landroid/icu/impl/number/Modifier;
-Landroid/icu/impl/number/ParameterizedModifier;->positive:Landroid/icu/impl/number/Modifier;
-Landroid/icu/impl/number/Parse$AffixHolder;-><init>(Ljava/lang/String;Ljava/lang/String;ZZ)V
-Landroid/icu/impl/number/Parse$AffixHolder;->addToState(Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/DecimalFormatProperties;)V
-Landroid/icu/impl/number/Parse$AffixHolder;->EMPTY_NEGATIVE:Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->EMPTY_POSITIVE:Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->fromPropertiesNegativePattern(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->fromPropertiesNegativeString(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->fromPropertiesPositivePattern(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->fromPropertiesPositiveString(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->getInstance(Ljava/lang/String;Ljava/lang/String;ZZ)Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$AffixHolder;->negative:Z
-Landroid/icu/impl/number/Parse$AffixHolder;->p:Ljava/lang/String;
-Landroid/icu/impl/number/Parse$AffixHolder;->s:Ljava/lang/String;
-Landroid/icu/impl/number/Parse$AffixHolder;->strings:Z
-Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->addPattern(Ljava/lang/String;)V
-Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->addToState(Landroid/icu/util/ULocale;Landroid/icu/impl/number/Parse$ParserState;)V
-Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->currencyAffixPatterns:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->set:Ljava/util/Set;
-Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->threadLocalProperties:Ljava/lang/ThreadLocal;
-Landroid/icu/impl/number/Parse$DigitType;->EXPONENT:Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$DigitType;->FRACTION:Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$DigitType;->INTEGER:Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$DigitType;->valueOf(Ljava/lang/String;)Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$DigitType;->values()[Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$ParserState;-><init>()V
-Landroid/icu/impl/number/Parse$ParserState;->affixHolders:Ljava/util/Set;
-Landroid/icu/impl/number/Parse$ParserState;->caseSensitive:Z
-Landroid/icu/impl/number/Parse$ParserState;->clear()Landroid/icu/impl/number/Parse$ParserState;
-Landroid/icu/impl/number/Parse$ParserState;->decimalCp1:I
-Landroid/icu/impl/number/Parse$ParserState;->decimalCp2:I
-Landroid/icu/impl/number/Parse$ParserState;->decimalType1:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$ParserState;->decimalType2:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$ParserState;->digitTrie:Landroid/icu/impl/TextTrieMap;
-Landroid/icu/impl/number/Parse$ParserState;->getItem(I)Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/Parse$ParserState;->getNext()Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/Parse$ParserState;->groupingCp1:I
-Landroid/icu/impl/number/Parse$ParserState;->groupingCp2:I
-Landroid/icu/impl/number/Parse$ParserState;->groupingMode:Landroid/icu/impl/number/Parse$GroupingMode;
-Landroid/icu/impl/number/Parse$ParserState;->groupingType1:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$ParserState;->groupingType2:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$ParserState;->items:[Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/Parse$ParserState;->lastInsertedIndex()I
-Landroid/icu/impl/number/Parse$ParserState;->length:I
-Landroid/icu/impl/number/Parse$ParserState;->mode:Landroid/icu/impl/number/Parse$ParseMode;
-Landroid/icu/impl/number/Parse$ParserState;->parseCurrency:Z
-Landroid/icu/impl/number/Parse$ParserState;->prevItems:[Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/Parse$ParserState;->prevLength:I
-Landroid/icu/impl/number/Parse$ParserState;->properties:Landroid/icu/impl/number/DecimalFormatProperties;
-Landroid/icu/impl/number/Parse$ParserState;->swap()V
-Landroid/icu/impl/number/Parse$ParserState;->swapBack()V
-Landroid/icu/impl/number/Parse$ParserState;->symbols:Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/impl/number/Parse$SeparatorType;->COMMA_LIKE:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$SeparatorType;->fromCp(ILandroid/icu/impl/number/Parse$ParseMode;)Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$SeparatorType;->OTHER_GROUPING:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$SeparatorType;->PERIOD_LIKE:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$SeparatorType;->UNKNOWN:Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$SeparatorType;->valueOf(Ljava/lang/String;)Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$SeparatorType;->values()[Landroid/icu/impl/number/Parse$SeparatorType;
-Landroid/icu/impl/number/Parse$StateItem;-><init>(C)V
-Landroid/icu/impl/number/Parse$StateItem;->affix:Landroid/icu/impl/number/Parse$AffixHolder;
-Landroid/icu/impl/number/Parse$StateItem;->appendDigit(BLandroid/icu/impl/number/Parse$DigitType;)V
-Landroid/icu/impl/number/Parse$StateItem;->clear()Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/Parse$StateItem;->copyFrom(Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$StateName;I)Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/Parse$StateItem;->currentAffixPattern:Ljava/lang/CharSequence;
-Landroid/icu/impl/number/Parse$StateItem;->currentCurrencyTrieState:Landroid/icu/impl/TextTrieMap$ParseState;
-Landroid/icu/impl/number/Parse$StateItem;->currentDigitTrieState:Landroid/icu/impl/TextTrieMap$ParseState;
-Landroid/icu/impl/number/Parse$StateItem;->currentDigitType:Landroid/icu/impl/number/Parse$DigitType;
-Landroid/icu/impl/number/Parse$StateItem;->currentOffset:I
-Landroid/icu/impl/number/Parse$StateItem;->currentStepwiseParserTag:J
-Landroid/icu/impl/number/Parse$StateItem;->currentString:Ljava/lang/CharSequence;
-Landroid/icu/impl/number/Parse$StateItem;->currentTrailing:Z
-Landroid/icu/impl/number/Parse$StateItem;->exponent:I
-Landroid/icu/impl/number/Parse$StateItem;->fq:Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;
-Landroid/icu/impl/number/Parse$StateItem;->groupingCp:I
-Landroid/icu/impl/number/Parse$StateItem;->groupingWidths:J
-Landroid/icu/impl/number/Parse$StateItem;->hasNumber()Z
-Landroid/icu/impl/number/Parse$StateItem;->id:C
-Landroid/icu/impl/number/Parse$StateItem;->isoCode:Ljava/lang/String;
-Landroid/icu/impl/number/Parse$StateItem;->name:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateItem;->numDigits:I
-Landroid/icu/impl/number/Parse$StateItem;->path:Ljava/lang/String;
-Landroid/icu/impl/number/Parse$StateItem;->returnTo1:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateItem;->returnTo2:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateItem;->sawCurrency:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawDecimalPoint:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawExponentDigit:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawInfinity:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawNaN:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawNegative:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawNegativeExponent:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawPrefix:Z
-Landroid/icu/impl/number/Parse$StateItem;->sawSuffix:Z
-Landroid/icu/impl/number/Parse$StateItem;->score:I
-Landroid/icu/impl/number/Parse$StateItem;->toCurrencyAmount(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/util/CurrencyAmount;
-Landroid/icu/impl/number/Parse$StateItem;->toNumber(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/lang/Number;
-Landroid/icu/impl/number/Parse$StateItem;->trailingCount:I
-Landroid/icu/impl/number/Parse$StateItem;->trailingZeros:I
-Landroid/icu/impl/number/Parse$StateName;->AFTER_EXPONENT_DIGIT:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->AFTER_EXPONENT_SEPARATOR:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->AFTER_FRACTION_DIGIT:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->AFTER_INTEGER_DIGIT:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->AFTER_PREFIX:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->AFTER_SUFFIX:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->BEFORE_PREFIX:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->BEFORE_SUFFIX:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->BEFORE_SUFFIX_SEEN_EXPONENT:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->INSIDE_AFFIX_PATTERN:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->INSIDE_CURRENCY:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->INSIDE_DIGIT:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->INSIDE_STRING:Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->valueOf(Ljava/lang/String;)Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse$StateName;->values()[Landroid/icu/impl/number/Parse$StateName;
-Landroid/icu/impl/number/Parse;->acceptAffixHolder(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$AffixHolder;Z)V
-Landroid/icu/impl/number/Parse;->acceptAffixPattern(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;J)J
-Landroid/icu/impl/number/Parse;->acceptAffixPatternHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;J)J
-Landroid/icu/impl/number/Parse;->acceptAffixPatternNonIgnorable(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;IJJ)J
-Landroid/icu/impl/number/Parse;->acceptAffixPatternOffset(ILandroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)J
-Landroid/icu/impl/number/Parse;->acceptBidi(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptCurrency(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptCurrency(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)J
-Landroid/icu/impl/number/Parse;->acceptCurrencyHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/TextTrieMap$ParseState;)J
-Landroid/icu/impl/number/Parse;->acceptCurrencyOffset(ILandroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptDecimalPoint(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptDigitHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$DigitType;)V
-Landroid/icu/impl/number/Parse;->acceptDigitTrie(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$DigitType;)J
-Landroid/icu/impl/number/Parse;->acceptDigitTrieHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$DigitType;Landroid/icu/impl/TextTrieMap$ParseState;)J
-Landroid/icu/impl/number/Parse;->acceptDigitTrieOffset(ILandroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptExponentDigit(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptExponentSeparator(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptFractionDigit(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptGrouping(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptInfinity(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptIntegerDigit(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptMinusOrPlusSign(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Z)V
-Landroid/icu/impl/number/Parse;->acceptMinusSign(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Z)J
-Landroid/icu/impl/number/Parse;->acceptNan(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptPadding(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptPlusSign(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Z)J
-Landroid/icu/impl/number/Parse;->acceptPrefix(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptString(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;IZ)J
-Landroid/icu/impl/number/Parse;->acceptStringHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;IZ)J
-Landroid/icu/impl/number/Parse;->acceptStringNonIgnorable(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;ZIJJ)J
-Landroid/icu/impl/number/Parse;->acceptStringOffset(ILandroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)J
-Landroid/icu/impl/number/Parse;->acceptStringOrAffixPatternWithIgnorables(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;JZZ)J
-Landroid/icu/impl/number/Parse;->acceptSuffix(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->acceptWhitespace(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V
-Landroid/icu/impl/number/Parse;->codePointEquals(IILandroid/icu/impl/number/Parse$ParserState;)Z
-Landroid/icu/impl/number/Parse;->isIgnorable(ILandroid/icu/impl/number/Parse$ParserState;)Z
-Landroid/icu/impl/number/Parse;->makeDigitTrie([Ljava/lang/String;)Landroid/icu/impl/TextTrieMap;
-Landroid/icu/impl/number/Parse;->MAX_LONG_AS_BIG_DECIMAL:Ljava/math/BigDecimal;
-Landroid/icu/impl/number/Parse;->MIN_LONG_AS_BIG_DECIMAL:Ljava/math/BigDecimal;
-Landroid/icu/impl/number/Parse;->recordDigit(Landroid/icu/impl/number/Parse$StateItem;BLandroid/icu/impl/number/Parse$DigitType;)V
-Landroid/icu/impl/number/Parse;->UNISET_BIDI:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->UNISET_COMMA_LIKE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->UNISET_OTHER_GROUPING_SEPARATORS:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->UNISET_PERIOD_LIKE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->UNISET_STRICT_COMMA_LIKE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->UNISET_STRICT_PERIOD_LIKE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->UNISET_WHITESPACE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/number/Parse;->_parse(Ljava/lang/CharSequence;Ljava/text/ParsePosition;ZLandroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;)Landroid/icu/impl/number/Parse$StateItem;
-Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;-><init>(Ljava/lang/String;)V
-Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;->getEndpoints(I)J
-Landroid/icu/impl/number/PatternStringParser$ParserState;-><init>(Ljava/lang/String;)V
-Landroid/icu/impl/number/PatternStringParser$ParserState;->next()I
-Landroid/icu/impl/number/PatternStringParser$ParserState;->offset:I
-Landroid/icu/impl/number/PatternStringParser$ParserState;->pattern:Ljava/lang/String;
-Landroid/icu/impl/number/PatternStringParser$ParserState;->peek()I
-Landroid/icu/impl/number/PatternStringParser$ParserState;->toParseException(Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
-Landroid/icu/impl/number/PatternStringParser;->consumeAffix(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)J
-Landroid/icu/impl/number/PatternStringParser;->consumeExponent(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
-Landroid/icu/impl/number/PatternStringParser;->consumeFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
-Landroid/icu/impl/number/PatternStringParser;->consumeFractionFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
-Landroid/icu/impl/number/PatternStringParser;->consumeIntegerFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
-Landroid/icu/impl/number/PatternStringParser;->consumeLiteral(Landroid/icu/impl/number/PatternStringParser$ParserState;)V
-Landroid/icu/impl/number/PatternStringParser;->consumePadding(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;Landroid/icu/impl/number/Padder$PadPosition;)V
-Landroid/icu/impl/number/PatternStringParser;->consumePattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;)V
-Landroid/icu/impl/number/PatternStringParser;->consumeSubpattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
-Landroid/icu/impl/number/PatternStringParser;->parseToExistingPropertiesImpl(Ljava/lang/String;Landroid/icu/impl/number/DecimalFormatProperties;I)V
-Landroid/icu/impl/number/PatternStringParser;->patternInfoToProperties(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;I)V
-Landroid/icu/impl/PatternTokenizer;->AFTER_QUOTE:I
-Landroid/icu/impl/PatternTokenizer;->appendEscaped(Ljava/lang/StringBuffer;I)V
-Landroid/icu/impl/PatternTokenizer;->escapeCharacters:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/PatternTokenizer;->extraQuotingCharacters:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/PatternTokenizer;->HEX:I
-Landroid/icu/impl/PatternTokenizer;->ignorableCharacters:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/PatternTokenizer;->IN_QUOTE:I
-Landroid/icu/impl/PatternTokenizer;->limit:I
-Landroid/icu/impl/PatternTokenizer;->needingQuoteCharacters:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/PatternTokenizer;->NONE:I
-Landroid/icu/impl/PatternTokenizer;->NORMAL_QUOTE:I
-Landroid/icu/impl/PatternTokenizer;->NO_QUOTE:I
-Landroid/icu/impl/PatternTokenizer;->pattern:Ljava/lang/String;
-Landroid/icu/impl/PatternTokenizer;->SLASH_START:I
-Landroid/icu/impl/PatternTokenizer;->start:I
-Landroid/icu/impl/PatternTokenizer;->START_QUOTE:I
-Landroid/icu/impl/PatternTokenizer;->syntaxCharacters:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/PatternTokenizer;->usingQuote:Z
-Landroid/icu/impl/PatternTokenizer;->usingSlash:Z
-Landroid/icu/impl/PluralRulesLoader;-><init>()V
-Landroid/icu/impl/PluralRulesLoader;->checkBuildRulesIdMaps()V
-Landroid/icu/impl/PluralRulesLoader;->getLocaleIdToRulesIdMap(Landroid/icu/text/PluralRules$PluralType;)Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->getRulesIdToEquivalentULocaleMap()Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->localeIdToCardinalRulesId:Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->localeIdToOrdinalRulesId:Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->localeIdToPluralRanges:Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->rulesIdToEquivalentULocale:Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->rulesIdToRules:Ljava/util/Map;
-Landroid/icu/impl/PluralRulesLoader;->UNKNOWN_RANGE:Landroid/icu/text/PluralRanges;
-Landroid/icu/impl/Relation$SimpleEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
-Landroid/icu/impl/Relation$SimpleEntry;-><init>(Ljava/util/Map$Entry;)V
-Landroid/icu/impl/Relation$SimpleEntry;->key:Ljava/lang/Object;
-Landroid/icu/impl/Relation$SimpleEntry;->value:Ljava/lang/Object;
-Landroid/icu/impl/Relation;->data:Ljava/util/Map;
-Landroid/icu/impl/Relation;->frozen:Z
-Landroid/icu/impl/Relation;->newSet()Ljava/util/Set;
-Landroid/icu/impl/Relation;->setComparatorParam:[Ljava/lang/Object;
-Landroid/icu/impl/Relation;->setCreator:Ljava/lang/reflect/Constructor;
-Landroid/icu/impl/RuleCharacterIterator;->buf:[C
-Landroid/icu/impl/RuleCharacterIterator;->bufPos:I
-Landroid/icu/impl/RuleCharacterIterator;->isEscaped:Z
-Landroid/icu/impl/RuleCharacterIterator;->pos:Ljava/text/ParsePosition;
-Landroid/icu/impl/RuleCharacterIterator;->sym:Landroid/icu/text/SymbolTable;
-Landroid/icu/impl/RuleCharacterIterator;->text:Ljava/lang/String;
-Landroid/icu/impl/RuleCharacterIterator;->_advance(I)V
-Landroid/icu/impl/RuleCharacterIterator;->_current()I
-Landroid/icu/impl/SimpleCache;->cacheRef:Ljava/lang/ref/Reference;
-Landroid/icu/impl/SimpleCache;->capacity:I
-Landroid/icu/impl/SimpleCache;->DEFAULT_CAPACITY:I
-Landroid/icu/impl/SimpleCache;->type:I
-Landroid/icu/impl/SoftCache;->map:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/icu/impl/StandardPlural;->keyword:Ljava/lang/String;
-Landroid/icu/impl/TextTrieMap$CharIterator;-><init>(Ljava/lang/CharSequence;IZ)V
-Landroid/icu/impl/TextTrieMap$CharIterator;->_ignoreCase:Z
-Landroid/icu/impl/TextTrieMap$CharIterator;->_nextIdx:I
-Landroid/icu/impl/TextTrieMap$CharIterator;->_remainingChar:Ljava/lang/Character;
-Landroid/icu/impl/TextTrieMap$CharIterator;->_startIdx:I
-Landroid/icu/impl/TextTrieMap$CharIterator;->_text:Ljava/lang/CharSequence;
-Landroid/icu/impl/TextTrieMap$LongestMatchHandler;-><init>()V
-Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->getMatches()Ljava/util/Iterator;
-Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->getMatchLength()I
-Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->length:I
-Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->matches:Ljava/util/Iterator;
-Landroid/icu/impl/TextTrieMap$Node$StepResult;->node:Landroid/icu/impl/TextTrieMap$Node;
-Landroid/icu/impl/TextTrieMap$Node$StepResult;->offset:I
-Landroid/icu/impl/TextTrieMap$Node;->add(Landroid/icu/impl/TextTrieMap$CharIterator;Ljava/lang/Object;)V
-Landroid/icu/impl/TextTrieMap$Node;->add([CILjava/lang/Object;)V
-Landroid/icu/impl/TextTrieMap$Node;->addValue(Ljava/util/List;Ljava/lang/Object;)Ljava/util/List;
-Landroid/icu/impl/TextTrieMap$Node;->charCount()I
-Landroid/icu/impl/TextTrieMap$Node;->findMatch(Landroid/icu/impl/TextTrieMap$CharIterator;)Landroid/icu/impl/TextTrieMap$Node;
-Landroid/icu/impl/TextTrieMap$Node;->hasChildFor(C)Z
-Landroid/icu/impl/TextTrieMap$Node;->lenMatches([CI)I
-Landroid/icu/impl/TextTrieMap$Node;->matchFollowing(Landroid/icu/impl/TextTrieMap$CharIterator;)Z
-Landroid/icu/impl/TextTrieMap$Node;->split(I)V
-Landroid/icu/impl/TextTrieMap$Node;->takeStep(CILandroid/icu/impl/TextTrieMap$Node$StepResult;)V
-Landroid/icu/impl/TextTrieMap$Node;->values()Ljava/util/Iterator;
-Landroid/icu/impl/TextTrieMap$Node;->_children:Ljava/util/List;
-Landroid/icu/impl/TextTrieMap$Node;->_text:[C
-Landroid/icu/impl/TextTrieMap$Node;->_values:Ljava/util/List;
-Landroid/icu/impl/TextTrieMap$ParseState;->node:Landroid/icu/impl/TextTrieMap$Node;
-Landroid/icu/impl/TextTrieMap$ParseState;->offset:I
-Landroid/icu/impl/TextTrieMap$ParseState;->result:Landroid/icu/impl/TextTrieMap$Node$StepResult;
-Landroid/icu/impl/TextTrieMap;->find(Landroid/icu/impl/TextTrieMap$Node;Landroid/icu/impl/TextTrieMap$CharIterator;Landroid/icu/impl/TextTrieMap$ResultHandler;)V
-Landroid/icu/impl/TextTrieMap;->subArray([CI)[C
-Landroid/icu/impl/TextTrieMap;->subArray([CII)[C
-Landroid/icu/impl/TextTrieMap;->toCharArray(Ljava/lang/CharSequence;)[C
-Landroid/icu/impl/TextTrieMap;->_ignoreCase:Z
-Landroid/icu/impl/TextTrieMap;->_root:Landroid/icu/impl/TextTrieMap$Node;
-Landroid/icu/impl/TimeZoneGenericNames$Cache;-><init>()V
-Landroid/icu/impl/TimeZoneGenericNames$Cache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/impl/TimeZoneGenericNames$Cache;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/impl/TimeZoneGenericNames;
-Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;-><init>(Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;Ljava/lang/String;I)V
-Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;-><init>(Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;Ljava/lang/String;ILandroid/icu/text/TimeZoneFormat$TimeType;)V
-Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->matchLength:I
-Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->nameType:Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;
-Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->timeType:Landroid/icu/text/TimeZoneFormat$TimeType;
-Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->tzID:Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;-><init>(Ljava/util/EnumSet;)V
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->getMatches()Ljava/util/Collection;
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->getMaxMatchLen()I
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->handlePrefixMatch(ILjava/util/Iterator;)Z
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->resetResults()V
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->_matches:Ljava/util/Collection;
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->_maxMatchLen:I
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->_types:Ljava/util/EnumSet;
-Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;->_fallbackTypeOf:[Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$NameInfo;-><init>(Ljava/lang/String;Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;)V
-Landroid/icu/impl/TimeZoneGenericNames$NameInfo;->type:Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;
-Landroid/icu/impl/TimeZoneGenericNames$NameInfo;->tzID:Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$Pattern;->defaultValue()Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$Pattern;->key()Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$Pattern;->_defaultVal:Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames$Pattern;->_key:Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/impl/TimeZoneGenericNames;->createGenericMatchInfo(Landroid/icu/text/TimeZoneNames$MatchInfo;)Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;
-Landroid/icu/impl/TimeZoneGenericNames;->DST_CHECK_RANGE:J
-Landroid/icu/impl/TimeZoneGenericNames;->findLocal(Ljava/lang/String;ILjava/util/EnumSet;)Ljava/util/Collection;
-Landroid/icu/impl/TimeZoneGenericNames;->findTimeZoneNames(Ljava/lang/String;ILjava/util/EnumSet;)Ljava/util/Collection;
-Landroid/icu/impl/TimeZoneGenericNames;->formatGenericNonLocationName(Landroid/icu/util/TimeZone;Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;J)Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames;->GENERIC_NAMES_CACHE:Landroid/icu/impl/TimeZoneGenericNames$Cache;
-Landroid/icu/impl/TimeZoneGenericNames;->GENERIC_NON_LOCATION_TYPES:[Landroid/icu/text/TimeZoneNames$NameType;
-Landroid/icu/impl/TimeZoneGenericNames;->getLocaleDisplayNames()Landroid/icu/text/LocaleDisplayNames;
-Landroid/icu/impl/TimeZoneGenericNames;->getPartialLocationName(Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames;->getTargetRegion()Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames;->init()V
-Landroid/icu/impl/TimeZoneGenericNames;->loadStrings(Ljava/lang/String;)V
-Landroid/icu/impl/TimeZoneGenericNames;->_frozen:Z
-Landroid/icu/impl/TimeZoneGenericNames;->_genericLocationNamesMap:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/icu/impl/TimeZoneGenericNames;->_genericPartialLocationNamesMap:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/icu/impl/TimeZoneGenericNames;->_gnamesTrie:Landroid/icu/impl/TextTrieMap;
-Landroid/icu/impl/TimeZoneGenericNames;->_gnamesTrieFullyLoaded:Z
-Landroid/icu/impl/TimeZoneGenericNames;->_locale:Landroid/icu/util/ULocale;
-Landroid/icu/impl/TimeZoneGenericNames;->_localeDisplayNamesRef:Ljava/lang/ref/WeakReference;
-Landroid/icu/impl/TimeZoneGenericNames;->_patternFormatters:[Ljava/text/MessageFormat;
-Landroid/icu/impl/TimeZoneGenericNames;->_region:Ljava/lang/String;
-Landroid/icu/impl/TimeZoneGenericNames;->_tznames:Landroid/icu/text/TimeZoneNames;
-Landroid/icu/impl/Trie$DefaultGetFoldingOffset;-><init>()V
-Landroid/icu/impl/Trie2$CharSequenceIterator;->fResults:Landroid/icu/impl/Trie2$CharSequenceValues;
-Landroid/icu/impl/Trie2$CharSequenceIterator;->index:I
-Landroid/icu/impl/Trie2$CharSequenceIterator;->text:Ljava/lang/CharSequence;
-Landroid/icu/impl/Trie2$CharSequenceIterator;->textLength:I
-Landroid/icu/impl/Trie2$Trie2Iterator;->doingCodePoints:Z
-Landroid/icu/impl/Trie2$Trie2Iterator;->doLeadSurrogates:Z
-Landroid/icu/impl/Trie2$Trie2Iterator;->limitCP:I
-Landroid/icu/impl/Trie2$Trie2Iterator;->mapper:Landroid/icu/impl/Trie2$ValueMapper;
-Landroid/icu/impl/Trie2$Trie2Iterator;->nextStart:I
-Landroid/icu/impl/Trie2$Trie2Iterator;->rangeEndLS(C)I
-Landroid/icu/impl/Trie2$Trie2Iterator;->returnValue:Landroid/icu/impl/Trie2$Range;
-Landroid/icu/impl/Trie2$UTrie2Header;-><init>()V
-Landroid/icu/impl/Trie2$UTrie2Header;->dataNullOffset:I
-Landroid/icu/impl/Trie2$UTrie2Header;->index2NullOffset:I
-Landroid/icu/impl/Trie2$UTrie2Header;->indexLength:I
-Landroid/icu/impl/Trie2$UTrie2Header;->options:I
-Landroid/icu/impl/Trie2$UTrie2Header;->shiftedDataLength:I
-Landroid/icu/impl/Trie2$UTrie2Header;->shiftedHighStart:I
-Landroid/icu/impl/Trie2$UTrie2Header;->signature:I
-Landroid/icu/impl/Trie2$ValueWidth;->BITS_16:Landroid/icu/impl/Trie2$ValueWidth;
-Landroid/icu/impl/Trie2$ValueWidth;->BITS_32:Landroid/icu/impl/Trie2$ValueWidth;
-Landroid/icu/impl/Trie2$ValueWidth;->valueOf(Ljava/lang/String;)Landroid/icu/impl/Trie2$ValueWidth;
-Landroid/icu/impl/Trie2$ValueWidth;->values()[Landroid/icu/impl/Trie2$ValueWidth;
-Landroid/icu/impl/Trie2;->data16:I
-Landroid/icu/impl/Trie2;->data32:[I
-Landroid/icu/impl/Trie2;->dataLength:I
-Landroid/icu/impl/Trie2;->dataNullOffset:I
-Landroid/icu/impl/Trie2;->defaultValueMapper:Landroid/icu/impl/Trie2$ValueMapper;
-Landroid/icu/impl/Trie2;->errorValue:I
-Landroid/icu/impl/Trie2;->fHash:I
-Landroid/icu/impl/Trie2;->hashByte(II)I
-Landroid/icu/impl/Trie2;->hashInt(II)I
-Landroid/icu/impl/Trie2;->hashUChar32(II)I
-Landroid/icu/impl/Trie2;->header:Landroid/icu/impl/Trie2$UTrie2Header;
-Landroid/icu/impl/Trie2;->highStart:I
-Landroid/icu/impl/Trie2;->highValueIndex:I
-Landroid/icu/impl/Trie2;->index2NullOffset:I
-Landroid/icu/impl/Trie2;->index:[C
-Landroid/icu/impl/Trie2;->indexLength:I
-Landroid/icu/impl/Trie2;->initHash()I
-Landroid/icu/impl/Trie2;->initialValue:I
-Landroid/icu/impl/Trie2;->rangeEnd(III)I
-Landroid/icu/impl/Trie2;->UNEWTRIE2_INDEX_1_LENGTH:I
-Landroid/icu/impl/Trie2;->UNEWTRIE2_INDEX_GAP_LENGTH:I
-Landroid/icu/impl/Trie2;->UNEWTRIE2_INDEX_GAP_OFFSET:I
-Landroid/icu/impl/Trie2;->UNEWTRIE2_MAX_DATA_LENGTH:I
-Landroid/icu/impl/Trie2;->UNEWTRIE2_MAX_INDEX_2_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_BAD_UTF8_DATA_OFFSET:I
-Landroid/icu/impl/Trie2;->UTRIE2_CP_PER_INDEX_1_ENTRY:I
-Landroid/icu/impl/Trie2;->UTRIE2_DATA_BLOCK_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_DATA_GRANULARITY:I
-Landroid/icu/impl/Trie2;->UTRIE2_DATA_MASK:I
-Landroid/icu/impl/Trie2;->UTRIE2_DATA_START_OFFSET:I
-Landroid/icu/impl/Trie2;->UTRIE2_INDEX_1_OFFSET:I
-Landroid/icu/impl/Trie2;->UTRIE2_INDEX_2_BLOCK_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_INDEX_2_BMP_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_INDEX_2_MASK:I
-Landroid/icu/impl/Trie2;->UTRIE2_INDEX_2_OFFSET:I
-Landroid/icu/impl/Trie2;->UTRIE2_INDEX_SHIFT:I
-Landroid/icu/impl/Trie2;->UTRIE2_LSCP_INDEX_2_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_LSCP_INDEX_2_OFFSET:I
-Landroid/icu/impl/Trie2;->UTRIE2_MAX_INDEX_1_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_OMITTED_BMP_INDEX_1_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_OPTIONS_VALUE_BITS_MASK:I
-Landroid/icu/impl/Trie2;->UTRIE2_SHIFT_1:I
-Landroid/icu/impl/Trie2;->UTRIE2_SHIFT_1_2:I
-Landroid/icu/impl/Trie2;->UTRIE2_SHIFT_2:I
-Landroid/icu/impl/Trie2;->UTRIE2_UTF8_2B_INDEX_2_LENGTH:I
-Landroid/icu/impl/Trie2;->UTRIE2_UTF8_2B_INDEX_2_OFFSET:I
-Landroid/icu/impl/Trie2Writable;->allocDataBlock(I)I
-Landroid/icu/impl/Trie2Writable;->allocIndex2Block()I
-Landroid/icu/impl/Trie2Writable;->compactData()V
-Landroid/icu/impl/Trie2Writable;->compactIndex2()V
-Landroid/icu/impl/Trie2Writable;->compactTrie()V
-Landroid/icu/impl/Trie2Writable;->data:[I
-Landroid/icu/impl/Trie2Writable;->dataCapacity:I
-Landroid/icu/impl/Trie2Writable;->equal_int([IIII)Z
-Landroid/icu/impl/Trie2Writable;->fillBlock(IIIIIZ)V
-Landroid/icu/impl/Trie2Writable;->findHighStart(I)I
-Landroid/icu/impl/Trie2Writable;->findSameDataBlock(III)I
-Landroid/icu/impl/Trie2Writable;->findSameIndex2Block(II)I
-Landroid/icu/impl/Trie2Writable;->firstFreeBlock:I
-Landroid/icu/impl/Trie2Writable;->freeze(Landroid/icu/impl/Trie2;Landroid/icu/impl/Trie2$ValueWidth;)V
-Landroid/icu/impl/Trie2Writable;->get(IZ)I
-Landroid/icu/impl/Trie2Writable;->getDataBlock(IZ)I
-Landroid/icu/impl/Trie2Writable;->getIndex2Block(IZ)I
-Landroid/icu/impl/Trie2Writable;->index1:[I
-Landroid/icu/impl/Trie2Writable;->index2:[I
-Landroid/icu/impl/Trie2Writable;->index2Length:I
-Landroid/icu/impl/Trie2Writable;->index2NullOffset:I
-Landroid/icu/impl/Trie2Writable;->init(II)V
-Landroid/icu/impl/Trie2Writable;->isCompacted:Z
-Landroid/icu/impl/Trie2Writable;->isInNullBlock(IZ)Z
-Landroid/icu/impl/Trie2Writable;->isWritableBlock(I)Z
-Landroid/icu/impl/Trie2Writable;->map:[I
-Landroid/icu/impl/Trie2Writable;->releaseDataBlock(I)V
-Landroid/icu/impl/Trie2Writable;->set(IZI)Landroid/icu/impl/Trie2Writable;
-Landroid/icu/impl/Trie2Writable;->setIndex2Entry(II)V
-Landroid/icu/impl/Trie2Writable;->uncompact()V
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_DATA_0800_OFFSET:I
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_DATA_NULL_OFFSET:I
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_DATA_START_OFFSET:I
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_INDEX_2_NULL_OFFSET:I
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_INDEX_2_START_OFFSET:I
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_INITIAL_DATA_LENGTH:I
-Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_MEDIUM_DATA_LENGTH:I
-Landroid/icu/impl/Trie2Writable;->UTRIE2_DEBUG:Z
-Landroid/icu/impl/Trie2Writable;->UTRIE2_MAX_DATA_LENGTH:I
-Landroid/icu/impl/Trie2Writable;->UTRIE2_MAX_INDEX_LENGTH:I
-Landroid/icu/impl/Trie2Writable;->writeBlock(II)V
-Landroid/icu/impl/Trie2_16;-><init>()V
-Landroid/icu/impl/Trie2_16;->rangeEnd(III)I
-Landroid/icu/impl/Trie2_32;-><init>()V
-Landroid/icu/impl/Trie2_32;->rangeEnd(III)I
-Landroid/icu/impl/Trie;->checkHeader(I)Z
-Landroid/icu/impl/Trie;->HEADER_OPTIONS_SHIFT_MASK_:I
-Landroid/icu/impl/Trie;->m_isLatin1Linear_:Z
-Landroid/icu/impl/Trie;->m_options_:I
-Landroid/icu/impl/UBiDiProps$IsAcceptable;-><init>()V
-Landroid/icu/impl/UBiDiProps;-><init>()V
-Landroid/icu/impl/UBiDiProps;->BIDI_CONTROL_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->BPT_MASK:I
-Landroid/icu/impl/UBiDiProps;->BPT_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->CLASS_MASK:I
-Landroid/icu/impl/UBiDiProps;->DATA_FILE_NAME:Ljava/lang/String;
-Landroid/icu/impl/UBiDiProps;->DATA_NAME:Ljava/lang/String;
-Landroid/icu/impl/UBiDiProps;->DATA_TYPE:Ljava/lang/String;
-Landroid/icu/impl/UBiDiProps;->ESC_MIRROR_DELTA:I
-Landroid/icu/impl/UBiDiProps;->FMT:I
-Landroid/icu/impl/UBiDiProps;->getClassFromProps(I)I
-Landroid/icu/impl/UBiDiProps;->getFlagFromProps(II)Z
-Landroid/icu/impl/UBiDiProps;->getMirror(II)I
-Landroid/icu/impl/UBiDiProps;->getMirrorCodePoint(I)I
-Landroid/icu/impl/UBiDiProps;->getMirrorDeltaFromProps(I)I
-Landroid/icu/impl/UBiDiProps;->getMirrorIndex(I)I
-Landroid/icu/impl/UBiDiProps;->indexes:[I
-Landroid/icu/impl/UBiDiProps;->IS_MIRRORED_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->IX_JG_LIMIT2:I
-Landroid/icu/impl/UBiDiProps;->IX_JG_LIMIT:I
-Landroid/icu/impl/UBiDiProps;->IX_JG_START2:I
-Landroid/icu/impl/UBiDiProps;->IX_JG_START:I
-Landroid/icu/impl/UBiDiProps;->IX_MAX_VALUES:I
-Landroid/icu/impl/UBiDiProps;->IX_MIRROR_LENGTH:I
-Landroid/icu/impl/UBiDiProps;->IX_TOP:I
-Landroid/icu/impl/UBiDiProps;->IX_TRIE_SIZE:I
-Landroid/icu/impl/UBiDiProps;->jgArray2:[B
-Landroid/icu/impl/UBiDiProps;->jgArray:[B
-Landroid/icu/impl/UBiDiProps;->JOIN_CONTROL_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->JT_MASK:I
-Landroid/icu/impl/UBiDiProps;->JT_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->MAX_JG_MASK:I
-Landroid/icu/impl/UBiDiProps;->MAX_JG_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->mirrors:[I
-Landroid/icu/impl/UBiDiProps;->MIRROR_DELTA_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->MIRROR_INDEX_SHIFT:I
-Landroid/icu/impl/UBiDiProps;->readData(Ljava/nio/ByteBuffer;)V
-Landroid/icu/impl/UBiDiProps;->trie:Landroid/icu/impl/Trie2_16;
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;-><init>()V
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->addOffset(I)V
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->addOffsetAndCount(II)V
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->clear()V
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->containsOffset(I)Z
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->hasCountAtOffset(II)Z
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->isEmpty()Z
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->length:I
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->list:[I
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->popMinimum(Landroid/icu/util/OutputInt;)I
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->setMaxLength(I)V
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->shift(I)V
-Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->start:I
-Landroid/icu/impl/UnicodeSetStringSpan;->addToSpanNotSet(I)V
-Landroid/icu/impl/UnicodeSetStringSpan;->all:Z
-Landroid/icu/impl/UnicodeSetStringSpan;->ALL_CP_CONTAINED:S
-Landroid/icu/impl/UnicodeSetStringSpan;->LONG_SPAN:S
-Landroid/icu/impl/UnicodeSetStringSpan;->makeSpanLengthByte(I)S
-Landroid/icu/impl/UnicodeSetStringSpan;->matches16(Ljava/lang/CharSequence;ILjava/lang/String;I)Z
-Landroid/icu/impl/UnicodeSetStringSpan;->matches16CPB(Ljava/lang/CharSequence;IILjava/lang/String;I)Z
-Landroid/icu/impl/UnicodeSetStringSpan;->maxLength16:I
-Landroid/icu/impl/UnicodeSetStringSpan;->offsets:Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;
-Landroid/icu/impl/UnicodeSetStringSpan;->someRelevant:Z
-Landroid/icu/impl/UnicodeSetStringSpan;->spanContainedAndCount(Ljava/lang/CharSequence;ILandroid/icu/util/OutputInt;)I
-Landroid/icu/impl/UnicodeSetStringSpan;->spanLengths:[S
-Landroid/icu/impl/UnicodeSetStringSpan;->spanNot(Ljava/lang/CharSequence;ILandroid/icu/util/OutputInt;)I
-Landroid/icu/impl/UnicodeSetStringSpan;->spanNotBack(Ljava/lang/CharSequence;I)I
-Landroid/icu/impl/UnicodeSetStringSpan;->spanNotSet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/UnicodeSetStringSpan;->spanOne(Landroid/icu/text/UnicodeSet;Ljava/lang/CharSequence;II)I
-Landroid/icu/impl/UnicodeSetStringSpan;->spanOneBack(Landroid/icu/text/UnicodeSet;Ljava/lang/CharSequence;I)I
-Landroid/icu/impl/UnicodeSetStringSpan;->spanSet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/impl/UnicodeSetStringSpan;->spanWithStrings(Ljava/lang/CharSequence;IILandroid/icu/text/UnicodeSet$SpanCondition;)I
-Landroid/icu/impl/UnicodeSetStringSpan;->strings:Ljava/util/ArrayList;
-Landroid/icu/impl/UResource$Key;-><init>([BII)V
-Landroid/icu/impl/UResource$Key;->bytes:[B
-Landroid/icu/impl/UResource$Key;->internalSubString(II)Ljava/lang/String;
-Landroid/icu/impl/UResource$Key;->length:I
-Landroid/icu/impl/UResource$Key;->offset:I
-Landroid/icu/impl/UResource$Key;->regionMatches(ILjava/lang/CharSequence;I)Z
-Landroid/icu/impl/UResource$Key;->regionMatches([BII)Z
-Landroid/icu/impl/UResource$Key;->s:Ljava/lang/String;
-Landroid/icu/lang/CharSequences;-><init>()V
-Landroid/icu/lang/CharSequences;->codePointLength(Ljava/lang/CharSequence;)I
-Landroid/icu/lang/CharSequences;->codePoints(Ljava/lang/CharSequence;)[I
-Landroid/icu/lang/CharSequences;->compare(ILjava/lang/CharSequence;)I
-Landroid/icu/lang/CharSequences;->compare(Ljava/lang/CharSequence;I)I
-Landroid/icu/lang/CharSequences;->compare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I
-Landroid/icu/lang/CharSequences;->equals(ILjava/lang/CharSequence;)Z
-Landroid/icu/lang/CharSequences;->equals(Ljava/lang/CharSequence;I)Z
-Landroid/icu/lang/CharSequences;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z
-Landroid/icu/lang/CharSequences;->equalsChars(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z
-Landroid/icu/lang/CharSequences;->getSingleCodePoint(Ljava/lang/CharSequence;)I
-Landroid/icu/lang/CharSequences;->indexOf(Ljava/lang/CharSequence;I)I
-Landroid/icu/lang/CharSequences;->matchAfter(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I
-Landroid/icu/lang/CharSequences;->onCharacterBoundary(Ljava/lang/CharSequence;I)Z
-Landroid/icu/lang/UCharacter$BidiPairedBracketType;->COUNT:I
-Landroid/icu/lang/UCharacter$DecompositionType;->COUNT:I
-Landroid/icu/lang/UCharacter$DummyValueIterator;-><init>()V
-Landroid/icu/lang/UCharacter$EastAsianWidth;->COUNT:I
-Landroid/icu/lang/UCharacter$GraphemeClusterBreak;->COUNT:I
-Landroid/icu/lang/UCharacter$HangulSyllableType;->COUNT:I
-Landroid/icu/lang/UCharacter$JoiningGroup;->COUNT:I
-Landroid/icu/lang/UCharacter$JoiningType;->COUNT:I
-Landroid/icu/lang/UCharacter$LineBreak;->COUNT:I
-Landroid/icu/lang/UCharacter$NumericType;->COUNT:I
-Landroid/icu/lang/UCharacter$SentenceBreak;->COUNT:I
-Landroid/icu/lang/UCharacter$UCharacterTypeIterator$MaskType;-><init>()V
-Landroid/icu/lang/UCharacter$UCharacterTypeIterator;-><init>()V
-Landroid/icu/lang/UCharacter$UCharacterTypeIterator;->MASK_TYPE:Landroid/icu/lang/UCharacter$UCharacterTypeIterator$MaskType;
-Landroid/icu/lang/UCharacter$UCharacterTypeIterator;->range:Landroid/icu/impl/Trie2$Range;
-Landroid/icu/lang/UCharacter$UCharacterTypeIterator;->trieIterator:Ljava/util/Iterator;
-Landroid/icu/lang/UCharacter$UnicodeBlock;-><init>(Ljava/lang/String;I)V
-Landroid/icu/lang/UCharacter$UnicodeBlock;->BLOCKS_:[Landroid/icu/lang/UCharacter$UnicodeBlock;
-Landroid/icu/lang/UCharacter$UnicodeBlock;->COUNT:I
-Landroid/icu/lang/UCharacter$UnicodeBlock;->mref:Ljava/lang/ref/SoftReference;
-Landroid/icu/lang/UCharacter$UnicodeBlock;->m_id_:I
-Landroid/icu/lang/UCharacter$UnicodeBlock;->trimBlockName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/lang/UCharacter$WordBreak;->COUNT:I
-Landroid/icu/lang/UCharacter;-><init>()V
-Landroid/icu/lang/UCharacter;->APPLICATION_PROGRAM_COMMAND_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_EIGHT_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_FIVE_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_FOUR_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_HUNDRED_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_NINE_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_ONE_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_SEVEN_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_SIX_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_TEN_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_THOUSAND_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_THREE_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_TWO_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_ZERO_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_EIGHTH_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_FIFTH_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_FIRST_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_FOURTH_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_HUNDRED_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_HUNDRED_MILLION_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_NINETH_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_SECOND_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_SEVENTH_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_SIXTH_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_TEN_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_TEN_THOUSAND_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_THIRD_:I
-Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_THOUSAND_:I
-Landroid/icu/lang/UCharacter;->DELETE_:I
-Landroid/icu/lang/UCharacter;->FIGURE_SPACE_:I
-Landroid/icu/lang/UCharacter;->getCaseLocale(Landroid/icu/util/ULocale;)I
-Landroid/icu/lang/UCharacter;->getCaseLocale(Ljava/util/Locale;)I
-Landroid/icu/lang/UCharacter;->getCharFromName1_0(Ljava/lang/String;)I
-Landroid/icu/lang/UCharacter;->getDefaultCaseLocale()I
-Landroid/icu/lang/UCharacter;->getISOComment(I)Ljava/lang/String;
-Landroid/icu/lang/UCharacter;->getName1_0(I)Ljava/lang/String;
-Landroid/icu/lang/UCharacter;->getName1_0Iterator()Landroid/icu/util/ValueIterator;
-Landroid/icu/lang/UCharacter;->getPropertyValueEnumNoThrow(ILjava/lang/CharSequence;)I
-Landroid/icu/lang/UCharacter;->getStringPropertyValue(III)Ljava/lang/String;
-Landroid/icu/lang/UCharacter;->IDEOGRAPHIC_NUMBER_ZERO_:I
-Landroid/icu/lang/UCharacter;->isJavaLetter(I)Z
-Landroid/icu/lang/UCharacter;->isJavaLetterOrDigit(I)Z
-Landroid/icu/lang/UCharacter;->isSpace(I)Z
-Landroid/icu/lang/UCharacter;->LAST_CHAR_MASK_:I
-Landroid/icu/lang/UCharacter;->NARROW_NO_BREAK_SPACE_:I
-Landroid/icu/lang/UCharacter;->NO_BREAK_SPACE_:I
-Landroid/icu/lang/UCharacter;->toTitleFirst(Landroid/icu/util/ULocale;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/lang/UCharacter;->TO_TITLE_WHOLE_STRING_NO_LOWERCASE:Landroid/icu/text/CaseMap$Title;
-Landroid/icu/lang/UCharacter;->UNIT_SEPARATOR_:I
-Landroid/icu/lang/UCharacterCategory;-><init>()V
-Landroid/icu/lang/UCharacterDirection;-><init>()V
-Landroid/icu/lang/UCharacterEnums$ECharacterCategory;->CHAR_CATEGORY_COUNT:B
-Landroid/icu/lang/UCharacterEnums$ECharacterDirection;->CHAR_DIRECTION_COUNT:I
-Landroid/icu/lang/UCharacterEnums;-><init>()V
-Landroid/icu/lang/UProperty$NameChoice;->COUNT:I
-Landroid/icu/lang/UProperty;->BINARY_LIMIT:I
-Landroid/icu/lang/UProperty;->DOUBLE_LIMIT:I
-Landroid/icu/lang/UProperty;->INT_LIMIT:I
-Landroid/icu/lang/UProperty;->ISO_COMMENT:I
-Landroid/icu/lang/UProperty;->MASK_LIMIT:I
-Landroid/icu/lang/UProperty;->OTHER_PROPERTY_LIMIT:I
-Landroid/icu/lang/UProperty;->STRING_LIMIT:I
-Landroid/icu/lang/UProperty;->UNDEFINED:I
-Landroid/icu/lang/UProperty;->UNICODE_1_NAME:I
-Landroid/icu/lang/UScript$ScriptMetadata;-><init>()V
-Landroid/icu/lang/UScript$ScriptMetadata;->CASED:I
-Landroid/icu/lang/UScript$ScriptMetadata;->EXCLUSION:I
-Landroid/icu/lang/UScript$ScriptMetadata;->getScriptProps(I)I
-Landroid/icu/lang/UScript$ScriptMetadata;->LB_LETTERS:I
-Landroid/icu/lang/UScript$ScriptMetadata;->LIMITED_USE:I
-Landroid/icu/lang/UScript$ScriptMetadata;->RECOMMENDED:I
-Landroid/icu/lang/UScript$ScriptMetadata;->RTL:I
-Landroid/icu/lang/UScript$ScriptMetadata;->SCRIPT_PROPS:[I
-Landroid/icu/lang/UScript$ScriptMetadata;->UNKNOWN:I
-Landroid/icu/lang/UScript;-><init>()V
-Landroid/icu/lang/UScript;->CODE_LIMIT:I
-Landroid/icu/lang/UScript;->DUPLOYAN_SHORTAND:I
-Landroid/icu/lang/UScript;->findCodeFromLocale(Landroid/icu/util/ULocale;)[I
-Landroid/icu/lang/UScript;->getCodesFromLocale(Landroid/icu/util/ULocale;)[I
-Landroid/icu/lang/UScript;->usageValues:[Landroid/icu/lang/UScript$ScriptUsage;
-Landroid/icu/lang/UScriptRun$ParenStackEntry;-><init>(II)V
-Landroid/icu/lang/UScriptRun$ParenStackEntry;->pairIndex:I
-Landroid/icu/lang/UScriptRun$ParenStackEntry;->scriptCode:I
-Landroid/icu/lang/UScriptRun;-><init>()V
-Landroid/icu/lang/UScriptRun;-><init>(Ljava/lang/String;)V
-Landroid/icu/lang/UScriptRun;-><init>(Ljava/lang/String;II)V
-Landroid/icu/lang/UScriptRun;-><init>([C)V
-Landroid/icu/lang/UScriptRun;-><init>([CII)V
-Landroid/icu/lang/UScriptRun;->dec(I)I
-Landroid/icu/lang/UScriptRun;->dec(II)I
-Landroid/icu/lang/UScriptRun;->emptyCharArray:[C
-Landroid/icu/lang/UScriptRun;->fixup(I)V
-Landroid/icu/lang/UScriptRun;->fixupCount:I
-Landroid/icu/lang/UScriptRun;->getPairIndex(I)I
-Landroid/icu/lang/UScriptRun;->getScriptCode()I
-Landroid/icu/lang/UScriptRun;->getScriptLimit()I
-Landroid/icu/lang/UScriptRun;->getScriptStart()I
-Landroid/icu/lang/UScriptRun;->highBit(I)B
-Landroid/icu/lang/UScriptRun;->inc(I)I
-Landroid/icu/lang/UScriptRun;->inc(II)I
-Landroid/icu/lang/UScriptRun;->limitInc(I)I
-Landroid/icu/lang/UScriptRun;->mod(I)I
-Landroid/icu/lang/UScriptRun;->next()Z
-Landroid/icu/lang/UScriptRun;->pairedCharExtra:I
-Landroid/icu/lang/UScriptRun;->pairedCharPower:I
-Landroid/icu/lang/UScriptRun;->pairedChars:[I
-Landroid/icu/lang/UScriptRun;->parenSP:I
-Landroid/icu/lang/UScriptRun;->parenStack:[Landroid/icu/lang/UScriptRun$ParenStackEntry;
-Landroid/icu/lang/UScriptRun;->PAREN_STACK_DEPTH:I
-Landroid/icu/lang/UScriptRun;->pop()V
-Landroid/icu/lang/UScriptRun;->push(II)V
-Landroid/icu/lang/UScriptRun;->pushCount:I
-Landroid/icu/lang/UScriptRun;->reset()V
-Landroid/icu/lang/UScriptRun;->reset(II)V
-Landroid/icu/lang/UScriptRun;->reset(Ljava/lang/String;)V
-Landroid/icu/lang/UScriptRun;->reset(Ljava/lang/String;II)V
-Landroid/icu/lang/UScriptRun;->reset([C)V
-Landroid/icu/lang/UScriptRun;->reset([CII)V
-Landroid/icu/lang/UScriptRun;->sameScript(II)Z
-Landroid/icu/lang/UScriptRun;->scriptCode:I
-Landroid/icu/lang/UScriptRun;->scriptLimit:I
-Landroid/icu/lang/UScriptRun;->scriptStart:I
-Landroid/icu/lang/UScriptRun;->stackIsEmpty()Z
-Landroid/icu/lang/UScriptRun;->stackIsNotEmpty()Z
-Landroid/icu/lang/UScriptRun;->syncFixup()V
-Landroid/icu/lang/UScriptRun;->text:[C
-Landroid/icu/lang/UScriptRun;->textIndex:I
-Landroid/icu/lang/UScriptRun;->textLimit:I
-Landroid/icu/lang/UScriptRun;->textStart:I
-Landroid/icu/lang/UScriptRun;->top()Landroid/icu/lang/UScriptRun$ParenStackEntry;
-Landroid/icu/math/BigDecimal;-><init>()V
-Landroid/icu/math/BigDecimal;->allzero([BI)Z
-Landroid/icu/math/BigDecimal;->bad([C)V
-Landroid/icu/math/BigDecimal;->badarg(Ljava/lang/String;ILjava/lang/String;)V
-Landroid/icu/math/BigDecimal;->byteaddsub([BI[BIIZ)[B
-Landroid/icu/math/BigDecimal;->bytecar:[B
-Landroid/icu/math/BigDecimal;->bytedig:[B
-Landroid/icu/math/BigDecimal;->checkdigits(Landroid/icu/math/BigDecimal;I)V
-Landroid/icu/math/BigDecimal;->clone(Landroid/icu/math/BigDecimal;)Landroid/icu/math/BigDecimal;
-Landroid/icu/math/BigDecimal;->diginit()[B
-Landroid/icu/math/BigDecimal;->dodivide(CLandroid/icu/math/BigDecimal;Landroid/icu/math/MathContext;I)Landroid/icu/math/BigDecimal;
-Landroid/icu/math/BigDecimal;->exp:I
-Landroid/icu/math/BigDecimal;->extend([BI)[B
-Landroid/icu/math/BigDecimal;->finish(Landroid/icu/math/MathContext;Z)Landroid/icu/math/BigDecimal;
-Landroid/icu/math/BigDecimal;->form:B
-Landroid/icu/math/BigDecimal;->ind:B
-Landroid/icu/math/BigDecimal;->intcheck(II)I
-Landroid/icu/math/BigDecimal;->isneg:B
-Landroid/icu/math/BigDecimal;->ispos:B
-Landroid/icu/math/BigDecimal;->iszero:B
-Landroid/icu/math/BigDecimal;->layout()[C
-Landroid/icu/math/BigDecimal;->mant:[B
-Landroid/icu/math/BigDecimal;->MaxArg:I
-Landroid/icu/math/BigDecimal;->MaxExp:I
-Landroid/icu/math/BigDecimal;->MinArg:I
-Landroid/icu/math/BigDecimal;->MinExp:I
-Landroid/icu/math/BigDecimal;->plainMC:Landroid/icu/math/MathContext;
-Landroid/icu/math/BigDecimal;->round(II)Landroid/icu/math/BigDecimal;
-Landroid/icu/math/BigDecimal;->round(Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal;
-Landroid/icu/math/MathContext;->DEFAULT_DIGITS:I
-Landroid/icu/math/MathContext;->DEFAULT_FORM:I
-Landroid/icu/math/MathContext;->DEFAULT_LOSTDIGITS:Z
-Landroid/icu/math/MathContext;->DEFAULT_ROUNDINGMODE:I
-Landroid/icu/math/MathContext;->digits:I
-Landroid/icu/math/MathContext;->form:I
-Landroid/icu/math/MathContext;->isValidRound(I)Z
-Landroid/icu/math/MathContext;->lostDigits:Z
-Landroid/icu/math/MathContext;->MAX_DIGITS:I
-Landroid/icu/math/MathContext;->MIN_DIGITS:I
-Landroid/icu/math/MathContext;->roundingMode:I
-Landroid/icu/math/MathContext;->ROUNDS:[I
-Landroid/icu/math/MathContext;->ROUNDWORDS:[Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex$Bucket;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;)V
-Landroid/icu/text/AlphabeticIndex$Bucket;->displayBucket:Landroid/icu/text/AlphabeticIndex$Bucket;
-Landroid/icu/text/AlphabeticIndex$Bucket;->displayIndex:I
-Landroid/icu/text/AlphabeticIndex$Bucket;->label:Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex$Bucket;->labelType:Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;
-Landroid/icu/text/AlphabeticIndex$Bucket;->lowerBoundary:Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex$Bucket;->records:Ljava/util/List;
-Landroid/icu/text/AlphabeticIndex$BucketList;-><init>(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
-Landroid/icu/text/AlphabeticIndex$BucketList;->bucketList:Ljava/util/ArrayList;
-Landroid/icu/text/AlphabeticIndex$BucketList;->fullIterator()Ljava/util/Iterator;
-Landroid/icu/text/AlphabeticIndex$BucketList;->getBucketCount()I
-Landroid/icu/text/AlphabeticIndex$BucketList;->getBucketIndex(Ljava/lang/CharSequence;Landroid/icu/text/Collator;)I
-Landroid/icu/text/AlphabeticIndex$BucketList;->immutableVisibleList:Ljava/util/List;
-Landroid/icu/text/AlphabeticIndex$ImmutableIndex;-><init>(Landroid/icu/text/AlphabeticIndex$BucketList;Landroid/icu/text/Collator;)V
-Landroid/icu/text/AlphabeticIndex$ImmutableIndex;->buckets:Landroid/icu/text/AlphabeticIndex$BucketList;
-Landroid/icu/text/AlphabeticIndex$ImmutableIndex;->collatorPrimaryOnly:Landroid/icu/text/Collator;
-Landroid/icu/text/AlphabeticIndex$Record;-><init>(Ljava/lang/CharSequence;Ljava/lang/Object;)V
-Landroid/icu/text/AlphabeticIndex$Record;->data:Ljava/lang/Object;
-Landroid/icu/text/AlphabeticIndex$Record;->name:Ljava/lang/CharSequence;
-Landroid/icu/text/AlphabeticIndex;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/AlphabeticIndex;->addChineseIndexCharacters()Z
-Landroid/icu/text/AlphabeticIndex;->addIndexExemplars(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/AlphabeticIndex;->BASE:Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex;->binaryCmp:Ljava/util/Comparator;
-Landroid/icu/text/AlphabeticIndex;->buckets:Landroid/icu/text/AlphabeticIndex$BucketList;
-Landroid/icu/text/AlphabeticIndex;->CGJ:C
-Landroid/icu/text/AlphabeticIndex;->collatorExternal:Landroid/icu/text/RuleBasedCollator;
-Landroid/icu/text/AlphabeticIndex;->collatorOriginal:Landroid/icu/text/RuleBasedCollator;
-Landroid/icu/text/AlphabeticIndex;->collatorPrimaryOnly:Landroid/icu/text/RuleBasedCollator;
-Landroid/icu/text/AlphabeticIndex;->createBucketList()Landroid/icu/text/AlphabeticIndex$BucketList;
-Landroid/icu/text/AlphabeticIndex;->firstCharsInScripts:Ljava/util/List;
-Landroid/icu/text/AlphabeticIndex;->fixLabel(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex;->GC_CN_MASK:I
-Landroid/icu/text/AlphabeticIndex;->GC_LL_MASK:I
-Landroid/icu/text/AlphabeticIndex;->GC_LM_MASK:I
-Landroid/icu/text/AlphabeticIndex;->GC_LO_MASK:I
-Landroid/icu/text/AlphabeticIndex;->GC_LT_MASK:I
-Landroid/icu/text/AlphabeticIndex;->GC_LU_MASK:I
-Landroid/icu/text/AlphabeticIndex;->GC_L_MASK:I
-Landroid/icu/text/AlphabeticIndex;->getFirstCharactersInScripts()Ljava/util/List;
-Landroid/icu/text/AlphabeticIndex;->hasMultiplePrimaryWeights(Landroid/icu/text/RuleBasedCollator;JLjava/lang/String;)Z
-Landroid/icu/text/AlphabeticIndex;->inflowLabel:Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex;->initBuckets()V
-Landroid/icu/text/AlphabeticIndex;->initialLabels:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/AlphabeticIndex;->initLabels()Ljava/util/List;
-Landroid/icu/text/AlphabeticIndex;->inputList:Ljava/util/List;
-Landroid/icu/text/AlphabeticIndex;->isOneLabelBetterThanOther(Landroid/icu/text/Normalizer2;Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/text/AlphabeticIndex;->maxLabelCount:I
-Landroid/icu/text/AlphabeticIndex;->overflowLabel:Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex;->recordComparator:Ljava/util/Comparator;
-Landroid/icu/text/AlphabeticIndex;->separated(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/AlphabeticIndex;->underflowLabel:Ljava/lang/String;
-Landroid/icu/text/ArabicShaping;->ALEFTYPE:I
-Landroid/icu/text/ArabicShaping;->araLink:[I
-Landroid/icu/text/ArabicShaping;->calculateSize([CII)I
-Landroid/icu/text/ArabicShaping;->changeLamAlef(C)C
-Landroid/icu/text/ArabicShaping;->convertFEto06:[I
-Landroid/icu/text/ArabicShaping;->convertNormalizedLamAlef:[C
-Landroid/icu/text/ArabicShaping;->countSpacesLeft([CII)I
-Landroid/icu/text/ArabicShaping;->countSpacesRight([CII)I
-Landroid/icu/text/ArabicShaping;->countSpaceSub([CIC)I
-Landroid/icu/text/ArabicShaping;->deshapeNormalize([CII)I
-Landroid/icu/text/ArabicShaping;->deShapeUnicode([CIII)I
-Landroid/icu/text/ArabicShaping;->DESHAPE_MODE:I
-Landroid/icu/text/ArabicShaping;->DIGITS_AN2EN:I
-Landroid/icu/text/ArabicShaping;->DIGITS_EN2AN:I
-Landroid/icu/text/ArabicShaping;->DIGITS_EN2AN_INIT_AL:I
-Landroid/icu/text/ArabicShaping;->DIGITS_EN2AN_INIT_LR:I
-Landroid/icu/text/ArabicShaping;->DIGITS_MASK:I
-Landroid/icu/text/ArabicShaping;->DIGITS_NOOP:I
-Landroid/icu/text/ArabicShaping;->DIGIT_TYPE_AN:I
-Landroid/icu/text/ArabicShaping;->DIGIT_TYPE_AN_EXTENDED:I
-Landroid/icu/text/ArabicShaping;->DIGIT_TYPE_MASK:I
-Landroid/icu/text/ArabicShaping;->expandCompositChar([CIIII)I
-Landroid/icu/text/ArabicShaping;->expandCompositCharAtBegin([CIII)Z
-Landroid/icu/text/ArabicShaping;->expandCompositCharAtEnd([CIII)Z
-Landroid/icu/text/ArabicShaping;->expandCompositCharAtNear([CIIIII)Z
-Landroid/icu/text/ArabicShaping;->flipArray([CIII)I
-Landroid/icu/text/ArabicShaping;->getLink(C)I
-Landroid/icu/text/ArabicShaping;->HAMZA06_CHAR:C
-Landroid/icu/text/ArabicShaping;->HAMZAFE_CHAR:C
-Landroid/icu/text/ArabicShaping;->handleGeneratedSpaces([CII)I
-Landroid/icu/text/ArabicShaping;->handleTashkeelWithTatweel([CI)I
-Landroid/icu/text/ArabicShaping;->internalShape([CII[CII)I
-Landroid/icu/text/ArabicShaping;->invertBuffer([CII)V
-Landroid/icu/text/ArabicShaping;->IRRELEVANT:I
-Landroid/icu/text/ArabicShaping;->irrelevantPos:[I
-Landroid/icu/text/ArabicShaping;->isAlefChar(C)Z
-Landroid/icu/text/ArabicShaping;->isIsolatedTashkeelChar(C)I
-Landroid/icu/text/ArabicShaping;->isLamAlefChar(C)Z
-Landroid/icu/text/ArabicShaping;->isLogical:Z
-Landroid/icu/text/ArabicShaping;->isNormalizedLamAlefChar(C)Z
-Landroid/icu/text/ArabicShaping;->isSeenFamilyChar(C)I
-Landroid/icu/text/ArabicShaping;->isTashkeelChar(C)Z
-Landroid/icu/text/ArabicShaping;->isTashkeelCharFE(C)Z
-Landroid/icu/text/ArabicShaping;->isTashkeelOnTatweelChar(C)I
-Landroid/icu/text/ArabicShaping;->LAMALEF_AUTO:I
-Landroid/icu/text/ArabicShaping;->LAMALEF_BEGIN:I
-Landroid/icu/text/ArabicShaping;->LAMALEF_END:I
-Landroid/icu/text/ArabicShaping;->LAMALEF_MASK:I
-Landroid/icu/text/ArabicShaping;->LAMALEF_NEAR:I
-Landroid/icu/text/ArabicShaping;->LAMALEF_RESIZE:I
-Landroid/icu/text/ArabicShaping;->LAMALEF_SPACE_SUB:C
-Landroid/icu/text/ArabicShaping;->LAMTYPE:I
-Landroid/icu/text/ArabicShaping;->LAM_CHAR:C
-Landroid/icu/text/ArabicShaping;->LENGTH_FIXED_SPACES_AT_BEGINNING:I
-Landroid/icu/text/ArabicShaping;->LENGTH_FIXED_SPACES_AT_END:I
-Landroid/icu/text/ArabicShaping;->LENGTH_FIXED_SPACES_NEAR:I
-Landroid/icu/text/ArabicShaping;->LENGTH_GROW_SHRINK:I
-Landroid/icu/text/ArabicShaping;->LENGTH_MASK:I
-Landroid/icu/text/ArabicShaping;->LETTERS_MASK:I
-Landroid/icu/text/ArabicShaping;->LETTERS_NOOP:I
-Landroid/icu/text/ArabicShaping;->LETTERS_SHAPE:I
-Landroid/icu/text/ArabicShaping;->LETTERS_SHAPE_TASHKEEL_ISOLATED:I
-Landroid/icu/text/ArabicShaping;->LETTERS_UNSHAPE:I
-Landroid/icu/text/ArabicShaping;->LINKL:I
-Landroid/icu/text/ArabicShaping;->LINKR:I
-Landroid/icu/text/ArabicShaping;->LINK_MASK:I
-Landroid/icu/text/ArabicShaping;->NEW_TAIL_CHAR:C
-Landroid/icu/text/ArabicShaping;->normalize([CII)I
-Landroid/icu/text/ArabicShaping;->OLD_TAIL_CHAR:C
-Landroid/icu/text/ArabicShaping;->options:I
-Landroid/icu/text/ArabicShaping;->presLink:[I
-Landroid/icu/text/ArabicShaping;->SEEN_MASK:I
-Landroid/icu/text/ArabicShaping;->SEEN_TWOCELL_NEAR:I
-Landroid/icu/text/ArabicShaping;->SHADDA06_CHAR:C
-Landroid/icu/text/ArabicShaping;->SHADDA_CHAR:C
-Landroid/icu/text/ArabicShaping;->SHADDA_TATWEEL_CHAR:C
-Landroid/icu/text/ArabicShaping;->shape([CII)V
-Landroid/icu/text/ArabicShaping;->shape([CII[CII)I
-Landroid/icu/text/ArabicShaping;->shapeTable:[[[I
-Landroid/icu/text/ArabicShaping;->shapeToArabicDigitsWithContext([CIICZ)V
-Landroid/icu/text/ArabicShaping;->shapeUnicode([CIIII)I
-Landroid/icu/text/ArabicShaping;->SHAPE_MODE:I
-Landroid/icu/text/ArabicShaping;->SHAPE_TAIL_NEW_UNICODE:I
-Landroid/icu/text/ArabicShaping;->SHAPE_TAIL_TYPE_MASK:I
-Landroid/icu/text/ArabicShaping;->shiftArray([CIIC)V
-Landroid/icu/text/ArabicShaping;->spacesRelativeToTextBeginEnd:Z
-Landroid/icu/text/ArabicShaping;->SPACES_RELATIVE_TO_TEXT_BEGIN_END:I
-Landroid/icu/text/ArabicShaping;->SPACES_RELATIVE_TO_TEXT_MASK:I
-Landroid/icu/text/ArabicShaping;->SPACE_CHAR:C
-Landroid/icu/text/ArabicShaping;->specialChar(C)I
-Landroid/icu/text/ArabicShaping;->tailChar:C
-Landroid/icu/text/ArabicShaping;->tailFamilyIsolatedFinal:[I
-Landroid/icu/text/ArabicShaping;->tashkeelMedial:[I
-Landroid/icu/text/ArabicShaping;->TASHKEEL_BEGIN:I
-Landroid/icu/text/ArabicShaping;->TASHKEEL_END:I
-Landroid/icu/text/ArabicShaping;->TASHKEEL_MASK:I
-Landroid/icu/text/ArabicShaping;->TASHKEEL_REPLACE_BY_TATWEEL:I
-Landroid/icu/text/ArabicShaping;->TASHKEEL_RESIZE:I
-Landroid/icu/text/ArabicShaping;->TASHKEEL_SPACE_SUB:C
-Landroid/icu/text/ArabicShaping;->TATWEEL_CHAR:C
-Landroid/icu/text/ArabicShaping;->TEXT_DIRECTION_LOGICAL:I
-Landroid/icu/text/ArabicShaping;->TEXT_DIRECTION_MASK:I
-Landroid/icu/text/ArabicShaping;->TEXT_DIRECTION_VISUAL_LTR:I
-Landroid/icu/text/ArabicShaping;->TEXT_DIRECTION_VISUAL_RTL:I
-Landroid/icu/text/ArabicShaping;->yehHamzaToYeh:[C
-Landroid/icu/text/ArabicShaping;->YEHHAMZA_MASK:I
-Landroid/icu/text/ArabicShaping;->YEHHAMZA_TWOCELL_NEAR:I
-Landroid/icu/text/ArabicShaping;->YEH_HAMZAFE_CHAR:C
-Landroid/icu/text/ArabicShaping;->YEH_HAMZA_CHAR:C
-Landroid/icu/text/ArabicShapingException;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/Bidi$BracketData;-><init>()V
-Landroid/icu/text/Bidi$BracketData;->isNumbersSpecial:Z
-Landroid/icu/text/Bidi$BracketData;->isoRunLast:I
-Landroid/icu/text/Bidi$BracketData;->isoRuns:[Landroid/icu/text/Bidi$IsoRun;
-Landroid/icu/text/Bidi$BracketData;->openings:[Landroid/icu/text/Bidi$Opening;
-Landroid/icu/text/Bidi$ImpTabPair;-><init>([[B[[B[S[S)V
-Landroid/icu/text/Bidi$ImpTabPair;->impact:[[S
-Landroid/icu/text/Bidi$ImpTabPair;->imptab:[[[B
-Landroid/icu/text/Bidi$InsertPoints;-><init>()V
-Landroid/icu/text/Bidi$InsertPoints;->confirmed:I
-Landroid/icu/text/Bidi$InsertPoints;->points:[Landroid/icu/text/Bidi$Point;
-Landroid/icu/text/Bidi$InsertPoints;->size:I
-Landroid/icu/text/Bidi$Isolate;-><init>()V
-Landroid/icu/text/Bidi$Isolate;->start1:I
-Landroid/icu/text/Bidi$Isolate;->startON:I
-Landroid/icu/text/Bidi$Isolate;->state:S
-Landroid/icu/text/Bidi$Isolate;->stateImp:S
-Landroid/icu/text/Bidi$IsoRun;-><init>()V
-Landroid/icu/text/Bidi$IsoRun;->contextDir:B
-Landroid/icu/text/Bidi$IsoRun;->contextPos:I
-Landroid/icu/text/Bidi$IsoRun;->lastBase:B
-Landroid/icu/text/Bidi$IsoRun;->lastStrong:B
-Landroid/icu/text/Bidi$IsoRun;->level:B
-Landroid/icu/text/Bidi$IsoRun;->limit:S
-Landroid/icu/text/Bidi$IsoRun;->start:S
-Landroid/icu/text/Bidi$LevState;-><init>()V
-Landroid/icu/text/Bidi$LevState;->impAct:[S
-Landroid/icu/text/Bidi$LevState;->impTab:[[B
-Landroid/icu/text/Bidi$LevState;->lastStrongRTL:I
-Landroid/icu/text/Bidi$LevState;->runLevel:B
-Landroid/icu/text/Bidi$LevState;->runStart:I
-Landroid/icu/text/Bidi$LevState;->startL2EN:I
-Landroid/icu/text/Bidi$LevState;->startON:I
-Landroid/icu/text/Bidi$LevState;->state:S
-Landroid/icu/text/Bidi$Opening;-><init>()V
-Landroid/icu/text/Bidi$Opening;->contextDir:B
-Landroid/icu/text/Bidi$Opening;->contextPos:I
-Landroid/icu/text/Bidi$Opening;->flags:S
-Landroid/icu/text/Bidi$Opening;->match:I
-Landroid/icu/text/Bidi$Opening;->position:I
-Landroid/icu/text/Bidi$Point;-><init>()V
-Landroid/icu/text/Bidi$Point;->flag:I
-Landroid/icu/text/Bidi$Point;->pos:I
-Landroid/icu/text/Bidi;-><init>()V
-Landroid/icu/text/Bidi;-><init>(II)V
-Landroid/icu/text/Bidi;-><init>(Ljava/lang/String;I)V
-Landroid/icu/text/Bidi;-><init>(Ljava/text/AttributedCharacterIterator;)V
-Landroid/icu/text/Bidi;-><init>([CI[BIII)V
-Landroid/icu/text/Bidi;->addPoint(II)V
-Landroid/icu/text/Bidi;->adjustWSLevels()V
-Landroid/icu/text/Bidi;->AL:B
-Landroid/icu/text/Bidi;->AN:B
-Landroid/icu/text/Bidi;->B:B
-Landroid/icu/text/Bidi;->baseIsLeftToRight()Z
-Landroid/icu/text/Bidi;->bdp:Landroid/icu/impl/UBiDiProps;
-Landroid/icu/text/Bidi;->Bidi_Abs(I)I
-Landroid/icu/text/Bidi;->Bidi_Min(II)I
-Landroid/icu/text/Bidi;->BN:B
-Landroid/icu/text/Bidi;->bracketAddOpening(Landroid/icu/text/Bidi$BracketData;CI)V
-Landroid/icu/text/Bidi;->bracketInit(Landroid/icu/text/Bidi$BracketData;)V
-Landroid/icu/text/Bidi;->bracketProcessB(Landroid/icu/text/Bidi$BracketData;B)V
-Landroid/icu/text/Bidi;->bracketProcessBoundary(Landroid/icu/text/Bidi$BracketData;IBB)V
-Landroid/icu/text/Bidi;->bracketProcessChar(Landroid/icu/text/Bidi$BracketData;I)V
-Landroid/icu/text/Bidi;->bracketProcessClosing(Landroid/icu/text/Bidi$BracketData;II)B
-Landroid/icu/text/Bidi;->bracketProcessLRI_RLI(Landroid/icu/text/Bidi$BracketData;B)V
-Landroid/icu/text/Bidi;->bracketProcessPDI(Landroid/icu/text/Bidi$BracketData;)V
-Landroid/icu/text/Bidi;->checkExplicitLevels()B
-Landroid/icu/text/Bidi;->checkParaCount()V
-Landroid/icu/text/Bidi;->CLASS_DEFAULT:I
-Landroid/icu/text/Bidi;->controlCount:I
-Landroid/icu/text/Bidi;->countParagraphs()I
-Landroid/icu/text/Bidi;->countRuns()I
-Landroid/icu/text/Bidi;->CR:C
-Landroid/icu/text/Bidi;->createLineBidi(II)Landroid/icu/text/Bidi;
-Landroid/icu/text/Bidi;->CS:B
-Landroid/icu/text/Bidi;->customClassifier:Landroid/icu/text/BidiClassifier;
-Landroid/icu/text/Bidi;->defaultParaLevel:B
-Landroid/icu/text/Bidi;->direction:B
-Landroid/icu/text/Bidi;->directionFromFlags()B
-Landroid/icu/text/Bidi;->DIRECTION_DEFAULT_LEFT_TO_RIGHT:I
-Landroid/icu/text/Bidi;->DIRECTION_DEFAULT_RIGHT_TO_LEFT:I
-Landroid/icu/text/Bidi;->DIRECTION_LEFT_TO_RIGHT:I
-Landroid/icu/text/Bidi;->DIRECTION_RIGHT_TO_LEFT:I
-Landroid/icu/text/Bidi;->DirFromStrong(B)B
-Landroid/icu/text/Bidi;->DirPropFlag(B)I
-Landroid/icu/text/Bidi;->DirPropFlagE(B)I
-Landroid/icu/text/Bidi;->DirPropFlagE:[I
-Landroid/icu/text/Bidi;->DirPropFlagLR(B)I
-Landroid/icu/text/Bidi;->DirPropFlagLR:[I
-Landroid/icu/text/Bidi;->DirPropFlagMultiRuns:I
-Landroid/icu/text/Bidi;->DirPropFlagO(B)I
-Landroid/icu/text/Bidi;->DirPropFlagO:[I
-Landroid/icu/text/Bidi;->dirProps:[B
-Landroid/icu/text/Bidi;->dirPropsMemory:[B
-Landroid/icu/text/Bidi;->DO_MIRRORING:S
-Landroid/icu/text/Bidi;->EN:B
-Landroid/icu/text/Bidi;->ENL:B
-Landroid/icu/text/Bidi;->ENR:B
-Landroid/icu/text/Bidi;->epilogue:Ljava/lang/String;
-Landroid/icu/text/Bidi;->ES:B
-Landroid/icu/text/Bidi;->ET:B
-Landroid/icu/text/Bidi;->FIRSTALLOC:I
-Landroid/icu/text/Bidi;->firstL_R_AL()B
-Landroid/icu/text/Bidi;->firstL_R_AL_EN_AN()B
-Landroid/icu/text/Bidi;->fixN0c(Landroid/icu/text/Bidi$BracketData;IIB)V
-Landroid/icu/text/Bidi;->flags:I
-Landroid/icu/text/Bidi;->FOUND_L:B
-Landroid/icu/text/Bidi;->FOUND_R:B
-Landroid/icu/text/Bidi;->FSI:B
-Landroid/icu/text/Bidi;->GetAction(B)S
-Landroid/icu/text/Bidi;->GetActionProps(S)S
-Landroid/icu/text/Bidi;->getBaseDirection(Ljava/lang/CharSequence;)B
-Landroid/icu/text/Bidi;->getBaseLevel()I
-Landroid/icu/text/Bidi;->getCustomClassifier()Landroid/icu/text/BidiClassifier;
-Landroid/icu/text/Bidi;->getCustomizedClass(I)I
-Landroid/icu/text/Bidi;->getDirection()B
-Landroid/icu/text/Bidi;->getDirProps()V
-Landroid/icu/text/Bidi;->getDirPropsMemory(I)V
-Landroid/icu/text/Bidi;->getDirPropsMemory(ZI)V
-Landroid/icu/text/Bidi;->getInitialDirPropsMemory(I)V
-Landroid/icu/text/Bidi;->getInitialLevelsMemory(I)V
-Landroid/icu/text/Bidi;->getInitialRunsMemory(I)V
-Landroid/icu/text/Bidi;->getLength()I
-Landroid/icu/text/Bidi;->getLevelAt(I)B
-Landroid/icu/text/Bidi;->getLevels()[B
-Landroid/icu/text/Bidi;->getLevelsMemory(I)V
-Landroid/icu/text/Bidi;->getLevelsMemory(ZI)V
-Landroid/icu/text/Bidi;->getLogicalIndex(I)I
-Landroid/icu/text/Bidi;->getLogicalMap()[I
-Landroid/icu/text/Bidi;->getLogicalRun(I)Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->getLogicalToVisualRunsMap()V
-Landroid/icu/text/Bidi;->GetLRFromLevel(B)B
-Landroid/icu/text/Bidi;->getMemory(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;ZI)Ljava/lang/Object;
-Landroid/icu/text/Bidi;->getParagraph(I)Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->getParagraphByIndex(I)Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->getParagraphIndex(I)I
-Landroid/icu/text/Bidi;->getParaLevel()B
-Landroid/icu/text/Bidi;->GetParaLevelAt(I)B
-Landroid/icu/text/Bidi;->getProcessedLength()I
-Landroid/icu/text/Bidi;->getReorderingMode()I
-Landroid/icu/text/Bidi;->getReorderingOptions()I
-Landroid/icu/text/Bidi;->getResultLength()I
-Landroid/icu/text/Bidi;->getRunCount()I
-Landroid/icu/text/Bidi;->getRunLevel(I)I
-Landroid/icu/text/Bidi;->getRunLimit(I)I
-Landroid/icu/text/Bidi;->getRunsMemory(I)V
-Landroid/icu/text/Bidi;->getRunsMemory(ZI)V
-Landroid/icu/text/Bidi;->getRunStart(I)I
-Landroid/icu/text/Bidi;->GetState(B)S
-Landroid/icu/text/Bidi;->GetStateProps(S)S
-Landroid/icu/text/Bidi;->getText()[C
-Landroid/icu/text/Bidi;->getTextAsString()Ljava/lang/String;
-Landroid/icu/text/Bidi;->getVisualIndex(I)I
-Landroid/icu/text/Bidi;->getVisualMap()[I
-Landroid/icu/text/Bidi;->getVisualRun(I)Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->groupProp:[S
-Landroid/icu/text/Bidi;->impAct0:[S
-Landroid/icu/text/Bidi;->impAct1:[S
-Landroid/icu/text/Bidi;->impAct2:[S
-Landroid/icu/text/Bidi;->impAct3:[S
-Landroid/icu/text/Bidi;->IMPTABLEVELS_COLUMNS:I
-Landroid/icu/text/Bidi;->IMPTABLEVELS_RES:I
-Landroid/icu/text/Bidi;->impTabL_DEFAULT:[[B
-Landroid/icu/text/Bidi;->impTabL_GROUP_NUMBERS_WITH_R:[[B
-Landroid/icu/text/Bidi;->impTabL_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS:[[B
-Landroid/icu/text/Bidi;->impTabL_INVERSE_LIKE_DIRECT_WITH_MARKS:[[B
-Landroid/icu/text/Bidi;->impTabL_INVERSE_NUMBERS_AS_L:[[B
-Landroid/icu/text/Bidi;->impTabL_NUMBERS_SPECIAL:[[B
-Landroid/icu/text/Bidi;->impTabPair:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTabProps:[[S
-Landroid/icu/text/Bidi;->IMPTABPROPS_COLUMNS:I
-Landroid/icu/text/Bidi;->IMPTABPROPS_RES:I
-Landroid/icu/text/Bidi;->impTabR_DEFAULT:[[B
-Landroid/icu/text/Bidi;->impTabR_GROUP_NUMBERS_WITH_R:[[B
-Landroid/icu/text/Bidi;->impTabR_INVERSE_LIKE_DIRECT:[[B
-Landroid/icu/text/Bidi;->impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS:[[B
-Landroid/icu/text/Bidi;->impTabR_INVERSE_NUMBERS_AS_L:[[B
-Landroid/icu/text/Bidi;->impTab_DEFAULT:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_GROUP_NUMBERS_WITH_R:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_INVERSE_FOR_NUMBERS_SPECIAL:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_INVERSE_LIKE_DIRECT:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_INVERSE_LIKE_DIRECT_WITH_MARKS:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_INVERSE_NUMBERS_AS_L:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->impTab_NUMBERS_SPECIAL:Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;->insertPoints:Landroid/icu/text/Bidi$InsertPoints;
-Landroid/icu/text/Bidi;->INSERT_LRM_FOR_NUMERIC:S
-Landroid/icu/text/Bidi;->invertMap([I)[I
-Landroid/icu/text/Bidi;->IsBidiControlChar(I)Z
-Landroid/icu/text/Bidi;->IsDefaultLevel(B)Z
-Landroid/icu/text/Bidi;->isGoodLogicalToVisualRunsMap:Z
-Landroid/icu/text/Bidi;->isInverse()Z
-Landroid/icu/text/Bidi;->isInverse:Z
-Landroid/icu/text/Bidi;->isLeftToRight()Z
-Landroid/icu/text/Bidi;->isMixed()Z
-Landroid/icu/text/Bidi;->ISOLATE:I
-Landroid/icu/text/Bidi;->isolateCount:I
-Landroid/icu/text/Bidi;->isolates:[Landroid/icu/text/Bidi$Isolate;
-Landroid/icu/text/Bidi;->isOrderParagraphsLTR()Z
-Landroid/icu/text/Bidi;->isRightToLeft()Z
-Landroid/icu/text/Bidi;->KEEP_BASE_COMBINING:S
-Landroid/icu/text/Bidi;->L:B
-Landroid/icu/text/Bidi;->lastArabicPos:I
-Landroid/icu/text/Bidi;->lastL_R_AL()B
-Landroid/icu/text/Bidi;->length:I
-Landroid/icu/text/Bidi;->levels:[B
-Landroid/icu/text/Bidi;->levelsMemory:[B
-Landroid/icu/text/Bidi;->LEVEL_DEFAULT_LTR:B
-Landroid/icu/text/Bidi;->LEVEL_DEFAULT_RTL:B
-Landroid/icu/text/Bidi;->LEVEL_OVERRIDE:B
-Landroid/icu/text/Bidi;->LF:C
-Landroid/icu/text/Bidi;->logicalToVisualRunsMap:[I
-Landroid/icu/text/Bidi;->LOOKING_FOR_PDI:I
-Landroid/icu/text/Bidi;->LRE:B
-Landroid/icu/text/Bidi;->LRI:B
-Landroid/icu/text/Bidi;->LRM_AFTER:I
-Landroid/icu/text/Bidi;->LRM_BEFORE:I
-Landroid/icu/text/Bidi;->LRO:B
-Landroid/icu/text/Bidi;->LTR:B
-Landroid/icu/text/Bidi;->MAP_NOWHERE:I
-Landroid/icu/text/Bidi;->MASK_BN_EXPLICIT:I
-Landroid/icu/text/Bidi;->MASK_B_S:I
-Landroid/icu/text/Bidi;->MASK_EMBEDDING:I
-Landroid/icu/text/Bidi;->MASK_EXPLICIT:I
-Landroid/icu/text/Bidi;->MASK_ISO:I
-Landroid/icu/text/Bidi;->MASK_LTR:I
-Landroid/icu/text/Bidi;->MASK_POSSIBLE_N:I
-Landroid/icu/text/Bidi;->MASK_RTL:I
-Landroid/icu/text/Bidi;->MASK_R_AL:I
-Landroid/icu/text/Bidi;->MASK_STRONG_EN_AN:I
-Landroid/icu/text/Bidi;->MASK_WS:I
-Landroid/icu/text/Bidi;->MAX_EXPLICIT_LEVEL:B
-Landroid/icu/text/Bidi;->mayAllocateRuns:Z
-Landroid/icu/text/Bidi;->mayAllocateText:Z
-Landroid/icu/text/Bidi;->MIXED:B
-Landroid/icu/text/Bidi;->NEUTRAL:B
-Landroid/icu/text/Bidi;->NoOverride(B)B
-Landroid/icu/text/Bidi;->NOT_SEEKING_STRONG:I
-Landroid/icu/text/Bidi;->NSM:B
-Landroid/icu/text/Bidi;->ON:B
-Landroid/icu/text/Bidi;->OPTION_DEFAULT:I
-Landroid/icu/text/Bidi;->OPTION_INSERT_MARKS:I
-Landroid/icu/text/Bidi;->OPTION_REMOVE_CONTROLS:I
-Landroid/icu/text/Bidi;->OPTION_STREAMING:I
-Landroid/icu/text/Bidi;->orderParagraphsLTR(Z)V
-Landroid/icu/text/Bidi;->orderParagraphsLTR:Z
-Landroid/icu/text/Bidi;->originalLength:I
-Landroid/icu/text/Bidi;->OUTPUT_REVERSE:S
-Landroid/icu/text/Bidi;->paraBidi:Landroid/icu/text/Bidi;
-Landroid/icu/text/Bidi;->paraCount:I
-Landroid/icu/text/Bidi;->paraLevel:B
-Landroid/icu/text/Bidi;->paras_level:[B
-Landroid/icu/text/Bidi;->paras_limit:[I
-Landroid/icu/text/Bidi;->PDF:B
-Landroid/icu/text/Bidi;->PDI:B
-Landroid/icu/text/Bidi;->processPropertySeq(Landroid/icu/text/Bidi$LevState;SII)V
-Landroid/icu/text/Bidi;->prologue:Ljava/lang/String;
-Landroid/icu/text/Bidi;->R:B
-Landroid/icu/text/Bidi;->REMOVE_BIDI_CONTROLS:S
-Landroid/icu/text/Bidi;->reorderingMode:I
-Landroid/icu/text/Bidi;->reorderingOptions:I
-Landroid/icu/text/Bidi;->reorderLogical([B)[I
-Landroid/icu/text/Bidi;->reorderVisual([B)[I
-Landroid/icu/text/Bidi;->reorderVisually([BI[Ljava/lang/Object;II)V
-Landroid/icu/text/Bidi;->REORDER_COUNT:S
-Landroid/icu/text/Bidi;->REORDER_DEFAULT:S
-Landroid/icu/text/Bidi;->REORDER_GROUP_NUMBERS_WITH_R:S
-Landroid/icu/text/Bidi;->REORDER_INVERSE_FOR_NUMBERS_SPECIAL:S
-Landroid/icu/text/Bidi;->REORDER_INVERSE_LIKE_DIRECT:S
-Landroid/icu/text/Bidi;->REORDER_INVERSE_NUMBERS_AS_L:S
-Landroid/icu/text/Bidi;->REORDER_LAST_LOGICAL_TO_VISUAL:S
-Landroid/icu/text/Bidi;->REORDER_NUMBERS_SPECIAL:S
-Landroid/icu/text/Bidi;->REORDER_RUNS_ONLY:S
-Landroid/icu/text/Bidi;->requiresBidi([CII)Z
-Landroid/icu/text/Bidi;->resolveExplicitLevels()B
-Landroid/icu/text/Bidi;->resolveImplicitLevels(IISS)V
-Landroid/icu/text/Bidi;->resultLength:I
-Landroid/icu/text/Bidi;->RLE:B
-Landroid/icu/text/Bidi;->RLI:B
-Landroid/icu/text/Bidi;->RLM_AFTER:I
-Landroid/icu/text/Bidi;->RLM_BEFORE:I
-Landroid/icu/text/Bidi;->RLO:B
-Landroid/icu/text/Bidi;->RTL:B
-Landroid/icu/text/Bidi;->runCount:I
-Landroid/icu/text/Bidi;->runs:[Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->runsMemory:[Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->S:B
-Landroid/icu/text/Bidi;->SEEKING_STRONG_FOR_FSI:I
-Landroid/icu/text/Bidi;->SEEKING_STRONG_FOR_PARA:I
-Landroid/icu/text/Bidi;->setContext(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/Bidi;->setCustomClassifier(Landroid/icu/text/BidiClassifier;)V
-Landroid/icu/text/Bidi;->setInverse(Z)V
-Landroid/icu/text/Bidi;->setLevelsOutsideIsolates(IIB)V
-Landroid/icu/text/Bidi;->setLine(II)Landroid/icu/text/Bidi;
-Landroid/icu/text/Bidi;->setPara(Ljava/lang/String;B[B)V
-Landroid/icu/text/Bidi;->setPara(Ljava/text/AttributedCharacterIterator;)V
-Landroid/icu/text/Bidi;->setPara([CB[B)V
-Landroid/icu/text/Bidi;->setParaRunsOnly([CB)V
-Landroid/icu/text/Bidi;->setParaSuccess()V
-Landroid/icu/text/Bidi;->setReorderingMode(I)V
-Landroid/icu/text/Bidi;->setReorderingOptions(I)V
-Landroid/icu/text/Bidi;->simpleRuns:[Landroid/icu/text/BidiRun;
-Landroid/icu/text/Bidi;->SIMPLE_OPENINGS_COUNT:I
-Landroid/icu/text/Bidi;->SIMPLE_PARAS_COUNT:I
-Landroid/icu/text/Bidi;->testDirPropFlagAt(II)Z
-Landroid/icu/text/Bidi;->text:[C
-Landroid/icu/text/Bidi;->trailingWSStart:I
-Landroid/icu/text/Bidi;->verifyRange(III)V
-Landroid/icu/text/Bidi;->verifyValidPara()V
-Landroid/icu/text/Bidi;->verifyValidParaOrLine()V
-Landroid/icu/text/Bidi;->writeReordered(I)Ljava/lang/String;
-Landroid/icu/text/Bidi;->writeReverse(Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/text/Bidi;->WS:B
-Landroid/icu/text/Bidi;->_AN:S
-Landroid/icu/text/Bidi;->_B:S
-Landroid/icu/text/Bidi;->_EN:S
-Landroid/icu/text/Bidi;->_L:S
-Landroid/icu/text/Bidi;->_ON:S
-Landroid/icu/text/Bidi;->_R:S
-Landroid/icu/text/Bidi;->_S:S
-Landroid/icu/text/BidiClassifier;-><init>(Ljava/lang/Object;)V
-Landroid/icu/text/BidiClassifier;->classify(I)I
-Landroid/icu/text/BidiClassifier;->context:Ljava/lang/Object;
-Landroid/icu/text/BidiClassifier;->getContext()Ljava/lang/Object;
-Landroid/icu/text/BidiClassifier;->setContext(Ljava/lang/Object;)V
-Landroid/icu/text/BidiRun;-><init>()V
-Landroid/icu/text/BidiRun;-><init>(IIB)V
-Landroid/icu/text/BidiRun;->copyFrom(Landroid/icu/text/BidiRun;)V
-Landroid/icu/text/BidiRun;->getDirection()B
-Landroid/icu/text/BidiRun;->getEmbeddingLevel()B
-Landroid/icu/text/BidiRun;->getLength()I
-Landroid/icu/text/BidiRun;->getLimit()I
-Landroid/icu/text/BidiRun;->getStart()I
-Landroid/icu/text/BidiRun;->insertRemove:I
-Landroid/icu/text/BidiRun;->isEvenRun()Z
-Landroid/icu/text/BidiRun;->isOddRun()Z
-Landroid/icu/text/BidiRun;->level:B
-Landroid/icu/text/BidiRun;->limit:I
-Landroid/icu/text/BidiRun;->start:I
-Landroid/icu/text/BidiTransform$Mirroring;->OFF:Landroid/icu/text/BidiTransform$Mirroring;
-Landroid/icu/text/BidiTransform$Mirroring;->ON:Landroid/icu/text/BidiTransform$Mirroring;
-Landroid/icu/text/BidiTransform$Mirroring;->valueOf(Ljava/lang/String;)Landroid/icu/text/BidiTransform$Mirroring;
-Landroid/icu/text/BidiTransform$Mirroring;->values()[Landroid/icu/text/BidiTransform$Mirroring;
-Landroid/icu/text/BidiTransform$Order;->LOGICAL:Landroid/icu/text/BidiTransform$Order;
-Landroid/icu/text/BidiTransform$Order;->valueOf(Ljava/lang/String;)Landroid/icu/text/BidiTransform$Order;
-Landroid/icu/text/BidiTransform$Order;->values()[Landroid/icu/text/BidiTransform$Order;
-Landroid/icu/text/BidiTransform$Order;->VISUAL:Landroid/icu/text/BidiTransform$Order;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->doTransform(Landroid/icu/text/BidiTransform;)V
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_LOG_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_VIS_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_VIS_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_RTL_TO_LOG_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_RTL_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_RTL_TO_VIS_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_RTL_TO_VIS_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->matches(BLandroid/icu/text/BidiTransform$Order;BLandroid/icu/text/BidiTransform$Order;)Z
-Landroid/icu/text/BidiTransform$ReorderingScheme;->valueOf(Ljava/lang/String;)Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->values()[Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_LTR_TO_LOG_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_LTR_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_LTR_TO_VIS_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_LTR_TO_VIS_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_LOG_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_VIS_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_VIS_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform;-><init>()V
-Landroid/icu/text/BidiTransform;->bidi:Landroid/icu/text/Bidi;
-Landroid/icu/text/BidiTransform;->findMatchingScheme(BLandroid/icu/text/BidiTransform$Order;BLandroid/icu/text/BidiTransform$Order;)Landroid/icu/text/BidiTransform$ReorderingScheme;
-Landroid/icu/text/BidiTransform;->IsLogical(Landroid/icu/text/BidiTransform$Order;)Z
-Landroid/icu/text/BidiTransform;->IsLTR(B)Z
-Landroid/icu/text/BidiTransform;->IsRTL(B)Z
-Landroid/icu/text/BidiTransform;->IsVisual(Landroid/icu/text/BidiTransform$Order;)Z
-Landroid/icu/text/BidiTransform;->mirror()V
-Landroid/icu/text/BidiTransform;->reorder()V
-Landroid/icu/text/BidiTransform;->reorderingOptions:I
-Landroid/icu/text/BidiTransform;->resolve(BI)V
-Landroid/icu/text/BidiTransform;->resolveBaseDirection([B)V
-Landroid/icu/text/BidiTransform;->reverse()V
-Landroid/icu/text/BidiTransform;->shapeArabic(I)V
-Landroid/icu/text/BidiTransform;->shapeArabic(II)V
-Landroid/icu/text/BidiTransform;->shapingOptions:I
-Landroid/icu/text/BidiTransform;->text:Ljava/lang/String;
-Landroid/icu/text/BidiTransform;->transform(Ljava/lang/CharSequence;BLandroid/icu/text/BidiTransform$Order;BLandroid/icu/text/BidiTransform$Order;Landroid/icu/text/BidiTransform$Mirroring;I)Ljava/lang/String;
-Landroid/icu/text/BreakIterator$BreakIteratorCache;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/BreakIterator;)V
-Landroid/icu/text/BreakIterator$BreakIteratorCache;->createBreakInstance()Landroid/icu/text/BreakIterator;
-Landroid/icu/text/BreakIterator$BreakIteratorCache;->getLocale()Landroid/icu/util/ULocale;
-Landroid/icu/text/BreakIterator$BreakIteratorCache;->iter:Landroid/icu/text/BreakIterator;
-Landroid/icu/text/BreakIterator$BreakIteratorCache;->where:Landroid/icu/util/ULocale;
-Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;-><init>()V
-Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->createBreakIterator(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator;
-Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->getAvailableLocales()[Ljava/util/Locale;
-Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->registerInstance(Landroid/icu/text/BreakIterator;Landroid/icu/util/ULocale;I)Ljava/lang/Object;
-Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/BreakIterator;->actualLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/BreakIterator;->DEBUG:Z
-Landroid/icu/text/BreakIterator;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/BreakIterator;->getBreakInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator;
-Landroid/icu/text/BreakIterator;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale;
-Landroid/icu/text/BreakIterator;->getShim()Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;
-Landroid/icu/text/BreakIterator;->iterCache:[Landroid/icu/impl/CacheValue;
-Landroid/icu/text/BreakIterator;->KIND_COUNT:I
-Landroid/icu/text/BreakIterator;->registerInstance(Landroid/icu/text/BreakIterator;Landroid/icu/util/ULocale;I)Ljava/lang/Object;
-Landroid/icu/text/BreakIterator;->registerInstance(Landroid/icu/text/BreakIterator;Ljava/util/Locale;I)Ljava/lang/Object;
-Landroid/icu/text/BreakIterator;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/BreakIterator;->setText(Ljava/lang/CharSequence;)V
-Landroid/icu/text/BreakIterator;->shim:Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;
-Landroid/icu/text/BreakIterator;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/BreakIterator;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/CanonicalIterator;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/CanonicalIterator;->buffer:Ljava/lang/StringBuilder;
-Landroid/icu/text/CanonicalIterator;->current:[I
-Landroid/icu/text/CanonicalIterator;->done:Z
-Landroid/icu/text/CanonicalIterator;->extract(ILjava/lang/String;ILjava/lang/StringBuffer;)Ljava/util/Set;
-Landroid/icu/text/CanonicalIterator;->getEquivalents(Ljava/lang/String;)[Ljava/lang/String;
-Landroid/icu/text/CanonicalIterator;->getEquivalents2(Ljava/lang/String;)Ljava/util/Set;
-Landroid/icu/text/CanonicalIterator;->getSource()Ljava/lang/String;
-Landroid/icu/text/CanonicalIterator;->next()Ljava/lang/String;
-Landroid/icu/text/CanonicalIterator;->nfcImpl:Landroid/icu/impl/Normalizer2Impl;
-Landroid/icu/text/CanonicalIterator;->nfd:Landroid/icu/text/Normalizer2;
-Landroid/icu/text/CanonicalIterator;->permute(Ljava/lang/String;ZLjava/util/Set;)V
-Landroid/icu/text/CanonicalIterator;->pieces:[[Ljava/lang/String;
-Landroid/icu/text/CanonicalIterator;->PROGRESS:Z
-Landroid/icu/text/CanonicalIterator;->reset()V
-Landroid/icu/text/CanonicalIterator;->setSource(Ljava/lang/String;)V
-Landroid/icu/text/CanonicalIterator;->SET_WITH_NULL_STRING:Ljava/util/Set;
-Landroid/icu/text/CanonicalIterator;->SKIP_ZEROS:Z
-Landroid/icu/text/CanonicalIterator;->source:Ljava/lang/String;
-Landroid/icu/text/CaseMap$Fold;-><init>(I)V
-Landroid/icu/text/CaseMap$Fold;->apply(Ljava/lang/CharSequence;)Ljava/lang/String;
-Landroid/icu/text/CaseMap$Fold;->apply(Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
-Landroid/icu/text/CaseMap$Fold;->DEFAULT:Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap$Fold;->omitUnchangedText()Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap$Fold;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap$Fold;->turkic()Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap$Fold;->TURKIC:Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap$Fold;->TURKIC_OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap$Lower;-><init>(I)V
-Landroid/icu/text/CaseMap$Lower;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;)Ljava/lang/String;
-Landroid/icu/text/CaseMap$Lower;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
-Landroid/icu/text/CaseMap$Lower;->DEFAULT:Landroid/icu/text/CaseMap$Lower;
-Landroid/icu/text/CaseMap$Lower;->omitUnchangedText()Landroid/icu/text/CaseMap$Lower;
-Landroid/icu/text/CaseMap$Lower;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Lower;
-Landroid/icu/text/CaseMap$Title;-><init>(I)V
-Landroid/icu/text/CaseMap$Title;->adjustToCased()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->apply(Ljava/util/Locale;Landroid/icu/text/BreakIterator;Ljava/lang/CharSequence;)Ljava/lang/String;
-Landroid/icu/text/CaseMap$Title;->apply(Ljava/util/Locale;Landroid/icu/text/BreakIterator;Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
-Landroid/icu/text/CaseMap$Title;->DEFAULT:Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->noBreakAdjustment()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->noLowercase()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->omitUnchangedText()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->sentences()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Title;->wholeString()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Upper;-><init>(I)V
-Landroid/icu/text/CaseMap$Upper;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;)Ljava/lang/String;
-Landroid/icu/text/CaseMap$Upper;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
-Landroid/icu/text/CaseMap$Upper;->DEFAULT:Landroid/icu/text/CaseMap$Upper;
-Landroid/icu/text/CaseMap$Upper;->omitUnchangedText()Landroid/icu/text/CaseMap$Upper;
-Landroid/icu/text/CaseMap$Upper;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Upper;
-Landroid/icu/text/CaseMap;-><init>(I)V
-Landroid/icu/text/CaseMap;->fold()Landroid/icu/text/CaseMap$Fold;
-Landroid/icu/text/CaseMap;->getCaseLocale(Ljava/util/Locale;)I
-Landroid/icu/text/CaseMap;->internalOptions:I
-Landroid/icu/text/CaseMap;->omitUnchangedText()Landroid/icu/text/CaseMap;
-Landroid/icu/text/CaseMap;->toLower()Landroid/icu/text/CaseMap$Lower;
-Landroid/icu/text/CaseMap;->toTitle()Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap;->toUpper()Landroid/icu/text/CaseMap$Upper;
-Landroid/icu/text/CharsetDetector$CSRecognizerInfo;-><init>(Landroid/icu/text/CharsetRecognizer;Z)V
-Landroid/icu/text/CharsetDetector$CSRecognizerInfo;->isDefaultEnabled:Z
-Landroid/icu/text/CharsetDetector$CSRecognizerInfo;->recognizer:Landroid/icu/text/CharsetRecognizer;
-Landroid/icu/text/CharsetDetector;-><init>()V
-Landroid/icu/text/CharsetDetector;->ALL_CS_RECOGNIZERS:Ljava/util/List;
-Landroid/icu/text/CharsetDetector;->detect()Landroid/icu/text/CharsetMatch;
-Landroid/icu/text/CharsetDetector;->detectAll()[Landroid/icu/text/CharsetMatch;
-Landroid/icu/text/CharsetDetector;->enableInputFilter(Z)Z
-Landroid/icu/text/CharsetDetector;->fByteStats:[S
-Landroid/icu/text/CharsetDetector;->fC1Bytes:Z
-Landroid/icu/text/CharsetDetector;->fDeclaredEncoding:Ljava/lang/String;
-Landroid/icu/text/CharsetDetector;->fEnabledRecognizers:[Z
-Landroid/icu/text/CharsetDetector;->fInputBytes:[B
-Landroid/icu/text/CharsetDetector;->fInputLen:I
-Landroid/icu/text/CharsetDetector;->fInputStream:Ljava/io/InputStream;
-Landroid/icu/text/CharsetDetector;->fRawInput:[B
-Landroid/icu/text/CharsetDetector;->fRawLength:I
-Landroid/icu/text/CharsetDetector;->fStripTags:Z
-Landroid/icu/text/CharsetDetector;->getAllDetectableCharsets()[Ljava/lang/String;
-Landroid/icu/text/CharsetDetector;->getDetectableCharsets()[Ljava/lang/String;
-Landroid/icu/text/CharsetDetector;->getReader(Ljava/io/InputStream;Ljava/lang/String;)Ljava/io/Reader;
-Landroid/icu/text/CharsetDetector;->getString([BLjava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/CharsetDetector;->inputFilterEnabled()Z
-Landroid/icu/text/CharsetDetector;->kBufSize:I
-Landroid/icu/text/CharsetDetector;->MungeInput()V
-Landroid/icu/text/CharsetDetector;->setDeclaredEncoding(Ljava/lang/String;)Landroid/icu/text/CharsetDetector;
-Landroid/icu/text/CharsetDetector;->setDetectableCharset(Ljava/lang/String;Z)Landroid/icu/text/CharsetDetector;
-Landroid/icu/text/CharsetDetector;->setText(Ljava/io/InputStream;)Landroid/icu/text/CharsetDetector;
-Landroid/icu/text/CharsetDetector;->setText([B)Landroid/icu/text/CharsetDetector;
-Landroid/icu/text/CharsetMatch;-><init>(Landroid/icu/text/CharsetDetector;Landroid/icu/text/CharsetRecognizer;I)V
-Landroid/icu/text/CharsetMatch;-><init>(Landroid/icu/text/CharsetDetector;Landroid/icu/text/CharsetRecognizer;ILjava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/CharsetMatch;->compareTo(Landroid/icu/text/CharsetMatch;)I
-Landroid/icu/text/CharsetMatch;->fCharsetName:Ljava/lang/String;
-Landroid/icu/text/CharsetMatch;->fConfidence:I
-Landroid/icu/text/CharsetMatch;->fInputStream:Ljava/io/InputStream;
-Landroid/icu/text/CharsetMatch;->fLang:Ljava/lang/String;
-Landroid/icu/text/CharsetMatch;->fRawInput:[B
-Landroid/icu/text/CharsetMatch;->fRawLength:I
-Landroid/icu/text/CharsetMatch;->getConfidence()I
-Landroid/icu/text/CharsetMatch;->getLanguage()Ljava/lang/String;
-Landroid/icu/text/CharsetMatch;->getName()Ljava/lang/String;
-Landroid/icu/text/CharsetMatch;->getReader()Ljava/io/Reader;
-Landroid/icu/text/CharsetMatch;->getString()Ljava/lang/String;
-Landroid/icu/text/CharsetMatch;->getString(I)Ljava/lang/String;
-Landroid/icu/text/CharsetRecognizer;-><init>()V
-Landroid/icu/text/CharsetRecognizer;->getLanguage()Ljava/lang/String;
-Landroid/icu/text/CharsetRecognizer;->getName()Ljava/lang/String;
-Landroid/icu/text/CharsetRecognizer;->match(Landroid/icu/text/CharsetDetector;)Landroid/icu/text/CharsetMatch;
-Landroid/icu/text/ChineseDateFormat$Field;-><init>(Ljava/lang/String;I)V
-Landroid/icu/text/ChineseDateFormat$Field;->IS_LEAP_MONTH:Landroid/icu/text/ChineseDateFormat$Field;
-Landroid/icu/text/ChineseDateFormat$Field;->ofCalendarField(I)Landroid/icu/text/DateFormat$Field;
-Landroid/icu/text/ChineseDateFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/ChineseDateFormat;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/ChineseDateFormat;-><init>(Ljava/lang/String;Ljava/util/Locale;)V
-Landroid/icu/text/ChineseDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;Landroid/icu/util/Calendar;)V
-Landroid/icu/text/ChineseDateFormatSymbols;-><init>()V
-Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Landroid/icu/util/Calendar;Ljava/util/Locale;)V
-Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Ljava/util/Locale;)V
-Landroid/icu/text/ChineseDateFormatSymbols;->getLeapMonth(I)Ljava/lang/String;
-Landroid/icu/text/ChineseDateFormatSymbols;->initializeData(Landroid/icu/text/DateFormatSymbols;)V
-Landroid/icu/text/ChineseDateFormatSymbols;->initializeData(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V
-Landroid/icu/text/ChineseDateFormatSymbols;->initializeIsLeapMonth()V
-Landroid/icu/text/ChineseDateFormatSymbols;->isLeapMonth:[Ljava/lang/String;
-Landroid/icu/text/CollationElementIterator$MaxExpSink;-><init>(Ljava/util/Map;)V
-Landroid/icu/text/CollationElementIterator$MaxExpSink;->maxExpansions:Ljava/util/Map;
-Landroid/icu/text/CollationElementIterator;-><init>(Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/CollationElementIterator;-><init>(Landroid/icu/text/UCharacterIterator;Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/CollationElementIterator;-><init>(Ljava/lang/String;Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/CollationElementIterator;-><init>(Ljava/text/CharacterIterator;Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/CollationElementIterator;->ceNeedsTwoParts(J)Z
-Landroid/icu/text/CollationElementIterator;->computeMaxExpansions(Landroid/icu/impl/coll/CollationData;)Ljava/util/Map;
-Landroid/icu/text/CollationElementIterator;->dir_:B
-Landroid/icu/text/CollationElementIterator;->getFirstHalf(JI)I
-Landroid/icu/text/CollationElementIterator;->getMaxExpansion(Ljava/util/Map;I)I
-Landroid/icu/text/CollationElementIterator;->getRuleBasedCollator()Landroid/icu/text/RuleBasedCollator;
-Landroid/icu/text/CollationElementIterator;->getSecondHalf(JI)I
-Landroid/icu/text/CollationElementIterator;->iter_:Landroid/icu/impl/coll/CollationIterator;
-Landroid/icu/text/CollationElementIterator;->normalizeDir()B
-Landroid/icu/text/CollationElementIterator;->offsets_:Landroid/icu/impl/coll/UVector32;
-Landroid/icu/text/CollationElementIterator;->otherHalf_:I
-Landroid/icu/text/CollationElementIterator;->rbc_:Landroid/icu/text/RuleBasedCollator;
-Landroid/icu/text/CollationElementIterator;->string_:Ljava/lang/String;
-Landroid/icu/text/CollationKey$BoundMode;-><init>()V
-Landroid/icu/text/CollationKey$BoundMode;->COUNT:I
-Landroid/icu/text/CollationKey;-><init>(Ljava/lang/String;Landroid/icu/text/RawCollationKey;)V
-Landroid/icu/text/CollationKey;-><init>(Ljava/lang/String;[BI)V
-Landroid/icu/text/CollationKey;->getLength()I
-Landroid/icu/text/CollationKey;->MERGE_SEPERATOR_:I
-Landroid/icu/text/CollationKey;->m_hashCode_:I
-Landroid/icu/text/CollationKey;->m_key_:[B
-Landroid/icu/text/CollationKey;->m_length_:I
-Landroid/icu/text/CollationKey;->m_source_:Ljava/lang/String;
-Landroid/icu/text/Collator$ASCII;-><init>()V
-Landroid/icu/text/Collator$ASCII;->equalIgnoreCase(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z
-Landroid/icu/text/Collator$CollatorFactory;-><init>()V
-Landroid/icu/text/Collator$CollatorFactory;->createCollator(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator;
-Landroid/icu/text/Collator$CollatorFactory;->createCollator(Ljava/util/Locale;)Landroid/icu/text/Collator;
-Landroid/icu/text/Collator$CollatorFactory;->getDisplayName(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/text/Collator$CollatorFactory;->getDisplayName(Ljava/util/Locale;Ljava/util/Locale;)Ljava/lang/String;
-Landroid/icu/text/Collator$CollatorFactory;->getSupportedLocaleIDs()Ljava/util/Set;
-Landroid/icu/text/Collator$CollatorFactory;->visible()Z
-Landroid/icu/text/Collator$KeywordsSink;-><init>()V
-Landroid/icu/text/Collator$KeywordsSink;->hasDefault:Z
-Landroid/icu/text/Collator$KeywordsSink;->values:Ljava/util/LinkedList;
-Landroid/icu/text/Collator$ReorderCodes;->LIMIT:I
-Landroid/icu/text/Collator$ServiceShim;-><init>()V
-Landroid/icu/text/Collator$ServiceShim;->getAvailableLocales()[Ljava/util/Locale;
-Landroid/icu/text/Collator$ServiceShim;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/Collator$ServiceShim;->getDisplayName(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/text/Collator$ServiceShim;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator;
-Landroid/icu/text/Collator$ServiceShim;->registerFactory(Landroid/icu/text/Collator$CollatorFactory;)Ljava/lang/Object;
-Landroid/icu/text/Collator$ServiceShim;->registerInstance(Landroid/icu/text/Collator;Landroid/icu/util/ULocale;)Ljava/lang/Object;
-Landroid/icu/text/Collator$ServiceShim;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/Collator;->BASE:Ljava/lang/String;
-Landroid/icu/text/Collator;->checkNotFrozen()V
-Landroid/icu/text/Collator;->DEBUG:Z
-Landroid/icu/text/Collator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I
-Landroid/icu/text/Collator;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale;
-Landroid/icu/text/Collator;->getRawCollationKey(Ljava/lang/String;Landroid/icu/text/RawCollationKey;)Landroid/icu/text/RawCollationKey;
-Landroid/icu/text/Collator;->getReorderCode(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/Collator;->getShim()Landroid/icu/text/Collator$ServiceShim;
-Landroid/icu/text/Collator;->getYesOrNo(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/text/Collator;->KEYWORDS:[Ljava/lang/String;
-Landroid/icu/text/Collator;->registerFactory(Landroid/icu/text/Collator$CollatorFactory;)Ljava/lang/Object;
-Landroid/icu/text/Collator;->registerInstance(Landroid/icu/text/Collator;Landroid/icu/util/ULocale;)Ljava/lang/Object;
-Landroid/icu/text/Collator;->RESOURCE:Ljava/lang/String;
-Landroid/icu/text/Collator;->setAttributesFromKeywords(Landroid/icu/util/ULocale;Landroid/icu/text/Collator;Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/Collator;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/Collator;->setStrength2(I)Landroid/icu/text/Collator;
-Landroid/icu/text/Collator;->setVariableTop(I)V
-Landroid/icu/text/Collator;->setVariableTop(Ljava/lang/String;)I
-Landroid/icu/text/Collator;->shim:Landroid/icu/text/Collator$ServiceShim;
-Landroid/icu/text/Collator;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/CompactDecimalFormat;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/CompactDecimalFormat$CompactStyle;)V
-Landroid/icu/text/ComposedCharIter;-><init>()V
-Landroid/icu/text/ComposedCharIter;-><init>(ZI)V
-Landroid/icu/text/ComposedCharIter;->curChar:I
-Landroid/icu/text/ComposedCharIter;->decompBuf:Ljava/lang/String;
-Landroid/icu/text/ComposedCharIter;->decomposition()Ljava/lang/String;
-Landroid/icu/text/ComposedCharIter;->DONE:C
-Landroid/icu/text/ComposedCharIter;->findNextChar()V
-Landroid/icu/text/ComposedCharIter;->hasNext()Z
-Landroid/icu/text/ComposedCharIter;->n2impl:Landroid/icu/impl/Normalizer2Impl;
-Landroid/icu/text/ComposedCharIter;->next()C
-Landroid/icu/text/ComposedCharIter;->nextChar:I
-Landroid/icu/text/CurrencyDisplayNames;-><init>()V
-Landroid/icu/text/CurrencyDisplayNames;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/CurrencyDisplayNames;
-Landroid/icu/text/CurrencyDisplayNames;->getInstance(Landroid/icu/util/ULocale;Z)Landroid/icu/text/CurrencyDisplayNames;
-Landroid/icu/text/CurrencyDisplayNames;->getInstance(Ljava/util/Locale;)Landroid/icu/text/CurrencyDisplayNames;
-Landroid/icu/text/CurrencyDisplayNames;->getInstance(Ljava/util/Locale;Z)Landroid/icu/text/CurrencyDisplayNames;
-Landroid/icu/text/CurrencyDisplayNames;->getName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/CurrencyDisplayNames;->getPluralName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/CurrencyDisplayNames;->getSymbol(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/CurrencyDisplayNames;->getULocale()Landroid/icu/util/ULocale;
-Landroid/icu/text/CurrencyDisplayNames;->hasData()Z
-Landroid/icu/text/CurrencyDisplayNames;->nameMap()Ljava/util/Map;
-Landroid/icu/text/CurrencyDisplayNames;->symbolMap()Ljava/util/Map;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;-><init>(II)V
-Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;->fractionDigits:I
-Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;->roundingIncrement:I
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;-><init>(Ljava/lang/String;Ljava/lang/String;JJZ)V
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->all()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->ALL:Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->currency:Ljava/lang/String;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->equals(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Z
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->equals(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->from:J
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->now()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onCurrency(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onDate(J)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onDate(Ljava/util/Date;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onDateRange(JJ)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onDateRange(Ljava/util/Date;Ljava/util/Date;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onRegion(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onTender()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->region:Ljava/lang/String;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->tenderOnly:Z
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->to:J
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withCurrency(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withDate(J)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withDate(Ljava/util/Date;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withDateRange(JJ)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withDateRange(Ljava/util/Date;Ljava/util/Date;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withRegion(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withTender()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;-><init>(Ljava/lang/String;Ljava/lang/String;JJI)V
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;-><init>(Ljava/lang/String;Ljava/lang/String;JJIZ)V
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->code:Ljava/lang/String;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->from:J
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->isTender()Z
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->priority:I
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->region:Ljava/lang/String;
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->tender:Z
-Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->to:J
-Landroid/icu/text/CurrencyMetaInfo;-><init>()V
-Landroid/icu/text/CurrencyMetaInfo;->currencies(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List;
-Landroid/icu/text/CurrencyMetaInfo;->currencyDigits(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;
-Landroid/icu/text/CurrencyMetaInfo;->currencyDigits(Ljava/lang/String;Landroid/icu/util/Currency$CurrencyUsage;)Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;
-Landroid/icu/text/CurrencyMetaInfo;->currencyInfo(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List;
-Landroid/icu/text/CurrencyMetaInfo;->dateString(J)Ljava/lang/String;
-Landroid/icu/text/CurrencyMetaInfo;->debugString(Ljava/lang/Object;)Ljava/lang/String;
-Landroid/icu/text/CurrencyMetaInfo;->defaultDigits:Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;
-Landroid/icu/text/CurrencyMetaInfo;->getInstance()Landroid/icu/text/CurrencyMetaInfo;
-Landroid/icu/text/CurrencyMetaInfo;->getInstance(Z)Landroid/icu/text/CurrencyMetaInfo;
-Landroid/icu/text/CurrencyMetaInfo;->hasData()Z
-Landroid/icu/text/CurrencyMetaInfo;->hasData:Z
-Landroid/icu/text/CurrencyMetaInfo;->impl:Landroid/icu/text/CurrencyMetaInfo;
-Landroid/icu/text/CurrencyMetaInfo;->regions(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List;
-Landroid/icu/text/CurrencyPluralInfo;->defaultCurrencyPluralPattern:Ljava/lang/String;
-Landroid/icu/text/CurrencyPluralInfo;->defaultCurrencyPluralPatternChar:[C
-Landroid/icu/text/CurrencyPluralInfo;->initialize(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/CurrencyPluralInfo;->pluralCountToCurrencyUnitPattern:Ljava/util/Map;
-Landroid/icu/text/CurrencyPluralInfo;->pluralPatternIterator()Ljava/util/Iterator;
-Landroid/icu/text/CurrencyPluralInfo;->pluralRules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/CurrencyPluralInfo;->select(D)Ljava/lang/String;
-Landroid/icu/text/CurrencyPluralInfo;->select(Landroid/icu/text/PluralRules$FixedDecimal;)Ljava/lang/String;
-Landroid/icu/text/CurrencyPluralInfo;->setupCurrencyPluralPattern(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/CurrencyPluralInfo;->tripleCurrencySign:[C
-Landroid/icu/text/CurrencyPluralInfo;->tripleCurrencyStr:Ljava/lang/String;
-Landroid/icu/text/CurrencyPluralInfo;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DateFormat$BooleanAttribute;->PARSE_PARTIAL_MATCH:Landroid/icu/text/DateFormat$BooleanAttribute;
-Landroid/icu/text/DateFormat$Field;->calendarField:I
-Landroid/icu/text/DateFormat$Field;->CAL_FIELDS:[Landroid/icu/text/DateFormat$Field;
-Landroid/icu/text/DateFormat$Field;->CAL_FIELD_COUNT:I
-Landroid/icu/text/DateFormat$Field;->FIELD_NAME_MAP:Ljava/util/Map;
-Landroid/icu/text/DateFormat$Field;->RELATED_YEAR:Landroid/icu/text/DateFormat$Field;
-Landroid/icu/text/DateFormat$Field;->TIME_SEPARATOR:Landroid/icu/text/DateFormat$Field;
-Landroid/icu/text/DateFormat;->ABBR_STANDALONE_MONTH:Ljava/lang/String;
-Landroid/icu/text/DateFormat;->booleanAttributes:Ljava/util/EnumSet;
-Landroid/icu/text/DateFormat;->capitalizationSetting:Landroid/icu/text/DisplayContext;
-Landroid/icu/text/DateFormat;->currentSerialVersion:I
-Landroid/icu/text/DateFormat;->DATE_SKELETONS:Ljava/util/List;
-Landroid/icu/text/DateFormat;->FIELD_COUNT:I
-Landroid/icu/text/DateFormat;->fixNumberFormatForDates(Landroid/icu/text/NumberFormat;)V
-Landroid/icu/text/DateFormat;->get(IILandroid/icu/util/ULocale;Landroid/icu/util/Calendar;)Landroid/icu/text/DateFormat;
-Landroid/icu/text/DateFormat;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/DateFormat;->getInstance(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;
-Landroid/icu/text/DateFormat;->HOUR_GENERIC_TZ:Ljava/lang/String;
-Landroid/icu/text/DateFormat;->HOUR_MINUTE_GENERIC_TZ:Ljava/lang/String;
-Landroid/icu/text/DateFormat;->HOUR_MINUTE_TZ:Ljava/lang/String;
-Landroid/icu/text/DateFormat;->HOUR_TZ:Ljava/lang/String;
-Landroid/icu/text/DateFormat;->RELATED_YEAR:I
-Landroid/icu/text/DateFormat;->serialVersionOnStream:I
-Landroid/icu/text/DateFormat;->STANDALONE_MONTH:Ljava/lang/String;
-Landroid/icu/text/DateFormat;->TIME_SEPARATOR:I
-Landroid/icu/text/DateFormat;->TIME_SKELETONS:Ljava/util/List;
-Landroid/icu/text/DateFormat;->ZONE_SKELETONS:Ljava/util/List;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->DIFFERENT_CALENDAR:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->GREGORIAN:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->NONE:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->SAME_CALENDAR:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->valueOf(Ljava/lang/String;)Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->values()[Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;-><init>()V
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->aliasPathPairs:Ljava/util/List;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->aliasRelativePath:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->arrays:Ljava/util/Map;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->CALENDAR_ALIAS_PREFIX:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->currentCalendarType:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->maps:Ljava/util/Map;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->nextCalendarType:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->preEnumerate(Ljava/lang/String;)V
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->processAliasFromValue(Ljava/lang/String;Landroid/icu/impl/UResource$Value;)Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->processResource(Ljava/lang/String;Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->resourcesToVisit:Ljava/util/Set;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->visitAllResources()V
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->DAY_FORMAT:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->DAY_NARROW:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->DAY_STANDALONE:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ERA_ABBREV:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ERA_NARROW:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ERA_WIDE:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->METAZONE_LONG:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->METAZONE_SHORT:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->MONTH_FORMAT:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->MONTH_NARROW:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->MONTH_STANDALONE:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->OTHER:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->valueOf(Ljava/lang/String;)Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->values()[Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ZONE_LONG:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ZONE_SHORT:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols;-><init>(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V
-Landroid/icu/text/DateFormatSymbols;-><init>(Landroid/icu/util/ULocale;Ljava/lang/String;)V
-Landroid/icu/text/DateFormatSymbols;->abbreviatedDayPeriods:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->actualLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DateFormatSymbols;->ALTERNATE_TIME_SEPARATOR:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->ampms:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->ampmsNarrow:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->arrayOfArrayEquals([[Ljava/lang/Object;[[Ljava/lang/Object;)Z
-Landroid/icu/text/DateFormatSymbols;->CALENDAR_CLASSES:[[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->capitalization:Ljava/util/Map;
-Landroid/icu/text/DateFormatSymbols;->contextUsageTypeMap:Ljava/util/Map;
-Landroid/icu/text/DateFormatSymbols;->DAY_PERIOD_KEYS:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->DEFAULT_TIME_SEPARATOR:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->DFSCACHE:Landroid/icu/impl/CacheBase;
-Landroid/icu/text/DateFormatSymbols;->DT_CONTEXT_COUNT:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_FORMAT_ABBREV:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_FORMAT_NARROW:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_FORMAT_WIDE:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_NUMERIC:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_STANDALONE_ABBREV:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_STANDALONE_NARROW:I
-Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_STANDALONE_WIDE:I
-Landroid/icu/text/DateFormatSymbols;->DT_MONTH_PATTERN_COUNT:I
-Landroid/icu/text/DateFormatSymbols;->DT_WIDTH_COUNT:I
-Landroid/icu/text/DateFormatSymbols;->duplicate([Ljava/lang/String;)[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->duplicate([[Ljava/lang/String;)[[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->eraNames:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->eras:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/DateFormatSymbols;->getDateFormatBundle(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Ljava/util/ResourceBundle;
-Landroid/icu/text/DateFormatSymbols;->getDateFormatBundle(Landroid/icu/util/Calendar;Ljava/util/Locale;)Ljava/util/ResourceBundle;
-Landroid/icu/text/DateFormatSymbols;->getDateFormatBundle(Ljava/lang/Class;Landroid/icu/util/ULocale;)Ljava/util/ResourceBundle;
-Landroid/icu/text/DateFormatSymbols;->getDateFormatBundle(Ljava/lang/Class;Ljava/util/Locale;)Ljava/util/ResourceBundle;
-Landroid/icu/text/DateFormatSymbols;->getLeapMonthPattern(II)Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->getNarrowEras()[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->getTimeSeparatorString()Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->initializeData(Landroid/icu/text/DateFormatSymbols;)V
-Landroid/icu/text/DateFormatSymbols;->initializeData(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V
-Landroid/icu/text/DateFormatSymbols;->leapMonthPatterns:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->LEAP_MONTH_PATTERNS_PATHS:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->loadDayPeriodStrings(Ljava/util/Map;)[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->localPatternChars:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->millisPerHour:I
-Landroid/icu/text/DateFormatSymbols;->months:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->narrowDayPeriods:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->narrowEras:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->narrowMonths:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->narrowWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->NUMERIC:I
-Landroid/icu/text/DateFormatSymbols;->patternChars:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->quarters:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->requestedLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DateFormatSymbols;->setLeapMonthPattern(Ljava/lang/String;II)V
-Landroid/icu/text/DateFormatSymbols;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateFormatSymbols;->setTimeSeparatorString(Ljava/lang/String;)V
-Landroid/icu/text/DateFormatSymbols;->shorterWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->shortMonths:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->shortQuarters:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->shortWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->shortYearNames:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->shortZodiacNames:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneAbbreviatedDayPeriods:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneMonths:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneNarrowDayPeriods:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneNarrowMonths:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneNarrowWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneQuarters:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneShorterWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneShortMonths:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneShortQuarters:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneShortWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneWeekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->standaloneWideDayPeriods:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->timeSeparator:Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DateFormatSymbols;->weekdays:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->wideDayPeriods:[Ljava/lang/String;
-Landroid/icu/text/DateFormatSymbols;->zoneStrings:[[Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat$BestMatchInfo;-><init>(Ljava/lang/String;I)V
-Landroid/icu/text/DateIntervalFormat$BestMatchInfo;->bestMatchDistanceInfo:I
-Landroid/icu/text/DateIntervalFormat$BestMatchInfo;->bestMatchSkeleton:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;->bestMatchSkeleton:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;->skeleton:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateIntervalInfo;Landroid/icu/text/SimpleDateFormat;)V
-Landroid/icu/text/DateIntervalFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/text/SimpleDateFormat;)V
-Landroid/icu/text/DateIntervalFormat;->adjustFieldWidth(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->adjustPosition(Ljava/lang/String;Ljava/lang/String;Ljava/text/FieldPosition;Ljava/lang/String;Ljava/text/FieldPosition;Ljava/text/FieldPosition;)V
-Landroid/icu/text/DateIntervalFormat;->concatSingleDate2TimeInterval(Ljava/lang/String;Ljava/lang/String;ILjava/util/Map;)V
-Landroid/icu/text/DateIntervalFormat;->fallbackFormat(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;ZLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-Landroid/icu/text/DateIntervalFormat;->fallbackFormat(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;ZLjava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/lang/String;)Ljava/lang/StringBuffer;
-Landroid/icu/text/DateIntervalFormat;->fDateFormat:Landroid/icu/text/SimpleDateFormat;
-Landroid/icu/text/DateIntervalFormat;->fDatePattern:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->fDateTimeFormat:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->fFromCalendar:Landroid/icu/util/Calendar;
-Landroid/icu/text/DateIntervalFormat;->fieldExistsInSkeleton(ILjava/lang/String;)Z
-Landroid/icu/text/DateIntervalFormat;->fInfo:Landroid/icu/text/DateIntervalInfo;
-Landroid/icu/text/DateIntervalFormat;->fIntervalPatterns:Ljava/util/Map;
-Landroid/icu/text/DateIntervalFormat;->fSkeleton:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->fTimePattern:Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->fToCalendar:Landroid/icu/util/Calendar;
-Landroid/icu/text/DateIntervalFormat;->genFallbackPattern(ILjava/lang/String;Ljava/util/Map;Landroid/icu/text/DateTimePatternGenerator;)V
-Landroid/icu/text/DateIntervalFormat;->genIntervalPattern(ILjava/lang/String;Ljava/lang/String;ILjava/util/Map;)Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;
-Landroid/icu/text/DateIntervalFormat;->genSeparateDateTimePtn(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Landroid/icu/text/DateTimePatternGenerator;)Z
-Landroid/icu/text/DateIntervalFormat;->getConcatenationPattern(Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->getDateTimeSkeleton(Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;)V
-Landroid/icu/text/DateIntervalFormat;->getPatterns(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Landroid/icu/util/Output;)Ljava/lang/String;
-Landroid/icu/text/DateIntervalFormat;->getRawPatterns()Ljava/util/Map;
-Landroid/icu/text/DateIntervalFormat;->initializeIntervalPattern(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/util/Map;
-Landroid/icu/text/DateIntervalFormat;->initializePattern(Landroid/icu/impl/ICUCache;)V
-Landroid/icu/text/DateIntervalFormat;->isDateIntervalInfoDefault:Z
-Landroid/icu/text/DateIntervalFormat;->LOCAL_PATTERN_CACHE:Landroid/icu/impl/ICUCache;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;-><init>(Landroid/icu/text/DateIntervalInfo;)V
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->ACCEPTED_PATTERN_LETTERS:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->dateIntervalInfo:Landroid/icu/text/DateIntervalInfo;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->DATE_INTERVAL_PATH_PREFIX:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->DATE_INTERVAL_PATH_SUFFIX:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->getAndResetNextCalendarType()Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->getCalendarTypeFromPath(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->nextCalendarType:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->processSkeletonTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->setIntervalPatternIfAbsent(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->validateAndProcessPatternLetter(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-Landroid/icu/text/DateIntervalInfo$PatternInfo;->currentSerialVersion:I
-Landroid/icu/text/DateIntervalInfo$PatternInfo;->fFirstDateInPtnIsLaterDate:Z
-Landroid/icu/text/DateIntervalInfo$PatternInfo;->fIntervalPatternFirstPart:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo$PatternInfo;->fIntervalPatternSecondPart:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;-><init>()V
-Landroid/icu/text/DateIntervalInfo;->CALENDAR_FIELD_TO_PATTERN_LETTER:[Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->CALENDAR_KEY:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->cloneIntervalPatterns(Ljava/util/Map;)Ljava/util/Map;
-Landroid/icu/text/DateIntervalInfo;->cloneUnfrozenDII()Ljava/lang/Object;
-Landroid/icu/text/DateIntervalInfo;->currentSerialVersion:I
-Landroid/icu/text/DateIntervalInfo;->DIICACHE:Landroid/icu/impl/ICUCache;
-Landroid/icu/text/DateIntervalInfo;->EARLIEST_FIRST_PREFIX:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->FALLBACK_STRING:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->fFallbackIntervalPattern:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->fFirstDateInPtnIsLaterDate:Z
-Landroid/icu/text/DateIntervalInfo;->fIntervalPatterns:Ljava/util/Map;
-Landroid/icu/text/DateIntervalInfo;->fIntervalPatternsReadOnly:Z
-Landroid/icu/text/DateIntervalInfo;->frozen:Z
-Landroid/icu/text/DateIntervalInfo;->genPatternInfo(Ljava/lang/String;Z)Landroid/icu/text/DateIntervalInfo$PatternInfo;
-Landroid/icu/text/DateIntervalInfo;->getBestSkeleton(Ljava/lang/String;)Landroid/icu/text/DateIntervalFormat$BestMatchInfo;
-Landroid/icu/text/DateIntervalInfo;->getPatterns()Ljava/util/Map;
-Landroid/icu/text/DateIntervalInfo;->getRawPatterns()Ljava/util/Map;
-Landroid/icu/text/DateIntervalInfo;->initializeData(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateIntervalInfo;->initializeFromReadOnlyPatterns(Landroid/icu/text/DateIntervalInfo;)V
-Landroid/icu/text/DateIntervalInfo;->INTERVAL_FORMATS_KEY:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->LATEST_FIRST_PREFIX:Ljava/lang/String;
-Landroid/icu/text/DateIntervalInfo;->MINIMUM_SUPPORTED_CALENDAR_FIELD:I
-Landroid/icu/text/DateIntervalInfo;->parseSkeleton(Ljava/lang/String;[I)V
-Landroid/icu/text/DateIntervalInfo;->setIntervalPattern(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/DateIntervalInfo$PatternInfo;)V
-Landroid/icu/text/DateIntervalInfo;->setIntervalPatternInternally(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/text/DateIntervalInfo$PatternInfo;
-Landroid/icu/text/DateIntervalInfo;->setup(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateIntervalInfo;->splitPatternInto2Part(Ljava/lang/String;)I
-Landroid/icu/text/DateIntervalInfo;->stringNumeric(IIC)Z
-Landroid/icu/text/DateTimePatternGenerator$AvailableFormatsSink;->returnInfo:Landroid/icu/text/DateTimePatternGenerator$PatternInfo;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;-><init>()V
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->addedDefaultDayPeriod:Z
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->baseOriginal:Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->compareTo(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)I
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->extractFrom(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;I)V
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->fieldIsNumeric(I)Z
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getBasePattern()Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getDistance(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;)I
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getFieldMask()I
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->original:Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->set(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$FormatParser;Z)Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->toCanonicalString()Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->type:[I
-Landroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;-><init>(Ljava/util/HashMap;)V
-Landroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;->tempMap:Ljava/util/HashMap;
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->addExtra(I)V
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->addMissing(I)V
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->clear()V
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->extraFieldMask:I
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->missingFieldMask:I
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->setTo(Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;)V
-Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->FIX_FRACTIONAL_SECONDS:Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
-Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->SKELETON_USES_CAP_J:Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
-Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->valueOf(Ljava/lang/String;)Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
-Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->values()[Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;-><init>()V
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->addVariable(Ljava/lang/StringBuffer;Z)V
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->getItems()Ljava/util/List;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->hasDateAndTimeFields()Z
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->items:Ljava/util/List;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->quoteLiteral(Ljava/lang/String;)Ljava/lang/Object;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->QUOTING_CHARS:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->set(Ljava/lang/String;)Landroid/icu/text/DateTimePatternGenerator$FormatParser;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->set(Ljava/lang/String;Z)Landroid/icu/text/DateTimePatternGenerator$FormatParser;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->SYNTAX_CHARS:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->tokenizer:Landroid/icu/impl/PatternTokenizer;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;->toString(II)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;-><init>(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)V
-Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;->matcherWithSkeleton:Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;
-Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;->pattern:Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;-><init>(Ljava/lang/String;Z)V
-Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;->pattern:Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;->skeletonWasSpecified:Z
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;-><init>()V
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendFieldTo(ILjava/lang/StringBuilder;)Ljava/lang/StringBuilder;
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendFieldTo(ILjava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendTo(Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendTo(Ljava/lang/StringBuilder;ZZ)Ljava/lang/StringBuilder;
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->chars:[B
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->clear()V
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->clearField(I)V
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->compareTo(Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;)I
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->copyFieldFrom(Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;I)V
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->DEFAULT_CHAR:B
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->DEFAULT_LENGTH:B
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->getFieldChar(I)C
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->getFieldLength(I)I
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->isFieldEmpty(I)Z
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->lengths:[B
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->populate(ICI)V
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->populate(ILjava/lang/String;)V
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toCanonicalString()Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toCanonicalString(Z)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toString(Z)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$VariableField;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/DateTimePatternGenerator$VariableField;-><init>(Ljava/lang/String;Z)V
-Landroid/icu/text/DateTimePatternGenerator$VariableField;->canonicalIndex:I
-Landroid/icu/text/DateTimePatternGenerator$VariableField;->getCanonicalCode(I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator$VariableField;->getCanonicalIndex()I
-Landroid/icu/text/DateTimePatternGenerator$VariableField;->getType()I
-Landroid/icu/text/DateTimePatternGenerator$VariableField;->isNumeric()Z
-Landroid/icu/text/DateTimePatternGenerator$VariableField;->string:Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->addCanonicalItems()V
-Landroid/icu/text/DateTimePatternGenerator;->addCLDRData(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateTimePatternGenerator;->addICUPatterns(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateTimePatternGenerator;->addPatternWithSkeleton(Ljava/lang/String;Ljava/lang/String;ZLandroid/icu/text/DateTimePatternGenerator$PatternInfo;)Landroid/icu/text/DateTimePatternGenerator;
-Landroid/icu/text/DateTimePatternGenerator;->adjustFieldTypes(Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;Ljava/util/EnumSet;I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->allowedHourFormats:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->appendItemFormats:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->appendItemNames:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->basePattern_pattern:Ljava/util/TreeMap;
-Landroid/icu/text/DateTimePatternGenerator;->CANONICAL_ITEMS:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->CANONICAL_SET:Ljava/util/Set;
-Landroid/icu/text/DateTimePatternGenerator;->checkFrozen()V
-Landroid/icu/text/DateTimePatternGenerator;->cldrAvailableFormatKeys:Ljava/util/Set;
-Landroid/icu/text/DateTimePatternGenerator;->CLDR_FIELD_APPEND:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->CLDR_FIELD_NAME:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->consumeShortTimePattern(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$PatternInfo;)V
-Landroid/icu/text/DateTimePatternGenerator;->current:Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;
-Landroid/icu/text/DateTimePatternGenerator;->dateTimeFormat:Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->DATE_MASK:I
-Landroid/icu/text/DateTimePatternGenerator;->DEBUG:Z
-Landroid/icu/text/DateTimePatternGenerator;->decimal:Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->defaultHourFormatChar:C
-Landroid/icu/text/DateTimePatternGenerator;->DELTA:I
-Landroid/icu/text/DateTimePatternGenerator;->DTPNG_CACHE:Landroid/icu/impl/ICUCache;
-Landroid/icu/text/DateTimePatternGenerator;->EXTRA_FIELD:I
-Landroid/icu/text/DateTimePatternGenerator;->FIELD_NAME:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->fillInMissing()V
-Landroid/icu/text/DateTimePatternGenerator;->fp:Landroid/icu/text/DateTimePatternGenerator$FormatParser;
-Landroid/icu/text/DateTimePatternGenerator;->FRACTIONAL_MASK:I
-Landroid/icu/text/DateTimePatternGenerator;->frozen:Z
-Landroid/icu/text/DateTimePatternGenerator;->getAllowedHourFormats(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateTimePatternGenerator;->getAppendFormat(I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getAppendFormatNumber(Landroid/icu/impl/UResource$Key;)I
-Landroid/icu/text/DateTimePatternGenerator;->getAppendFormatNumber(Ljava/lang/String;)I
-Landroid/icu/text/DateTimePatternGenerator;->getAppendName(I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getBestAppending(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;Ljava/util/EnumSet;I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getBestPattern(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getBestRaw(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;
-Landroid/icu/text/DateTimePatternGenerator;->getCalendarTypeToUse(Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getCanonicalChar(IC)C
-Landroid/icu/text/DateTimePatternGenerator;->getCanonicalIndex(Ljava/lang/String;Z)I
-Landroid/icu/text/DateTimePatternGenerator;->getCanonicalSkeletonAllowingDuplicates(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getCLDRFieldNumber(Landroid/icu/impl/UResource$Key;)I
-Landroid/icu/text/DateTimePatternGenerator;->getDefaultHourFormatChar()C
-Landroid/icu/text/DateTimePatternGenerator;->getFields(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getFilteredPattern(Landroid/icu/text/DateTimePatternGenerator$FormatParser;Ljava/util/BitSet;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getFrozenInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DateTimePatternGenerator;
-Landroid/icu/text/DateTimePatternGenerator;->getName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getRedundants(Ljava/util/Collection;)Ljava/util/Collection;
-Landroid/icu/text/DateTimePatternGenerator;->getSet(Ljava/lang/String;)Ljava/util/TreeSet;
-Landroid/icu/text/DateTimePatternGenerator;->getSkeletonAllowingDuplicates(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->getTopBitNumber(I)I
-Landroid/icu/text/DateTimePatternGenerator;->hackTimes(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Ljava/lang/String;)V
-Landroid/icu/text/DateTimePatternGenerator;->initData(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateTimePatternGenerator;->isAvailableFormatSet(Ljava/lang/String;)Z
-Landroid/icu/text/DateTimePatternGenerator;->isSingleField(Ljava/lang/String;)Z
-Landroid/icu/text/DateTimePatternGenerator;->LAST_RESORT_ALLOWED_HOUR_FORMAT:[Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->LOCALE_TO_ALLOWED_HOUR:Ljava/util/Map;
-Landroid/icu/text/DateTimePatternGenerator;->LONG:I
-Landroid/icu/text/DateTimePatternGenerator;->mapSkeletonMetacharacters(Ljava/lang/String;Ljava/util/EnumSet;)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->MATCH_MINUTE_FIELD_LENGTH:I
-Landroid/icu/text/DateTimePatternGenerator;->MATCH_SECOND_FIELD_LENGTH:I
-Landroid/icu/text/DateTimePatternGenerator;->MISSING_FIELD:I
-Landroid/icu/text/DateTimePatternGenerator;->NARROW:I
-Landroid/icu/text/DateTimePatternGenerator;->NONE:I
-Landroid/icu/text/DateTimePatternGenerator;->NUMERIC:I
-Landroid/icu/text/DateTimePatternGenerator;->SECOND_AND_FRACTIONAL_MASK:I
-Landroid/icu/text/DateTimePatternGenerator;->setAvailableFormat(Ljava/lang/String;)V
-Landroid/icu/text/DateTimePatternGenerator;->setDateTimeFromCalendar(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateTimePatternGenerator;->setDecimalSymbols(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DateTimePatternGenerator;->setDefaultHourFormatChar(C)V
-Landroid/icu/text/DateTimePatternGenerator;->SHORT:I
-Landroid/icu/text/DateTimePatternGenerator;->SHORTER:I
-Landroid/icu/text/DateTimePatternGenerator;->showMask(I)Ljava/lang/String;
-Landroid/icu/text/DateTimePatternGenerator;->skeleton2pattern:Ljava/util/TreeMap;
-Landroid/icu/text/DateTimePatternGenerator;->skeletonsAreSimilar(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/text/DateTimePatternGenerator;->TIME_MASK:I
-Landroid/icu/text/DateTimePatternGenerator;->types:[[I
-Landroid/icu/text/DateTimePatternGenerator;->TYPE_LIMIT:I
-Landroid/icu/text/DateTimePatternGenerator;->_distanceInfo:Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;
-Landroid/icu/text/DecimalFormat$PropertySetter;->set(Landroid/icu/impl/number/DecimalFormatProperties;)V
-Landroid/icu/text/DecimalFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;I)V
-Landroid/icu/text/DecimalFormat;->exportedProperties:Landroid/icu/impl/number/DecimalFormatProperties;
-Landroid/icu/text/DecimalFormat;->formatter:Landroid/icu/number/LocalizedNumberFormatter;
-Landroid/icu/text/DecimalFormat;->getDefaultSymbols()Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/DecimalFormat;->getFixedDecimal(D)Landroid/icu/text/PluralRules$IFixedDecimal;
-Landroid/icu/text/DecimalFormat;->getMinimumGroupingDigits()I
-Landroid/icu/text/DecimalFormat;->getParseCaseSensitive()Z
-Landroid/icu/text/DecimalFormat;->getParseNoExponent()Z
-Landroid/icu/text/DecimalFormat;->getSignAlwaysShown()Z
-Landroid/icu/text/DecimalFormat;->icuMathContextForm:I
-Landroid/icu/text/DecimalFormat;->properties:Landroid/icu/impl/number/DecimalFormatProperties;
-Landroid/icu/text/DecimalFormat;->refreshFormatter()V
-Landroid/icu/text/DecimalFormat;->safeConvertBigDecimal(Ljava/math/BigDecimal;)Ljava/lang/Number;
-Landroid/icu/text/DecimalFormat;->serialVersionOnStream:I
-Landroid/icu/text/DecimalFormat;->setMinimumGroupingDigits(I)V
-Landroid/icu/text/DecimalFormat;->setParseCaseSensitive(Z)V
-Landroid/icu/text/DecimalFormat;->setParseNoExponent(Z)V
-Landroid/icu/text/DecimalFormat;->setProperties(Landroid/icu/text/DecimalFormat$PropertySetter;)V
-Landroid/icu/text/DecimalFormat;->setPropertiesFromPattern(Ljava/lang/String;I)V
-Landroid/icu/text/DecimalFormat;->setSignAlwaysShown(Z)V
-Landroid/icu/text/DecimalFormat;->symbols:Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/DecimalFormat;->threadLocalProperties:Ljava/lang/ThreadLocal;
-Landroid/icu/text/DecimalFormat;->toNumberFormatter()Landroid/icu/number/LocalizedNumberFormatter;
-Landroid/icu/text/DecimalFormat;->useCurrency(Landroid/icu/impl/number/DecimalFormatProperties;)Z
-Landroid/icu/text/DecimalFormatSymbols$CacheData;-><init>(Landroid/icu/util/ULocale;[Ljava/lang/String;[Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormatSymbols$CacheData;->digits:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols$CacheData;->numberElements:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols$CacheData;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;-><init>([Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;->numberElements:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)V
-Landroid/icu/text/DecimalFormatSymbols;-><init>(Ljava/util/Locale;Landroid/icu/text/NumberingSystem;)V
-Landroid/icu/text/DecimalFormatSymbols;->actualLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DecimalFormatSymbols;->cachedLocaleData:Landroid/icu/impl/CacheBase;
-Landroid/icu/text/DecimalFormatSymbols;->codePointZero:I
-Landroid/icu/text/DecimalFormatSymbols;->currency:Landroid/icu/util/Currency;
-Landroid/icu/text/DecimalFormatSymbols;->currencyPattern:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->currencySpcAfterSym:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->currencySpcBeforeSym:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->currencySymbol:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->currentSerialVersion:I
-Landroid/icu/text/DecimalFormatSymbols;->decimalSeparator:C
-Landroid/icu/text/DecimalFormatSymbols;->decimalSeparatorString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->DEF_DECIMAL_SEPARATOR:C
-Landroid/icu/text/DecimalFormatSymbols;->DEF_DIGIT_CHARS_ARRAY:[C
-Landroid/icu/text/DecimalFormatSymbols;->DEF_DIGIT_STRINGS_ARRAY:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->DEF_GROUPING_SEPARATOR:C
-Landroid/icu/text/DecimalFormatSymbols;->DEF_MINUS_SIGN:C
-Landroid/icu/text/DecimalFormatSymbols;->DEF_PERCENT:C
-Landroid/icu/text/DecimalFormatSymbols;->DEF_PERMILL:C
-Landroid/icu/text/DecimalFormatSymbols;->DEF_PLUS_SIGN:C
-Landroid/icu/text/DecimalFormatSymbols;->digit:C
-Landroid/icu/text/DecimalFormatSymbols;->digits:[C
-Landroid/icu/text/DecimalFormatSymbols;->digitStrings:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->exponential:C
-Landroid/icu/text/DecimalFormatSymbols;->exponentMultiplicationSign:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->exponentSeparator:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->forNumberingSystem(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/DecimalFormatSymbols;->forNumberingSystem(Ljava/util/Locale;Landroid/icu/text/NumberingSystem;)Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/DecimalFormatSymbols;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/DecimalFormatSymbols;->getCodePointZero()I
-Landroid/icu/text/DecimalFormatSymbols;->getCurrencyPattern()Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->getDigitStringsLocal()[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->groupingSeparator:C
-Landroid/icu/text/DecimalFormatSymbols;->groupingSeparatorString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->infinity:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->initialize(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)V
-Landroid/icu/text/DecimalFormatSymbols;->initSpacingInfo(Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;)V
-Landroid/icu/text/DecimalFormatSymbols;->intlCurrencySymbol:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->LATIN_NUMBERING_SYSTEM:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->loadData(Landroid/icu/util/ULocale;)Landroid/icu/text/DecimalFormatSymbols$CacheData;
-Landroid/icu/text/DecimalFormatSymbols;->minusSign:C
-Landroid/icu/text/DecimalFormatSymbols;->minusString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->monetaryGroupingSeparator:C
-Landroid/icu/text/DecimalFormatSymbols;->monetaryGroupingSeparatorString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->monetarySeparator:C
-Landroid/icu/text/DecimalFormatSymbols;->monetarySeparatorString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->NaN:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->NUMBER_ELEMENTS:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->padEscape:C
-Landroid/icu/text/DecimalFormatSymbols;->patternSeparator:C
-Landroid/icu/text/DecimalFormatSymbols;->percent:C
-Landroid/icu/text/DecimalFormatSymbols;->percentString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->perMill:C
-Landroid/icu/text/DecimalFormatSymbols;->perMillString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->plusSign:C
-Landroid/icu/text/DecimalFormatSymbols;->plusString:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->requestedLocale:Ljava/util/Locale;
-Landroid/icu/text/DecimalFormatSymbols;->serialVersionOnStream:I
-Landroid/icu/text/DecimalFormatSymbols;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DecimalFormatSymbols;->sigDigit:C
-Landroid/icu/text/DecimalFormatSymbols;->SYMBOLS:Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->SYMBOL_DEFAULTS:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->SYMBOL_KEYS:[Ljava/lang/String;
-Landroid/icu/text/DecimalFormatSymbols;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DecimalFormatSymbols;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/DecimalFormatSymbols;->zeroDigit:C
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getNegPrefix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getNegSuffix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getPatternType()I
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getPosPrefix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getPosSuffix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->negPrefixPatternForCurrency:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->negSuffixPatternForCurrency:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->patternType:I
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->posPrefixPatternForCurrency:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->posSuffixPatternForCurrency:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->prefix:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->suffix:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->writePrefix(Ljava/lang/StringBuffer;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->writeSuffix(Ljava/lang/StringBuffer;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>()V
-Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/CurrencyPluralInfo;I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->actualRoundingIncrement:Ljava/math/BigDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->actualRoundingIncrementICU:Landroid/icu/math/BigDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->addAttribute(Landroid/icu/text/NumberFormat$Field;II)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->addPadding(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;II)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->adjustNumberAsInFormatting(D)D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->affixPatternsForCurrency:Ljava/util/Set;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->appendAffix(Ljava/lang/StringBuffer;ZZLjava/text/FieldPosition;Z)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->appendAffixPattern(Ljava/lang/StringBuffer;ZZZ)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->applyLocalizedPattern(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->applyPattern(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->applyPattern(Ljava/lang/String;Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->applyPatternWithoutExpandAffix(Ljava/lang/String;Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->areSignificantDigitsUsed()Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->attributes:Ljava/util/ArrayList;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->commaEquivalents:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->compareAffix(Ljava/lang/String;IZZLjava/lang/String;ZI[Landroid/icu/util/Currency;)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->compareComplexAffix(Ljava/lang/String;Ljava/lang/String;II[Landroid/icu/util/Currency;)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->compareSimpleAffix(Ljava/lang/String;Ljava/lang/String;I)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->create(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/CurrencyPluralInfo;I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->createFromPatternAndSymbols(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->currencyChoice:Ljava/text/ChoiceFormat;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->currencyPluralInfo:Landroid/icu/text/CurrencyPluralInfo;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->currencySignCount:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->currencyUsage:Landroid/icu/util/Currency$CurrencyUsage;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN_COUNT_IN_ISO_FORMAT:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN_COUNT_IN_SYMBOL_FORMAT:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN_COUNT_ZERO:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->currentSerialVersion:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->decimalSeparatorAlwaysShown:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->defaultGroupingSeparators:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->digitList:Landroid/icu/text/DigitList_Android;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->dotEquivalents:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->DOUBLE_FRACTION_DIGITS:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->DOUBLE_INTEGER_DIGITS:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->epsilon:D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->equals(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->equalWithSignCompatibility(II)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->expandAffix(Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuffer;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->expandAffixAdjustWidth(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->expandAffixes(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->exponentSignAlwaysShown:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->format(Ljava/math/BigDecimal;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->format(Ljava/math/BigInteger;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->formatAffix2Attribute(ZLandroid/icu/text/NumberFormat$Field;Ljava/lang/StringBuffer;II)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->formatPattern:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->formatToCharacterIterator(Ljava/lang/Object;Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;)Ljava/text/AttributedCharacterIterator;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->formatWidth:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getCurrencyPluralInfo()Landroid/icu/text/CurrencyPluralInfo;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getCurrencyUsage()Landroid/icu/util/Currency$CurrencyUsage;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getEffectiveCurrency()Landroid/icu/util/Currency;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getEquivalentDecimals(Ljava/lang/String;Z)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getFixedDecimal(D)Landroid/icu/text/PluralRules$FixedDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getFixedDecimal(DLandroid/icu/text/DigitList_Android;)Landroid/icu/text/PluralRules$FixedDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getFormatWidth()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getGroupingSize()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getMathContext()Ljava/math/MathContext;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getMathContextICU()Landroid/icu/math/MathContext;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getMaximumSignificantDigits()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getMinimumExponentDigits()B
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getMinimumSignificantDigits()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getMultiplier()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getNegativePrefix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getNegativeSuffix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getPadCharacter()C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getPadPosition()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getParseMaxDigits()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getPositivePrefix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getPositiveSuffix()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getRoundingIncrement()Ljava/math/BigDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->getSecondaryGroupingSize()I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->groupingSize2:B
-Landroid/icu/text/DecimalFormat_ICU58_Android;->groupingSize:B
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isBidiMark(I)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isDecimalPatternMatchRequired()Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isDecimalSeparatorAlwaysShown()Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isExponentSignAlwaysShown()Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isGroupingPosition(I)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isNegative(D)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isNumberNegative(D)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isParseBigDecimal()Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isReadyForParsing:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->isScientificNotation()Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->match(Ljava/lang/String;II)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->match(Ljava/lang/String;ILjava/lang/String;)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->matchesDigit(Ljava/lang/String;I[I)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->mathContext:Landroid/icu/math/MathContext;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->maxSignificantDigits:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->MAX_INTEGER_DIGITS:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->MAX_SCIENTIFIC_INTEGER_DIGITS:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->minExponentDigits:B
-Landroid/icu/text/DecimalFormat_ICU58_Android;->minSignificantDigits:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->minusSigns:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->multiplier:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->multiply(D)D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->negativePrefix:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->negativeSuffix:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->negPrefixPattern:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->negSuffixPattern:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->NULL_UNIT:Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->pad:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->padPosition:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PAD_AFTER_PREFIX:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PAD_AFTER_SUFFIX:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PAD_BEFORE_PREFIX:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PAD_BEFORE_SUFFIX:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->parse(Ljava/lang/String;Ljava/text/ParsePosition;[Landroid/icu/util/Currency;)Ljava/lang/Object;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->parseBigDecimal:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->parseForCurrency(Ljava/lang/String;Ljava/text/ParsePosition;[Landroid/icu/util/Currency;[Z)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->parseRequireDecimalPoint:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PARSE_MAX_EXPONENT:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->patternError(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_DECIMAL_SEPARATOR:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_EIGHT_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_EXPONENT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_FIVE_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_FOUR_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_GROUPING_SEPARATOR:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_MINUS_SIGN:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_NINE_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_ONE_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_PAD_ESCAPE:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_PERCENT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_PER_MILLE:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_PLUS_SIGN:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_SEPARATOR:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_SEVEN_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_SIGNIFICANT_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_SIX_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_THREE_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_TWO_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_ZERO_DIGIT:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->plusSigns:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->positivePrefix:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->positiveSuffix:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->posPrefixPattern:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->posSuffixPattern:Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->precision(Z)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->QUOTE:C
-Landroid/icu/text/DecimalFormat_ICU58_Android;->resetActualRounding()V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->round(D)D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->round(DDDIZ)D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingDouble:D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingDoubleReciprocal:D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingIncrement:Ljava/math/BigDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingIncrementEpsilon:D
-Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingIncrementICU:Landroid/icu/math/BigDecimal;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingMode:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->serialVersionOnStream:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setCurrencyForSymbols()V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setCurrencyPluralInfo(Landroid/icu/text/CurrencyPluralInfo;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setCurrencyUsage(Landroid/icu/util/Currency$CurrencyUsage;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setDecimalPatternMatchRequired(Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setDecimalSeparatorAlwaysShown(Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setExponentSignAlwaysShown(Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setFormatWidth(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setGroupingSize(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setInternalRoundingIncrement(Landroid/icu/math/BigDecimal;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setMathContext(Ljava/math/MathContext;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setMathContextICU(Landroid/icu/math/MathContext;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setMaximumSignificantDigits(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setMinimumExponentDigits(B)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setMinimumSignificantDigits(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setMultiplier(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setNegativePrefix(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setNegativeSuffix(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setPadCharacter(C)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setPadPosition(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setParseBigDecimal(Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setParseMaxDigits(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setPositivePrefix(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setPositiveSuffix(Ljava/lang/String;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingDouble(D)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingIncrement(D)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingIncrement(Landroid/icu/math/BigDecimal;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingIncrement(Ljava/math/BigDecimal;)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setScientificNotation(Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setSecondaryGroupingSize(I)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setSignificantDigitsUsed(Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->setupCurrencyAffixForAllPatterns()V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->skipBidiMarks(Ljava/lang/String;I)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->skipExtendedSeparatorParsing:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->skipPadding(Ljava/lang/String;I)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->skipPatternWhiteSpace(Ljava/lang/String;I)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->skipUWhiteSpace(Ljava/lang/String;I)I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->STATUS_INFINITE:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->STATUS_LENGTH:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->STATUS_POSITIVE:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->STATUS_UNDERFLOW:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->strictCommaEquivalents:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->strictDefaultGroupingSeparators:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->strictDotEquivalents:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->style:I
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subformat(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subformat(ILjava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subformat(Ljava/lang/String;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subformat(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subformatExponential(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Z)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subformatFixed(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ZZ)V
-Landroid/icu/text/DecimalFormat_ICU58_Android;->subparse(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/DigitList_Android;[Z[Landroid/icu/util/Currency;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->symbols:Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->toDigitList(D)Landroid/icu/text/DigitList_Android;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->toLocalizedPattern()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->toPattern()Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->toPattern(Z)Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->trimMarksFromAffix(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->unquote(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/DecimalFormat_ICU58_Android;->useExponentialNotation:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->useSignificantDigits:Z
-Landroid/icu/text/DecimalFormat_ICU58_Android;->_setMaximumFractionDigits(I)V
-Landroid/icu/text/DictionaryBreakEngine$DequeI;-><init>()V
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->contains(I)Z
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->data:[I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->elementAt(I)I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->firstIdx:I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->grow()V
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->isEmpty()Z
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->lastIdx:I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->offer(I)V
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->peek()I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->peekLast()I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->pollLast()I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->pop()I
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->push(I)V
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->removeAllElements()V
-Landroid/icu/text/DictionaryBreakEngine$DequeI;->size()I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;-><init>()V
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->acceptMarked(Ljava/text/CharacterIterator;)I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->backUp(Ljava/text/CharacterIterator;)Z
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->candidates(Ljava/text/CharacterIterator;Landroid/icu/text/DictionaryMatcher;I)I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->count:[I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->current:I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->lengths:[I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->longestPrefix()I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->mark:I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->markCurrent()V
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->offset:I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->POSSIBLE_WORD_LIST_MAX:I
-Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->prefix:I
-Landroid/icu/text/DictionaryBreakEngine;->divideUpDictionaryRange(Ljava/text/CharacterIterator;IILandroid/icu/text/DictionaryBreakEngine$DequeI;)I
-Landroid/icu/text/DictionaryBreakEngine;->findBreaks(Ljava/text/CharacterIterator;IIILandroid/icu/text/DictionaryBreakEngine$DequeI;)I
-Landroid/icu/text/DictionaryBreakEngine;->fSet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/DictionaryBreakEngine;->fTypes:Ljava/util/BitSet;
-Landroid/icu/text/DictionaryBreakEngine;->handles(II)Z
-Landroid/icu/text/DictionaryBreakEngine;->setCharacters(Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/DictionaryMatcher;-><init>()V
-Landroid/icu/text/DictionaryMatcher;->getType()I
-Landroid/icu/text/DictionaryMatcher;->matches(Ljava/text/CharacterIterator;I[I[II)I
-Landroid/icu/text/DictionaryMatcher;->matches(Ljava/text/CharacterIterator;I[I[II[I)I
-Landroid/icu/text/DigitList_Android;-><init>()V
-Landroid/icu/text/DigitList_Android;->append(I)V
-Landroid/icu/text/DigitList_Android;->count:I
-Landroid/icu/text/DigitList_Android;->DBL_DIG:I
-Landroid/icu/text/DigitList_Android;->decimalAt:I
-Landroid/icu/text/DigitList_Android;->didRound:Z
-Landroid/icu/text/DigitList_Android;->digits:[B
-Landroid/icu/text/DigitList_Android;->ensureCapacity(II)V
-Landroid/icu/text/DigitList_Android;->getBigDecimalICU(Z)Landroid/icu/math/BigDecimal;
-Landroid/icu/text/DigitList_Android;->getBigInteger(Z)Ljava/math/BigInteger;
-Landroid/icu/text/DigitList_Android;->getDigitValue(I)B
-Landroid/icu/text/DigitList_Android;->getDouble()D
-Landroid/icu/text/DigitList_Android;->getLong()J
-Landroid/icu/text/DigitList_Android;->getStringRep(Z)Ljava/lang/String;
-Landroid/icu/text/DigitList_Android;->isIntegral()Z
-Landroid/icu/text/DigitList_Android;->isLongMIN_VALUE()Z
-Landroid/icu/text/DigitList_Android;->isZero()Z
-Landroid/icu/text/DigitList_Android;->LONG_MIN_REP:[B
-Landroid/icu/text/DigitList_Android;->MAX_LONG_DIGITS:I
-Landroid/icu/text/DigitList_Android;->round(I)V
-Landroid/icu/text/DigitList_Android;->set(DIZ)V
-Landroid/icu/text/DigitList_Android;->set(J)V
-Landroid/icu/text/DigitList_Android;->set(JI)V
-Landroid/icu/text/DigitList_Android;->set(Landroid/icu/math/BigDecimal;IZ)V
-Landroid/icu/text/DigitList_Android;->set(Ljava/lang/String;I)V
-Landroid/icu/text/DigitList_Android;->set(Ljava/math/BigDecimal;IZ)V
-Landroid/icu/text/DigitList_Android;->set(Ljava/math/BigInteger;I)V
-Landroid/icu/text/DigitList_Android;->setBigDecimalDigits(Ljava/lang/String;IZ)V
-Landroid/icu/text/DigitList_Android;->shouldRoundUp(I)Z
-Landroid/icu/text/DigitList_Android;->wasRounded()Z
-Landroid/icu/text/DisplayContext;->type:Landroid/icu/text/DisplayContext$Type;
-Landroid/icu/text/DisplayContext;->value:I
-Landroid/icu/text/DurationFormat;-><init>()V
-Landroid/icu/text/DurationFormat;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/DurationFormat;->formatDurationFrom(JJ)Ljava/lang/String;
-Landroid/icu/text/DurationFormat;->formatDurationFromNow(J)Ljava/lang/String;
-Landroid/icu/text/DurationFormat;->formatDurationFromNowTo(Ljava/util/Date;)Ljava/lang/String;
-Landroid/icu/text/DurationFormat;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DurationFormat;
-Landroid/icu/text/Edits$Iterator;-><init>([CIZZ)V
-Landroid/icu/text/Edits$Iterator;->array:[C
-Landroid/icu/text/Edits$Iterator;->changed:Z
-Landroid/icu/text/Edits$Iterator;->coarse:Z
-Landroid/icu/text/Edits$Iterator;->destinationIndex()I
-Landroid/icu/text/Edits$Iterator;->destinationIndexFromSourceIndex(I)I
-Landroid/icu/text/Edits$Iterator;->destIndex:I
-Landroid/icu/text/Edits$Iterator;->dir:I
-Landroid/icu/text/Edits$Iterator;->findDestinationIndex(I)Z
-Landroid/icu/text/Edits$Iterator;->findIndex(IZ)I
-Landroid/icu/text/Edits$Iterator;->findSourceIndex(I)Z
-Landroid/icu/text/Edits$Iterator;->hasChange()Z
-Landroid/icu/text/Edits$Iterator;->index:I
-Landroid/icu/text/Edits$Iterator;->length:I
-Landroid/icu/text/Edits$Iterator;->newLength()I
-Landroid/icu/text/Edits$Iterator;->newLength_:I
-Landroid/icu/text/Edits$Iterator;->next()Z
-Landroid/icu/text/Edits$Iterator;->next(Z)Z
-Landroid/icu/text/Edits$Iterator;->noNext()Z
-Landroid/icu/text/Edits$Iterator;->oldLength()I
-Landroid/icu/text/Edits$Iterator;->oldLength_:I
-Landroid/icu/text/Edits$Iterator;->onlyChanges_:Z
-Landroid/icu/text/Edits$Iterator;->previous()Z
-Landroid/icu/text/Edits$Iterator;->readLength(I)I
-Landroid/icu/text/Edits$Iterator;->remaining:I
-Landroid/icu/text/Edits$Iterator;->replacementIndex()I
-Landroid/icu/text/Edits$Iterator;->replIndex:I
-Landroid/icu/text/Edits$Iterator;->sourceIndex()I
-Landroid/icu/text/Edits$Iterator;->sourceIndexFromDestinationIndex(I)I
-Landroid/icu/text/Edits$Iterator;->srcIndex:I
-Landroid/icu/text/Edits$Iterator;->updateNextIndexes()V
-Landroid/icu/text/Edits$Iterator;->updatePreviousIndexes()V
-Landroid/icu/text/Edits;-><init>()V
-Landroid/icu/text/Edits;->addReplace(II)V
-Landroid/icu/text/Edits;->addUnchanged(I)V
-Landroid/icu/text/Edits;->append(I)V
-Landroid/icu/text/Edits;->array:[C
-Landroid/icu/text/Edits;->delta:I
-Landroid/icu/text/Edits;->getCoarseChangesIterator()Landroid/icu/text/Edits$Iterator;
-Landroid/icu/text/Edits;->getCoarseIterator()Landroid/icu/text/Edits$Iterator;
-Landroid/icu/text/Edits;->getFineChangesIterator()Landroid/icu/text/Edits$Iterator;
-Landroid/icu/text/Edits;->getFineIterator()Landroid/icu/text/Edits$Iterator;
-Landroid/icu/text/Edits;->growArray()Z
-Landroid/icu/text/Edits;->hasChanges()Z
-Landroid/icu/text/Edits;->lastUnit()I
-Landroid/icu/text/Edits;->length:I
-Landroid/icu/text/Edits;->lengthDelta()I
-Landroid/icu/text/Edits;->LENGTH_IN_1TRAIL:I
-Landroid/icu/text/Edits;->LENGTH_IN_2TRAIL:I
-Landroid/icu/text/Edits;->MAX_SHORT_CHANGE:I
-Landroid/icu/text/Edits;->MAX_SHORT_CHANGE_NEW_LENGTH:I
-Landroid/icu/text/Edits;->MAX_SHORT_CHANGE_OLD_LENGTH:I
-Landroid/icu/text/Edits;->MAX_UNCHANGED:I
-Landroid/icu/text/Edits;->MAX_UNCHANGED_LENGTH:I
-Landroid/icu/text/Edits;->mergeAndAppend(Landroid/icu/text/Edits;Landroid/icu/text/Edits;)Landroid/icu/text/Edits;
-Landroid/icu/text/Edits;->numberOfChanges()I
-Landroid/icu/text/Edits;->numChanges:I
-Landroid/icu/text/Edits;->reset()V
-Landroid/icu/text/Edits;->setLastUnit(I)V
-Landroid/icu/text/Edits;->SHORT_CHANGE_NUM_MASK:I
-Landroid/icu/text/Edits;->STACK_CAPACITY:I
-Landroid/icu/text/FilteredBreakIteratorBuilder;-><init>()V
-Landroid/icu/text/FilteredBreakIteratorBuilder;->getEmptyInstance()Landroid/icu/text/FilteredBreakIteratorBuilder;
-Landroid/icu/text/FilteredBreakIteratorBuilder;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/FilteredBreakIteratorBuilder;
-Landroid/icu/text/FilteredBreakIteratorBuilder;->getInstance(Ljava/util/Locale;)Landroid/icu/text/FilteredBreakIteratorBuilder;
-Landroid/icu/text/FilteredBreakIteratorBuilder;->suppressBreakAfter(Ljava/lang/CharSequence;)Z
-Landroid/icu/text/FilteredBreakIteratorBuilder;->unsuppressBreakAfter(Ljava/lang/CharSequence;)Z
-Landroid/icu/text/FilteredBreakIteratorBuilder;->wrapIteratorWithFilter(Landroid/icu/text/BreakIterator;)Landroid/icu/text/BreakIterator;
-Landroid/icu/text/FilteredNormalizer2;-><init>(Landroid/icu/text/Normalizer2;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/FilteredNormalizer2;->norm2:Landroid/icu/text/Normalizer2;
-Landroid/icu/text/FilteredNormalizer2;->normalize(Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/UnicodeSet$SpanCondition;)Ljava/lang/Appendable;
-Landroid/icu/text/FilteredNormalizer2;->normalizeSecondAndAppend(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;Z)Ljava/lang/StringBuilder;
-Landroid/icu/text/FilteredNormalizer2;->set:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/IDNA$Info;->errors:Ljava/util/EnumSet;
-Landroid/icu/text/IDNA$Info;->isBiDi:Z
-Landroid/icu/text/IDNA$Info;->isOkBiDi:Z
-Landroid/icu/text/IDNA$Info;->isTransDiff:Z
-Landroid/icu/text/IDNA$Info;->labelErrors:Ljava/util/EnumSet;
-Landroid/icu/text/IDNA$Info;->reset()V
-Landroid/icu/text/IDNA;-><init>()V
-Landroid/icu/text/IDNA;->addError(Landroid/icu/text/IDNA$Info;Landroid/icu/text/IDNA$Error;)V
-Landroid/icu/text/IDNA;->addLabelError(Landroid/icu/text/IDNA$Info;Landroid/icu/text/IDNA$Error;)V
-Landroid/icu/text/IDNA;->ALLOW_UNASSIGNED:I
-Landroid/icu/text/IDNA;->compare(Landroid/icu/text/UCharacterIterator;Landroid/icu/text/UCharacterIterator;I)I
-Landroid/icu/text/IDNA;->compare(Ljava/lang/String;Ljava/lang/String;I)I
-Landroid/icu/text/IDNA;->compare(Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;I)I
-Landroid/icu/text/IDNA;->convertIDNToASCII(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertIDNToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertIDNToASCII(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertIDNToUnicode(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertIDNToUnicode(Ljava/lang/String;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertIDNToUnicode(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertToASCII(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertToASCII(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertToUnicode(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertToUnicode(Ljava/lang/String;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->convertToUnicode(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/IDNA;->hasCertainErrors(Landroid/icu/text/IDNA$Info;Ljava/util/EnumSet;)Z
-Landroid/icu/text/IDNA;->hasCertainLabelErrors(Landroid/icu/text/IDNA$Info;Ljava/util/EnumSet;)Z
-Landroid/icu/text/IDNA;->isBiDi(Landroid/icu/text/IDNA$Info;)Z
-Landroid/icu/text/IDNA;->isOkBiDi(Landroid/icu/text/IDNA$Info;)Z
-Landroid/icu/text/IDNA;->promoteAndResetLabelErrors(Landroid/icu/text/IDNA$Info;)V
-Landroid/icu/text/IDNA;->resetInfo(Landroid/icu/text/IDNA$Info;)V
-Landroid/icu/text/IDNA;->setBiDi(Landroid/icu/text/IDNA$Info;)V
-Landroid/icu/text/IDNA;->setNotOkBiDi(Landroid/icu/text/IDNA$Info;)V
-Landroid/icu/text/IDNA;->setTransitionalDifferent(Landroid/icu/text/IDNA$Info;)V
-Landroid/icu/text/LanguageBreakEngine;->findBreaks(Ljava/text/CharacterIterator;IIILandroid/icu/text/DictionaryBreakEngine$DequeI;)I
-Landroid/icu/text/LanguageBreakEngine;->handles(II)Z
-Landroid/icu/text/ListFormatter$Cache;-><init>()V
-Landroid/icu/text/ListFormatter$Cache;->cache:Landroid/icu/impl/ICUCache;
-Landroid/icu/text/ListFormatter$Cache;->get(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/ListFormatter;
-Landroid/icu/text/ListFormatter$Cache;->load(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/ListFormatter;
-Landroid/icu/text/ListFormatter$FormattedListBuilder;-><init>(Ljava/lang/Object;Z)V
-Landroid/icu/text/ListFormatter$FormattedListBuilder;->append(Ljava/lang/String;Ljava/lang/Object;Z)Landroid/icu/text/ListFormatter$FormattedListBuilder;
-Landroid/icu/text/ListFormatter$FormattedListBuilder;->current:Ljava/lang/StringBuilder;
-Landroid/icu/text/ListFormatter$FormattedListBuilder;->getOffset()I
-Landroid/icu/text/ListFormatter$FormattedListBuilder;->offset:I
-Landroid/icu/text/ListFormatter$FormattedListBuilder;->offsetRecorded()Z
-Landroid/icu/text/ListFormatter$Style;->DURATION:Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/ListFormatter$Style;->DURATION_NARROW:Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/ListFormatter$Style;->DURATION_SHORT:Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/ListFormatter$Style;->getName()Ljava/lang/String;
-Landroid/icu/text/ListFormatter$Style;->name:Ljava/lang/String;
-Landroid/icu/text/ListFormatter$Style;->STANDARD:Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/ListFormatter$Style;->valueOf(Ljava/lang/String;)Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/ListFormatter$Style;->values()[Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/ListFormatter;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/ListFormatter;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/ListFormatter;->cache:Landroid/icu/text/ListFormatter$Cache;
-Landroid/icu/text/ListFormatter;->compilePattern(Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/String;
-Landroid/icu/text/ListFormatter;->end:Ljava/lang/String;
-Landroid/icu/text/ListFormatter;->format(Ljava/util/Collection;I)Landroid/icu/text/ListFormatter$FormattedListBuilder;
-Landroid/icu/text/ListFormatter;->getInstance(Landroid/icu/util/ULocale;Landroid/icu/text/ListFormatter$Style;)Landroid/icu/text/ListFormatter;
-Landroid/icu/text/ListFormatter;->getLocale()Landroid/icu/util/ULocale;
-Landroid/icu/text/ListFormatter;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/ListFormatter;->middle:Ljava/lang/String;
-Landroid/icu/text/ListFormatter;->start:Ljava/lang/String;
-Landroid/icu/text/ListFormatter;->two:Ljava/lang/String;
-Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/LocaleDisplayNames$DialectHandling;)V
-Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;->contexts:[Landroid/icu/text/DisplayContext;
-Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;-><init>(Ljava/util/Comparator;Z)V
-Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;->collator:Ljava/util/Comparator;
-Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;->compare(Landroid/icu/text/LocaleDisplayNames$UiListItem;Landroid/icu/text/LocaleDisplayNames$UiListItem;)I
-Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;->useSelf:Z
-Landroid/icu/text/LocaleDisplayNames;-><init>()V
-Landroid/icu/text/LocaleDisplayNames;->FACTORY_DIALECTHANDLING:Ljava/lang/reflect/Method;
-Landroid/icu/text/LocaleDisplayNames;->FACTORY_DISPLAYCONTEXT:Ljava/lang/reflect/Method;
-Landroid/icu/text/LocaleDisplayNames;->scriptDisplayNameInContext(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$FormatWidth;->currencyStyle:I
-Landroid/icu/text/MeasureFormat$FormatWidth;->getCurrencyStyle()I
-Landroid/icu/text/MeasureFormat$FormatWidth;->getListFormatterStyle()Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/MeasureFormat$FormatWidth;->INDEX_COUNT:I
-Landroid/icu/text/MeasureFormat$FormatWidth;->listFormatterStyle:Landroid/icu/text/ListFormatter$Style;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;-><init>(Landroid/icu/text/NumberFormat;)V
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->format(Landroid/icu/util/CurrencyAmount;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->format(Ljava/lang/Number;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->format(Ljava/lang/Number;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->get()Landroid/icu/text/NumberFormat;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->getPrefix(Z)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->getSuffix(Z)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->nf:Landroid/icu/text/NumberFormat;
-Landroid/icu/text/MeasureFormat$MeasureFormatData;-><init>()V
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->hasPerFormatter(Landroid/icu/text/MeasureFormat$FormatWidth;)Z
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->PATTERN_COUNT:I
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->PER_UNIT_INDEX:I
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->styleToPerPattern:Ljava/util/EnumMap;
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->unitToStyleToDnam:Ljava/util/Map;
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->unitToStyleToPatterns:Ljava/util/Map;
-Landroid/icu/text/MeasureFormat$MeasureFormatData;->widthFallback:[Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat$MeasureProxy;-><init>()V
-Landroid/icu/text/MeasureFormat$MeasureProxy;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$FormatWidth;Landroid/icu/text/NumberFormat;I)V
-Landroid/icu/text/MeasureFormat$MeasureProxy;->createTimeUnitFormat()Landroid/icu/text/TimeUnitFormat;
-Landroid/icu/text/MeasureFormat$MeasureProxy;->formatWidth:Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat$MeasureProxy;->keyValues:Ljava/util/HashMap;
-Landroid/icu/text/MeasureFormat$MeasureProxy;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/MeasureFormat$MeasureProxy;->numberFormat:Landroid/icu/text/NumberFormat;
-Landroid/icu/text/MeasureFormat$MeasureProxy;->subClass:I
-Landroid/icu/text/MeasureFormat$NumericFormatters;-><init>(Landroid/icu/text/DateFormat;Landroid/icu/text/DateFormat;Landroid/icu/text/DateFormat;)V
-Landroid/icu/text/MeasureFormat$NumericFormatters;->getHourMinute()Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat$NumericFormatters;->getHourMinuteSecond()Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat$NumericFormatters;->getMinuteSecond()Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat$NumericFormatters;->hourMinute:Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat$NumericFormatters;->hourMinuteSecond:Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat$NumericFormatters;->minuteSecond:Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat$PatternData;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/MeasureFormat$PatternData;->prefix:Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$PatternData;->suffix:Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$UnitDataSink;-><init>(Landroid/icu/text/MeasureFormat$MeasureFormatData;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->cacheData:Landroid/icu/text/MeasureFormat$MeasureFormatData;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeAlias(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeCompoundPattern(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->consumePattern(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeSubtypeTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeUnitTypesTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->patterns:[Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->sb:Ljava/lang/StringBuilder;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->setDnamIfAbsent(Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->setFormatterIfAbsent(ILandroid/icu/impl/UResource$Value;I)V
-Landroid/icu/text/MeasureFormat$UnitDataSink;->type:Ljava/lang/String;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->unit:Landroid/icu/util/MeasureUnit;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->width:Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->widthFromAlias(Landroid/icu/impl/UResource$Value;)Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat$UnitDataSink;->widthFromKey(Landroid/icu/impl/UResource$Key;)Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat;-><init>()V
-Landroid/icu/text/MeasureFormat;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$MeasureFormatData;Landroid/icu/text/MeasureFormat$FormatWidth;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;Landroid/icu/text/PluralRules;Landroid/icu/text/MeasureFormat$NumericFormatters;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;)V
-Landroid/icu/text/MeasureFormat;->appendReplacingCurrency(Ljava/lang/String;Landroid/icu/util/Currency;Landroid/icu/impl/StandardPlural;Ljava/lang/StringBuilder;)V
-Landroid/icu/text/MeasureFormat;->cache:Landroid/icu/text/MeasureFormat$MeasureFormatData;
-Landroid/icu/text/MeasureFormat;->currencyFormat:Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;
-Landroid/icu/text/MeasureFormat;->CURRENCY_FORMAT:I
-Landroid/icu/text/MeasureFormat;->formatMeasure(Landroid/icu/util/Measure;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->formatMeasure(Landroid/icu/util/Measure;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;Ljava/lang/StringBuilder;Ljava/text/FieldPosition;)Ljava/lang/StringBuilder;
-Landroid/icu/text/MeasureFormat;->formatMeasureRange(Landroid/icu/util/Measure;Landroid/icu/util/Measure;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->formatNumeric(Ljava/util/Date;Landroid/icu/text/DateFormat;Landroid/icu/text/DateFormat$Field;Ljava/lang/Number;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
-Landroid/icu/text/MeasureFormat;->formatNumeric([Ljava/lang/Number;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
-Landroid/icu/text/MeasureFormat;->formatWidth:Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat;->fromFormatWidthOrdinal(I)Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat;->getFormatter(Landroid/icu/util/MeasureUnit;Landroid/icu/text/MeasureFormat$FormatWidth;I)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->getFormatterOrNull(Landroid/icu/util/MeasureUnit;Landroid/icu/text/MeasureFormat$FormatWidth;I)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->getPerFormatter(Landroid/icu/text/MeasureFormat$FormatWidth;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->getPluralFormatter(Landroid/icu/util/MeasureUnit;Landroid/icu/text/MeasureFormat$FormatWidth;I)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->getRangeFormat(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$FormatWidth;)Ljava/lang/String;
-Landroid/icu/text/MeasureFormat;->getRegularWidth(Landroid/icu/text/MeasureFormat$FormatWidth;)Landroid/icu/text/MeasureFormat$FormatWidth;
-Landroid/icu/text/MeasureFormat;->hmsTo012:Ljava/util/Map;
-Landroid/icu/text/MeasureFormat;->integerFormat:Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;
-Landroid/icu/text/MeasureFormat;->loadLocaleData(Landroid/icu/util/ULocale;)Landroid/icu/text/MeasureFormat$MeasureFormatData;
-Landroid/icu/text/MeasureFormat;->loadNumericDurationFormat(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)Landroid/icu/text/DateFormat;
-Landroid/icu/text/MeasureFormat;->loadNumericFormatters(Landroid/icu/util/ULocale;)Landroid/icu/text/MeasureFormat$NumericFormatters;
-Landroid/icu/text/MeasureFormat;->localeIdToRangeFormat:Ljava/util/Map;
-Landroid/icu/text/MeasureFormat;->localeMeasureFormatData:Landroid/icu/impl/SimpleCache;
-Landroid/icu/text/MeasureFormat;->localeToNumericDurationFormatters:Landroid/icu/impl/SimpleCache;
-Landroid/icu/text/MeasureFormat;->MEASURE_FORMAT:I
-Landroid/icu/text/MeasureFormat;->numberFormat:Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;
-Landroid/icu/text/MeasureFormat;->numericFormatters:Landroid/icu/text/MeasureFormat$NumericFormatters;
-Landroid/icu/text/MeasureFormat;->rules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/MeasureFormat;->TIME_UNIT_FORMAT:I
-Landroid/icu/text/MeasureFormat;->toCurrencyProxy()Ljava/lang/Object;
-Landroid/icu/text/MeasureFormat;->toHMS([Landroid/icu/util/Measure;)[Ljava/lang/Number;
-Landroid/icu/text/MeasureFormat;->toTimeUnitProxy()Ljava/lang/Object;
-Landroid/icu/text/MeasureFormat;->withLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/MeasureFormat;
-Landroid/icu/text/MeasureFormat;->withNumberFormat(Landroid/icu/text/NumberFormat;)Landroid/icu/text/MeasureFormat;
-Landroid/icu/text/MeasureFormat;->withPerUnitAndAppend(Ljava/lang/CharSequence;Landroid/icu/util/MeasureUnit;Ljava/lang/StringBuilder;)I
-Landroid/icu/text/MessageFormat$AppendableWrapper;-><init>(Ljava/lang/StringBuffer;)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;-><init>(Ljava/lang/StringBuilder;)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;->app:Ljava/lang/Appendable;
-Landroid/icu/text/MessageFormat$AppendableWrapper;->append(Ljava/lang/Appendable;Ljava/text/CharacterIterator;)I
-Landroid/icu/text/MessageFormat$AppendableWrapper;->append(Ljava/lang/CharSequence;)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;->append(Ljava/lang/CharSequence;II)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;->append(Ljava/text/CharacterIterator;)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;->attributes:Ljava/util/List;
-Landroid/icu/text/MessageFormat$AppendableWrapper;->formatAndAppend(Ljava/text/Format;Ljava/lang/Object;)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;->formatAndAppend(Ljava/text/Format;Ljava/lang/Object;Ljava/lang/String;)V
-Landroid/icu/text/MessageFormat$AppendableWrapper;->length:I
-Landroid/icu/text/MessageFormat$AppendableWrapper;->useAttributes()V
-Landroid/icu/text/MessageFormat$AttributeAndPosition;-><init>(Ljava/lang/Object;II)V
-Landroid/icu/text/MessageFormat$AttributeAndPosition;-><init>(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V
-Landroid/icu/text/MessageFormat$AttributeAndPosition;->init(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V
-Landroid/icu/text/MessageFormat$AttributeAndPosition;->key:Ljava/text/AttributedCharacterIterator$Attribute;
-Landroid/icu/text/MessageFormat$AttributeAndPosition;->limit:I
-Landroid/icu/text/MessageFormat$AttributeAndPosition;->start:I
-Landroid/icu/text/MessageFormat$AttributeAndPosition;->value:Ljava/lang/Object;
-Landroid/icu/text/MessageFormat$PluralSelectorContext;-><init>(ILjava/lang/String;Ljava/lang/Number;D)V
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->argName:Ljava/lang/String;
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->formatter:Ljava/text/Format;
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->forReplaceNumber:Z
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->number:Ljava/lang/Number;
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->numberArgIndex:I
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->numberString:Ljava/lang/String;
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->offset:D
-Landroid/icu/text/MessageFormat$PluralSelectorContext;->startIndex:I
-Landroid/icu/text/MessageFormat$PluralSelectorProvider;-><init>(Landroid/icu/text/MessageFormat;Landroid/icu/text/PluralRules$PluralType;)V
-Landroid/icu/text/MessageFormat$PluralSelectorProvider;->msgFormat:Landroid/icu/text/MessageFormat;
-Landroid/icu/text/MessageFormat$PluralSelectorProvider;->rules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/MessageFormat$PluralSelectorProvider;->select(Ljava/lang/Object;D)Ljava/lang/String;
-Landroid/icu/text/MessageFormat$PluralSelectorProvider;->type:Landroid/icu/text/PluralRules$PluralType;
-Landroid/icu/text/MessageFormat;->argNameMatches(ILjava/lang/String;I)Z
-Landroid/icu/text/MessageFormat;->cachedFormatters:Ljava/util/Map;
-Landroid/icu/text/MessageFormat;->cacheExplicitFormats()V
-Landroid/icu/text/MessageFormat;->createAppropriateFormat(Ljava/lang/String;Ljava/lang/String;)Ljava/text/Format;
-Landroid/icu/text/MessageFormat;->CURLY_BRACE_LEFT:C
-Landroid/icu/text/MessageFormat;->CURLY_BRACE_RIGHT:C
-Landroid/icu/text/MessageFormat;->customFormatArgStarts:Ljava/util/Set;
-Landroid/icu/text/MessageFormat;->dateModifierList:[Ljava/lang/String;
-Landroid/icu/text/MessageFormat;->DATE_MODIFIER_EMPTY:I
-Landroid/icu/text/MessageFormat;->DATE_MODIFIER_FULL:I
-Landroid/icu/text/MessageFormat;->DATE_MODIFIER_LONG:I
-Landroid/icu/text/MessageFormat;->DATE_MODIFIER_MEDIUM:I
-Landroid/icu/text/MessageFormat;->DATE_MODIFIER_SHORT:I
-Landroid/icu/text/MessageFormat;->findChoiceSubMessage(Landroid/icu/text/MessagePattern;ID)I
-Landroid/icu/text/MessageFormat;->findFirstPluralNumberArg(ILjava/lang/String;)I
-Landroid/icu/text/MessageFormat;->findKeyword(Ljava/lang/String;[Ljava/lang/String;)I
-Landroid/icu/text/MessageFormat;->findOtherSubMessage(I)I
-Landroid/icu/text/MessageFormat;->format(ILandroid/icu/text/MessageFormat$PluralSelectorContext;[Ljava/lang/Object;Ljava/util/Map;Landroid/icu/text/MessageFormat$AppendableWrapper;Ljava/text/FieldPosition;)V
-Landroid/icu/text/MessageFormat;->format(Ljava/lang/Object;Landroid/icu/text/MessageFormat$AppendableWrapper;Ljava/text/FieldPosition;)V
-Landroid/icu/text/MessageFormat;->format([Ljava/lang/Object;Ljava/util/Map;Landroid/icu/text/MessageFormat$AppendableWrapper;Ljava/text/FieldPosition;)V
-Landroid/icu/text/MessageFormat;->formatComplexSubMessage(ILandroid/icu/text/MessageFormat$PluralSelectorContext;[Ljava/lang/Object;Ljava/util/Map;Landroid/icu/text/MessageFormat$AppendableWrapper;)V
-Landroid/icu/text/MessageFormat;->getArgName(I)Ljava/lang/String;
-Landroid/icu/text/MessageFormat;->getLiteralStringUntilNextArgument(I)Ljava/lang/String;
-Landroid/icu/text/MessageFormat;->getStockDateFormatter()Landroid/icu/text/DateFormat;
-Landroid/icu/text/MessageFormat;->getStockNumberFormatter()Landroid/icu/text/NumberFormat;
-Landroid/icu/text/MessageFormat;->matchStringUntilLimitPart(Landroid/icu/text/MessagePattern;IILjava/lang/String;I)I
-Landroid/icu/text/MessageFormat;->modifierList:[Ljava/lang/String;
-Landroid/icu/text/MessageFormat;->MODIFIER_CURRENCY:I
-Landroid/icu/text/MessageFormat;->MODIFIER_EMPTY:I
-Landroid/icu/text/MessageFormat;->MODIFIER_INTEGER:I
-Landroid/icu/text/MessageFormat;->MODIFIER_PERCENT:I
-Landroid/icu/text/MessageFormat;->msgPattern:Landroid/icu/text/MessagePattern;
-Landroid/icu/text/MessageFormat;->nextTopLevelArgStart(I)I
-Landroid/icu/text/MessageFormat;->ordinalProvider:Landroid/icu/text/MessageFormat$PluralSelectorProvider;
-Landroid/icu/text/MessageFormat;->parse(ILjava/lang/String;Ljava/text/ParsePosition;[Ljava/lang/Object;Ljava/util/Map;)V
-Landroid/icu/text/MessageFormat;->parseChoiceArgument(Landroid/icu/text/MessagePattern;ILjava/lang/String;Ljava/text/ParsePosition;)D
-Landroid/icu/text/MessageFormat;->pluralProvider:Landroid/icu/text/MessageFormat$PluralSelectorProvider;
-Landroid/icu/text/MessageFormat;->resetPattern()V
-Landroid/icu/text/MessageFormat;->rootLocale:Ljava/util/Locale;
-Landroid/icu/text/MessageFormat;->setArgStartFormat(ILjava/text/Format;)V
-Landroid/icu/text/MessageFormat;->setCustomArgStartFormat(ILjava/text/Format;)V
-Landroid/icu/text/MessageFormat;->SINGLE_QUOTE:C
-Landroid/icu/text/MessageFormat;->STATE_INITIAL:I
-Landroid/icu/text/MessageFormat;->STATE_IN_QUOTE:I
-Landroid/icu/text/MessageFormat;->STATE_MSG_ELEMENT:I
-Landroid/icu/text/MessageFormat;->STATE_SINGLE_QUOTE:I
-Landroid/icu/text/MessageFormat;->stockDateFormatter:Landroid/icu/text/DateFormat;
-Landroid/icu/text/MessageFormat;->stockNumberFormatter:Landroid/icu/text/NumberFormat;
-Landroid/icu/text/MessageFormat;->typeList:[Ljava/lang/String;
-Landroid/icu/text/MessageFormat;->TYPE_DATE:I
-Landroid/icu/text/MessageFormat;->TYPE_DURATION:I
-Landroid/icu/text/MessageFormat;->TYPE_NUMBER:I
-Landroid/icu/text/MessageFormat;->TYPE_ORDINAL:I
-Landroid/icu/text/MessageFormat;->TYPE_SPELLOUT:I
-Landroid/icu/text/MessageFormat;->TYPE_TIME:I
-Landroid/icu/text/MessageFormat;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/MessageFormat;->updateMetaData(Landroid/icu/text/MessageFormat$AppendableWrapper;ILjava/text/FieldPosition;Ljava/lang/Object;)Ljava/text/FieldPosition;
-Landroid/icu/text/MessagePattern$Part;-><init>(Landroid/icu/text/MessagePattern$Part$Type;III)V
-Landroid/icu/text/MessagePattern$Part;->index:I
-Landroid/icu/text/MessagePattern$Part;->length:C
-Landroid/icu/text/MessagePattern$Part;->limitPartIndex:I
-Landroid/icu/text/MessagePattern$Part;->MAX_LENGTH:I
-Landroid/icu/text/MessagePattern$Part;->MAX_VALUE:I
-Landroid/icu/text/MessagePattern$Part;->type:Landroid/icu/text/MessagePattern$Part$Type;
-Landroid/icu/text/MessagePattern$Part;->value:S
-Landroid/icu/text/MessagePattern;->addArgDoublePart(DII)V
-Landroid/icu/text/MessagePattern;->addLimitPart(ILandroid/icu/text/MessagePattern$Part$Type;III)V
-Landroid/icu/text/MessagePattern;->addPart(Landroid/icu/text/MessagePattern$Part$Type;III)V
-Landroid/icu/text/MessagePattern;->aposMode:Landroid/icu/text/MessagePattern$ApostropheMode;
-Landroid/icu/text/MessagePattern;->appendReducedApostrophes(Ljava/lang/String;IILjava/lang/StringBuilder;)V
-Landroid/icu/text/MessagePattern;->argTypes:[Landroid/icu/text/MessagePattern$ArgType;
-Landroid/icu/text/MessagePattern;->defaultAposMode:Landroid/icu/text/MessagePattern$ApostropheMode;
-Landroid/icu/text/MessagePattern;->frozen:Z
-Landroid/icu/text/MessagePattern;->hasArgNames:Z
-Landroid/icu/text/MessagePattern;->hasArgNumbers:Z
-Landroid/icu/text/MessagePattern;->inMessageFormatPattern(I)Z
-Landroid/icu/text/MessagePattern;->inTopLevelChoiceMessage(ILandroid/icu/text/MessagePattern$ArgType;)Z
-Landroid/icu/text/MessagePattern;->isArgTypeChar(I)Z
-Landroid/icu/text/MessagePattern;->isChoice(I)Z
-Landroid/icu/text/MessagePattern;->isOrdinal(I)Z
-Landroid/icu/text/MessagePattern;->isPlural(I)Z
-Landroid/icu/text/MessagePattern;->isSelect(I)Z
-Landroid/icu/text/MessagePattern;->jdkAposMode()Z
-Landroid/icu/text/MessagePattern;->MAX_PREFIX_LENGTH:I
-Landroid/icu/text/MessagePattern;->msg:Ljava/lang/String;
-Landroid/icu/text/MessagePattern;->needsAutoQuoting:Z
-Landroid/icu/text/MessagePattern;->numericValues:Ljava/util/ArrayList;
-Landroid/icu/text/MessagePattern;->parseArg(III)I
-Landroid/icu/text/MessagePattern;->parseArgNumber(II)I
-Landroid/icu/text/MessagePattern;->parseArgNumber(Ljava/lang/CharSequence;II)I
-Landroid/icu/text/MessagePattern;->parseChoiceStyle(II)I
-Landroid/icu/text/MessagePattern;->parseDouble(IIZ)V
-Landroid/icu/text/MessagePattern;->parseMessage(IIILandroid/icu/text/MessagePattern$ArgType;)I
-Landroid/icu/text/MessagePattern;->parsePluralOrSelectStyle(Landroid/icu/text/MessagePattern$ArgType;II)I
-Landroid/icu/text/MessagePattern;->parseSimpleStyle(I)I
-Landroid/icu/text/MessagePattern;->parts:Ljava/util/ArrayList;
-Landroid/icu/text/MessagePattern;->postParse()V
-Landroid/icu/text/MessagePattern;->prefix()Ljava/lang/String;
-Landroid/icu/text/MessagePattern;->prefix(I)Ljava/lang/String;
-Landroid/icu/text/MessagePattern;->prefix(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/MessagePattern;->prefix(Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/text/MessagePattern;->preParse(Ljava/lang/String;)V
-Landroid/icu/text/MessagePattern;->skipDouble(I)I
-Landroid/icu/text/MessagePattern;->skipIdentifier(I)I
-Landroid/icu/text/MessagePattern;->skipWhiteSpace(I)I
-Landroid/icu/text/MessagePatternUtil$ArgNode;-><init>()V
-Landroid/icu/text/MessagePatternUtil$ArgNode;->argType:Landroid/icu/text/MessagePattern$ArgType;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->complexStyle:Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->createArgNode()Landroid/icu/text/MessagePatternUtil$ArgNode;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->getArgType()Landroid/icu/text/MessagePattern$ArgType;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->getComplexStyle()Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->getName()Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->getNumber()I
-Landroid/icu/text/MessagePatternUtil$ArgNode;->getSimpleStyle()Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->getTypeName()Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->name:Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->number:I
-Landroid/icu/text/MessagePatternUtil$ArgNode;->style:Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$ArgNode;->typeName:Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;-><init>(Landroid/icu/text/MessagePattern$ArgType;)V
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->addVariant(Landroid/icu/text/MessagePatternUtil$VariantNode;)V
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->argType:Landroid/icu/text/MessagePattern$ArgType;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->explicitOffset:Z
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->freeze()Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->getArgType()Landroid/icu/text/MessagePattern$ArgType;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->getOffset()D
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->getVariants()Ljava/util/List;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->getVariantsByType(Ljava/util/List;Ljava/util/List;)Landroid/icu/text/MessagePatternUtil$VariantNode;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->hasExplicitOffset()Z
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->list:Ljava/util/List;
-Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->offset:D
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->ARG:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->REPLACE_NUMBER:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->TEXT:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->valueOf(Ljava/lang/String;)Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->values()[Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode;-><init>(Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;)V
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode;->createReplaceNumberNode()Landroid/icu/text/MessagePatternUtil$MessageContentsNode;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode;->getType()Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageContentsNode;->type:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;
-Landroid/icu/text/MessagePatternUtil$MessageNode;-><init>()V
-Landroid/icu/text/MessagePatternUtil$MessageNode;->addContentsNode(Landroid/icu/text/MessagePatternUtil$MessageContentsNode;)V
-Landroid/icu/text/MessagePatternUtil$MessageNode;->freeze()Landroid/icu/text/MessagePatternUtil$MessageNode;
-Landroid/icu/text/MessagePatternUtil$MessageNode;->getContents()Ljava/util/List;
-Landroid/icu/text/MessagePatternUtil$MessageNode;->list:Ljava/util/List;
-Landroid/icu/text/MessagePatternUtil$Node;-><init>()V
-Landroid/icu/text/MessagePatternUtil$TextNode;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/MessagePatternUtil$TextNode;->getText()Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$TextNode;->text:Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$VariantNode;-><init>()V
-Landroid/icu/text/MessagePatternUtil$VariantNode;->getMessage()Landroid/icu/text/MessagePatternUtil$MessageNode;
-Landroid/icu/text/MessagePatternUtil$VariantNode;->getSelector()Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil$VariantNode;->getSelectorValue()D
-Landroid/icu/text/MessagePatternUtil$VariantNode;->isSelectorNumeric()Z
-Landroid/icu/text/MessagePatternUtil$VariantNode;->msgNode:Landroid/icu/text/MessagePatternUtil$MessageNode;
-Landroid/icu/text/MessagePatternUtil$VariantNode;->numericValue:D
-Landroid/icu/text/MessagePatternUtil$VariantNode;->selector:Ljava/lang/String;
-Landroid/icu/text/MessagePatternUtil;-><init>()V
-Landroid/icu/text/MessagePatternUtil;->buildArgNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$ArgNode;
-Landroid/icu/text/MessagePatternUtil;->buildChoiceStyleNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
-Landroid/icu/text/MessagePatternUtil;->buildMessageNode(Landroid/icu/text/MessagePattern;)Landroid/icu/text/MessagePatternUtil$MessageNode;
-Landroid/icu/text/MessagePatternUtil;->buildMessageNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$MessageNode;
-Landroid/icu/text/MessagePatternUtil;->buildMessageNode(Ljava/lang/String;)Landroid/icu/text/MessagePatternUtil$MessageNode;
-Landroid/icu/text/MessagePatternUtil;->buildPluralStyleNode(Landroid/icu/text/MessagePattern;IILandroid/icu/text/MessagePattern$ArgType;)Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
-Landroid/icu/text/MessagePatternUtil;->buildSelectStyleNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;
-Landroid/icu/text/NFRule;-><init>(Landroid/icu/text/RuleBasedNumberFormat;Ljava/lang/String;)V
-Landroid/icu/text/NFRule;->allIgnorable(Ljava/lang/String;)Z
-Landroid/icu/text/NFRule;->baseValue:J
-Landroid/icu/text/NFRule;->decimalPoint:C
-Landroid/icu/text/NFRule;->doFormat(DLjava/lang/StringBuilder;II)V
-Landroid/icu/text/NFRule;->doFormat(JLjava/lang/StringBuilder;II)V
-Landroid/icu/text/NFRule;->doParse(Ljava/lang/String;Ljava/text/ParsePosition;ZD)Ljava/lang/Number;
-Landroid/icu/text/NFRule;->expectedExponent()S
-Landroid/icu/text/NFRule;->exponent:S
-Landroid/icu/text/NFRule;->extractSubstitution(Landroid/icu/text/NFRuleSet;Landroid/icu/text/NFRule;)Landroid/icu/text/NFSubstitution;
-Landroid/icu/text/NFRule;->extractSubstitutions(Landroid/icu/text/NFRuleSet;Ljava/lang/String;Landroid/icu/text/NFRule;)V
-Landroid/icu/text/NFRule;->findText(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/PluralFormat;I)[I
-Landroid/icu/text/NFRule;->formatter:Landroid/icu/text/RuleBasedNumberFormat;
-Landroid/icu/text/NFRule;->getBaseValue()J
-Landroid/icu/text/NFRule;->getDecimalPoint()C
-Landroid/icu/text/NFRule;->getDivisor()J
-Landroid/icu/text/NFRule;->IMPROPER_FRACTION_RULE:I
-Landroid/icu/text/NFRule;->indexOfAnyRulePrefix(Ljava/lang/String;)I
-Landroid/icu/text/NFRule;->INFINITY_RULE:I
-Landroid/icu/text/NFRule;->makeRules(Ljava/lang/String;Landroid/icu/text/NFRuleSet;Landroid/icu/text/NFRule;Landroid/icu/text/RuleBasedNumberFormat;Ljava/util/List;)V
-Landroid/icu/text/NFRule;->MASTER_RULE:I
-Landroid/icu/text/NFRule;->matchToDelimiter(Ljava/lang/String;IDLjava/lang/String;Landroid/icu/text/PluralFormat;Ljava/text/ParsePosition;Landroid/icu/text/NFSubstitution;D)Ljava/lang/Number;
-Landroid/icu/text/NFRule;->NAN_RULE:I
-Landroid/icu/text/NFRule;->NEGATIVE_NUMBER_RULE:I
-Landroid/icu/text/NFRule;->parseRuleDescriptor(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/NFRule;->power(JS)J
-Landroid/icu/text/NFRule;->prefixLength(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/NFRule;->PROPER_FRACTION_RULE:I
-Landroid/icu/text/NFRule;->radix:I
-Landroid/icu/text/NFRule;->rulePatternFormat:Landroid/icu/text/PluralFormat;
-Landroid/icu/text/NFRule;->ruleText:Ljava/lang/String;
-Landroid/icu/text/NFRule;->RULE_PREFIXES:[Ljava/lang/String;
-Landroid/icu/text/NFRule;->setBaseValue(J)V
-Landroid/icu/text/NFRule;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/NFRule;->shouldRollBack(J)Z
-Landroid/icu/text/NFRule;->stripPrefix(Ljava/lang/String;Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/String;
-Landroid/icu/text/NFRule;->sub1:Landroid/icu/text/NFSubstitution;
-Landroid/icu/text/NFRule;->sub2:Landroid/icu/text/NFSubstitution;
-Landroid/icu/text/NFRule;->ZERO:Ljava/lang/Long;
-Landroid/icu/text/NFRuleSet;-><init>(Landroid/icu/text/RuleBasedNumberFormat;[Ljava/lang/String;I)V
-Landroid/icu/text/NFRuleSet;->findFractionRuleSetRule(D)Landroid/icu/text/NFRule;
-Landroid/icu/text/NFRuleSet;->findNormalRule(J)Landroid/icu/text/NFRule;
-Landroid/icu/text/NFRuleSet;->findRule(D)Landroid/icu/text/NFRule;
-Landroid/icu/text/NFRuleSet;->format(DLjava/lang/StringBuilder;II)V
-Landroid/icu/text/NFRuleSet;->format(JLjava/lang/StringBuilder;II)V
-Landroid/icu/text/NFRuleSet;->fractionRules:Ljava/util/LinkedList;
-Landroid/icu/text/NFRuleSet;->getName()Ljava/lang/String;
-Landroid/icu/text/NFRuleSet;->IMPROPER_FRACTION_RULE_INDEX:I
-Landroid/icu/text/NFRuleSet;->INFINITY_RULE_INDEX:I
-Landroid/icu/text/NFRuleSet;->isFractionRuleSet:Z
-Landroid/icu/text/NFRuleSet;->isFractionSet()Z
-Landroid/icu/text/NFRuleSet;->isParseable()Z
-Landroid/icu/text/NFRuleSet;->isParseable:Z
-Landroid/icu/text/NFRuleSet;->isPublic()Z
-Landroid/icu/text/NFRuleSet;->lcm(JJ)J
-Landroid/icu/text/NFRuleSet;->makeIntoFractionRuleSet()V
-Landroid/icu/text/NFRuleSet;->MASTER_RULE_INDEX:I
-Landroid/icu/text/NFRuleSet;->name:Ljava/lang/String;
-Landroid/icu/text/NFRuleSet;->NAN_RULE_INDEX:I
-Landroid/icu/text/NFRuleSet;->NEGATIVE_RULE_INDEX:I
-Landroid/icu/text/NFRuleSet;->nonNumericalRules:[Landroid/icu/text/NFRule;
-Landroid/icu/text/NFRuleSet;->owner:Landroid/icu/text/RuleBasedNumberFormat;
-Landroid/icu/text/NFRuleSet;->parse(Ljava/lang/String;Ljava/text/ParsePosition;D)Ljava/lang/Number;
-Landroid/icu/text/NFRuleSet;->parseRules(Ljava/lang/String;)V
-Landroid/icu/text/NFRuleSet;->PROPER_FRACTION_RULE_INDEX:I
-Landroid/icu/text/NFRuleSet;->RECURSION_LIMIT:I
-Landroid/icu/text/NFRuleSet;->rules:[Landroid/icu/text/NFRule;
-Landroid/icu/text/NFRuleSet;->setBestFractionRule(ILandroid/icu/text/NFRule;Z)V
-Landroid/icu/text/NFRuleSet;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/NFRuleSet;->setNonNumericalRule(Landroid/icu/text/NFRule;)V
-Landroid/icu/text/NFSubstitution;-><init>(ILandroid/icu/text/NFRuleSet;Ljava/lang/String;)V
-Landroid/icu/text/NFSubstitution;->calcUpperBound(D)D
-Landroid/icu/text/NFSubstitution;->composeRuleValue(DD)D
-Landroid/icu/text/NFSubstitution;->doParse(Ljava/lang/String;Ljava/text/ParsePosition;DDZ)Ljava/lang/Number;
-Landroid/icu/text/NFSubstitution;->doSubstitution(DLjava/lang/StringBuilder;II)V
-Landroid/icu/text/NFSubstitution;->doSubstitution(JLjava/lang/StringBuilder;II)V
-Landroid/icu/text/NFSubstitution;->getPos()I
-Landroid/icu/text/NFSubstitution;->isModulusSubstitution()Z
-Landroid/icu/text/NFSubstitution;->makeSubstitution(ILandroid/icu/text/NFRule;Landroid/icu/text/NFRule;Landroid/icu/text/NFRuleSet;Landroid/icu/text/RuleBasedNumberFormat;Ljava/lang/String;)Landroid/icu/text/NFSubstitution;
-Landroid/icu/text/NFSubstitution;->MAX_INT64_IN_DOUBLE:J
-Landroid/icu/text/NFSubstitution;->numberFormat:Landroid/icu/text/DecimalFormat;
-Landroid/icu/text/NFSubstitution;->pos:I
-Landroid/icu/text/NFSubstitution;->ruleSet:Landroid/icu/text/NFRuleSet;
-Landroid/icu/text/NFSubstitution;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/NFSubstitution;->setDivisor(IS)V
-Landroid/icu/text/NFSubstitution;->tokenChar()C
-Landroid/icu/text/NFSubstitution;->transformNumber(D)D
-Landroid/icu/text/NFSubstitution;->transformNumber(J)J
-Landroid/icu/text/Normalizer$CharsAppendable;-><init>([CII)V
-Landroid/icu/text/Normalizer$CharsAppendable;->chars:[C
-Landroid/icu/text/Normalizer$CharsAppendable;->length()I
-Landroid/icu/text/Normalizer$CharsAppendable;->limit:I
-Landroid/icu/text/Normalizer$CharsAppendable;->offset:I
-Landroid/icu/text/Normalizer$CharsAppendable;->start:I
-Landroid/icu/text/Normalizer$CmpEquivLevel;-><init>()V
-Landroid/icu/text/Normalizer$CmpEquivLevel;->cs:Ljava/lang/CharSequence;
-Landroid/icu/text/Normalizer$CmpEquivLevel;->s:I
-Landroid/icu/text/Normalizer$FCD32ModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$FCD32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$FCDMode;-><init>()V
-Landroid/icu/text/Normalizer$FCDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$FCDModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$FCDModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$Mode;-><init>()V
-Landroid/icu/text/Normalizer$Mode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$ModeImpl;-><init>(Landroid/icu/text/Normalizer2;)V
-Landroid/icu/text/Normalizer$ModeImpl;->normalizer2:Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFC32ModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFC32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFCMode;-><init>()V
-Landroid/icu/text/Normalizer$NFCMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFCModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFCModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFD32ModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFD32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFDMode;-><init>()V
-Landroid/icu/text/Normalizer$NFDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFDModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFDModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFKC32ModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFKC32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFKCMode;-><init>()V
-Landroid/icu/text/Normalizer$NFKCMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFKCModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFKCModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFKD32ModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFKD32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NFKDMode;-><init>()V
-Landroid/icu/text/Normalizer$NFKDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$NFKDModeImpl;-><init>()V
-Landroid/icu/text/Normalizer$NFKDModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl;
-Landroid/icu/text/Normalizer$NONEMode;-><init>()V
-Landroid/icu/text/Normalizer$NONEMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer$QuickCheckResult;-><init>(I)V
-Landroid/icu/text/Normalizer$Unicode32;-><init>()V
-Landroid/icu/text/Normalizer$Unicode32;->INSTANCE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/Normalizer2;-><init>()V
-Landroid/icu/text/Normalizer;-><init>(Landroid/icu/text/UCharacterIterator;Landroid/icu/text/Normalizer$Mode;I)V
-Landroid/icu/text/Normalizer;-><init>(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)V
-Landroid/icu/text/Normalizer;-><init>(Ljava/text/CharacterIterator;Landroid/icu/text/Normalizer$Mode;I)V
-Landroid/icu/text/Normalizer;->buffer:Ljava/lang/StringBuilder;
-Landroid/icu/text/Normalizer;->bufferPos:I
-Landroid/icu/text/Normalizer;->clearBuffer()V
-Landroid/icu/text/Normalizer;->cmpEquivFold(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)I
-Landroid/icu/text/Normalizer;->COMPARE_EQUIV:I
-Landroid/icu/text/Normalizer;->COMPARE_NORM_OPTIONS_SHIFT:I
-Landroid/icu/text/Normalizer;->compose(Ljava/lang/String;Z)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->compose(Ljava/lang/String;ZI)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->compose([CII[CIIZI)I
-Landroid/icu/text/Normalizer;->compose([C[CZI)I
-Landroid/icu/text/Normalizer;->COMPOSE:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->COMPOSE_COMPAT:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->concatenate(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->concatenate([CII[CII[CIILandroid/icu/text/Normalizer$Mode;I)I
-Landroid/icu/text/Normalizer;->concatenate([C[CLandroid/icu/text/Normalizer$Mode;I)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->createCmpEquivLevelStack()[Landroid/icu/text/Normalizer$CmpEquivLevel;
-Landroid/icu/text/Normalizer;->current()I
-Landroid/icu/text/Normalizer;->currentIndex:I
-Landroid/icu/text/Normalizer;->DECOMP:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->decompose(Ljava/lang/String;Z)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->decompose(Ljava/lang/String;ZI)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->decompose([CII[CIIZI)I
-Landroid/icu/text/Normalizer;->decompose([C[CZI)I
-Landroid/icu/text/Normalizer;->DECOMP_COMPAT:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->DEFAULT:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->DONE:I
-Landroid/icu/text/Normalizer;->endIndex()I
-Landroid/icu/text/Normalizer;->FCD:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->first()I
-Landroid/icu/text/Normalizer;->getBeginIndex()I
-Landroid/icu/text/Normalizer;->getComposeNormalizer2(ZI)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer;->getDecomposeNormalizer2(ZI)Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer;->getEndIndex()I
-Landroid/icu/text/Normalizer;->getFC_NFKC_Closure(I)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->getFC_NFKC_Closure(I[C)I
-Landroid/icu/text/Normalizer;->getIndex()I
-Landroid/icu/text/Normalizer;->getLength()I
-Landroid/icu/text/Normalizer;->getMode()Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->getOption(I)I
-Landroid/icu/text/Normalizer;->getText()Ljava/lang/String;
-Landroid/icu/text/Normalizer;->getText([C)I
-Landroid/icu/text/Normalizer;->IGNORE_HANGUL:I
-Landroid/icu/text/Normalizer;->internalCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)I
-Landroid/icu/text/Normalizer;->isNormalized(ILandroid/icu/text/Normalizer$Mode;I)Z
-Landroid/icu/text/Normalizer;->isNormalized(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Z
-Landroid/icu/text/Normalizer;->isNormalized([CIILandroid/icu/text/Normalizer$Mode;I)Z
-Landroid/icu/text/Normalizer;->last()I
-Landroid/icu/text/Normalizer;->mode:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->next()I
-Landroid/icu/text/Normalizer;->nextIndex:I
-Landroid/icu/text/Normalizer;->nextNormalize()Z
-Landroid/icu/text/Normalizer;->NFC:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->NFD:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->NFKC:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->NFKD:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->NONE:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->norm2:Landroid/icu/text/Normalizer2;
-Landroid/icu/text/Normalizer;->normalize(ILandroid/icu/text/Normalizer$Mode;)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->normalize(ILandroid/icu/text/Normalizer$Mode;I)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->normalize(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->normalize(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Ljava/lang/String;
-Landroid/icu/text/Normalizer;->normalize([CII[CIILandroid/icu/text/Normalizer$Mode;I)I
-Landroid/icu/text/Normalizer;->normalize([C[CLandroid/icu/text/Normalizer$Mode;I)I
-Landroid/icu/text/Normalizer;->NO_OP:Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer;->options:I
-Landroid/icu/text/Normalizer;->previous()I
-Landroid/icu/text/Normalizer;->previousNormalize()Z
-Landroid/icu/text/Normalizer;->quickCheck(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;)Landroid/icu/text/Normalizer$QuickCheckResult;
-Landroid/icu/text/Normalizer;->quickCheck(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Landroid/icu/text/Normalizer$QuickCheckResult;
-Landroid/icu/text/Normalizer;->quickCheck([CIILandroid/icu/text/Normalizer$Mode;I)Landroid/icu/text/Normalizer$QuickCheckResult;
-Landroid/icu/text/Normalizer;->quickCheck([CLandroid/icu/text/Normalizer$Mode;I)Landroid/icu/text/Normalizer$QuickCheckResult;
-Landroid/icu/text/Normalizer;->reset()V
-Landroid/icu/text/Normalizer;->setIndex(I)I
-Landroid/icu/text/Normalizer;->setIndexOnly(I)V
-Landroid/icu/text/Normalizer;->setMode(Landroid/icu/text/Normalizer$Mode;)V
-Landroid/icu/text/Normalizer;->setOption(IZ)V
-Landroid/icu/text/Normalizer;->setText(Landroid/icu/text/UCharacterIterator;)V
-Landroid/icu/text/Normalizer;->setText(Ljava/lang/String;)V
-Landroid/icu/text/Normalizer;->setText(Ljava/lang/StringBuffer;)V
-Landroid/icu/text/Normalizer;->setText(Ljava/text/CharacterIterator;)V
-Landroid/icu/text/Normalizer;->setText([C)V
-Landroid/icu/text/Normalizer;->startIndex()I
-Landroid/icu/text/Normalizer;->text:Landroid/icu/text/UCharacterIterator;
-Landroid/icu/text/Normalizer;->UNICODE_3_2:I
-Landroid/icu/text/NumberFormat$NumberFormatFactory;-><init>()V
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->createFormat(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat;
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->createFormat(Ljava/util/Locale;I)Landroid/icu/text/NumberFormat;
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_CURRENCY:I
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_INTEGER:I
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_NUMBER:I
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_PERCENT:I
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_SCIENTIFIC:I
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->getSupportedLocaleNames()Ljava/util/Set;
-Landroid/icu/text/NumberFormat$NumberFormatFactory;->visible()Z
-Landroid/icu/text/NumberFormat$NumberFormatShim;-><init>()V
-Landroid/icu/text/NumberFormat$NumberFormatShim;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat;
-Landroid/icu/text/NumberFormat$NumberFormatShim;->getAvailableLocales()[Ljava/util/Locale;
-Landroid/icu/text/NumberFormat$NumberFormatShim;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/NumberFormat$NumberFormatShim;->registerFactory(Landroid/icu/text/NumberFormat$NumberFormatFactory;)Ljava/lang/Object;
-Landroid/icu/text/NumberFormat$NumberFormatShim;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Landroid/icu/util/ULocale;Z)V
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Ljava/util/Locale;)V
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Ljava/util/Locale;Z)V
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;->getSupportedLocaleNames()Ljava/util/Set;
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;->localeNames:Ljava/util/Set;
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;->visible()Z
-Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;->visible:Z
-Landroid/icu/text/NumberFormat;->capitalizationSetting:Landroid/icu/text/DisplayContext;
-Landroid/icu/text/NumberFormat;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat;
-Landroid/icu/text/NumberFormat;->currency:Landroid/icu/util/Currency;
-Landroid/icu/text/NumberFormat;->currentSerialVersion:I
-Landroid/icu/text/NumberFormat;->doubleCurrencySign:[C
-Landroid/icu/text/NumberFormat;->doubleCurrencyStr:Ljava/lang/String;
-Landroid/icu/text/NumberFormat;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/NumberFormat;->getEffectiveCurrency()Landroid/icu/util/Currency;
-Landroid/icu/text/NumberFormat;->getPattern(Ljava/util/Locale;I)Ljava/lang/String;
-Landroid/icu/text/NumberFormat;->getPatternForStyle(Landroid/icu/util/ULocale;I)Ljava/lang/String;
-Landroid/icu/text/NumberFormat;->getPatternForStyleAndNumberingSystem(Landroid/icu/util/ULocale;Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/text/NumberFormat;->getShim()Landroid/icu/text/NumberFormat$NumberFormatShim;
-Landroid/icu/text/NumberFormat;->groupingUsed:Z
-Landroid/icu/text/NumberFormat;->maxFractionDigits:B
-Landroid/icu/text/NumberFormat;->maximumFractionDigits:I
-Landroid/icu/text/NumberFormat;->maximumIntegerDigits:I
-Landroid/icu/text/NumberFormat;->maxIntegerDigits:B
-Landroid/icu/text/NumberFormat;->minFractionDigits:B
-Landroid/icu/text/NumberFormat;->minimumFractionDigits:I
-Landroid/icu/text/NumberFormat;->minimumIntegerDigits:I
-Landroid/icu/text/NumberFormat;->minIntegerDigits:B
-Landroid/icu/text/NumberFormat;->parseIntegerOnly:Z
-Landroid/icu/text/NumberFormat;->parseStrict:Z
-Landroid/icu/text/NumberFormat;->registerFactory(Landroid/icu/text/NumberFormat$NumberFormatFactory;)Ljava/lang/Object;
-Landroid/icu/text/NumberFormat;->serialVersionOnStream:I
-Landroid/icu/text/NumberFormat;->shim:Landroid/icu/text/NumberFormat$NumberFormatShim;
-Landroid/icu/text/NumberFormat;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/text/NumberingSystem$LocaleLookupData;-><init>(Landroid/icu/util/ULocale;Ljava/lang/String;)V
-Landroid/icu/text/NumberingSystem$LocaleLookupData;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/NumberingSystem$LocaleLookupData;->numbersKeyword:Ljava/lang/String;
-Landroid/icu/text/NumberingSystem;->algorithmic:Z
-Landroid/icu/text/NumberingSystem;->cachedLocaleData:Landroid/icu/impl/CacheBase;
-Landroid/icu/text/NumberingSystem;->cachedStringData:Landroid/icu/impl/CacheBase;
-Landroid/icu/text/NumberingSystem;->desc:Ljava/lang/String;
-Landroid/icu/text/NumberingSystem;->getInstance(Ljava/lang/String;IZLjava/lang/String;)Landroid/icu/text/NumberingSystem;
-Landroid/icu/text/NumberingSystem;->LATIN:Landroid/icu/text/NumberingSystem;
-Landroid/icu/text/NumberingSystem;->lookupInstanceByLocale(Landroid/icu/text/NumberingSystem$LocaleLookupData;)Landroid/icu/text/NumberingSystem;
-Landroid/icu/text/NumberingSystem;->lookupInstanceByName(Ljava/lang/String;)Landroid/icu/text/NumberingSystem;
-Landroid/icu/text/NumberingSystem;->name:Ljava/lang/String;
-Landroid/icu/text/NumberingSystem;->OTHER_NS_KEYWORDS:[Ljava/lang/String;
-Landroid/icu/text/NumberingSystem;->radix:I
-Landroid/icu/text/PluralFormat$PluralSelector;->select(Ljava/lang/Object;D)Ljava/lang/String;
-Landroid/icu/text/PluralFormat$PluralSelectorAdapter;->select(Ljava/lang/Object;D)Ljava/lang/String;
-Landroid/icu/text/PluralFormat;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;Ljava/lang/String;Landroid/icu/text/NumberFormat;)V
-Landroid/icu/text/PluralFormat;->findSubMessage(Landroid/icu/text/MessagePattern;ILandroid/icu/text/PluralFormat$PluralSelector;Ljava/lang/Object;D)I
-Landroid/icu/text/PluralFormat;->format(Ljava/lang/Number;D)Ljava/lang/String;
-Landroid/icu/text/PluralFormat;->init(Landroid/icu/text/PluralRules;Landroid/icu/text/PluralRules$PluralType;Landroid/icu/util/ULocale;Landroid/icu/text/NumberFormat;)V
-Landroid/icu/text/PluralFormat;->msgPattern:Landroid/icu/text/MessagePattern;
-Landroid/icu/text/PluralFormat;->numberFormat:Landroid/icu/text/NumberFormat;
-Landroid/icu/text/PluralFormat;->offset:D
-Landroid/icu/text/PluralFormat;->parsedValues:Ljava/util/Map;
-Landroid/icu/text/PluralFormat;->parseType(Ljava/lang/String;Landroid/icu/text/RbnfLenientScanner;Ljava/text/FieldPosition;)Ljava/lang/String;
-Landroid/icu/text/PluralFormat;->pattern:Ljava/lang/String;
-Landroid/icu/text/PluralFormat;->pluralRules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/PluralFormat;->pluralRulesWrapper:Landroid/icu/text/PluralFormat$PluralSelectorAdapter;
-Landroid/icu/text/PluralFormat;->resetPattern()V
-Landroid/icu/text/PluralFormat;->setLocale(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/PluralFormat;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/PluralRanges$Matrix;-><init>()V
-Landroid/icu/text/PluralRanges$Matrix;->compareTo(Landroid/icu/text/PluralRanges$Matrix;)I
-Landroid/icu/text/PluralRanges$Matrix;->data:[B
-Landroid/icu/text/PluralRanges$Matrix;->endSame(Landroid/icu/impl/StandardPlural;)Landroid/icu/impl/StandardPlural;
-Landroid/icu/text/PluralRanges$Matrix;->get(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)Landroid/icu/impl/StandardPlural;
-Landroid/icu/text/PluralRanges$Matrix;->set(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V
-Landroid/icu/text/PluralRanges$Matrix;->setIfNew(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V
-Landroid/icu/text/PluralRanges$Matrix;->startSame(Landroid/icu/impl/StandardPlural;Ljava/util/EnumSet;Landroid/icu/util/Output;)Landroid/icu/impl/StandardPlural;
-Landroid/icu/text/PluralRanges;-><init>()V
-Landroid/icu/text/PluralRanges;->add(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V
-Landroid/icu/text/PluralRanges;->compareTo(Landroid/icu/text/PluralRanges;)I
-Landroid/icu/text/PluralRanges;->explicit:[Z
-Landroid/icu/text/PluralRanges;->get(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)Landroid/icu/impl/StandardPlural;
-Landroid/icu/text/PluralRanges;->isExplicit(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)Z
-Landroid/icu/text/PluralRanges;->isExplicitlySet(Landroid/icu/impl/StandardPlural;)Z
-Landroid/icu/text/PluralRanges;->isFrozen:Z
-Landroid/icu/text/PluralRanges;->matrix:Landroid/icu/text/PluralRanges$Matrix;
-Landroid/icu/text/PluralRules$AndConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V
-Landroid/icu/text/PluralRules$AndConstraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
-Landroid/icu/text/PluralRules$AndConstraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$BinaryConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V
-Landroid/icu/text/PluralRules$BinaryConstraint;->a:Landroid/icu/text/PluralRules$Constraint;
-Landroid/icu/text/PluralRules$BinaryConstraint;->b:Landroid/icu/text/PluralRules$Constraint;
-Landroid/icu/text/PluralRules$Constraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
-Landroid/icu/text/PluralRules$Constraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$Factory;-><init>()V
-Landroid/icu/text/PluralRules$Factory;->forLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/PluralRules;
-Landroid/icu/text/PluralRules$Factory;->forLocale(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;)Landroid/icu/text/PluralRules;
-Landroid/icu/text/PluralRules$Factory;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/PluralRules$Factory;->getDefaultFactory()Landroid/icu/impl/PluralRulesLoader;
-Landroid/icu/text/PluralRules$Factory;->getFunctionalEquivalent(Landroid/icu/util/ULocale;[Z)Landroid/icu/util/ULocale;
-Landroid/icu/text/PluralRules$Factory;->hasOverride(Landroid/icu/util/ULocale;)Z
-Landroid/icu/text/PluralRules$FixedDecimal;-><init>(D)V
-Landroid/icu/text/PluralRules$FixedDecimal;-><init>(DI)V
-Landroid/icu/text/PluralRules$FixedDecimal;-><init>(DIJ)V
-Landroid/icu/text/PluralRules$FixedDecimal;-><init>(J)V
-Landroid/icu/text/PluralRules$FixedDecimal;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/PluralRules$FixedDecimal;->baseFactor:I
-Landroid/icu/text/PluralRules$FixedDecimal;->compareTo(Landroid/icu/text/PluralRules$FixedDecimal;)I
-Landroid/icu/text/PluralRules$FixedDecimal;->decimalDigits:J
-Landroid/icu/text/PluralRules$FixedDecimal;->decimalDigitsWithoutTrailingZeros:J
-Landroid/icu/text/PluralRules$FixedDecimal;->decimals(D)I
-Landroid/icu/text/PluralRules$FixedDecimal;->getBaseFactor()I
-Landroid/icu/text/PluralRules$FixedDecimal;->getDecimalDigits()J
-Landroid/icu/text/PluralRules$FixedDecimal;->getDecimalDigitsWithoutTrailingZeros()J
-Landroid/icu/text/PluralRules$FixedDecimal;->getFractionalDigits(DI)I
-Landroid/icu/text/PluralRules$FixedDecimal;->getIntegerValue()J
-Landroid/icu/text/PluralRules$FixedDecimal;->getOperand(Ljava/lang/String;)Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$FixedDecimal;->getPluralOperand(Landroid/icu/text/PluralRules$Operand;)D
-Landroid/icu/text/PluralRules$FixedDecimal;->getShiftedValue()J
-Landroid/icu/text/PluralRules$FixedDecimal;->getSource()D
-Landroid/icu/text/PluralRules$FixedDecimal;->getVisibleDecimalDigitCount()I
-Landroid/icu/text/PluralRules$FixedDecimal;->getVisibleDecimalDigitCountWithoutTrailingZeros()I
-Landroid/icu/text/PluralRules$FixedDecimal;->getVisibleFractionCount(Ljava/lang/String;)I
-Landroid/icu/text/PluralRules$FixedDecimal;->hasIntegerValue()Z
-Landroid/icu/text/PluralRules$FixedDecimal;->hasIntegerValue:Z
-Landroid/icu/text/PluralRules$FixedDecimal;->integerValue:J
-Landroid/icu/text/PluralRules$FixedDecimal;->isHasIntegerValue()Z
-Landroid/icu/text/PluralRules$FixedDecimal;->isInfinite()Z
-Landroid/icu/text/PluralRules$FixedDecimal;->isNaN()Z
-Landroid/icu/text/PluralRules$FixedDecimal;->isNegative()Z
-Landroid/icu/text/PluralRules$FixedDecimal;->isNegative:Z
-Landroid/icu/text/PluralRules$FixedDecimal;->MAX:J
-Landroid/icu/text/PluralRules$FixedDecimal;->MAX_INTEGER_PART:J
-Landroid/icu/text/PluralRules$FixedDecimal;->source:D
-Landroid/icu/text/PluralRules$FixedDecimal;->visibleDecimalDigitCount:I
-Landroid/icu/text/PluralRules$FixedDecimal;->visibleDecimalDigitCountWithoutTrailingZeros:I
-Landroid/icu/text/PluralRules$FixedDecimalRange;-><init>(Landroid/icu/text/PluralRules$FixedDecimal;Landroid/icu/text/PluralRules$FixedDecimal;)V
-Landroid/icu/text/PluralRules$FixedDecimalRange;->end:Landroid/icu/text/PluralRules$FixedDecimal;
-Landroid/icu/text/PluralRules$FixedDecimalRange;->start:Landroid/icu/text/PluralRules$FixedDecimal;
-Landroid/icu/text/PluralRules$FixedDecimalSamples;-><init>(Landroid/icu/text/PluralRules$SampleType;Ljava/util/Set;Z)V
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->addSamples(Ljava/util/Set;)Ljava/util/Set;
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->bounded:Z
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->checkDecimal(Landroid/icu/text/PluralRules$SampleType;Landroid/icu/text/PluralRules$FixedDecimal;)V
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->getSamples()Ljava/util/Set;
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->getStartEndSamples(Ljava/util/Set;)V
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->parse(Ljava/lang/String;)Landroid/icu/text/PluralRules$FixedDecimalSamples;
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->samples:Ljava/util/Set;
-Landroid/icu/text/PluralRules$FixedDecimalSamples;->sampleType:Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$IFixedDecimal;->getPluralOperand(Landroid/icu/text/PluralRules$Operand;)D
-Landroid/icu/text/PluralRules$IFixedDecimal;->isInfinite()Z
-Landroid/icu/text/PluralRules$IFixedDecimal;->isNaN()Z
-Landroid/icu/text/PluralRules$KeywordStatus;->BOUNDED:Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$KeywordStatus;->INVALID:Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$KeywordStatus;->SUPPRESSED:Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$KeywordStatus;->UNBOUNDED:Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$KeywordStatus;->UNIQUE:Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$KeywordStatus;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$KeywordStatus;->values()[Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules$Operand;->f:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->i:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->j:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->n:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->t:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->v:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->values()[Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$Operand;->w:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$OrConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V
-Landroid/icu/text/PluralRules$OrConstraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
-Landroid/icu/text/PluralRules$OrConstraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$RangeConstraint;-><init>(IZLandroid/icu/text/PluralRules$Operand;ZDD[J)V
-Landroid/icu/text/PluralRules$RangeConstraint;->inRange:Z
-Landroid/icu/text/PluralRules$RangeConstraint;->integersOnly:Z
-Landroid/icu/text/PluralRules$RangeConstraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
-Landroid/icu/text/PluralRules$RangeConstraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$RangeConstraint;->lowerBound:D
-Landroid/icu/text/PluralRules$RangeConstraint;->mod:I
-Landroid/icu/text/PluralRules$RangeConstraint;->operand:Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$RangeConstraint;->range_list:[J
-Landroid/icu/text/PluralRules$RangeConstraint;->upperBound:D
-Landroid/icu/text/PluralRules$Rule;-><init>(Ljava/lang/String;Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$FixedDecimalSamples;Landroid/icu/text/PluralRules$FixedDecimalSamples;)V
-Landroid/icu/text/PluralRules$Rule;->and(Landroid/icu/text/PluralRules$Constraint;)Landroid/icu/text/PluralRules$Rule;
-Landroid/icu/text/PluralRules$Rule;->appliesTo(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
-Landroid/icu/text/PluralRules$Rule;->constraint:Landroid/icu/text/PluralRules$Constraint;
-Landroid/icu/text/PluralRules$Rule;->decimalSamples:Landroid/icu/text/PluralRules$FixedDecimalSamples;
-Landroid/icu/text/PluralRules$Rule;->getConstraint()Ljava/lang/String;
-Landroid/icu/text/PluralRules$Rule;->getKeyword()Ljava/lang/String;
-Landroid/icu/text/PluralRules$Rule;->integerSamples:Landroid/icu/text/PluralRules$FixedDecimalSamples;
-Landroid/icu/text/PluralRules$Rule;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$Rule;->keyword:Ljava/lang/String;
-Landroid/icu/text/PluralRules$Rule;->or(Landroid/icu/text/PluralRules$Constraint;)Landroid/icu/text/PluralRules$Rule;
-Landroid/icu/text/PluralRules$RuleList;-><init>()V
-Landroid/icu/text/PluralRules$RuleList;->addRule(Landroid/icu/text/PluralRules$Rule;)Landroid/icu/text/PluralRules$RuleList;
-Landroid/icu/text/PluralRules$RuleList;->computeLimited(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$RuleList;->finish()Landroid/icu/text/PluralRules$RuleList;
-Landroid/icu/text/PluralRules$RuleList;->getDecimalSamples(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Landroid/icu/text/PluralRules$FixedDecimalSamples;
-Landroid/icu/text/PluralRules$RuleList;->getKeywords()Ljava/util/Set;
-Landroid/icu/text/PluralRules$RuleList;->getRules(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/PluralRules$RuleList;->hasExplicitBoundingInfo:Z
-Landroid/icu/text/PluralRules$RuleList;->isLimited(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules$RuleList;->rules:Ljava/util/List;
-Landroid/icu/text/PluralRules$RuleList;->select(Landroid/icu/text/PluralRules$IFixedDecimal;)Ljava/lang/String;
-Landroid/icu/text/PluralRules$RuleList;->select(Landroid/icu/text/PluralRules$IFixedDecimal;Ljava/lang/String;)Z
-Landroid/icu/text/PluralRules$RuleList;->selectRule(Landroid/icu/text/PluralRules$IFixedDecimal;)Landroid/icu/text/PluralRules$Rule;
-Landroid/icu/text/PluralRules$SampleType;->DECIMAL:Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$SampleType;->INTEGER:Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$SampleType;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$SampleType;->values()[Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$SimpleTokenizer;-><init>()V
-Landroid/icu/text/PluralRules$SimpleTokenizer;->BREAK_AND_IGNORE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/PluralRules$SimpleTokenizer;->BREAK_AND_KEEP:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/PluralRules$SimpleTokenizer;->split(Ljava/lang/String;)[Ljava/lang/String;
-Landroid/icu/text/PluralRules;-><init>(Landroid/icu/text/PluralRules$RuleList;)V
-Landroid/icu/text/PluralRules;->addConditional(Ljava/util/Set;Ljava/util/Set;D)Z
-Landroid/icu/text/PluralRules;->addRange(Ljava/lang/StringBuilder;DDZ)V
-Landroid/icu/text/PluralRules;->addSample(Ljava/lang/String;Ljava/lang/Number;ILjava/util/Set;)Z
-Landroid/icu/text/PluralRules;->ALLOWED_ID:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/PluralRules;->AND_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->AT_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->CATEGORY_SEPARATOR:Ljava/lang/String;
-Landroid/icu/text/PluralRules;->COMMA_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->compareTo(Landroid/icu/text/PluralRules;)I
-Landroid/icu/text/PluralRules;->computeLimited(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules;->DEFAULT_RULE:Landroid/icu/text/PluralRules$Rule;
-Landroid/icu/text/PluralRules;->DOTDOT_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->format(D)Ljava/lang/String;
-Landroid/icu/text/PluralRules;->getAllKeywordValues(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Ljava/util/Collection;
-Landroid/icu/text/PluralRules;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/PluralRules;->getDecimalSamples(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Landroid/icu/text/PluralRules$FixedDecimalSamples;
-Landroid/icu/text/PluralRules;->getFunctionalEquivalent(Landroid/icu/util/ULocale;[Z)Landroid/icu/util/ULocale;
-Landroid/icu/text/PluralRules;->getKeywordStatus(Ljava/lang/String;ILjava/util/Set;Landroid/icu/util/Output;)Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules;->getKeywordStatus(Ljava/lang/String;ILjava/util/Set;Landroid/icu/util/Output;Landroid/icu/text/PluralRules$SampleType;)Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralRules;->getRules(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/PluralRules;->getSamples(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Ljava/util/Collection;
-Landroid/icu/text/PluralRules;->isLimited(Ljava/lang/String;)Ljava/lang/Boolean;
-Landroid/icu/text/PluralRules;->isLimited(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Z
-Landroid/icu/text/PluralRules;->isValidKeyword(Ljava/lang/String;)Z
-Landroid/icu/text/PluralRules;->keywords:Ljava/util/Set;
-Landroid/icu/text/PluralRules;->KEYWORD_RULE_SEPARATOR:Ljava/lang/String;
-Landroid/icu/text/PluralRules;->matches(Landroid/icu/text/PluralRules$FixedDecimal;Ljava/lang/String;)Z
-Landroid/icu/text/PluralRules;->nextToken([Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/PluralRules;->NO_CONSTRAINT:Landroid/icu/text/PluralRules$Constraint;
-Landroid/icu/text/PluralRules;->OR_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->parseConstraint(Ljava/lang/String;)Landroid/icu/text/PluralRules$Constraint;
-Landroid/icu/text/PluralRules;->parseRule(Ljava/lang/String;)Landroid/icu/text/PluralRules$Rule;
-Landroid/icu/text/PluralRules;->parseRuleChain(Ljava/lang/String;)Landroid/icu/text/PluralRules$RuleList;
-Landroid/icu/text/PluralRules;->rules:Landroid/icu/text/PluralRules$RuleList;
-Landroid/icu/text/PluralRules;->select(DIJ)Ljava/lang/String;
-Landroid/icu/text/PluralRules;->select(Landroid/icu/text/PluralRules$IFixedDecimal;)Ljava/lang/String;
-Landroid/icu/text/PluralRules;->SEMI_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->TILDE_SEPARATED:Ljava/util/regex/Pattern;
-Landroid/icu/text/PluralRules;->unexpected(Ljava/lang/String;Ljava/lang/String;)Ljava/text/ParseException;
-Landroid/icu/text/PluralSamples;-><init>(Landroid/icu/text/PluralRules;)V
-Landroid/icu/text/PluralSamples;->addIfNotPresent(DLjava/util/Set;Ljava/util/Map;)Z
-Landroid/icu/text/PluralSamples;->addRelation(Ljava/util/Map;Ljava/lang/String;Landroid/icu/text/PluralRules$FixedDecimal;)V
-Landroid/icu/text/PluralSamples;->addSimpleSamples(Landroid/icu/text/PluralRules;ILjava/util/Map;ID)I
-Landroid/icu/text/PluralSamples;->fractions(Ljava/util/Set;)Ljava/util/Set;
-Landroid/icu/text/PluralSamples;->getAllKeywordValues(Ljava/lang/String;)Ljava/util/Collection;
-Landroid/icu/text/PluralSamples;->getDifferentCategory(Ljava/util/List;Ljava/lang/String;)Ljava/lang/Integer;
-Landroid/icu/text/PluralSamples;->getFractionSamples()Ljava/util/Set;
-Landroid/icu/text/PluralSamples;->getKeyFractionSamplesMap()Ljava/util/Map;
-Landroid/icu/text/PluralSamples;->getKeySamplesMap()Ljava/util/Map;
-Landroid/icu/text/PluralSamples;->getStatus(Ljava/lang/String;ILjava/util/Set;Landroid/icu/util/Output;)Landroid/icu/text/PluralRules$KeywordStatus;
-Landroid/icu/text/PluralSamples;->LIMIT_FRACTION_SAMPLES:I
-Landroid/icu/text/PluralSamples;->pluralRules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/PluralSamples;->TENS:[I
-Landroid/icu/text/PluralSamples;->_fractionSamples:Ljava/util/Set;
-Landroid/icu/text/PluralSamples;->_keyFractionSamplesMap:Ljava/util/Map;
-Landroid/icu/text/PluralSamples;->_keyLimitedMap:Ljava/util/Map;
-Landroid/icu/text/PluralSamples;->_keySamplesMap:Ljava/util/Map;
-Landroid/icu/text/RawCollationKey;-><init>()V
-Landroid/icu/text/RawCollationKey;-><init>(I)V
-Landroid/icu/text/RawCollationKey;-><init>([B)V
-Landroid/icu/text/RawCollationKey;-><init>([BI)V
-Landroid/icu/text/RawCollationKey;->compareTo(Landroid/icu/text/RawCollationKey;)I
-Landroid/icu/text/RBBIDataWrapper$IsAcceptable;-><init>()V
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;-><init>()V
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fCatCount:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fFormatVersion:[B
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fFTable:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fFTableLen:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fLength:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fMagic:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fRTable:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fRTableLen:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fRuleSource:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fRuleSourceLen:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fSFTable:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fSFTableLen:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fSRTable:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fSRTableLen:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fStatusTable:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fStatusTableLen:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fTrie:I
-Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fTrieLen:I
-Landroid/icu/text/RBBIDataWrapper;-><init>()V
-Landroid/icu/text/RBBIDataWrapper;->ACCEPTING:I
-Landroid/icu/text/RBBIDataWrapper;->DATA_FORMAT:I
-Landroid/icu/text/RBBIDataWrapper;->DH_CATCOUNT:I
-Landroid/icu/text/RBBIDataWrapper;->DH_FORMATVERSION:I
-Landroid/icu/text/RBBIDataWrapper;->DH_FTABLE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_FTABLELEN:I
-Landroid/icu/text/RBBIDataWrapper;->DH_LENGTH:I
-Landroid/icu/text/RBBIDataWrapper;->DH_MAGIC:I
-Landroid/icu/text/RBBIDataWrapper;->DH_RTABLE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_RTABLELEN:I
-Landroid/icu/text/RBBIDataWrapper;->DH_RULESOURCE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_RULESOURCELEN:I
-Landroid/icu/text/RBBIDataWrapper;->DH_SFTABLE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_SFTABLELEN:I
-Landroid/icu/text/RBBIDataWrapper;->DH_SIZE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_SRTABLE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_SRTABLELEN:I
-Landroid/icu/text/RBBIDataWrapper;->DH_STATUSTABLE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_STATUSTABLELEN:I
-Landroid/icu/text/RBBIDataWrapper;->DH_TRIE:I
-Landroid/icu/text/RBBIDataWrapper;->DH_TRIELEN:I
-Landroid/icu/text/RBBIDataWrapper;->dump(Ljava/io/PrintStream;)V
-Landroid/icu/text/RBBIDataWrapper;->dumpCharCategories(Ljava/io/PrintStream;)V
-Landroid/icu/text/RBBIDataWrapper;->dumpRow(Ljava/io/PrintStream;[SI)V
-Landroid/icu/text/RBBIDataWrapper;->dumpTable(Ljava/io/PrintStream;[S)V
-Landroid/icu/text/RBBIDataWrapper;->fFTable:[S
-Landroid/icu/text/RBBIDataWrapper;->fHeader:Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;
-Landroid/icu/text/RBBIDataWrapper;->FLAGS:I
-Landroid/icu/text/RBBIDataWrapper;->FORMAT_VERSION:I
-Landroid/icu/text/RBBIDataWrapper;->fRTable:[S
-Landroid/icu/text/RBBIDataWrapper;->fRuleSource:Ljava/lang/String;
-Landroid/icu/text/RBBIDataWrapper;->fSFTable:[S
-Landroid/icu/text/RBBIDataWrapper;->fSRTable:[S
-Landroid/icu/text/RBBIDataWrapper;->fStatusTable:[I
-Landroid/icu/text/RBBIDataWrapper;->fTrie:Landroid/icu/impl/Trie2;
-Landroid/icu/text/RBBIDataWrapper;->get(Ljava/nio/ByteBuffer;)Landroid/icu/text/RBBIDataWrapper;
-Landroid/icu/text/RBBIDataWrapper;->getRowIndex(I)I
-Landroid/icu/text/RBBIDataWrapper;->getStateTableFlags([S)I
-Landroid/icu/text/RBBIDataWrapper;->getStateTableNumStates([S)I
-Landroid/icu/text/RBBIDataWrapper;->intToHexString(II)Ljava/lang/String;
-Landroid/icu/text/RBBIDataWrapper;->intToString(II)Ljava/lang/String;
-Landroid/icu/text/RBBIDataWrapper;->isBigEndian:Z
-Landroid/icu/text/RBBIDataWrapper;->IS_ACCEPTABLE:Landroid/icu/text/RBBIDataWrapper$IsAcceptable;
-Landroid/icu/text/RBBIDataWrapper;->LOOKAHEAD:I
-Landroid/icu/text/RBBIDataWrapper;->NEXTSTATES:I
-Landroid/icu/text/RBBIDataWrapper;->NUMSTATES:I
-Landroid/icu/text/RBBIDataWrapper;->RBBI_BOF_REQUIRED:I
-Landroid/icu/text/RBBIDataWrapper;->RBBI_LOOKAHEAD_HARD_BREAK:I
-Landroid/icu/text/RBBIDataWrapper;->RESERVED:I
-Landroid/icu/text/RBBIDataWrapper;->ROWLEN:I
-Landroid/icu/text/RBBIDataWrapper;->ROW_DATA:I
-Landroid/icu/text/RBBIDataWrapper;->TAGIDX:I
-Landroid/icu/text/RbnfLenientScanner;->allIgnorable(Ljava/lang/String;)Z
-Landroid/icu/text/RbnfLenientScanner;->findText(Ljava/lang/String;Ljava/lang/String;I)[I
-Landroid/icu/text/RbnfLenientScanner;->prefixLength(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/RbnfLenientScannerProvider;->get(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/RbnfLenientScanner;
-Landroid/icu/text/RBNFPostProcessor;->init(Landroid/icu/text/RuleBasedNumberFormat;Ljava/lang/String;)V
-Landroid/icu/text/RBNFPostProcessor;->process(Ljava/lang/StringBuilder;Landroid/icu/text/NFRuleSet;)V
-Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;->QUARTER:Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$Cache;-><init>()V
-Landroid/icu/text/RelativeDateTimeFormatter$Cache;->cache:Landroid/icu/impl/CacheBase;
-Landroid/icu/text/RelativeDateTimeFormatter$Cache;->get(Landroid/icu/util/ULocale;)Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;
-Landroid/icu/text/RelativeDateTimeFormatter$Loader;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RelativeDateTimeFormatter$Loader;->getDateTimePattern(Landroid/icu/impl/ICUResourceBundle;)Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter$Loader;->load()Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;
-Landroid/icu/text/RelativeDateTimeFormatter$Loader;->ulocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap;Ljava/lang/String;)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;->dateTimePattern:Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;->qualitativeUnitMap:Ljava/util/EnumMap;
-Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;->relUnitPatternMap:Ljava/util/EnumMap;
-Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;->QUARTERS:Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->absUnit:Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->DAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->FRIDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->HOUR:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->MINUTE:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->MONDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->MONTH:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->orNullFromString(Ljava/lang/CharSequence;)Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->QUARTER:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->relUnit:Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->SATURDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->SECOND:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->SUNDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->THURSDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->TUESDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->valueOf(Ljava/lang/String;)Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->values()[Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->WEDNESDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->WEEK:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->YEAR:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;-><init>()V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelative(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelativeTime(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTimeDetail(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTimeUnit(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->handleAlias(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->handlePlainDirection(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->pastFutureIndex:I
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->qualitativeUnitMap:Ljava/util/EnumMap;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->sb:Ljava/lang/StringBuilder;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->style:Landroid/icu/text/RelativeDateTimeFormatter$Style;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleFromAlias(Landroid/icu/impl/UResource$Value;)Landroid/icu/text/RelativeDateTimeFormatter$Style;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleFromKey(Landroid/icu/impl/UResource$Key;)Landroid/icu/text/RelativeDateTimeFormatter$Style;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleRelUnitPatterns:Ljava/util/EnumMap;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleSuffixLength(Landroid/icu/text/RelativeDateTimeFormatter$Style;)I
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->unit:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;
-Landroid/icu/text/RelativeDateTimeFormatter$Style;->INDEX_COUNT:I
-Landroid/icu/text/RelativeDateTimeFormatter;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap;Ljava/lang/String;Landroid/icu/text/PluralRules;Landroid/icu/text/NumberFormat;Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/DisplayContext;Landroid/icu/text/BreakIterator;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RelativeDateTimeFormatter;->adjustForContext(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter;->breakIterator:Landroid/icu/text/BreakIterator;
-Landroid/icu/text/RelativeDateTimeFormatter;->cache:Landroid/icu/text/RelativeDateTimeFormatter$Cache;
-Landroid/icu/text/RelativeDateTimeFormatter;->capitalizationContext:Landroid/icu/text/DisplayContext;
-Landroid/icu/text/RelativeDateTimeFormatter;->combinedDateAndTime:Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter;->dateFormatSymbols:Landroid/icu/text/DateFormatSymbols;
-Landroid/icu/text/RelativeDateTimeFormatter;->fallbackCache:[Landroid/icu/text/RelativeDateTimeFormatter$Style;
-Landroid/icu/text/RelativeDateTimeFormatter;->getAbsoluteUnitString(Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;Landroid/icu/text/RelativeDateTimeFormatter$Direction;)Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter;->getRelativeUnitPattern(Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;ILandroid/icu/impl/StandardPlural;)Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter;->getRelativeUnitPluralPattern(Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;ILandroid/icu/impl/StandardPlural;)Ljava/lang/String;
-Landroid/icu/text/RelativeDateTimeFormatter;->keyToDirection(Landroid/icu/impl/UResource$Key;)Landroid/icu/text/RelativeDateTimeFormatter$Direction;
-Landroid/icu/text/RelativeDateTimeFormatter;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/RelativeDateTimeFormatter;->numberFormat:Landroid/icu/text/NumberFormat;
-Landroid/icu/text/RelativeDateTimeFormatter;->patternMap:Ljava/util/EnumMap;
-Landroid/icu/text/RelativeDateTimeFormatter;->pluralRules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/RelativeDateTimeFormatter;->qualitativeUnitMap:Ljava/util/EnumMap;
-Landroid/icu/text/RelativeDateTimeFormatter;->style:Landroid/icu/text/RelativeDateTimeFormatter$Style;
-Landroid/icu/text/RelativeDateTimeFormatter;->styleToDateFormatSymbolsWidth:[I
-Landroid/icu/text/ReplaceableString;-><init>()V
-Landroid/icu/text/ReplaceableString;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/ReplaceableString;-><init>(Ljava/lang/StringBuffer;)V
-Landroid/icu/text/ReplaceableString;->buf:Ljava/lang/StringBuffer;
-Landroid/icu/text/ReplaceableString;->substring(II)Ljava/lang/String;
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->addFollowing(IIZ)V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->addPreceding(IIZ)Z
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->CACHE_SIZE:I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->current()I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->dumpCache()V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fBoundaries:[I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fBufIdx:I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fEndBufIdx:I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->following(I)V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fSideBuffer:Landroid/icu/text/DictionaryBreakEngine$DequeI;
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fStartBufIdx:I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fStatuses:[S
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fTextIdx:I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->modChunkSize(I)I
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->next()V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->populateFollowing()Z
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->populateNear(I)Z
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->populatePreceding()Z
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->preceding(I)V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->previous()V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->reset()V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->reset(II)V
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->RetainCachePosition:Z
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->seek(I)Z
-Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->UpdateCachePosition:Z
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fBoundary:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fBreaks:Landroid/icu/text/DictionaryBreakEngine$DequeI;
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fFirstRuleStatusIndex:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fLimit:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->following(I)Z
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fOtherRuleStatusIndex:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fPositionInCache:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fStart:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fStatusIndex:I
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->populateDictionary(IIII)V
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->preceding(I)Z
-Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->reset()V
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;-><init>()V
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->fKeys:[I
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->fPositions:[I
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->fUsedSlotLimit:I
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->getPosition(I)I
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->reset()V
-Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->setPosition(II)V
-Landroid/icu/text/RuleBasedBreakIterator;-><init>()V
-Landroid/icu/text/RuleBasedBreakIterator;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedBreakIterator;->checkOffset(ILjava/text/CharacterIterator;)V
-Landroid/icu/text/RuleBasedBreakIterator;->CISetIndex32(Ljava/text/CharacterIterator;I)I
-Landroid/icu/text/RuleBasedBreakIterator;->compileRules(Ljava/lang/String;Ljava/io/OutputStream;)V
-Landroid/icu/text/RuleBasedBreakIterator;->dump(Ljava/io/PrintStream;)V
-Landroid/icu/text/RuleBasedBreakIterator;->fBreakCache:Landroid/icu/text/RuleBasedBreakIterator$BreakCache;
-Landroid/icu/text/RuleBasedBreakIterator;->fBreakEngines:Ljava/util/List;
-Landroid/icu/text/RuleBasedBreakIterator;->fBreakType:I
-Landroid/icu/text/RuleBasedBreakIterator;->fDebugEnv:Ljava/lang/String;
-Landroid/icu/text/RuleBasedBreakIterator;->fDictionaryCache:Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;
-Landroid/icu/text/RuleBasedBreakIterator;->fDictionaryCharCount:I
-Landroid/icu/text/RuleBasedBreakIterator;->fDone:Z
-Landroid/icu/text/RuleBasedBreakIterator;->fLookAheadMatches:Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;
-Landroid/icu/text/RuleBasedBreakIterator;->fPosition:I
-Landroid/icu/text/RuleBasedBreakIterator;->fRData:Landroid/icu/text/RBBIDataWrapper;
-Landroid/icu/text/RuleBasedBreakIterator;->fRuleStatusIndex:I
-Landroid/icu/text/RuleBasedBreakIterator;->fText:Ljava/text/CharacterIterator;
-Landroid/icu/text/RuleBasedBreakIterator;->gAllBreakEngines:Ljava/util/List;
-Landroid/icu/text/RuleBasedBreakIterator;->getBreakType()I
-Landroid/icu/text/RuleBasedBreakIterator;->getInstanceFromCompiledRules(Ljava/io/InputStream;)Landroid/icu/text/RuleBasedBreakIterator;
-Landroid/icu/text/RuleBasedBreakIterator;->getInstanceFromCompiledRules(Ljava/nio/ByteBuffer;)Landroid/icu/text/RuleBasedBreakIterator;
-Landroid/icu/text/RuleBasedBreakIterator;->getLanguageBreakEngine(I)Landroid/icu/text/LanguageBreakEngine;
-Landroid/icu/text/RuleBasedBreakIterator;->gUnhandledBreakEngine:Landroid/icu/text/UnhandledBreakEngine;
-Landroid/icu/text/RuleBasedBreakIterator;->handleNext()I
-Landroid/icu/text/RuleBasedBreakIterator;->handlePrevious(I)I
-Landroid/icu/text/RuleBasedBreakIterator;->kMaxLookaheads:I
-Landroid/icu/text/RuleBasedBreakIterator;->RBBI_DEBUG_ARG:Ljava/lang/String;
-Landroid/icu/text/RuleBasedBreakIterator;->RBBI_END:I
-Landroid/icu/text/RuleBasedBreakIterator;->RBBI_RUN:I
-Landroid/icu/text/RuleBasedBreakIterator;->RBBI_START:I
-Landroid/icu/text/RuleBasedBreakIterator;->setBreakType(I)V
-Landroid/icu/text/RuleBasedBreakIterator;->START_STATE:I
-Landroid/icu/text/RuleBasedBreakIterator;->STOP_STATE:I
-Landroid/icu/text/RuleBasedBreakIterator;->TRACE:Z
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;-><init>(Landroid/icu/impl/coll/CollationData;)V
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftFCDUTF16Iter:Landroid/icu/impl/coll/FCDUTF16CollationIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftFCDUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftUTF16CollIter:Landroid/icu/impl/coll/UTF16CollationIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rawCollationKey:Landroid/icu/text/RawCollationKey;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightFCDUTF16Iter:Landroid/icu/impl/coll/FCDUTF16CollationIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightFCDUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightUTF16CollIter:Landroid/icu/impl/coll/UTF16CollationIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;
-Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;-><init>(Landroid/icu/text/RawCollationKey;)V
-Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;->key_:Landroid/icu/text/RawCollationKey;
-Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;-><init>()V
-Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;->setText(Landroid/icu/impl/Normalizer2Impl;Ljava/lang/CharSequence;I)V
-Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;->str:Ljava/lang/StringBuilder;
-Landroid/icu/text/RuleBasedCollator$NFDIterator;-><init>()V
-Landroid/icu/text/RuleBasedCollator$NFDIterator;->decomp:Ljava/lang/String;
-Landroid/icu/text/RuleBasedCollator$NFDIterator;->index:I
-Landroid/icu/text/RuleBasedCollator$NFDIterator;->nextCodePoint()I
-Landroid/icu/text/RuleBasedCollator$NFDIterator;->nextDecomposedCodePoint(Landroid/icu/impl/Normalizer2Impl;I)I
-Landroid/icu/text/RuleBasedCollator$NFDIterator;->nextRawCodePoint()I
-Landroid/icu/text/RuleBasedCollator$NFDIterator;->reset()V
-Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;-><init>()V
-Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->nextRawCodePoint()I
-Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->pos:I
-Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->s:Ljava/lang/CharSequence;
-Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->setText(Ljava/lang/CharSequence;I)V
-Landroid/icu/text/RuleBasedCollator;-><init>(Landroid/icu/impl/coll/CollationTailoring;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RuleBasedCollator;->actualLocaleIsSameAsValid:Z
-Landroid/icu/text/RuleBasedCollator;->adoptTailoring(Landroid/icu/impl/coll/CollationTailoring;)V
-Landroid/icu/text/RuleBasedCollator;->checkNotFrozen()V
-Landroid/icu/text/RuleBasedCollator;->collationBuffer:Landroid/icu/text/RuleBasedCollator$CollationBuffer;
-Landroid/icu/text/RuleBasedCollator;->compareNFDIter(Landroid/icu/impl/Normalizer2Impl;Landroid/icu/text/RuleBasedCollator$NFDIterator;Landroid/icu/text/RuleBasedCollator$NFDIterator;)I
-Landroid/icu/text/RuleBasedCollator;->data:Landroid/icu/impl/coll/CollationData;
-Landroid/icu/text/RuleBasedCollator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I
-Landroid/icu/text/RuleBasedCollator;->frozenLock:Ljava/util/concurrent/locks/Lock;
-Landroid/icu/text/RuleBasedCollator;->getCollationBuffer()Landroid/icu/text/RuleBasedCollator$CollationBuffer;
-Landroid/icu/text/RuleBasedCollator;->getCollationKey(Ljava/lang/String;Landroid/icu/text/RuleBasedCollator$CollationBuffer;)Landroid/icu/text/CollationKey;
-Landroid/icu/text/RuleBasedCollator;->getDefaultSettings()Landroid/icu/impl/coll/CollationSettings;
-Landroid/icu/text/RuleBasedCollator;->getOwnedSettings()Landroid/icu/impl/coll/CollationSettings;
-Landroid/icu/text/RuleBasedCollator;->getRawCollationKey(Ljava/lang/CharSequence;Landroid/icu/text/RawCollationKey;Landroid/icu/text/RuleBasedCollator$CollationBuffer;)Landroid/icu/text/RawCollationKey;
-Landroid/icu/text/RuleBasedCollator;->getRawCollationKey(Ljava/lang/String;Landroid/icu/text/RawCollationKey;)Landroid/icu/text/RawCollationKey;
-Landroid/icu/text/RuleBasedCollator;->initMaxExpansions()V
-Landroid/icu/text/RuleBasedCollator;->internalAddContractions(ILandroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/RuleBasedCollator;->internalBuildTailoring(Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedCollator;->internalGetCEs(Ljava/lang/CharSequence;)[J
-Landroid/icu/text/RuleBasedCollator;->internalSetVariableTop(J)V
-Landroid/icu/text/RuleBasedCollator;->isHiraganaQuaternary()Z
-Landroid/icu/text/RuleBasedCollator;->isUnsafe(I)Z
-Landroid/icu/text/RuleBasedCollator;->releaseCollationBuffer(Landroid/icu/text/RuleBasedCollator$CollationBuffer;)V
-Landroid/icu/text/RuleBasedCollator;->setFastLatinOptions(Landroid/icu/impl/coll/CollationSettings;)V
-Landroid/icu/text/RuleBasedCollator;->setHiraganaQuaternary(Z)V
-Landroid/icu/text/RuleBasedCollator;->setHiraganaQuaternaryDefault()V
-Landroid/icu/text/RuleBasedCollator;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RuleBasedCollator;->settings:Landroid/icu/impl/coll/SharedObject$Reference;
-Landroid/icu/text/RuleBasedCollator;->setVariableTop(I)V
-Landroid/icu/text/RuleBasedCollator;->setVariableTop(Ljava/lang/String;)I
-Landroid/icu/text/RuleBasedCollator;->simpleKeyLengthEstimate(Ljava/lang/CharSequence;)I
-Landroid/icu/text/RuleBasedCollator;->tailoring:Landroid/icu/impl/coll/CollationTailoring;
-Landroid/icu/text/RuleBasedCollator;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/RuleBasedCollator;->writeIdenticalLevel(Ljava/lang/CharSequence;Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;)V
-Landroid/icu/text/RuleBasedCollator;->writeSortKey(Ljava/lang/CharSequence;Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;Landroid/icu/text/RuleBasedCollator$CollationBuffer;)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(I)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Landroid/icu/util/ULocale;I)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;Ljava/util/Locale;)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;[[Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;[[Ljava/lang/String;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/util/Locale;I)V
-Landroid/icu/text/RuleBasedNumberFormat;->adjustForContext(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->capitalizationBrkIter:Landroid/icu/text/BreakIterator;
-Landroid/icu/text/RuleBasedNumberFormat;->capitalizationForListOrMenu:Z
-Landroid/icu/text/RuleBasedNumberFormat;->capitalizationForStandAlone:Z
-Landroid/icu/text/RuleBasedNumberFormat;->capitalizationInfoIsSet:Z
-Landroid/icu/text/RuleBasedNumberFormat;->createPluralFormat(Landroid/icu/text/PluralRules$PluralType;Ljava/lang/String;)Landroid/icu/text/PluralFormat;
-Landroid/icu/text/RuleBasedNumberFormat;->DEBUG:Z
-Landroid/icu/text/RuleBasedNumberFormat;->decimalFormat:Landroid/icu/text/DecimalFormat;
-Landroid/icu/text/RuleBasedNumberFormat;->decimalFormatSymbols:Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/RuleBasedNumberFormat;->defaultInfinityRule:Landroid/icu/text/NFRule;
-Landroid/icu/text/RuleBasedNumberFormat;->defaultNaNRule:Landroid/icu/text/NFRule;
-Landroid/icu/text/RuleBasedNumberFormat;->defaultRuleSet:Landroid/icu/text/NFRuleSet;
-Landroid/icu/text/RuleBasedNumberFormat;->DURATION:I
-Landroid/icu/text/RuleBasedNumberFormat;->extractSpecial(Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->findRuleSet(Ljava/lang/String;)Landroid/icu/text/NFRuleSet;
-Landroid/icu/text/RuleBasedNumberFormat;->format(DLandroid/icu/text/NFRuleSet;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->format(DLjava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->format(JLandroid/icu/text/NFRuleSet;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->format(JLjava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getDecimalFormat()Landroid/icu/text/DecimalFormat;
-Landroid/icu/text/RuleBasedNumberFormat;->getDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/RuleBasedNumberFormat;->getDefaultInfinityRule()Landroid/icu/text/NFRule;
-Landroid/icu/text/RuleBasedNumberFormat;->getDefaultNaNRule()Landroid/icu/text/NFRule;
-Landroid/icu/text/RuleBasedNumberFormat;->getDefaultRuleSet()Landroid/icu/text/NFRuleSet;
-Landroid/icu/text/RuleBasedNumberFormat;->getDefaultRuleSetName()Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getLenientScanner()Landroid/icu/text/RbnfLenientScanner;
-Landroid/icu/text/RuleBasedNumberFormat;->getLenientScannerProvider()Landroid/icu/text/RbnfLenientScannerProvider;
-Landroid/icu/text/RuleBasedNumberFormat;->getNameListForLocale(Landroid/icu/util/ULocale;)[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayName(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayNameLocales()[Landroid/icu/util/ULocale;
-Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayNames()[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayNames(Landroid/icu/util/ULocale;)[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetNames()[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->init(Ljava/lang/String;[[Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedNumberFormat;->initCapitalizationContextInfo(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/RuleBasedNumberFormat;->initLocalizations([[Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedNumberFormat;->lenientParse:Z
-Landroid/icu/text/RuleBasedNumberFormat;->lenientParseEnabled()Z
-Landroid/icu/text/RuleBasedNumberFormat;->lenientParseRules:Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/RuleBasedNumberFormat;->locnames:[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->lookedForScanner:Z
-Landroid/icu/text/RuleBasedNumberFormat;->MAX_VALUE:Landroid/icu/math/BigDecimal;
-Landroid/icu/text/RuleBasedNumberFormat;->MIN_VALUE:Landroid/icu/math/BigDecimal;
-Landroid/icu/text/RuleBasedNumberFormat;->NUMBERING_SYSTEM:I
-Landroid/icu/text/RuleBasedNumberFormat;->ORDINAL:I
-Landroid/icu/text/RuleBasedNumberFormat;->postProcess(Ljava/lang/StringBuilder;Landroid/icu/text/NFRuleSet;)V
-Landroid/icu/text/RuleBasedNumberFormat;->postProcessor:Landroid/icu/text/RBNFPostProcessor;
-Landroid/icu/text/RuleBasedNumberFormat;->postProcessRules:Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->publicRuleSetNames:[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->roundingMode:I
-Landroid/icu/text/RuleBasedNumberFormat;->rulenames:[Ljava/lang/String;
-Landroid/icu/text/RuleBasedNumberFormat;->ruleSetDisplayNames:Ljava/util/Map;
-Landroid/icu/text/RuleBasedNumberFormat;->ruleSets:[Landroid/icu/text/NFRuleSet;
-Landroid/icu/text/RuleBasedNumberFormat;->ruleSetsMap:Ljava/util/Map;
-Landroid/icu/text/RuleBasedNumberFormat;->scannerProvider:Landroid/icu/text/RbnfLenientScannerProvider;
-Landroid/icu/text/RuleBasedNumberFormat;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V
-Landroid/icu/text/RuleBasedNumberFormat;->setDefaultRuleSet(Ljava/lang/String;)V
-Landroid/icu/text/RuleBasedNumberFormat;->setLenientParseMode(Z)V
-Landroid/icu/text/RuleBasedNumberFormat;->setLenientScannerProvider(Landroid/icu/text/RbnfLenientScannerProvider;)V
-Landroid/icu/text/RuleBasedNumberFormat;->SPELLOUT:I
-Landroid/icu/text/RuleBasedNumberFormat;->stripWhitespace(Ljava/lang/String;)Ljava/lang/StringBuilder;
-Landroid/icu/text/RuleBasedTransliterator$Data;-><init>()V
-Landroid/icu/text/RuleBasedTransliterator$Data;->lookupMatcher(I)Landroid/icu/text/UnicodeMatcher;
-Landroid/icu/text/RuleBasedTransliterator$Data;->lookupReplacer(I)Landroid/icu/text/UnicodeReplacer;
-Landroid/icu/text/RuleBasedTransliterator$Data;->ruleSet:Landroid/icu/text/TransliterationRuleSet;
-Landroid/icu/text/RuleBasedTransliterator$Data;->variableNames:Ljava/util/Map;
-Landroid/icu/text/RuleBasedTransliterator$Data;->variables:[Ljava/lang/Object;
-Landroid/icu/text/RuleBasedTransliterator$Data;->variablesBase:C
-Landroid/icu/text/RuleBasedTransliterator;-><init>(Ljava/lang/String;Landroid/icu/text/RuleBasedTransliterator$Data;Landroid/icu/text/UnicodeFilter;)V
-Landroid/icu/text/RuleBasedTransliterator;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/RuleBasedTransliterator;->data:Landroid/icu/text/RuleBasedTransliterator$Data;
-Landroid/icu/text/RuleBasedTransliterator;->handleTransliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)V
-Landroid/icu/text/RuleBasedTransliterator;->safeClone()Landroid/icu/text/Transliterator;
-Landroid/icu/text/RuleBasedTransliterator;->toRules(Z)Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;->beginMarkup:Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;->endMarkup:Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;->format(Ljava/text/AttributedCharacterIterator;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$Style;-><init>()V
-Landroid/icu/text/ScientificNumberFormatter$Style;->append(Ljava/text/AttributedCharacterIterator;IILjava/lang/StringBuilder;)V
-Landroid/icu/text/ScientificNumberFormatter$Style;->format(Ljava/text/AttributedCharacterIterator;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;-><init>()V
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->char32AtAndAdvance(Ljava/text/AttributedCharacterIterator;)I
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->copyAsSuperscript(Ljava/text/AttributedCharacterIterator;IILjava/lang/StringBuilder;)V
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->format(Ljava/text/AttributedCharacterIterator;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->SUPERSCRIPT_DIGITS:[C
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->SUPERSCRIPT_MINUS_SIGN:C
-Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->SUPERSCRIPT_PLUS_SIGN:C
-Landroid/icu/text/ScientificNumberFormatter;-><init>(Landroid/icu/text/DecimalFormat;Ljava/lang/String;Landroid/icu/text/ScientificNumberFormatter$Style;)V
-Landroid/icu/text/ScientificNumberFormatter;->fmt:Landroid/icu/text/DecimalFormat;
-Landroid/icu/text/ScientificNumberFormatter;->getInstance(Landroid/icu/text/DecimalFormat;Landroid/icu/text/ScientificNumberFormatter$Style;)Landroid/icu/text/ScientificNumberFormatter;
-Landroid/icu/text/ScientificNumberFormatter;->getInstanceForLocale(Landroid/icu/util/ULocale;Landroid/icu/text/ScientificNumberFormatter$Style;)Landroid/icu/text/ScientificNumberFormatter;
-Landroid/icu/text/ScientificNumberFormatter;->getPreExponent(Landroid/icu/text/DecimalFormatSymbols;)Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter;->preExponent:Ljava/lang/String;
-Landroid/icu/text/ScientificNumberFormatter;->style:Landroid/icu/text/ScientificNumberFormatter$Style;
-Landroid/icu/text/ScientificNumberFormatter;->SUPER_SCRIPT:Landroid/icu/text/ScientificNumberFormatter$Style;
-Landroid/icu/text/SCSU;->ARMENIANINDEX:I
-Landroid/icu/text/SCSU;->COMPRESSIONOFFSET:I
-Landroid/icu/text/SCSU;->GREEKINDEX:I
-Landroid/icu/text/SCSU;->HALFWIDTHKATAKANAINDEX:I
-Landroid/icu/text/SCSU;->HIRAGANAINDEX:I
-Landroid/icu/text/SCSU;->INVALIDCHAR:I
-Landroid/icu/text/SCSU;->INVALIDWINDOW:I
-Landroid/icu/text/SCSU;->IPAEXTENSIONINDEX:I
-Landroid/icu/text/SCSU;->KATAKANAINDEX:I
-Landroid/icu/text/SCSU;->LATININDEX:I
-Landroid/icu/text/SCSU;->MAXINDEX:I
-Landroid/icu/text/SCSU;->NUMSTATICWINDOWS:I
-Landroid/icu/text/SCSU;->NUMWINDOWS:I
-Landroid/icu/text/SCSU;->RESERVEDINDEX:I
-Landroid/icu/text/SCSU;->SCHANGE0:I
-Landroid/icu/text/SCSU;->SCHANGE1:I
-Landroid/icu/text/SCSU;->SCHANGE2:I
-Landroid/icu/text/SCSU;->SCHANGE3:I
-Landroid/icu/text/SCSU;->SCHANGE4:I
-Landroid/icu/text/SCSU;->SCHANGE5:I
-Landroid/icu/text/SCSU;->SCHANGE6:I
-Landroid/icu/text/SCSU;->SCHANGE7:I
-Landroid/icu/text/SCSU;->SCHANGEU:I
-Landroid/icu/text/SCSU;->SDEFINE0:I
-Landroid/icu/text/SCSU;->SDEFINE1:I
-Landroid/icu/text/SCSU;->SDEFINE2:I
-Landroid/icu/text/SCSU;->SDEFINE3:I
-Landroid/icu/text/SCSU;->SDEFINE4:I
-Landroid/icu/text/SCSU;->SDEFINE5:I
-Landroid/icu/text/SCSU;->SDEFINE6:I
-Landroid/icu/text/SCSU;->SDEFINE7:I
-Landroid/icu/text/SCSU;->SDEFINEX:I
-Landroid/icu/text/SCSU;->SINGLEBYTEMODE:I
-Landroid/icu/text/SCSU;->sOffsets:[I
-Landroid/icu/text/SCSU;->sOffsetTable:[I
-Landroid/icu/text/SCSU;->SQUOTE0:I
-Landroid/icu/text/SCSU;->SQUOTE1:I
-Landroid/icu/text/SCSU;->SQUOTE2:I
-Landroid/icu/text/SCSU;->SQUOTE3:I
-Landroid/icu/text/SCSU;->SQUOTE4:I
-Landroid/icu/text/SCSU;->SQUOTE5:I
-Landroid/icu/text/SCSU;->SQUOTE6:I
-Landroid/icu/text/SCSU;->SQUOTE7:I
-Landroid/icu/text/SCSU;->SQUOTEU:I
-Landroid/icu/text/SCSU;->SRESERVED:I
-Landroid/icu/text/SCSU;->UCHANGE0:I
-Landroid/icu/text/SCSU;->UCHANGE1:I
-Landroid/icu/text/SCSU;->UCHANGE2:I
-Landroid/icu/text/SCSU;->UCHANGE3:I
-Landroid/icu/text/SCSU;->UCHANGE4:I
-Landroid/icu/text/SCSU;->UCHANGE5:I
-Landroid/icu/text/SCSU;->UCHANGE6:I
-Landroid/icu/text/SCSU;->UCHANGE7:I
-Landroid/icu/text/SCSU;->UDEFINE0:I
-Landroid/icu/text/SCSU;->UDEFINE1:I
-Landroid/icu/text/SCSU;->UDEFINE2:I
-Landroid/icu/text/SCSU;->UDEFINE3:I
-Landroid/icu/text/SCSU;->UDEFINE4:I
-Landroid/icu/text/SCSU;->UDEFINE5:I
-Landroid/icu/text/SCSU;->UDEFINE6:I
-Landroid/icu/text/SCSU;->UDEFINE7:I
-Landroid/icu/text/SCSU;->UDEFINEX:I
-Landroid/icu/text/SCSU;->UNICODEMODE:I
-Landroid/icu/text/SCSU;->UQUOTEU:I
-Landroid/icu/text/SCSU;->URESERVED:I
-Landroid/icu/text/SearchIterator$Search;->beginIndex()I
-Landroid/icu/text/SearchIterator$Search;->breakIter()Landroid/icu/text/BreakIterator;
-Landroid/icu/text/SearchIterator$Search;->elementComparisonType_:Landroid/icu/text/SearchIterator$ElementComparisonType;
-Landroid/icu/text/SearchIterator$Search;->endIndex()I
-Landroid/icu/text/SearchIterator$Search;->internalBreakIter_:Landroid/icu/text/BreakIterator;
-Landroid/icu/text/SearchIterator$Search;->isCanonicalMatch_:Z
-Landroid/icu/text/SearchIterator$Search;->isForwardSearching_:Z
-Landroid/icu/text/SearchIterator$Search;->isOverlap_:Z
-Landroid/icu/text/SearchIterator$Search;->matchedIndex_:I
-Landroid/icu/text/SearchIterator$Search;->matchedLength()I
-Landroid/icu/text/SearchIterator$Search;->reset_:Z
-Landroid/icu/text/SearchIterator$Search;->setBreakIter(Landroid/icu/text/BreakIterator;)V
-Landroid/icu/text/SearchIterator$Search;->setMatchedLength(I)V
-Landroid/icu/text/SearchIterator$Search;->setTarget(Ljava/text/CharacterIterator;)V
-Landroid/icu/text/SearchIterator$Search;->text()Ljava/text/CharacterIterator;
-Landroid/icu/text/SearchIterator;->search_:Landroid/icu/text/SearchIterator$Search;
-Landroid/icu/text/SearchIterator;->setMatchNotFound()V
-Landroid/icu/text/SelectFormat;->findSubMessage(Landroid/icu/text/MessagePattern;ILjava/lang/String;)I
-Landroid/icu/text/SelectFormat;->msgPattern:Landroid/icu/text/MessagePattern;
-Landroid/icu/text/SelectFormat;->pattern:Ljava/lang/String;
-Landroid/icu/text/SelectFormat;->reset()V
-Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE:Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE:Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_STANDALONE:Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_UI_LIST_OR_MENU:Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$ContextValue;->UNKNOWN:Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$ContextValue;->valueOf(Ljava/lang/String;)Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$ContextValue;->values()[Landroid/icu/text/SimpleDateFormat$ContextValue;
-Landroid/icu/text/SimpleDateFormat$PatternItem;-><init>(CI)V
-Landroid/icu/text/SimpleDateFormat$PatternItem;->isNumeric:Z
-Landroid/icu/text/SimpleDateFormat$PatternItem;->length:I
-Landroid/icu/text/SimpleDateFormat$PatternItem;->type:C
-Landroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/Calendar;Landroid/icu/text/NumberFormat;Landroid/icu/util/ULocale;ZLjava/lang/String;)V
-Landroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;ZLjava/lang/String;)V
-Landroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/SimpleDateFormat;->allowNumericFallback(I)Z
-Landroid/icu/text/SimpleDateFormat;->cachedDefaultLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/SimpleDateFormat;->cachedDefaultPattern:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->CALENDAR_FIELD_TO_LEVEL:[I
-Landroid/icu/text/SimpleDateFormat;->capitalizationBrkIter:Landroid/icu/text/BreakIterator;
-Landroid/icu/text/SimpleDateFormat;->countDigits(Ljava/lang/String;II)I
-Landroid/icu/text/SimpleDateFormat;->currentSerialVersion:I
-Landroid/icu/text/SimpleDateFormat;->DATE_PATTERN_TYPE:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SimpleDateFormat;->decDigits:[C
-Landroid/icu/text/SimpleDateFormat;->decimalBuf:[C
-Landroid/icu/text/SimpleDateFormat;->DECIMAL_BUF_SIZE:I
-Landroid/icu/text/SimpleDateFormat;->defaultCenturyBase:J
-Landroid/icu/text/SimpleDateFormat;->defaultCenturyStart:Ljava/util/Date;
-Landroid/icu/text/SimpleDateFormat;->defaultCenturyStartYear:I
-Landroid/icu/text/SimpleDateFormat;->DelayedHebrewMonthCheck:Z
-Landroid/icu/text/SimpleDateFormat;->diffCalFieldValue(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;[Ljava/lang/Object;I)Z
-Landroid/icu/text/SimpleDateFormat;->FALLBACKPATTERN:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->fastZeroPaddingNumber(Ljava/lang/StringBuffer;III)V
-Landroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/text/DisplayContext;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;
-Landroid/icu/text/SimpleDateFormat;->formatData:Landroid/icu/text/DateFormatSymbols;
-Landroid/icu/text/SimpleDateFormat;->getDefaultCenturyStart()Ljava/util/Date;
-Landroid/icu/text/SimpleDateFormat;->getDefaultCenturyStartYear()I
-Landroid/icu/text/SimpleDateFormat;->getDefaultPattern()Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->getIndexFromChar(C)I
-Landroid/icu/text/SimpleDateFormat;->getInstance(Landroid/icu/util/Calendar$FormatConfiguration;)Landroid/icu/text/SimpleDateFormat;
-Landroid/icu/text/SimpleDateFormat;->getLevelFromChar(C)I
-Landroid/icu/text/SimpleDateFormat;->getLocale()Landroid/icu/util/ULocale;
-Landroid/icu/text/SimpleDateFormat;->getPatternItems()[Ljava/lang/Object;
-Landroid/icu/text/SimpleDateFormat;->hasMinute:Z
-Landroid/icu/text/SimpleDateFormat;->hasSecond:Z
-Landroid/icu/text/SimpleDateFormat;->HEBREW_CAL_CUR_MILLENIUM_END_YEAR:I
-Landroid/icu/text/SimpleDateFormat;->HEBREW_CAL_CUR_MILLENIUM_START_YEAR:I
-Landroid/icu/text/SimpleDateFormat;->initialize()V
-Landroid/icu/text/SimpleDateFormat;->initializeDefaultCenturyStart(J)V
-Landroid/icu/text/SimpleDateFormat;->initializeTimeZoneFormat(Z)V
-Landroid/icu/text/SimpleDateFormat;->initLocalZeroPaddingNumberFormat()V
-Landroid/icu/text/SimpleDateFormat;->initNumberFormatters(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/SimpleDateFormat;->intervalFormatByAlgorithm(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-Landroid/icu/text/SimpleDateFormat;->isFieldUnitIgnored(I)Z
-Landroid/icu/text/SimpleDateFormat;->isFieldUnitIgnored(Ljava/lang/String;I)Z
-Landroid/icu/text/SimpleDateFormat;->isNumeric(CI)Z
-Landroid/icu/text/SimpleDateFormat;->ISOSpecialEra:I
-Landroid/icu/text/SimpleDateFormat;->isSyntaxChar(C)Z
-Landroid/icu/text/SimpleDateFormat;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/SimpleDateFormat;->lowerLevel([Ljava/lang/Object;II)Z
-Landroid/icu/text/SimpleDateFormat;->matchDayPeriodString(Ljava/lang/String;I[Ljava/lang/String;ILandroid/icu/util/Output;)I
-Landroid/icu/text/SimpleDateFormat;->matchLiteral(Ljava/lang/String;I[Ljava/lang/Object;I[Z)I
-Landroid/icu/text/SimpleDateFormat;->matchString(Ljava/lang/String;II[Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/Calendar;)I
-Landroid/icu/text/SimpleDateFormat;->millisPerHour:I
-Landroid/icu/text/SimpleDateFormat;->numberFormatters:Ljava/util/HashMap;
-Landroid/icu/text/SimpleDateFormat;->NUMERIC_FORMAT_CHARS2:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->NUMERIC_FORMAT_CHARS:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->override:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->overrideMap:Ljava/util/HashMap;
-Landroid/icu/text/SimpleDateFormat;->parseAmbiguousDatesAsAfter(Ljava/util/Date;)V
-Landroid/icu/text/SimpleDateFormat;->PARSED_PATTERN_CACHE:Landroid/icu/impl/ICUCache;
-Landroid/icu/text/SimpleDateFormat;->parseInt(Ljava/lang/String;ILjava/text/ParsePosition;ZLandroid/icu/text/NumberFormat;)Ljava/lang/Number;
-Landroid/icu/text/SimpleDateFormat;->parseInt(Ljava/lang/String;Ljava/text/ParsePosition;ZLandroid/icu/text/NumberFormat;)Ljava/lang/Number;
-Landroid/icu/text/SimpleDateFormat;->parsePattern()V
-Landroid/icu/text/SimpleDateFormat;->pattern:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->patternItems:[Ljava/lang/Object;
-Landroid/icu/text/SimpleDateFormat;->PATTERN_CHAR_IS_SYNTAX:[Z
-Landroid/icu/text/SimpleDateFormat;->PATTERN_CHAR_TO_INDEX:[I
-Landroid/icu/text/SimpleDateFormat;->PATTERN_CHAR_TO_LEVEL:[I
-Landroid/icu/text/SimpleDateFormat;->PATTERN_INDEX_TO_CALENDAR_FIELD:[I
-Landroid/icu/text/SimpleDateFormat;->PATTERN_INDEX_TO_DATE_FORMAT_ATTRIBUTE:[Landroid/icu/text/DateFormat$Field;
-Landroid/icu/text/SimpleDateFormat;->PATTERN_INDEX_TO_DATE_FORMAT_FIELD:[I
-Landroid/icu/text/SimpleDateFormat;->processOverrideString(Landroid/icu/util/ULocale;Ljava/lang/String;)V
-Landroid/icu/text/SimpleDateFormat;->regionMatchesWithOptionalDot(Ljava/lang/String;ILjava/lang/String;I)I
-Landroid/icu/text/SimpleDateFormat;->safeAppend([Ljava/lang/String;ILjava/lang/StringBuffer;)V
-Landroid/icu/text/SimpleDateFormat;->safeAppendWithMonthPattern([Ljava/lang/String;ILjava/lang/StringBuffer;Ljava/lang/String;)V
-Landroid/icu/text/SimpleDateFormat;->serialVersionOnStream:I
-Landroid/icu/text/SimpleDateFormat;->subFormat(CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;Landroid/icu/util/Calendar;)Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;Landroid/icu/util/Calendar;)V
-Landroid/icu/text/SimpleDateFormat;->subParse(Ljava/lang/String;ICIZZ[ZLandroid/icu/util/Calendar;Landroid/icu/text/MessageFormat;Landroid/icu/util/Output;)I
-Landroid/icu/text/SimpleDateFormat;->subParse(Ljava/lang/String;ICIZZ[ZLandroid/icu/util/Calendar;Landroid/icu/text/MessageFormat;Landroid/icu/util/Output;Landroid/icu/util/Output;)I
-Landroid/icu/text/SimpleDateFormat;->SUPPRESS_NEGATIVE_PREFIX:Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->translatePattern(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/SimpleDateFormat;->tzFormat()Landroid/icu/text/TimeZoneFormat;
-Landroid/icu/text/SimpleDateFormat;->tzFormat:Landroid/icu/text/TimeZoneFormat;
-Landroid/icu/text/SimpleDateFormat;->useFastFormat:Z
-Landroid/icu/text/SimpleDateFormat;->useLocalZeroPaddingNumberFormat:Z
-Landroid/icu/text/SimpleDateFormat;->zeroPaddingNumber(Landroid/icu/text/NumberFormat;Ljava/lang/StringBuffer;III)V
-Landroid/icu/text/SimpleFormatter;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/SimpleFormatter;->compile(Ljava/lang/CharSequence;)Landroid/icu/text/SimpleFormatter;
-Landroid/icu/text/SimpleFormatter;->compiledPattern:Ljava/lang/String;
-Landroid/icu/text/SimpleFormatter;->compileMinMaxArguments(Ljava/lang/CharSequence;II)Landroid/icu/text/SimpleFormatter;
-Landroid/icu/text/SimpleFormatter;->getArgumentLimit()I
-Landroid/icu/text/SimpleFormatter;->getTextWithNoArguments()Ljava/lang/String;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;->fCharOrStrTableIndex:I
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;->fStr:Ljava/lang/String;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;-><init>()V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;->compare(Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;)I
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;->INSTANCE:Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;-><init>()V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->addString(Ljava/lang/String;)Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->fHash:Ljava/util/Hashtable;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->fVec:Ljava/util/Vector;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->getByIndex(I)Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->size()I
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->sort()V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;-><init>()V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->build(Ljava/io/Reader;Landroid/icu/text/SpoofChecker$SpoofData;)V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->buildConfusableData(Ljava/io/Reader;Landroid/icu/text/SpoofChecker$SpoofData;)V
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fKeySet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fKeyVec:Ljava/util/ArrayList;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fLineNum:I
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fParseHexNum:Ljava/util/regex/Pattern;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fParseLine:Ljava/util/regex/Pattern;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fStringTable:Ljava/lang/StringBuffer;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fTable:Ljava/util/Hashtable;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fValueVec:Ljava/util/ArrayList;
-Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->stringPool:Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;
-Landroid/icu/text/SpoofChecker$Builder;-><init>()V
-Landroid/icu/text/SpoofChecker$Builder;-><init>(Landroid/icu/text/SpoofChecker;)V
-Landroid/icu/text/SpoofChecker$Builder;->addScriptChars(Landroid/icu/util/ULocale;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/SpoofChecker$Builder;->build()Landroid/icu/text/SpoofChecker;
-Landroid/icu/text/SpoofChecker$Builder;->fAllowedCharsSet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker$Builder;->fAllowedLocales:Ljava/util/Set;
-Landroid/icu/text/SpoofChecker$Builder;->fChecks:I
-Landroid/icu/text/SpoofChecker$Builder;->fRestrictionLevel:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$Builder;->fSpoofData:Landroid/icu/text/SpoofChecker$SpoofData;
-Landroid/icu/text/SpoofChecker$Builder;->setAllowedChars(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$Builder;->setAllowedJavaLocales(Ljava/util/Set;)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$Builder;->setAllowedLocales(Ljava/util/Set;)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$Builder;->setChecks(I)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$Builder;->setData(Ljava/io/Reader;)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$Builder;->setData(Ljava/io/Reader;Ljava/io/Reader;)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$Builder;->setRestrictionLevel(Landroid/icu/text/SpoofChecker$RestrictionLevel;)Landroid/icu/text/SpoofChecker$Builder;
-Landroid/icu/text/SpoofChecker$CheckResult;-><init>()V
-Landroid/icu/text/SpoofChecker$CheckResult;->checks:I
-Landroid/icu/text/SpoofChecker$CheckResult;->numerics:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker$CheckResult;->position:I
-Landroid/icu/text/SpoofChecker$CheckResult;->restrictionLevel:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$ConfusableDataUtils;-><init>()V
-Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->codePointAndLengthToKey(II)I
-Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->FORMAT_VERSION:I
-Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->keyToCodePoint(I)I
-Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->keyToLength(I)I
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->ASCII:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->HIGHLY_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->MINIMALLY_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->MODERATELY_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->SINGLE_SCRIPT_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->UNRESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->valueOf(Ljava/lang/String;)Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$RestrictionLevel;->values()[Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker$ScriptSet;->appendStringTo(Ljava/lang/StringBuilder;)V
-Landroid/icu/text/SpoofChecker$SpoofData$DefaultData;-><init>()V
-Landroid/icu/text/SpoofChecker$SpoofData$DefaultData;->EXCEPTION:Ljava/io/IOException;
-Landroid/icu/text/SpoofChecker$SpoofData$DefaultData;->INSTANCE:Landroid/icu/text/SpoofChecker$SpoofData;
-Landroid/icu/text/SpoofChecker$SpoofData$IsAcceptable;-><init>()V
-Landroid/icu/text/SpoofChecker$SpoofData;-><init>()V
-Landroid/icu/text/SpoofChecker$SpoofData;-><init>(Ljava/nio/ByteBuffer;)V
-Landroid/icu/text/SpoofChecker$SpoofData;->appendValueTo(ILjava/lang/StringBuilder;)V
-Landroid/icu/text/SpoofChecker$SpoofData;->codePointAt(I)I
-Landroid/icu/text/SpoofChecker$SpoofData;->confusableLookup(ILjava/lang/StringBuilder;)V
-Landroid/icu/text/SpoofChecker$SpoofData;->DATA_FORMAT:I
-Landroid/icu/text/SpoofChecker$SpoofData;->fCFUKeys:[I
-Landroid/icu/text/SpoofChecker$SpoofData;->fCFUStrings:Ljava/lang/String;
-Landroid/icu/text/SpoofChecker$SpoofData;->fCFUValues:[S
-Landroid/icu/text/SpoofChecker$SpoofData;->getDefault()Landroid/icu/text/SpoofChecker$SpoofData;
-Landroid/icu/text/SpoofChecker$SpoofData;->IS_ACCEPTABLE:Landroid/icu/text/SpoofChecker$SpoofData$IsAcceptable;
-Landroid/icu/text/SpoofChecker$SpoofData;->length()I
-Landroid/icu/text/SpoofChecker$SpoofData;->readData(Ljava/nio/ByteBuffer;)V
-Landroid/icu/text/SpoofChecker;-><init>()V
-Landroid/icu/text/SpoofChecker;->ALL_CHECKS:I
-Landroid/icu/text/SpoofChecker;->ANY_CASE:I
-Landroid/icu/text/SpoofChecker;->areConfusable(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/SpoofChecker;->ASCII:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker;->CHAR_LIMIT:I
-Landroid/icu/text/SpoofChecker;->CONFUSABLE:I
-Landroid/icu/text/SpoofChecker;->failsChecks(Ljava/lang/String;)Z
-Landroid/icu/text/SpoofChecker;->failsChecks(Ljava/lang/String;Landroid/icu/text/SpoofChecker$CheckResult;)Z
-Landroid/icu/text/SpoofChecker;->fAllowedCharsSet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker;->fAllowedLocales:Ljava/util/Set;
-Landroid/icu/text/SpoofChecker;->fChecks:I
-Landroid/icu/text/SpoofChecker;->fRestrictionLevel:Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker;->fSpoofData:Landroid/icu/text/SpoofChecker$SpoofData;
-Landroid/icu/text/SpoofChecker;->getAllowedChars()Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker;->getAllowedJavaLocales()Ljava/util/Set;
-Landroid/icu/text/SpoofChecker;->getAllowedLocales()Ljava/util/Set;
-Landroid/icu/text/SpoofChecker;->getAugmentedScriptSet(ILandroid/icu/text/SpoofChecker$ScriptSet;)V
-Landroid/icu/text/SpoofChecker;->getChecks()I
-Landroid/icu/text/SpoofChecker;->getNumerics(Ljava/lang/String;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/SpoofChecker;->getResolvedScriptSet(Ljava/lang/CharSequence;Landroid/icu/text/SpoofChecker$ScriptSet;)V
-Landroid/icu/text/SpoofChecker;->getResolvedScriptSetWithout(Ljava/lang/CharSequence;ILandroid/icu/text/SpoofChecker$ScriptSet;)V
-Landroid/icu/text/SpoofChecker;->getRestrictionLevel()Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker;->getRestrictionLevel(Ljava/lang/String;)Landroid/icu/text/SpoofChecker$RestrictionLevel;
-Landroid/icu/text/SpoofChecker;->getSkeleton(ILjava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/SpoofChecker;->getSkeleton(Ljava/lang/CharSequence;)Ljava/lang/String;
-Landroid/icu/text/SpoofChecker;->INCLUSION:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker;->INVISIBLE:I
-Landroid/icu/text/SpoofChecker;->MIXED_NUMBERS:I
-Landroid/icu/text/SpoofChecker;->MIXED_SCRIPT_CONFUSABLE:I
-Landroid/icu/text/SpoofChecker;->nfdNormalizer:Landroid/icu/text/Normalizer2;
-Landroid/icu/text/SpoofChecker;->RECOMMENDED:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/SpoofChecker;->RESTRICTION_LEVEL:I
-Landroid/icu/text/SpoofChecker;->SINGLE_SCRIPT:I
-Landroid/icu/text/SpoofChecker;->SINGLE_SCRIPT_CONFUSABLE:I
-Landroid/icu/text/SpoofChecker;->WHOLE_SCRIPT_CONFUSABLE:I
-Landroid/icu/text/StringCharacterIterator;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/StringCharacterIterator;-><init>(Ljava/lang/String;I)V
-Landroid/icu/text/StringCharacterIterator;-><init>(Ljava/lang/String;III)V
-Landroid/icu/text/StringCharacterIterator;->begin:I
-Landroid/icu/text/StringCharacterIterator;->end:I
-Landroid/icu/text/StringCharacterIterator;->pos:I
-Landroid/icu/text/StringCharacterIterator;->setText(Ljava/lang/String;)V
-Landroid/icu/text/StringCharacterIterator;->text:Ljava/lang/String;
-Landroid/icu/text/StringMatcher;-><init>(Ljava/lang/String;IIILandroid/icu/text/RuleBasedTransliterator$Data;)V
-Landroid/icu/text/StringMatcher;-><init>(Ljava/lang/String;ILandroid/icu/text/RuleBasedTransliterator$Data;)V
-Landroid/icu/text/StringMatcher;->addReplacementSetTo(Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/StringMatcher;->data:Landroid/icu/text/RuleBasedTransliterator$Data;
-Landroid/icu/text/StringMatcher;->matchLimit:I
-Landroid/icu/text/StringMatcher;->matchStart:I
-Landroid/icu/text/StringMatcher;->pattern:Ljava/lang/String;
-Landroid/icu/text/StringMatcher;->replace(Landroid/icu/text/Replaceable;II[I)I
-Landroid/icu/text/StringMatcher;->resetMatch()V
-Landroid/icu/text/StringMatcher;->segmentNumber:I
-Landroid/icu/text/StringMatcher;->toReplacerPattern(Z)Ljava/lang/String;
-Landroid/icu/text/StringPrep$Values;-><init>()V
-Landroid/icu/text/StringPrep$Values;->isIndex:Z
-Landroid/icu/text/StringPrep$Values;->reset()V
-Landroid/icu/text/StringPrep$Values;->type:I
-Landroid/icu/text/StringPrep$Values;->value:I
-Landroid/icu/text/StringPrep;-><init>(Ljava/io/InputStream;)V
-Landroid/icu/text/StringPrep;-><init>(Ljava/nio/ByteBuffer;)V
-Landroid/icu/text/StringPrep;->ALLOW_UNASSIGNED:I
-Landroid/icu/text/StringPrep;->bdp:Landroid/icu/impl/UBiDiProps;
-Landroid/icu/text/StringPrep;->CACHE:[Ljava/lang/ref/WeakReference;
-Landroid/icu/text/StringPrep;->checkBiDi:Z
-Landroid/icu/text/StringPrep;->CHECK_BIDI_ON:I
-Landroid/icu/text/StringPrep;->DEFAULT:I
-Landroid/icu/text/StringPrep;->DELETE:I
-Landroid/icu/text/StringPrep;->doNFKC:Z
-Landroid/icu/text/StringPrep;->FOUR_UCHARS_MAPPING_INDEX_START:I
-Landroid/icu/text/StringPrep;->getCodePointValue(I)C
-Landroid/icu/text/StringPrep;->getInstance(I)Landroid/icu/text/StringPrep;
-Landroid/icu/text/StringPrep;->getValues(CLandroid/icu/text/StringPrep$Values;)V
-Landroid/icu/text/StringPrep;->getVersionInfo(I)Landroid/icu/util/VersionInfo;
-Landroid/icu/text/StringPrep;->getVersionInfo([B)Landroid/icu/util/VersionInfo;
-Landroid/icu/text/StringPrep;->indexes:[I
-Landroid/icu/text/StringPrep;->INDEX_MAPPING_DATA_SIZE:I
-Landroid/icu/text/StringPrep;->INDEX_TOP:I
-Landroid/icu/text/StringPrep;->map(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/StringPrep;->MAP:I
-Landroid/icu/text/StringPrep;->mappingData:[C
-Landroid/icu/text/StringPrep;->MAX_INDEX_VALUE:I
-Landroid/icu/text/StringPrep;->MAX_PROFILE:I
-Landroid/icu/text/StringPrep;->NORMALIZATION_ON:I
-Landroid/icu/text/StringPrep;->normalize(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;
-Landroid/icu/text/StringPrep;->normCorrVer:Landroid/icu/util/VersionInfo;
-Landroid/icu/text/StringPrep;->NORM_CORRECTNS_LAST_UNI_VERSION:I
-Landroid/icu/text/StringPrep;->ONE_UCHAR_MAPPING_INDEX_START:I
-Landroid/icu/text/StringPrep;->OPTIONS:I
-Landroid/icu/text/StringPrep;->prepare(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/StringPrep;->prepare(Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/text/StringPrep;->PROFILE_NAMES:[Ljava/lang/String;
-Landroid/icu/text/StringPrep;->PROHIBITED:I
-Landroid/icu/text/StringPrep;->RFC3491_NAMEPREP:I
-Landroid/icu/text/StringPrep;->RFC3530_NFS4_CIS_PREP:I
-Landroid/icu/text/StringPrep;->RFC3530_NFS4_CS_PREP:I
-Landroid/icu/text/StringPrep;->RFC3530_NFS4_CS_PREP_CI:I
-Landroid/icu/text/StringPrep;->RFC3530_NFS4_MIXED_PREP_PREFIX:I
-Landroid/icu/text/StringPrep;->RFC3530_NFS4_MIXED_PREP_SUFFIX:I
-Landroid/icu/text/StringPrep;->RFC3722_ISCSI:I
-Landroid/icu/text/StringPrep;->RFC3920_NODEPREP:I
-Landroid/icu/text/StringPrep;->RFC3920_RESOURCEPREP:I
-Landroid/icu/text/StringPrep;->RFC4011_MIB:I
-Landroid/icu/text/StringPrep;->RFC4013_SASLPREP:I
-Landroid/icu/text/StringPrep;->RFC4505_TRACE:I
-Landroid/icu/text/StringPrep;->RFC4518_LDAP:I
-Landroid/icu/text/StringPrep;->RFC4518_LDAP_CI:I
-Landroid/icu/text/StringPrep;->sprepTrie:Landroid/icu/impl/CharTrie;
-Landroid/icu/text/StringPrep;->sprepUniVer:Landroid/icu/util/VersionInfo;
-Landroid/icu/text/StringPrep;->THREE_UCHARS_MAPPING_INDEX_START:I
-Landroid/icu/text/StringPrep;->TWO_UCHARS_MAPPING_INDEX_START:I
-Landroid/icu/text/StringPrep;->TYPE_LIMIT:I
-Landroid/icu/text/StringPrep;->TYPE_THRESHOLD:I
-Landroid/icu/text/StringPrep;->UNASSIGNED:I
-Landroid/icu/text/StringPrepParseException;->error:I
-Landroid/icu/text/StringPrepParseException;->line:I
-Landroid/icu/text/StringPrepParseException;->PARSE_CONTEXT_LEN:I
-Landroid/icu/text/StringPrepParseException;->postContext:Ljava/lang/StringBuffer;
-Landroid/icu/text/StringPrepParseException;->preContext:Ljava/lang/StringBuffer;
-Landroid/icu/text/StringPrepParseException;->setContext(Ljava/lang/String;I)V
-Landroid/icu/text/StringPrepParseException;->setPostContext(Ljava/lang/String;I)V
-Landroid/icu/text/StringPrepParseException;->setPostContext([CI)V
-Landroid/icu/text/StringPrepParseException;->setPreContext(Ljava/lang/String;I)V
-Landroid/icu/text/StringPrepParseException;->setPreContext([CI)V
-Landroid/icu/text/StringSearch$CEBuffer;-><init>(Landroid/icu/text/StringSearch;)V
-Landroid/icu/text/StringSearch$CEBuffer;->bufSize_:I
-Landroid/icu/text/StringSearch$CEBuffer;->buf_:[Landroid/icu/text/StringSearch$CEI;
-Landroid/icu/text/StringSearch$CEBuffer;->CEBUFFER_EXTRA:I
-Landroid/icu/text/StringSearch$CEBuffer;->firstIx_:I
-Landroid/icu/text/StringSearch$CEBuffer;->get(I)Landroid/icu/text/StringSearch$CEI;
-Landroid/icu/text/StringSearch$CEBuffer;->getPrevious(I)Landroid/icu/text/StringSearch$CEI;
-Landroid/icu/text/StringSearch$CEBuffer;->limitIx_:I
-Landroid/icu/text/StringSearch$CEBuffer;->MAX_TARGET_IGNORABLES_PER_PAT_JAMO_L:I
-Landroid/icu/text/StringSearch$CEBuffer;->MAX_TARGET_IGNORABLES_PER_PAT_OTHER:I
-Landroid/icu/text/StringSearch$CEBuffer;->MIGHT_BE_JAMO_L(C)Z
-Landroid/icu/text/StringSearch$CEBuffer;->strSearch_:Landroid/icu/text/StringSearch;
-Landroid/icu/text/StringSearch$CEI;-><init>()V
-Landroid/icu/text/StringSearch$CEI;->ce_:J
-Landroid/icu/text/StringSearch$CEI;->highIndex_:I
-Landroid/icu/text/StringSearch$CEI;->lowIndex_:I
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;-><init>()V
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->bufferIndex_:I
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->buffer_:[Landroid/icu/text/StringSearch$CollationPCE$PCEI;
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->empty()Z
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->get()Landroid/icu/text/StringSearch$CollationPCE$PCEI;
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->put(JII)V
-Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->reset()V
-Landroid/icu/text/StringSearch$CollationPCE$PCEI;-><init>()V
-Landroid/icu/text/StringSearch$CollationPCE$PCEI;->ce_:J
-Landroid/icu/text/StringSearch$CollationPCE$PCEI;->high_:I
-Landroid/icu/text/StringSearch$CollationPCE$PCEI;->low_:I
-Landroid/icu/text/StringSearch$CollationPCE$Range;-><init>()V
-Landroid/icu/text/StringSearch$CollationPCE$Range;->ixHigh_:I
-Landroid/icu/text/StringSearch$CollationPCE$Range;->ixLow_:I
-Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;-><init>()V
-Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->bufferIndex_:I
-Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->buffer_:[Landroid/icu/text/StringSearch$CollationPCE$RCEI;
-Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->empty()Z
-Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->get()Landroid/icu/text/StringSearch$CollationPCE$RCEI;
-Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->put(III)V
-Landroid/icu/text/StringSearch$CollationPCE$RCEI;-><init>()V
-Landroid/icu/text/StringSearch$CollationPCE$RCEI;->ce_:I
-Landroid/icu/text/StringSearch$CollationPCE$RCEI;->high_:I
-Landroid/icu/text/StringSearch$CollationPCE$RCEI;->low_:I
-Landroid/icu/text/StringSearch$CollationPCE;-><init>(Landroid/icu/text/CollationElementIterator;)V
-Landroid/icu/text/StringSearch$CollationPCE;->BUFFER_GROW:I
-Landroid/icu/text/StringSearch$CollationPCE;->cei_:Landroid/icu/text/CollationElementIterator;
-Landroid/icu/text/StringSearch$CollationPCE;->CONTINUATION_MARKER:I
-Landroid/icu/text/StringSearch$CollationPCE;->DEFAULT_BUFFER_SIZE:I
-Landroid/icu/text/StringSearch$CollationPCE;->init(Landroid/icu/text/CollationElementIterator;)V
-Landroid/icu/text/StringSearch$CollationPCE;->init(Landroid/icu/text/RuleBasedCollator;)V
-Landroid/icu/text/StringSearch$CollationPCE;->isContinuation(I)Z
-Landroid/icu/text/StringSearch$CollationPCE;->isShifted_:Z
-Landroid/icu/text/StringSearch$CollationPCE;->nextProcessed(Landroid/icu/text/StringSearch$CollationPCE$Range;)J
-Landroid/icu/text/StringSearch$CollationPCE;->pceBuffer_:Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;
-Landroid/icu/text/StringSearch$CollationPCE;->previousProcessed(Landroid/icu/text/StringSearch$CollationPCE$Range;)J
-Landroid/icu/text/StringSearch$CollationPCE;->PRIMARYORDERMASK:I
-Landroid/icu/text/StringSearch$CollationPCE;->processCE(I)J
-Landroid/icu/text/StringSearch$CollationPCE;->PROCESSED_NULLORDER:J
-Landroid/icu/text/StringSearch$CollationPCE;->strength_:I
-Landroid/icu/text/StringSearch$CollationPCE;->toShift_:Z
-Landroid/icu/text/StringSearch$CollationPCE;->variableTop_:I
-Landroid/icu/text/StringSearch$Match;-><init>()V
-Landroid/icu/text/StringSearch$Match;->limit_:I
-Landroid/icu/text/StringSearch$Match;->start_:I
-Landroid/icu/text/StringSearch$Pattern;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/StringSearch$Pattern;->CELength_:I
-Landroid/icu/text/StringSearch$Pattern;->CE_:[I
-Landroid/icu/text/StringSearch$Pattern;->PCELength_:I
-Landroid/icu/text/StringSearch$Pattern;->PCE_:[J
-Landroid/icu/text/StringSearch$Pattern;->text_:Ljava/lang/String;
-Landroid/icu/text/StringSearch;->addToIntArray([IIII)[I
-Landroid/icu/text/StringSearch;->addToLongArray([JIIJI)[J
-Landroid/icu/text/StringSearch;->ceMask_:I
-Landroid/icu/text/StringSearch;->CE_LEVEL2_BASE:I
-Landroid/icu/text/StringSearch;->CE_LEVEL3_BASE:I
-Landroid/icu/text/StringSearch;->CE_MATCH:I
-Landroid/icu/text/StringSearch;->CE_NO_MATCH:I
-Landroid/icu/text/StringSearch;->CE_SKIP_PATN:I
-Landroid/icu/text/StringSearch;->CE_SKIP_TARG:I
-Landroid/icu/text/StringSearch;->checkIdentical(II)Z
-Landroid/icu/text/StringSearch;->codePointAt(Ljava/text/CharacterIterator;I)I
-Landroid/icu/text/StringSearch;->codePointBefore(Ljava/text/CharacterIterator;I)I
-Landroid/icu/text/StringSearch;->collator_:Landroid/icu/text/RuleBasedCollator;
-Landroid/icu/text/StringSearch;->compareCE64s(JJLandroid/icu/text/SearchIterator$ElementComparisonType;)I
-Landroid/icu/text/StringSearch;->getCE(I)I
-Landroid/icu/text/StringSearch;->getMask(I)I
-Landroid/icu/text/StringSearch;->getString(Ljava/text/CharacterIterator;II)Ljava/lang/String;
-Landroid/icu/text/StringSearch;->handleNextCanonical()Z
-Landroid/icu/text/StringSearch;->handleNextCommonImpl()Z
-Landroid/icu/text/StringSearch;->handleNextExact()Z
-Landroid/icu/text/StringSearch;->handlePreviousCanonical()Z
-Landroid/icu/text/StringSearch;->handlePreviousCommonImpl()Z
-Landroid/icu/text/StringSearch;->handlePreviousExact()Z
-Landroid/icu/text/StringSearch;->initialize()V
-Landroid/icu/text/StringSearch;->initializePattern()I
-Landroid/icu/text/StringSearch;->initializePatternCETable()I
-Landroid/icu/text/StringSearch;->initializePatternPCETable()I
-Landroid/icu/text/StringSearch;->INITIAL_ARRAY_SIZE_:I
-Landroid/icu/text/StringSearch;->initTextProcessedIter()Z
-Landroid/icu/text/StringSearch;->isBreakBoundary(I)Z
-Landroid/icu/text/StringSearch;->isOutOfBounds(III)Z
-Landroid/icu/text/StringSearch;->nextBoundaryAfter(I)I
-Landroid/icu/text/StringSearch;->nfd_:Landroid/icu/text/Normalizer2;
-Landroid/icu/text/StringSearch;->pattern_:Landroid/icu/text/StringSearch$Pattern;
-Landroid/icu/text/StringSearch;->PRIMARYORDERMASK:I
-Landroid/icu/text/StringSearch;->search(ILandroid/icu/text/StringSearch$Match;)Z
-Landroid/icu/text/StringSearch;->searchBackwards(ILandroid/icu/text/StringSearch$Match;)Z
-Landroid/icu/text/StringSearch;->SECONDARYORDERMASK:I
-Landroid/icu/text/StringSearch;->setMatchNotFound()V
-Landroid/icu/text/StringSearch;->strength_:I
-Landroid/icu/text/StringSearch;->TERTIARYORDERMASK:I
-Landroid/icu/text/StringSearch;->textIter_:Landroid/icu/text/CollationElementIterator;
-Landroid/icu/text/StringSearch;->textProcessedIter_:Landroid/icu/text/StringSearch$CollationPCE;
-Landroid/icu/text/StringSearch;->toShift_:Z
-Landroid/icu/text/StringSearch;->utilIter_:Landroid/icu/text/CollationElementIterator;
-Landroid/icu/text/StringSearch;->variableTop_:I
-Landroid/icu/text/StringTransform;->transform(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;-><init>(Ljava/util/Map;ILjava/util/Set;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->beenHere:Z
-Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->pluralKeywords:Ljava/util/Set;
-Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->style:I
-Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->timeUnitToCountToPatterns:Ljava/util/Map;
-Landroid/icu/text/TimeUnitFormat;-><init>()V
-Landroid/icu/text/TimeUnitFormat;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/text/TimeUnitFormat;-><init>(Landroid/icu/util/ULocale;I)V
-Landroid/icu/text/TimeUnitFormat;-><init>(Landroid/icu/util/ULocale;ILandroid/icu/text/NumberFormat;)V
-Landroid/icu/text/TimeUnitFormat;-><init>(Ljava/util/Locale;)V
-Landroid/icu/text/TimeUnitFormat;-><init>(Ljava/util/Locale;I)V
-Landroid/icu/text/TimeUnitFormat;->ABBREVIATED_NAME:I
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_DAY:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_HOUR:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_MINUTE:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_MONTH:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_SECOND:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_WEEK:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_YEAR:Ljava/lang/String;
-Landroid/icu/text/TimeUnitFormat;->format:Landroid/icu/text/NumberFormat;
-Landroid/icu/text/TimeUnitFormat;->FULL_NAME:I
-Landroid/icu/text/TimeUnitFormat;->isReady:Z
-Landroid/icu/text/TimeUnitFormat;->locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/TimeUnitFormat;->mf:Landroid/icu/text/MeasureFormat;
-Landroid/icu/text/TimeUnitFormat;->pluralRules:Landroid/icu/text/PluralRules;
-Landroid/icu/text/TimeUnitFormat;->searchInTree(Ljava/lang/String;ILandroid/icu/util/TimeUnit;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
-Landroid/icu/text/TimeUnitFormat;->setLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeUnitFormat;
-Landroid/icu/text/TimeUnitFormat;->setLocale(Ljava/util/Locale;)Landroid/icu/text/TimeUnitFormat;
-Landroid/icu/text/TimeUnitFormat;->setNumberFormat(Landroid/icu/text/NumberFormat;)Landroid/icu/text/TimeUnitFormat;
-Landroid/icu/text/TimeUnitFormat;->setup()V
-Landroid/icu/text/TimeUnitFormat;->setup(Ljava/lang/String;Ljava/util/Map;ILjava/util/Set;)V
-Landroid/icu/text/TimeUnitFormat;->style:I
-Landroid/icu/text/TimeUnitFormat;->timeUnitToCountToPatterns:Ljava/util/Map;
-Landroid/icu/text/TimeUnitFormat;->TOTAL_STYLES:I
-Landroid/icu/text/TimeZoneFormat$GMTOffsetField;-><init>(CI)V
-Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->getType()C
-Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->getWidth()I
-Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->isValid(CI)Z
-Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->_type:C
-Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->_width:I
-Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->defaultPattern()Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->isPositive()Z
-Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->required()Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->_defaultPattern:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->_isPositive:Z
-Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->_required:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat$OffsetFields;->H:Landroid/icu/text/TimeZoneFormat$OffsetFields;
-Landroid/icu/text/TimeZoneFormat$OffsetFields;->HM:Landroid/icu/text/TimeZoneFormat$OffsetFields;
-Landroid/icu/text/TimeZoneFormat$OffsetFields;->HMS:Landroid/icu/text/TimeZoneFormat$OffsetFields;
-Landroid/icu/text/TimeZoneFormat$OffsetFields;->valueOf(Ljava/lang/String;)Landroid/icu/text/TimeZoneFormat$OffsetFields;
-Landroid/icu/text/TimeZoneFormat$OffsetFields;->values()[Landroid/icu/text/TimeZoneFormat$OffsetFields;
-Landroid/icu/text/TimeZoneFormat$Style;->flag:I
-Landroid/icu/text/TimeZoneFormat$TimeZoneFormatCache;-><init>()V
-Landroid/icu/text/TimeZoneFormat$TimeZoneFormatCache;->createInstance(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneFormat;
-Landroid/icu/text/TimeZoneFormat;->ALL_GENERIC_NAME_TYPES:Ljava/util/EnumSet;
-Landroid/icu/text/TimeZoneFormat;->ALL_SIMPLE_NAME_TYPES:Ljava/util/EnumSet;
-Landroid/icu/text/TimeZoneFormat;->ALT_GMT_STRINGS:[Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->appendOffsetDigits(Ljava/lang/StringBuilder;II)V
-Landroid/icu/text/TimeZoneFormat;->ASCII_DIGITS:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->checkAbuttingHoursAndMinutes()V
-Landroid/icu/text/TimeZoneFormat;->DEFAULT_GMT_DIGITS:[Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->DEFAULT_GMT_OFFSET_SEP:C
-Landroid/icu/text/TimeZoneFormat;->DEFAULT_GMT_PATTERN:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->DEFAULT_GMT_ZERO:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->expandOffsetPattern(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->formatExemplarLocation(Landroid/icu/util/TimeZone;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->formatOffsetISO8601(IZZZZ)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->formatOffsetLocalizedGMT(IZ)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->formatSpecific(Landroid/icu/util/TimeZone;Landroid/icu/text/TimeZoneNames$NameType;Landroid/icu/text/TimeZoneNames$NameType;JLandroid/icu/util/Output;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->getTargetRegion()Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->getTimeType(Landroid/icu/text/TimeZoneNames$NameType;)Landroid/icu/text/TimeZoneFormat$TimeType;
-Landroid/icu/text/TimeZoneFormat;->getTimeZoneForOffset(I)Landroid/icu/util/TimeZone;
-Landroid/icu/text/TimeZoneFormat;->getTimeZoneGenericNames()Landroid/icu/impl/TimeZoneGenericNames;
-Landroid/icu/text/TimeZoneFormat;->getTimeZoneID(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->getTZDBTimeZoneNames()Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneFormat;->initGMTOffsetPatterns([Ljava/lang/String;)V
-Landroid/icu/text/TimeZoneFormat;->initGMTPattern(Ljava/lang/String;)V
-Landroid/icu/text/TimeZoneFormat;->ISO8601_UTC:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->ISO_LOCAL_STYLE_FLAG:I
-Landroid/icu/text/TimeZoneFormat;->ISO_Z_STYLE_FLAG:I
-Landroid/icu/text/TimeZoneFormat;->MAX_OFFSET:I
-Landroid/icu/text/TimeZoneFormat;->MAX_OFFSET_HOUR:I
-Landroid/icu/text/TimeZoneFormat;->MAX_OFFSET_MINUTE:I
-Landroid/icu/text/TimeZoneFormat;->MAX_OFFSET_SECOND:I
-Landroid/icu/text/TimeZoneFormat;->MILLIS_PER_HOUR:I
-Landroid/icu/text/TimeZoneFormat;->MILLIS_PER_MINUTE:I
-Landroid/icu/text/TimeZoneFormat;->MILLIS_PER_SECOND:I
-Landroid/icu/text/TimeZoneFormat;->parseAbuttingAsciiOffsetFields(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/TimeZoneFormat$OffsetFields;Landroid/icu/text/TimeZoneFormat$OffsetFields;Z)I
-Landroid/icu/text/TimeZoneFormat;->parseAbuttingOffsetFields(Ljava/lang/String;I[I)I
-Landroid/icu/text/TimeZoneFormat;->parseAsciiOffsetFields(Ljava/lang/String;Ljava/text/ParsePosition;CLandroid/icu/text/TimeZoneFormat$OffsetFields;Landroid/icu/text/TimeZoneFormat$OffsetFields;)I
-Landroid/icu/text/TimeZoneFormat;->parseDefaultOffsetFields(Ljava/lang/String;IC[I)I
-Landroid/icu/text/TimeZoneFormat;->parseExemplarLocation(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->parseOffsetDefaultLocalizedGMT(Ljava/lang/String;I[I)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetFields(Ljava/lang/String;IZ[I)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetFieldsWithPattern(Ljava/lang/String;I[Ljava/lang/Object;Z[I)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetFieldWithLocalizedDigits(Ljava/lang/String;IIIII[I)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetISO8601(Ljava/lang/String;Ljava/text/ParsePosition;ZLandroid/icu/util/Output;)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetLocalizedGMT(Ljava/lang/String;Ljava/text/ParsePosition;ZLandroid/icu/util/Output;)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetLocalizedGMTPattern(Ljava/lang/String;IZ[I)I
-Landroid/icu/text/TimeZoneFormat;->parseOffsetPattern(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Object;
-Landroid/icu/text/TimeZoneFormat;->parseShortZoneID(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->parseSingleLocalizedDigit(Ljava/lang/String;I[I)I
-Landroid/icu/text/TimeZoneFormat;->parseZoneID(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->PARSE_GMT_OFFSET_TYPES:[Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;
-Landroid/icu/text/TimeZoneFormat;->SHORT_ZONE_ID_TRIE:Landroid/icu/impl/TextTrieMap;
-Landroid/icu/text/TimeZoneFormat;->toCodePoints(Ljava/lang/String;)[Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->truncateOffsetPattern(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->TZID_GMT:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->UNKNOWN_LOCATION:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->UNKNOWN_OFFSET:I
-Landroid/icu/text/TimeZoneFormat;->UNKNOWN_SHORT_ZONE_ID:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->UNKNOWN_ZONE_ID:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->unquote(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->ZONE_ID_TRIE:Landroid/icu/impl/TextTrieMap;
-Landroid/icu/text/TimeZoneFormat;->_abuttingOffsetHoursAndMinutes:Z
-Landroid/icu/text/TimeZoneFormat;->_frozen:Z
-Landroid/icu/text/TimeZoneFormat;->_gmtOffsetDigits:[Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_gmtOffsetPatternItems:[[Ljava/lang/Object;
-Landroid/icu/text/TimeZoneFormat;->_gmtOffsetPatterns:[Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_gmtPattern:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_gmtPatternPrefix:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_gmtPatternSuffix:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_gmtZeroFormat:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_gnames:Landroid/icu/impl/TimeZoneGenericNames;
-Landroid/icu/text/TimeZoneFormat;->_locale:Landroid/icu/util/ULocale;
-Landroid/icu/text/TimeZoneFormat;->_parseAllStyles:Z
-Landroid/icu/text/TimeZoneFormat;->_parseTZDBNames:Z
-Landroid/icu/text/TimeZoneFormat;->_region:Ljava/lang/String;
-Landroid/icu/text/TimeZoneFormat;->_tzdbNames:Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneFormat;->_tzfCache:Landroid/icu/text/TimeZoneFormat$TimeZoneFormatCache;
-Landroid/icu/text/TimeZoneFormat;->_tznames:Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneNames$Cache;-><init>()V
-Landroid/icu/text/TimeZoneNames$Cache;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames$FactoryImpl;->getTimeZoneNames(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;-><init>()V
-Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;->find(Ljava/lang/CharSequence;ILjava/util/EnumSet;)Ljava/util/Collection;
-Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;->INSTANCE:Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;
-Landroid/icu/text/TimeZoneNames$Factory;-><init>()V
-Landroid/icu/text/TimeZoneNames$Factory;->getTimeZoneNames(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/TimeZoneNames$MatchInfo;-><init>(Landroid/icu/text/TimeZoneNames$NameType;Ljava/lang/String;Ljava/lang/String;I)V
-Landroid/icu/text/TimeZoneNames$MatchInfo;->matchLength()I
-Landroid/icu/text/TimeZoneNames$MatchInfo;->mzID()Ljava/lang/String;
-Landroid/icu/text/TimeZoneNames$MatchInfo;->nameType()Landroid/icu/text/TimeZoneNames$NameType;
-Landroid/icu/text/TimeZoneNames$MatchInfo;->tzID()Ljava/lang/String;
-Landroid/icu/text/TimeZoneNames$MatchInfo;->_matchLength:I
-Landroid/icu/text/TimeZoneNames$MatchInfo;->_mzID:Ljava/lang/String;
-Landroid/icu/text/TimeZoneNames$MatchInfo;->_nameType:Landroid/icu/text/TimeZoneNames$NameType;
-Landroid/icu/text/TimeZoneNames$MatchInfo;->_tzID:Ljava/lang/String;
-Landroid/icu/text/TimeZoneNames;-><init>()V
-Landroid/icu/text/TimeZoneNames;->DEFAULT_FACTORY_CLASS:Ljava/lang/String;
-Landroid/icu/text/TimeZoneNames;->FACTORY_NAME_PROP:Ljava/lang/String;
-Landroid/icu/text/TimeZoneNames;->find(Ljava/lang/CharSequence;ILjava/util/EnumSet;)Ljava/util/Collection;
-Landroid/icu/text/TimeZoneNames;->getDisplayNames(Ljava/lang/String;[Landroid/icu/text/TimeZoneNames$NameType;J[Ljava/lang/String;I)V
-Landroid/icu/text/TimeZoneNames;->loadAllDisplayNames()V
-Landroid/icu/text/TimeZoneNames;->TZNAMES_CACHE:Landroid/icu/text/TimeZoneNames$Cache;
-Landroid/icu/text/TimeZoneNames;->TZNAMES_FACTORY:Landroid/icu/text/TimeZoneNames$Factory;
-Landroid/icu/text/Transform;->transform(Ljava/lang/Object;)Ljava/lang/Object;
-Landroid/icu/text/TransliterationRule;-><init>(Ljava/lang/String;IILjava/lang/String;II[Landroid/icu/text/UnicodeMatcher;ZZLandroid/icu/text/RuleBasedTransliterator$Data;)V
-Landroid/icu/text/TransliterationRule;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/TransliterationRule;->ANCHOR_END:I
-Landroid/icu/text/TransliterationRule;->ANCHOR_START:I
-Landroid/icu/text/TransliterationRule;->anteContext:Landroid/icu/text/StringMatcher;
-Landroid/icu/text/TransliterationRule;->anteContextLength:I
-Landroid/icu/text/TransliterationRule;->data:Landroid/icu/text/RuleBasedTransliterator$Data;
-Landroid/icu/text/TransliterationRule;->flags:B
-Landroid/icu/text/TransliterationRule;->getAnteContextLength()I
-Landroid/icu/text/TransliterationRule;->getIndexValue()I
-Landroid/icu/text/TransliterationRule;->key:Landroid/icu/text/StringMatcher;
-Landroid/icu/text/TransliterationRule;->keyLength:I
-Landroid/icu/text/TransliterationRule;->masks(Landroid/icu/text/TransliterationRule;)Z
-Landroid/icu/text/TransliterationRule;->matchAndReplace(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)I
-Landroid/icu/text/TransliterationRule;->matchesIndexValue(I)Z
-Landroid/icu/text/TransliterationRule;->output:Landroid/icu/text/UnicodeReplacer;
-Landroid/icu/text/TransliterationRule;->pattern:Ljava/lang/String;
-Landroid/icu/text/TransliterationRule;->posAfter(Landroid/icu/text/Replaceable;I)I
-Landroid/icu/text/TransliterationRule;->posBefore(Landroid/icu/text/Replaceable;I)I
-Landroid/icu/text/TransliterationRule;->postContext:Landroid/icu/text/StringMatcher;
-Landroid/icu/text/TransliterationRule;->segments:[Landroid/icu/text/UnicodeMatcher;
-Landroid/icu/text/TransliterationRule;->toRule(Z)Ljava/lang/String;
-Landroid/icu/text/TransliterationRuleSet;-><init>()V
-Landroid/icu/text/TransliterationRuleSet;->addRule(Landroid/icu/text/TransliterationRule;)V
-Landroid/icu/text/TransliterationRuleSet;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/TransliterationRuleSet;->freeze()V
-Landroid/icu/text/TransliterationRuleSet;->getMaximumContextLength()I
-Landroid/icu/text/TransliterationRuleSet;->index:[I
-Landroid/icu/text/TransliterationRuleSet;->maxContextLength:I
-Landroid/icu/text/TransliterationRuleSet;->rules:[Landroid/icu/text/TransliterationRule;
-Landroid/icu/text/TransliterationRuleSet;->ruleVector:Ljava/util/List;
-Landroid/icu/text/TransliterationRuleSet;->toRules(Z)Ljava/lang/String;
-Landroid/icu/text/TransliterationRuleSet;->transliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)Z
-Landroid/icu/text/Transliterator$Factory;->getInstance(Ljava/lang/String;)Landroid/icu/text/Transliterator;
-Landroid/icu/text/Transliterator$Position;-><init>()V
-Landroid/icu/text/Transliterator$Position;-><init>(III)V
-Landroid/icu/text/Transliterator$Position;-><init>(IIII)V
-Landroid/icu/text/Transliterator$Position;-><init>(Landroid/icu/text/Transliterator$Position;)V
-Landroid/icu/text/Transliterator$Position;->contextLimit:I
-Landroid/icu/text/Transliterator$Position;->contextStart:I
-Landroid/icu/text/Transliterator$Position;->limit:I
-Landroid/icu/text/Transliterator$Position;->set(Landroid/icu/text/Transliterator$Position;)V
-Landroid/icu/text/Transliterator$Position;->start:I
-Landroid/icu/text/Transliterator$Position;->validate(I)V
-Landroid/icu/text/Transliterator;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeFilter;)V
-Landroid/icu/text/Transliterator;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/Transliterator;->baseToRules(Z)Ljava/lang/String;
-Landroid/icu/text/Transliterator;->DEBUG:Z
-Landroid/icu/text/Transliterator;->displayNameCache:Ljava/util/Map;
-Landroid/icu/text/Transliterator;->filter:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/Transliterator;->filteredTransliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)V
-Landroid/icu/text/Transliterator;->filteredTransliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;ZZ)V
-Landroid/icu/text/Transliterator;->finishTransliteration(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;)V
-Landroid/icu/text/Transliterator;->FORWARD:I
-Landroid/icu/text/Transliterator;->getAvailableIDs()Ljava/util/Enumeration;
-Landroid/icu/text/Transliterator;->getAvailableSources()Ljava/util/Enumeration;
-Landroid/icu/text/Transliterator;->getAvailableTargets(Ljava/lang/String;)Ljava/util/Enumeration;
-Landroid/icu/text/Transliterator;->getAvailableVariants(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Enumeration;
-Landroid/icu/text/Transliterator;->getBasicInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/text/Transliterator;
-Landroid/icu/text/Transliterator;->getDisplayName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/Transliterator;->getDisplayName(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/text/Transliterator;->getDisplayName(Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String;
-Landroid/icu/text/Transliterator;->getElements()[Landroid/icu/text/Transliterator;
-Landroid/icu/text/Transliterator;->getFilter()Landroid/icu/text/UnicodeFilter;
-Landroid/icu/text/Transliterator;->getFilterAsUnicodeSet(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/Transliterator;->getID()Ljava/lang/String;
-Landroid/icu/text/Transliterator;->getInverse()Landroid/icu/text/Transliterator;
-Landroid/icu/text/Transliterator;->getMaximumContextLength()I
-Landroid/icu/text/Transliterator;->getSourceSet()Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/Transliterator;->getTargetSet()Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/Transliterator;->handleGetSourceSet()Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/Transliterator;->handleTransliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)V
-Landroid/icu/text/Transliterator;->ID:Ljava/lang/String;
-Landroid/icu/text/Transliterator;->ID_DELIM:C
-Landroid/icu/text/Transliterator;->ID_SEP:C
-Landroid/icu/text/Transliterator;->maximumContextLength:I
-Landroid/icu/text/Transliterator;->RB_DISPLAY_NAME_PATTERN:Ljava/lang/String;
-Landroid/icu/text/Transliterator;->RB_DISPLAY_NAME_PREFIX:Ljava/lang/String;
-Landroid/icu/text/Transliterator;->RB_RULE_BASED_IDS:Ljava/lang/String;
-Landroid/icu/text/Transliterator;->RB_SCRIPT_DISPLAY_NAME_PREFIX:Ljava/lang/String;
-Landroid/icu/text/Transliterator;->registerAlias(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/Transliterator;->registerAny()V
-Landroid/icu/text/Transliterator;->registerClass(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)V
-Landroid/icu/text/Transliterator;->registerFactory(Ljava/lang/String;Landroid/icu/text/Transliterator$Factory;)V
-Landroid/icu/text/Transliterator;->registerInstance(Landroid/icu/text/Transliterator;)V
-Landroid/icu/text/Transliterator;->registerInstance(Landroid/icu/text/Transliterator;Z)V
-Landroid/icu/text/Transliterator;->registerSpecialInverse(Ljava/lang/String;Ljava/lang/String;Z)V
-Landroid/icu/text/Transliterator;->registry:Landroid/icu/text/TransliteratorRegistry;
-Landroid/icu/text/Transliterator;->REVERSE:I
-Landroid/icu/text/Transliterator;->ROOT:Ljava/lang/String;
-Landroid/icu/text/Transliterator;->setFilter(Landroid/icu/text/UnicodeFilter;)V
-Landroid/icu/text/Transliterator;->setID(Ljava/lang/String;)V
-Landroid/icu/text/Transliterator;->setMaximumContextLength(I)V
-Landroid/icu/text/Transliterator;->toRules(Z)Ljava/lang/String;
-Landroid/icu/text/Transliterator;->transform(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/Transliterator;->transliterate(Landroid/icu/text/Replaceable;)V
-Landroid/icu/text/Transliterator;->transliterate(Landroid/icu/text/Replaceable;II)I
-Landroid/icu/text/Transliterator;->transliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;)V
-Landroid/icu/text/Transliterator;->transliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;I)V
-Landroid/icu/text/Transliterator;->unregister(Ljava/lang/String;)V
-Landroid/icu/text/Transliterator;->VARIANT_SEP:C
-Landroid/icu/text/TransliteratorRegistry$AliasEntry;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/TransliteratorRegistry$AliasEntry;->alias:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;-><init>(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->compoundFilter:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->dataVector:Ljava/util/List;
-Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->getInstance()Landroid/icu/text/Transliterator;
-Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->ID:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->idBlockVector:Ljava/util/List;
-Landroid/icu/text/TransliteratorRegistry$IDEnumeration;-><init>(Ljava/util/Enumeration;)V
-Landroid/icu/text/TransliteratorRegistry$IDEnumeration;->en:Ljava/util/Enumeration;
-Landroid/icu/text/TransliteratorRegistry$LocaleEntry;-><init>(Ljava/lang/String;I)V
-Landroid/icu/text/TransliteratorRegistry$LocaleEntry;->direction:I
-Landroid/icu/text/TransliteratorRegistry$LocaleEntry;->rule:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$ResourceEntry;-><init>(Ljava/lang/String;I)V
-Landroid/icu/text/TransliteratorRegistry$ResourceEntry;->direction:I
-Landroid/icu/text/TransliteratorRegistry$ResourceEntry;->resource:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;-><init>(Ljava/lang/String;)V
-Landroid/icu/text/TransliteratorRegistry$Spec;->get()Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;->getBundle()Ljava/util/ResourceBundle;
-Landroid/icu/text/TransliteratorRegistry$Spec;->getTop()Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;->hasFallback()Z
-Landroid/icu/text/TransliteratorRegistry$Spec;->isLocale()Z
-Landroid/icu/text/TransliteratorRegistry$Spec;->isNextLocale:Z
-Landroid/icu/text/TransliteratorRegistry$Spec;->isSpecLocale:Z
-Landroid/icu/text/TransliteratorRegistry$Spec;->next()Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;->nextSpec:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;->res:Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/text/TransliteratorRegistry$Spec;->reset()V
-Landroid/icu/text/TransliteratorRegistry$Spec;->scriptName:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;->setupNext()V
-Landroid/icu/text/TransliteratorRegistry$Spec;->spec:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry$Spec;->top:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry;-><init>()V
-Landroid/icu/text/TransliteratorRegistry;->ANY:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry;->availableIDs:Ljava/util/List;
-Landroid/icu/text/TransliteratorRegistry;->DEBUG:Z
-Landroid/icu/text/TransliteratorRegistry;->find(Ljava/lang/String;)[Ljava/lang/Object;
-Landroid/icu/text/TransliteratorRegistry;->find(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Object;
-Landroid/icu/text/TransliteratorRegistry;->findInBundle(Landroid/icu/text/TransliteratorRegistry$Spec;Landroid/icu/text/TransliteratorRegistry$Spec;Ljava/lang/String;I)[Ljava/lang/Object;
-Landroid/icu/text/TransliteratorRegistry;->findInDynamicStore(Landroid/icu/text/TransliteratorRegistry$Spec;Landroid/icu/text/TransliteratorRegistry$Spec;Ljava/lang/String;)[Ljava/lang/Object;
-Landroid/icu/text/TransliteratorRegistry;->findInStaticStore(Landroid/icu/text/TransliteratorRegistry$Spec;Landroid/icu/text/TransliteratorRegistry$Spec;Ljava/lang/String;)[Ljava/lang/Object;
-Landroid/icu/text/TransliteratorRegistry;->get(Ljava/lang/String;Ljava/lang/StringBuffer;)Landroid/icu/text/Transliterator;
-Landroid/icu/text/TransliteratorRegistry;->getAvailableIDs()Ljava/util/Enumeration;
-Landroid/icu/text/TransliteratorRegistry;->getAvailableSources()Ljava/util/Enumeration;
-Landroid/icu/text/TransliteratorRegistry;->getAvailableTargets(Ljava/lang/String;)Ljava/util/Enumeration;
-Landroid/icu/text/TransliteratorRegistry;->getAvailableVariants(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Enumeration;
-Landroid/icu/text/TransliteratorRegistry;->instantiateEntry(Ljava/lang/String;[Ljava/lang/Object;Ljava/lang/StringBuffer;)Landroid/icu/text/Transliterator;
-Landroid/icu/text/TransliteratorRegistry;->LOCALE_SEP:C
-Landroid/icu/text/TransliteratorRegistry;->NO_VARIANT:Ljava/lang/String;
-Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Landroid/icu/text/Transliterator$Factory;Z)V
-Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Landroid/icu/text/Transliterator;Z)V
-Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Ljava/lang/Class;Z)V
-Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Ljava/lang/String;IZ)V
-Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Ljava/lang/String;Z)V
-Landroid/icu/text/TransliteratorRegistry;->registerEntry(Ljava/lang/String;Ljava/lang/Object;Z)V
-Landroid/icu/text/TransliteratorRegistry;->registerEntry(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Z)V
-Landroid/icu/text/TransliteratorRegistry;->registerEntry(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Z)V
-Landroid/icu/text/TransliteratorRegistry;->registerSTV(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/TransliteratorRegistry;->registry:Ljava/util/Map;
-Landroid/icu/text/TransliteratorRegistry;->remove(Ljava/lang/String;)V
-Landroid/icu/text/TransliteratorRegistry;->removeSTV(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/text/TransliteratorRegistry;->specDAG:Ljava/util/Map;
-Landroid/icu/text/UFieldPosition;-><init>()V
-Landroid/icu/text/UFieldPosition;-><init>(I)V
-Landroid/icu/text/UFieldPosition;-><init>(Ljava/text/Format$Field;)V
-Landroid/icu/text/UFieldPosition;-><init>(Ljava/text/Format$Field;I)V
-Landroid/icu/text/UFieldPosition;->countVisibleFractionDigits:I
-Landroid/icu/text/UFieldPosition;->fractionDigits:J
-Landroid/icu/text/UFieldPosition;->getCountVisibleFractionDigits()I
-Landroid/icu/text/UFieldPosition;->getFractionDigits()J
-Landroid/icu/text/UFieldPosition;->setFractionDigits(IJ)V
-Landroid/icu/text/UFormat;->actualLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/UFormat;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/text/UFormat;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/text/UForwardCharacterIterator;->next()I
-Landroid/icu/text/UForwardCharacterIterator;->nextCodePoint()I
-Landroid/icu/text/UnhandledBreakEngine;-><init>()V
-Landroid/icu/text/UnhandledBreakEngine;->fHandled:Ljava/util/concurrent/atomic/AtomicReferenceArray;
-Landroid/icu/text/UnhandledBreakEngine;->findBreaks(Ljava/text/CharacterIterator;IIILandroid/icu/text/DictionaryBreakEngine$DequeI;)I
-Landroid/icu/text/UnhandledBreakEngine;->handleChar(II)V
-Landroid/icu/text/UnhandledBreakEngine;->handles(II)Z
-Landroid/icu/text/UnicodeCompressor;-><init>()V
-Landroid/icu/text/UnicodeCompressor;->compress(Ljava/lang/String;)[B
-Landroid/icu/text/UnicodeCompressor;->compress([CII)[B
-Landroid/icu/text/UnicodeCompressor;->compress([CII[I[BII)I
-Landroid/icu/text/UnicodeCompressor;->fCurrentWindow:I
-Landroid/icu/text/UnicodeCompressor;->findDynamicWindow(I)I
-Landroid/icu/text/UnicodeCompressor;->fIndexCount:[I
-Landroid/icu/text/UnicodeCompressor;->findStaticWindow(I)I
-Landroid/icu/text/UnicodeCompressor;->fMode:I
-Landroid/icu/text/UnicodeCompressor;->fOffsets:[I
-Landroid/icu/text/UnicodeCompressor;->fTimeStamp:I
-Landroid/icu/text/UnicodeCompressor;->fTimeStamps:[I
-Landroid/icu/text/UnicodeCompressor;->getLRDefinedWindow()I
-Landroid/icu/text/UnicodeCompressor;->inDynamicWindow(II)Z
-Landroid/icu/text/UnicodeCompressor;->inStaticWindow(II)Z
-Landroid/icu/text/UnicodeCompressor;->isCompressible(I)Z
-Landroid/icu/text/UnicodeCompressor;->makeIndex(I)I
-Landroid/icu/text/UnicodeCompressor;->reset()V
-Landroid/icu/text/UnicodeCompressor;->sSingleTagTable:[Z
-Landroid/icu/text/UnicodeCompressor;->sUnicodeTagTable:[Z
-Landroid/icu/text/UnicodeDecompressor;-><init>()V
-Landroid/icu/text/UnicodeDecompressor;->BUFSIZE:I
-Landroid/icu/text/UnicodeDecompressor;->decompress([B)Ljava/lang/String;
-Landroid/icu/text/UnicodeDecompressor;->decompress([BII)[C
-Landroid/icu/text/UnicodeDecompressor;->decompress([BII[I[CII)I
-Landroid/icu/text/UnicodeDecompressor;->fBuffer:[B
-Landroid/icu/text/UnicodeDecompressor;->fBufferLength:I
-Landroid/icu/text/UnicodeDecompressor;->fCurrentWindow:I
-Landroid/icu/text/UnicodeDecompressor;->fMode:I
-Landroid/icu/text/UnicodeDecompressor;->fOffsets:[I
-Landroid/icu/text/UnicodeDecompressor;->reset()V
-Landroid/icu/text/UnicodeFilter;-><init>()V
-Landroid/icu/text/UnicodeReplacer;->addReplacementSetTo(Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/UnicodeReplacer;->replace(Landroid/icu/text/Replaceable;II[I)I
-Landroid/icu/text/UnicodeReplacer;->toReplacerPattern(Z)Ljava/lang/String;
-Landroid/icu/text/UnicodeSet$EntryRange;-><init>()V
-Landroid/icu/text/UnicodeSet$EntryRangeIterator;->pos:I
-Landroid/icu/text/UnicodeSet$EntryRangeIterator;->result:Landroid/icu/text/UnicodeSet$EntryRange;
-Landroid/icu/text/UnicodeSet$Filter;->contains(I)Z
-Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;-><init>(I)V
-Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;->contains(I)Z
-Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;->mask:I
-Landroid/icu/text/UnicodeSet$IntPropertyFilter;-><init>(II)V
-Landroid/icu/text/UnicodeSet$IntPropertyFilter;->contains(I)Z
-Landroid/icu/text/UnicodeSet$IntPropertyFilter;->prop:I
-Landroid/icu/text/UnicodeSet$IntPropertyFilter;->value:I
-Landroid/icu/text/UnicodeSet$NumericValueFilter;-><init>(D)V
-Landroid/icu/text/UnicodeSet$NumericValueFilter;->contains(I)Z
-Landroid/icu/text/UnicodeSet$NumericValueFilter;->value:D
-Landroid/icu/text/UnicodeSet$ScriptExtensionsFilter;-><init>(I)V
-Landroid/icu/text/UnicodeSet$ScriptExtensionsFilter;->contains(I)Z
-Landroid/icu/text/UnicodeSet$ScriptExtensionsFilter;->script:I
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;-><init>(Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->buffer:[C
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->current:I
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->item:I
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->len:I
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->limit:I
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->sourceList:[I
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->sourceStrings:Ljava/util/TreeSet;
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->stringIterator:Ljava/util/Iterator;
-Landroid/icu/text/UnicodeSet$VersionFilter;-><init>(Landroid/icu/util/VersionInfo;)V
-Landroid/icu/text/UnicodeSet$VersionFilter;->contains(I)Z
-Landroid/icu/text/UnicodeSet$VersionFilter;->version:Landroid/icu/util/VersionInfo;
-Landroid/icu/text/UnicodeSet$XSymbolTable;-><init>()V
-Landroid/icu/text/UnicodeSet$XSymbolTable;->applyPropertyAlias(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/UnicodeSet;)Z
-Landroid/icu/text/UnicodeSet;->add([III)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->addAllTo(Ljava/lang/Iterable;Ljava/util/Collection;)Ljava/util/Collection;
-Landroid/icu/text/UnicodeSet;->addAllTo(Ljava/lang/Iterable;[Ljava/lang/Object;)[Ljava/lang/Object;
-Landroid/icu/text/UnicodeSet;->addAllTo([Ljava/lang/String;)[Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->addBridges(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->addCaseMapping(Landroid/icu/text/UnicodeSet;ILjava/lang/StringBuilder;)V
-Landroid/icu/text/UnicodeSet;->add_unchecked(I)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->add_unchecked(II)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->ANY_ID:Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->append(Ljava/lang/Appendable;Ljava/lang/CharSequence;)V
-Landroid/icu/text/UnicodeSet;->appendCodePoint(Ljava/lang/Appendable;I)V
-Landroid/icu/text/UnicodeSet;->appendNewPattern(Ljava/lang/Appendable;ZZ)Ljava/lang/Appendable;
-Landroid/icu/text/UnicodeSet;->applyFilter(Landroid/icu/text/UnicodeSet$Filter;I)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->applyPattern(Landroid/icu/impl/RuleCharacterIterator;Landroid/icu/text/SymbolTable;Ljava/lang/Appendable;I)V
-Landroid/icu/text/UnicodeSet;->applyPattern(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/SymbolTable;I)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->applyPropertyPattern(Landroid/icu/impl/RuleCharacterIterator;Ljava/lang/Appendable;Landroid/icu/text/SymbolTable;)V
-Landroid/icu/text/UnicodeSet;->applyPropertyPattern(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/SymbolTable;)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->ASCII_ID:Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->ASSIGNED:Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->bmpSet:Landroid/icu/impl/BMPSet;
-Landroid/icu/text/UnicodeSet;->buffer:[I
-Landroid/icu/text/UnicodeSet;->checkFrozen()V
-Landroid/icu/text/UnicodeSet;->compare(ILjava/lang/CharSequence;)I
-Landroid/icu/text/UnicodeSet;->compare(Ljava/lang/CharSequence;I)I
-Landroid/icu/text/UnicodeSet;->compare(Ljava/lang/Iterable;Ljava/lang/Iterable;)I
-Landroid/icu/text/UnicodeSet;->compare(Ljava/util/Collection;Ljava/util/Collection;Landroid/icu/text/UnicodeSet$ComparisonStyle;)I
-Landroid/icu/text/UnicodeSet;->compare(Ljava/util/Iterator;Ljava/util/Iterator;)I
-Landroid/icu/text/UnicodeSet;->containsAll(Ljava/lang/String;I)Z
-Landroid/icu/text/UnicodeSet;->ensureBufferCapacity(I)V
-Landroid/icu/text/UnicodeSet;->ensureCapacity(I)V
-Landroid/icu/text/UnicodeSet;->findCodePoint(I)I
-Landroid/icu/text/UnicodeSet;->findIn(Ljava/lang/CharSequence;IZ)I
-Landroid/icu/text/UnicodeSet;->findLastIn(Ljava/lang/CharSequence;IZ)I
-Landroid/icu/text/UnicodeSet;->getDefaultXSymbolTable()Landroid/icu/text/UnicodeSet$XSymbolTable;
-Landroid/icu/text/UnicodeSet;->getInclusions(I)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->getRegexEquivalent()Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->getSingleCodePoint(Ljava/lang/CharSequence;)I
-Landroid/icu/text/UnicodeSet;->getSingleCP(Ljava/lang/CharSequence;)I
-Landroid/icu/text/UnicodeSet;->GROW_EXTRA:I
-Landroid/icu/text/UnicodeSet;->HIGH:I
-Landroid/icu/text/UnicodeSet;->INCLUSIONS:[Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->LAST0_START:I
-Landroid/icu/text/UnicodeSet;->LAST1_RANGE:I
-Landroid/icu/text/UnicodeSet;->LAST2_SET:I
-Landroid/icu/text/UnicodeSet;->len:I
-Landroid/icu/text/UnicodeSet;->list:[I
-Landroid/icu/text/UnicodeSet;->LOW:I
-Landroid/icu/text/UnicodeSet;->matchesAt(Ljava/lang/CharSequence;I)I
-Landroid/icu/text/UnicodeSet;->matchesAt(Ljava/lang/CharSequence;ILjava/lang/CharSequence;)I
-Landroid/icu/text/UnicodeSet;->matchRest(Landroid/icu/text/Replaceable;IILjava/lang/String;)I
-Landroid/icu/text/UnicodeSet;->max(II)I
-Landroid/icu/text/UnicodeSet;->MODE0_NONE:I
-Landroid/icu/text/UnicodeSet;->MODE1_INBRACKET:I
-Landroid/icu/text/UnicodeSet;->MODE2_OUTBRACKET:I
-Landroid/icu/text/UnicodeSet;->mungeCharName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->NO_VERSION:Landroid/icu/util/VersionInfo;
-Landroid/icu/text/UnicodeSet;->pat:Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->range(II)[I
-Landroid/icu/text/UnicodeSet;->rangeList:[I
-Landroid/icu/text/UnicodeSet;->resemblesPattern(Ljava/lang/String;I)Z
-Landroid/icu/text/UnicodeSet;->resemblesPropertyPattern(Landroid/icu/impl/RuleCharacterIterator;I)Z
-Landroid/icu/text/UnicodeSet;->resemblesPropertyPattern(Ljava/lang/String;I)Z
-Landroid/icu/text/UnicodeSet;->retain([III)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->setDefaultXSymbolTable(Landroid/icu/text/UnicodeSet$XSymbolTable;)V
-Landroid/icu/text/UnicodeSet;->SETMODE0_NONE:I
-Landroid/icu/text/UnicodeSet;->SETMODE1_UNICODESET:I
-Landroid/icu/text/UnicodeSet;->SETMODE2_PROPERTYPAT:I
-Landroid/icu/text/UnicodeSet;->SETMODE3_PREPARSED:I
-Landroid/icu/text/UnicodeSet;->spanAndCount(Ljava/lang/CharSequence;ILandroid/icu/text/UnicodeSet$SpanCondition;Landroid/icu/util/OutputInt;)I
-Landroid/icu/text/UnicodeSet;->spanCodePointsAndCount(Ljava/lang/CharSequence;ILandroid/icu/text/UnicodeSet$SpanCondition;Landroid/icu/util/OutputInt;)I
-Landroid/icu/text/UnicodeSet;->START_EXTRA:I
-Landroid/icu/text/UnicodeSet;->strings:Ljava/util/TreeSet;
-Landroid/icu/text/UnicodeSet;->stringSpan:Landroid/icu/impl/UnicodeSetStringSpan;
-Landroid/icu/text/UnicodeSet;->stripFrom(Ljava/lang/CharSequence;Z)Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->syntaxError(Landroid/icu/impl/RuleCharacterIterator;Ljava/lang/String;)V
-Landroid/icu/text/UnicodeSet;->toArray(Landroid/icu/text/UnicodeSet;)[Ljava/lang/String;
-Landroid/icu/text/UnicodeSet;->xor([III)Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSet;->XSYMBOL_TABLE:Landroid/icu/text/UnicodeSet$XSymbolTable;
-Landroid/icu/text/UnicodeSet;->_appendToPat(Ljava/lang/Appendable;IZ)Ljava/lang/Appendable;
-Landroid/icu/text/UnicodeSet;->_appendToPat(Ljava/lang/Appendable;Ljava/lang/String;Z)Ljava/lang/Appendable;
-Landroid/icu/text/UnicodeSet;->_toPattern(Ljava/lang/Appendable;Z)Ljava/lang/Appendable;
-Landroid/icu/text/UnicodeSetIterator;->endElement:I
-Landroid/icu/text/UnicodeSetIterator;->endRange:I
-Landroid/icu/text/UnicodeSetIterator;->getSet()Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSetIterator;->loadRange(I)V
-Landroid/icu/text/UnicodeSetIterator;->nextElement:I
-Landroid/icu/text/UnicodeSetIterator;->range:I
-Landroid/icu/text/UnicodeSetIterator;->set:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UnicodeSetIterator;->stringIterator:Ljava/util/Iterator;
-Landroid/icu/text/UnicodeSetSpanner;->unicodeSet:Landroid/icu/text/UnicodeSet;
-Landroid/icu/text/UTF16$StringComparator;-><init>()V
-Landroid/icu/text/UTF16$StringComparator;-><init>(ZZI)V
-Landroid/icu/text/UTF16$StringComparator;->CODE_POINT_COMPARE_SURROGATE_OFFSET_:I
-Landroid/icu/text/UTF16$StringComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/UTF16$StringComparator;->compareCaseInsensitive(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/UTF16$StringComparator;->compareCaseSensitive(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/UTF16$StringComparator;->FOLD_CASE_DEFAULT:I
-Landroid/icu/text/UTF16$StringComparator;->FOLD_CASE_EXCLUDE_SPECIAL_I:I
-Landroid/icu/text/UTF16$StringComparator;->getCodePointCompare()Z
-Landroid/icu/text/UTF16$StringComparator;->getIgnoreCase()Z
-Landroid/icu/text/UTF16$StringComparator;->getIgnoreCaseOption()I
-Landroid/icu/text/UTF16$StringComparator;->m_codePointCompare_:I
-Landroid/icu/text/UTF16$StringComparator;->m_foldCase_:I
-Landroid/icu/text/UTF16$StringComparator;->m_ignoreCase_:Z
-Landroid/icu/text/UTF16$StringComparator;->setCodePointCompare(Z)V
-Landroid/icu/text/UTF16$StringComparator;->setIgnoreCase(ZI)V
-Landroid/icu/text/UTF16;-><init>()V
-Landroid/icu/text/UTF16;->append(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/UTF16;->append([CII)I
-Landroid/icu/text/UTF16;->appendCodePoint(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/UTF16;->bounds(Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->bounds(Ljava/lang/StringBuffer;I)I
-Landroid/icu/text/UTF16;->bounds([CIII)I
-Landroid/icu/text/UTF16;->charAt(Landroid/icu/text/Replaceable;I)I
-Landroid/icu/text/UTF16;->charAt(Ljava/lang/CharSequence;I)I
-Landroid/icu/text/UTF16;->charAt(Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->charAt(Ljava/lang/StringBuffer;I)I
-Landroid/icu/text/UTF16;->charAt([CIII)I
-Landroid/icu/text/UTF16;->CODEPOINT_MAX_VALUE:I
-Landroid/icu/text/UTF16;->CODEPOINT_MIN_VALUE:I
-Landroid/icu/text/UTF16;->compareCodePoint(ILjava/lang/CharSequence;)I
-Landroid/icu/text/UTF16;->countCodePoint(Ljava/lang/String;)I
-Landroid/icu/text/UTF16;->countCodePoint(Ljava/lang/StringBuffer;)I
-Landroid/icu/text/UTF16;->countCodePoint([CII)I
-Landroid/icu/text/UTF16;->delete(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
-Landroid/icu/text/UTF16;->delete([CII)I
-Landroid/icu/text/UTF16;->findCodePointOffset(Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->findCodePointOffset(Ljava/lang/StringBuffer;I)I
-Landroid/icu/text/UTF16;->findCodePointOffset([CIII)I
-Landroid/icu/text/UTF16;->findOffsetFromCodePoint(Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->findOffsetFromCodePoint(Ljava/lang/StringBuffer;I)I
-Landroid/icu/text/UTF16;->findOffsetFromCodePoint([CIII)I
-Landroid/icu/text/UTF16;->getCharCount(I)I
-Landroid/icu/text/UTF16;->getLeadSurrogate(I)C
-Landroid/icu/text/UTF16;->getSingleCodePoint(Ljava/lang/CharSequence;)I
-Landroid/icu/text/UTF16;->getTrailSurrogate(I)C
-Landroid/icu/text/UTF16;->hasMoreCodePointsThan(Ljava/lang/String;I)Z
-Landroid/icu/text/UTF16;->hasMoreCodePointsThan(Ljava/lang/StringBuffer;I)Z
-Landroid/icu/text/UTF16;->hasMoreCodePointsThan([CIII)Z
-Landroid/icu/text/UTF16;->indexOf(Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->indexOf(Ljava/lang/String;II)I
-Landroid/icu/text/UTF16;->indexOf(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/UTF16;->indexOf(Ljava/lang/String;Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->insert(Ljava/lang/StringBuffer;II)Ljava/lang/StringBuffer;
-Landroid/icu/text/UTF16;->insert([CIII)I
-Landroid/icu/text/UTF16;->isLeadSurrogate(C)Z
-Landroid/icu/text/UTF16;->isSurrogate(C)Z
-Landroid/icu/text/UTF16;->isTrailSurrogate(C)Z
-Landroid/icu/text/UTF16;->lastIndexOf(Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->lastIndexOf(Ljava/lang/String;II)I
-Landroid/icu/text/UTF16;->lastIndexOf(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/icu/text/UTF16;->lastIndexOf(Ljava/lang/String;Ljava/lang/String;I)I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_BITMASK:I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_BITS:I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_BOUNDARY:I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_MAX_VALUE:I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_MIN_VALUE:I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_OFFSET_:I
-Landroid/icu/text/UTF16;->LEAD_SURROGATE_SHIFT_:I
-Landroid/icu/text/UTF16;->moveCodePointOffset(Ljava/lang/String;II)I
-Landroid/icu/text/UTF16;->moveCodePointOffset(Ljava/lang/StringBuffer;II)I
-Landroid/icu/text/UTF16;->moveCodePointOffset([CIIII)I
-Landroid/icu/text/UTF16;->newString([III)Ljava/lang/String;
-Landroid/icu/text/UTF16;->replace(Ljava/lang/String;II)Ljava/lang/String;
-Landroid/icu/text/UTF16;->replace(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/text/UTF16;->reverse(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;
-Landroid/icu/text/UTF16;->setCharAt(Ljava/lang/StringBuffer;II)V
-Landroid/icu/text/UTF16;->setCharAt([CIII)I
-Landroid/icu/text/UTF16;->SINGLE_CHAR_BOUNDARY:I
-Landroid/icu/text/UTF16;->SUPPLEMENTARY_MIN_VALUE:I
-Landroid/icu/text/UTF16;->SURROGATE_BITMASK:I
-Landroid/icu/text/UTF16;->SURROGATE_BITS:I
-Landroid/icu/text/UTF16;->SURROGATE_MAX_VALUE:I
-Landroid/icu/text/UTF16;->SURROGATE_MIN_VALUE:I
-Landroid/icu/text/UTF16;->toString(I)Ljava/lang/String;
-Landroid/icu/text/UTF16;->TRAIL_SURROGATE_BITMASK:I
-Landroid/icu/text/UTF16;->TRAIL_SURROGATE_BITS:I
-Landroid/icu/text/UTF16;->TRAIL_SURROGATE_BOUNDARY:I
-Landroid/icu/text/UTF16;->TRAIL_SURROGATE_MASK_:I
-Landroid/icu/text/UTF16;->TRAIL_SURROGATE_MAX_VALUE:I
-Landroid/icu/text/UTF16;->TRAIL_SURROGATE_MIN_VALUE:I
-Landroid/icu/text/UTF16;->valueOf(I)Ljava/lang/String;
-Landroid/icu/text/UTF16;->valueOf(Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/text/UTF16;->valueOf(Ljava/lang/StringBuffer;I)Ljava/lang/String;
-Landroid/icu/text/UTF16;->valueOf([CIII)Ljava/lang/String;
-Landroid/icu/text/UTF16;->_charAt(Ljava/lang/CharSequence;IC)I
-Landroid/icu/text/UTF16;->_charAt(Ljava/lang/String;IC)I
-Landroid/icu/util/AnnualTimeZoneRule;-><init>(Ljava/lang/String;IILandroid/icu/util/DateTimeRule;II)V
-Landroid/icu/util/AnnualTimeZoneRule;->dateTimeRule:Landroid/icu/util/DateTimeRule;
-Landroid/icu/util/AnnualTimeZoneRule;->endYear:I
-Landroid/icu/util/AnnualTimeZoneRule;->getEndYear()I
-Landroid/icu/util/AnnualTimeZoneRule;->getFinalStart(II)Ljava/util/Date;
-Landroid/icu/util/AnnualTimeZoneRule;->getFirstStart(II)Ljava/util/Date;
-Landroid/icu/util/AnnualTimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/AnnualTimeZoneRule;->getPreviousStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/AnnualTimeZoneRule;->getRule()Landroid/icu/util/DateTimeRule;
-Landroid/icu/util/AnnualTimeZoneRule;->getStartInYear(III)Ljava/util/Date;
-Landroid/icu/util/AnnualTimeZoneRule;->getStartYear()I
-Landroid/icu/util/AnnualTimeZoneRule;->isEquivalentTo(Landroid/icu/util/TimeZoneRule;)Z
-Landroid/icu/util/AnnualTimeZoneRule;->isTransitionRule()Z
-Landroid/icu/util/AnnualTimeZoneRule;->MAX_YEAR:I
-Landroid/icu/util/AnnualTimeZoneRule;->startYear:I
-Landroid/icu/util/BasicTimeZone;-><init>()V
-Landroid/icu/util/BasicTimeZone;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/BasicTimeZone;->FORMER_LATTER_MASK:I
-Landroid/icu/util/BasicTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/BasicTimeZone;->getOffsetFromLocal(JII[I)V
-Landroid/icu/util/BasicTimeZone;->getPreviousTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/BasicTimeZone;->getSimpleTimeZoneRulesNear(J)[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/BasicTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/BasicTimeZone;->getTimeZoneRules(J)[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/BasicTimeZone;->hasEquivalentTransitions(Landroid/icu/util/TimeZone;JJ)Z
-Landroid/icu/util/BasicTimeZone;->hasEquivalentTransitions(Landroid/icu/util/TimeZone;JJZ)Z
-Landroid/icu/util/BasicTimeZone;->LOCAL_DST:I
-Landroid/icu/util/BasicTimeZone;->LOCAL_FORMER:I
-Landroid/icu/util/BasicTimeZone;->LOCAL_LATTER:I
-Landroid/icu/util/BasicTimeZone;->LOCAL_STD:I
-Landroid/icu/util/BasicTimeZone;->MILLIS_PER_YEAR:J
-Landroid/icu/util/BasicTimeZone;->STD_DST_MASK:I
-Landroid/icu/util/BuddhistCalendar;->BUDDHIST_ERA_START:I
-Landroid/icu/util/BuddhistCalendar;->GREGORIAN_EPOCH:I
-Landroid/icu/util/ByteArrayWrapper;-><init>()V
-Landroid/icu/util/ByteArrayWrapper;-><init>(Ljava/nio/ByteBuffer;)V
-Landroid/icu/util/ByteArrayWrapper;-><init>([BI)V
-Landroid/icu/util/ByteArrayWrapper;->append([BII)Landroid/icu/util/ByteArrayWrapper;
-Landroid/icu/util/ByteArrayWrapper;->bytes:[B
-Landroid/icu/util/ByteArrayWrapper;->compareTo(Landroid/icu/util/ByteArrayWrapper;)I
-Landroid/icu/util/ByteArrayWrapper;->copyBytes([BI[BII)V
-Landroid/icu/util/ByteArrayWrapper;->ensureCapacity(I)Landroid/icu/util/ByteArrayWrapper;
-Landroid/icu/util/ByteArrayWrapper;->releaseBytes()[B
-Landroid/icu/util/ByteArrayWrapper;->set([BII)Landroid/icu/util/ByteArrayWrapper;
-Landroid/icu/util/ByteArrayWrapper;->size:I
-Landroid/icu/util/BytesTrie$Entry;-><init>(I)V
-Landroid/icu/util/BytesTrie$Entry;->append(B)V
-Landroid/icu/util/BytesTrie$Entry;->append([BII)V
-Landroid/icu/util/BytesTrie$Entry;->byteAt(I)B
-Landroid/icu/util/BytesTrie$Entry;->bytes:[B
-Landroid/icu/util/BytesTrie$Entry;->bytesAsByteBuffer()Ljava/nio/ByteBuffer;
-Landroid/icu/util/BytesTrie$Entry;->bytesLength()I
-Landroid/icu/util/BytesTrie$Entry;->copyBytesTo([BI)V
-Landroid/icu/util/BytesTrie$Entry;->ensureCapacity(I)V
-Landroid/icu/util/BytesTrie$Entry;->length:I
-Landroid/icu/util/BytesTrie$Entry;->truncateString(I)V
-Landroid/icu/util/BytesTrie$Entry;->value:I
-Landroid/icu/util/BytesTrie$Iterator;-><init>([BIII)V
-Landroid/icu/util/BytesTrie$Iterator;->branchNext(II)I
-Landroid/icu/util/BytesTrie$Iterator;->bytes_:[B
-Landroid/icu/util/BytesTrie$Iterator;->entry_:Landroid/icu/util/BytesTrie$Entry;
-Landroid/icu/util/BytesTrie$Iterator;->initialPos_:I
-Landroid/icu/util/BytesTrie$Iterator;->initialRemainingMatchLength_:I
-Landroid/icu/util/BytesTrie$Iterator;->maxLength_:I
-Landroid/icu/util/BytesTrie$Iterator;->pos_:I
-Landroid/icu/util/BytesTrie$Iterator;->remainingMatchLength_:I
-Landroid/icu/util/BytesTrie$Iterator;->reset()Landroid/icu/util/BytesTrie$Iterator;
-Landroid/icu/util/BytesTrie$Iterator;->stack_:Ljava/util/ArrayList;
-Landroid/icu/util/BytesTrie$Iterator;->truncateAndStop()Landroid/icu/util/BytesTrie$Entry;
-Landroid/icu/util/BytesTrie$Result;->FINAL_VALUE:Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$Result;->hasNext()Z
-Landroid/icu/util/BytesTrie$Result;->hasValue()Z
-Landroid/icu/util/BytesTrie$Result;->INTERMEDIATE_VALUE:Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$Result;->matches()Z
-Landroid/icu/util/BytesTrie$Result;->NO_MATCH:Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$Result;->NO_VALUE:Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$Result;->valueOf(Ljava/lang/String;)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$Result;->values()[Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie$State;-><init>()V
-Landroid/icu/util/BytesTrie$State;->bytes:[B
-Landroid/icu/util/BytesTrie$State;->pos:I
-Landroid/icu/util/BytesTrie$State;->remainingMatchLength:I
-Landroid/icu/util/BytesTrie$State;->root:I
-Landroid/icu/util/BytesTrie;-><init>([BI)V
-Landroid/icu/util/BytesTrie;->append(Ljava/lang/Appendable;I)V
-Landroid/icu/util/BytesTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie;->bytes_:[B
-Landroid/icu/util/BytesTrie;->current()Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie;->findUniqueValue([BIJ)J
-Landroid/icu/util/BytesTrie;->findUniqueValueFromBranch([BIIJ)J
-Landroid/icu/util/BytesTrie;->first(I)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie;->getNextBranchBytes([BIILjava/lang/Appendable;)V
-Landroid/icu/util/BytesTrie;->getNextBytes(Ljava/lang/Appendable;)I
-Landroid/icu/util/BytesTrie;->getUniqueValue()J
-Landroid/icu/util/BytesTrie;->getValue()I
-Landroid/icu/util/BytesTrie;->iterator(I)Landroid/icu/util/BytesTrie$Iterator;
-Landroid/icu/util/BytesTrie;->iterator([BII)Landroid/icu/util/BytesTrie$Iterator;
-Landroid/icu/util/BytesTrie;->jumpByDelta([BI)I
-Landroid/icu/util/BytesTrie;->kFiveByteDeltaLead:I
-Landroid/icu/util/BytesTrie;->kFiveByteValueLead:I
-Landroid/icu/util/BytesTrie;->kFourByteDeltaLead:I
-Landroid/icu/util/BytesTrie;->kFourByteValueLead:I
-Landroid/icu/util/BytesTrie;->kMaxBranchLinearSubNodeLength:I
-Landroid/icu/util/BytesTrie;->kMaxLinearMatchLength:I
-Landroid/icu/util/BytesTrie;->kMaxOneByteDelta:I
-Landroid/icu/util/BytesTrie;->kMaxOneByteValue:I
-Landroid/icu/util/BytesTrie;->kMaxThreeByteDelta:I
-Landroid/icu/util/BytesTrie;->kMaxThreeByteValue:I
-Landroid/icu/util/BytesTrie;->kMaxTwoByteDelta:I
-Landroid/icu/util/BytesTrie;->kMaxTwoByteValue:I
-Landroid/icu/util/BytesTrie;->kMinLinearMatch:I
-Landroid/icu/util/BytesTrie;->kMinOneByteValueLead:I
-Landroid/icu/util/BytesTrie;->kMinThreeByteDeltaLead:I
-Landroid/icu/util/BytesTrie;->kMinThreeByteValueLead:I
-Landroid/icu/util/BytesTrie;->kMinTwoByteDeltaLead:I
-Landroid/icu/util/BytesTrie;->kMinTwoByteValueLead:I
-Landroid/icu/util/BytesTrie;->kMinValueLead:I
-Landroid/icu/util/BytesTrie;->kValueIsFinal:I
-Landroid/icu/util/BytesTrie;->next(I)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie;->next([BII)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie;->nextImpl(II)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie;->pos_:I
-Landroid/icu/util/BytesTrie;->readValue([BII)I
-Landroid/icu/util/BytesTrie;->remainingMatchLength_:I
-Landroid/icu/util/BytesTrie;->reset()Landroid/icu/util/BytesTrie;
-Landroid/icu/util/BytesTrie;->resetToState(Landroid/icu/util/BytesTrie$State;)Landroid/icu/util/BytesTrie;
-Landroid/icu/util/BytesTrie;->root_:I
-Landroid/icu/util/BytesTrie;->saveState(Landroid/icu/util/BytesTrie$State;)Landroid/icu/util/BytesTrie;
-Landroid/icu/util/BytesTrie;->skipDelta([BI)I
-Landroid/icu/util/BytesTrie;->skipValue(II)I
-Landroid/icu/util/BytesTrie;->skipValue([BI)I
-Landroid/icu/util/BytesTrie;->stop()V
-Landroid/icu/util/BytesTrie;->valueResults_:[Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrieBuilder$BytesAsCharSequence;-><init>([BI)V
-Landroid/icu/util/BytesTrieBuilder$BytesAsCharSequence;->len:I
-Landroid/icu/util/BytesTrieBuilder$BytesAsCharSequence;->s:[B
-Landroid/icu/util/BytesTrieBuilder;-><init>()V
-Landroid/icu/util/BytesTrieBuilder;->add([BII)Landroid/icu/util/BytesTrieBuilder;
-Landroid/icu/util/BytesTrieBuilder;->build(Landroid/icu/util/StringTrieBuilder$Option;)Landroid/icu/util/BytesTrie;
-Landroid/icu/util/BytesTrieBuilder;->buildByteBuffer(Landroid/icu/util/StringTrieBuilder$Option;)Ljava/nio/ByteBuffer;
-Landroid/icu/util/BytesTrieBuilder;->buildBytes(Landroid/icu/util/StringTrieBuilder$Option;)V
-Landroid/icu/util/BytesTrieBuilder;->bytes:[B
-Landroid/icu/util/BytesTrieBuilder;->bytesLength:I
-Landroid/icu/util/BytesTrieBuilder;->clear()Landroid/icu/util/BytesTrieBuilder;
-Landroid/icu/util/BytesTrieBuilder;->ensureCapacity(I)V
-Landroid/icu/util/BytesTrieBuilder;->getMaxBranchLinearSubNodeLength()I
-Landroid/icu/util/BytesTrieBuilder;->getMaxLinearMatchLength()I
-Landroid/icu/util/BytesTrieBuilder;->getMinLinearMatch()I
-Landroid/icu/util/BytesTrieBuilder;->intBytes:[B
-Landroid/icu/util/BytesTrieBuilder;->matchNodesCanHaveValues()Z
-Landroid/icu/util/BytesTrieBuilder;->write(I)I
-Landroid/icu/util/BytesTrieBuilder;->write(II)I
-Landroid/icu/util/BytesTrieBuilder;->write([BI)I
-Landroid/icu/util/BytesTrieBuilder;->writeDeltaTo(I)I
-Landroid/icu/util/BytesTrieBuilder;->writeValueAndFinal(IZ)I
-Landroid/icu/util/BytesTrieBuilder;->writeValueAndType(ZII)I
-Landroid/icu/util/Calendar$CalType;->BUDDHIST:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->CHINESE:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->COPTIC:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->DANGI:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ETHIOPIC:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ETHIOPIC_AMETE_ALEM:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->GREGORIAN:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->HEBREW:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->id:Ljava/lang/String;
-Landroid/icu/util/Calendar$CalType;->INDIAN:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ISLAMIC:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ISLAMIC_CIVIL:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ISLAMIC_RGSA:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ISLAMIC_TBLA:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ISLAMIC_UMALQURA:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ISO8601:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->JAPANESE:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->PERSIAN:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->ROC:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->UNKNOWN:Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->valueOf(Ljava/lang/String;)Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$CalType;->values()[Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar$FormatConfiguration;-><init>()V
-Landroid/icu/util/Calendar$FormatConfiguration;->cal:Landroid/icu/util/Calendar;
-Landroid/icu/util/Calendar$FormatConfiguration;->formatData:Landroid/icu/text/DateFormatSymbols;
-Landroid/icu/util/Calendar$FormatConfiguration;->getCalendar()Landroid/icu/util/Calendar;
-Landroid/icu/util/Calendar$FormatConfiguration;->getDateFormatSymbols()Landroid/icu/text/DateFormatSymbols;
-Landroid/icu/util/Calendar$FormatConfiguration;->getLocale()Landroid/icu/util/ULocale;
-Landroid/icu/util/Calendar$FormatConfiguration;->getOverrideString()Ljava/lang/String;
-Landroid/icu/util/Calendar$FormatConfiguration;->getPatternString()Ljava/lang/String;
-Landroid/icu/util/Calendar$FormatConfiguration;->loc:Landroid/icu/util/ULocale;
-Landroid/icu/util/Calendar$FormatConfiguration;->override:Ljava/lang/String;
-Landroid/icu/util/Calendar$FormatConfiguration;->pattern:Ljava/lang/String;
-Landroid/icu/util/Calendar$PatternData;-><init>([Ljava/lang/String;[Ljava/lang/String;)V
-Landroid/icu/util/Calendar$PatternData;->getDateTimePattern(I)Ljava/lang/String;
-Landroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar$PatternData;
-Landroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData;
-Landroid/icu/util/Calendar$PatternData;->overrides:[Ljava/lang/String;
-Landroid/icu/util/Calendar$PatternData;->patterns:[Ljava/lang/String;
-Landroid/icu/util/Calendar$WeekDataCache;-><init>()V
-Landroid/icu/util/Calendar$WeekDataCache;->createInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData;
-Landroid/icu/util/Calendar;->actualLocale:Landroid/icu/util/ULocale;
-Landroid/icu/util/Calendar;->areAllFieldsSet:Z
-Landroid/icu/util/Calendar;->areFieldsSet:Z
-Landroid/icu/util/Calendar;->areFieldsVirtuallySet:Z
-Landroid/icu/util/Calendar;->compare(Ljava/lang/Object;)J
-Landroid/icu/util/Calendar;->computeGregorianAndDOWFields(I)V
-Landroid/icu/util/Calendar;->computeMillisInDayLong()J
-Landroid/icu/util/Calendar;->computeWeekFields()V
-Landroid/icu/util/Calendar;->computeZoneOffset(JJ)I
-Landroid/icu/util/Calendar;->createInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar;
-Landroid/icu/util/Calendar;->DATE_PRECEDENCE:[[[I
-Landroid/icu/util/Calendar;->DEFAULT_PATTERNS:[Ljava/lang/String;
-Landroid/icu/util/Calendar;->DOW_PRECEDENCE:[[[I
-Landroid/icu/util/Calendar;->expandOverride(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/Calendar;->fields:[I
-Landroid/icu/util/Calendar;->FIELD_DIFF_MAX_INT:I
-Landroid/icu/util/Calendar;->FIELD_NAME:[Ljava/lang/String;
-Landroid/icu/util/Calendar;->findPreviousZoneTransitionTime(Landroid/icu/util/TimeZone;IJJ)Ljava/lang/Long;
-Landroid/icu/util/Calendar;->FIND_ZONE_TRANSITION_TIME_UNITS:[I
-Landroid/icu/util/Calendar;->firstDayOfWeek:I
-Landroid/icu/util/Calendar;->firstIslamicStartYearFromGrego(I)I
-Landroid/icu/util/Calendar;->formatHelper(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;II)Landroid/icu/text/DateFormat;
-Landroid/icu/util/Calendar;->getActualHelper(III)I
-Landroid/icu/util/Calendar;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/util/Calendar;->getCalendarTypeForLocale(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar$CalType;
-Landroid/icu/util/Calendar;->getDateTimeFormatString(Landroid/icu/util/ULocale;Ljava/lang/String;II)Ljava/lang/String;
-Landroid/icu/util/Calendar;->getDateTimePattern(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;I)Ljava/lang/String;
-Landroid/icu/util/Calendar;->getDayOfWeekType(I)I
-Landroid/icu/util/Calendar;->getDefaultDayInMonth(II)I
-Landroid/icu/util/Calendar;->getDefaultMonthInYear(I)I
-Landroid/icu/util/Calendar;->getImmediatePreviousZoneTransition(J)Ljava/lang/Long;
-Landroid/icu/util/Calendar;->getInstanceInternal(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar;
-Landroid/icu/util/Calendar;->getPatternData(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData;
-Landroid/icu/util/Calendar;->getPreviousZoneTransitionTime(Landroid/icu/util/TimeZone;JJ)Ljava/lang/Long;
-Landroid/icu/util/Calendar;->getRegionForCalendar(Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/Calendar;->getRelatedYear()I
-Landroid/icu/util/Calendar;->getWeekDataForRegionInternal(Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData;
-Landroid/icu/util/Calendar;->getWeekendTransition(I)I
-Landroid/icu/util/Calendar;->gregorianDayOfMonth:I
-Landroid/icu/util/Calendar;->gregorianDayOfYear:I
-Landroid/icu/util/Calendar;->gregorianMonth:I
-Landroid/icu/util/Calendar;->gregorianYear:I
-Landroid/icu/util/Calendar;->GREGORIAN_MONTH_COUNT:[[I
-Landroid/icu/util/Calendar;->gregoYearFromIslamicStart(I)I
-Landroid/icu/util/Calendar;->handleGetDateFormat(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;
-Landroid/icu/util/Calendar;->haveDefaultCentury()Z
-Landroid/icu/util/Calendar;->initInternal()V
-Landroid/icu/util/Calendar;->internalSetMask:I
-Landroid/icu/util/Calendar;->isTimeSet:Z
-Landroid/icu/util/Calendar;->lenient:Z
-Landroid/icu/util/Calendar;->LIMITS:[[I
-Landroid/icu/util/Calendar;->MAX_HOURS:I
-Landroid/icu/util/Calendar;->mergeOverrideStrings(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/Calendar;->minimalDaysInFirstWeek:I
-Landroid/icu/util/Calendar;->nextStamp:I
-Landroid/icu/util/Calendar;->PATTERN_CACHE:Landroid/icu/impl/ICUCache;
-Landroid/icu/util/Calendar;->QUOTE:C
-Landroid/icu/util/Calendar;->recalculateStamp()V
-Landroid/icu/util/Calendar;->repeatedWallTime:I
-Landroid/icu/util/Calendar;->setCalendarLocale(Landroid/icu/util/ULocale;)V
-Landroid/icu/util/Calendar;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
-Landroid/icu/util/Calendar;->setRelatedYear(I)V
-Landroid/icu/util/Calendar;->setWeekData(Ljava/lang/String;)V
-Landroid/icu/util/Calendar;->skippedWallTime:I
-Landroid/icu/util/Calendar;->stamp:[I
-Landroid/icu/util/Calendar;->STAMP_MAX:I
-Landroid/icu/util/Calendar;->time:J
-Landroid/icu/util/Calendar;->updateTime()V
-Landroid/icu/util/Calendar;->validLocale:Landroid/icu/util/ULocale;
-Landroid/icu/util/Calendar;->WEEKDAY:I
-Landroid/icu/util/Calendar;->WEEKEND:I
-Landroid/icu/util/Calendar;->weekendCease:I
-Landroid/icu/util/Calendar;->weekendCeaseMillis:I
-Landroid/icu/util/Calendar;->weekendOnset:I
-Landroid/icu/util/Calendar;->weekendOnsetMillis:I
-Landroid/icu/util/Calendar;->WEEKEND_CEASE:I
-Landroid/icu/util/Calendar;->WEEKEND_ONSET:I
-Landroid/icu/util/Calendar;->WEEK_DATA_CACHE:Landroid/icu/util/Calendar$WeekDataCache;
-Landroid/icu/util/Calendar;->zone:Landroid/icu/util/TimeZone;
-Landroid/icu/util/CaseInsensitiveString;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/CaseInsensitiveString;->foldCase(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/CaseInsensitiveString;->folded:Ljava/lang/String;
-Landroid/icu/util/CaseInsensitiveString;->getFolded()V
-Landroid/icu/util/CaseInsensitiveString;->getString()Ljava/lang/String;
-Landroid/icu/util/CaseInsensitiveString;->hash:I
-Landroid/icu/util/CaseInsensitiveString;->string:Ljava/lang/String;
-Landroid/icu/util/CECalendar;-><init>()V
-Landroid/icu/util/CECalendar;-><init>(III)V
-Landroid/icu/util/CECalendar;-><init>(IIIIII)V
-Landroid/icu/util/CECalendar;-><init>(Landroid/icu/util/TimeZone;)V
-Landroid/icu/util/CECalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V
-Landroid/icu/util/CECalendar;-><init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V
-Landroid/icu/util/CECalendar;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/util/CECalendar;-><init>(Ljava/util/Date;)V
-Landroid/icu/util/CECalendar;-><init>(Ljava/util/Locale;)V
-Landroid/icu/util/CECalendar;->ceToJD(JIII)I
-Landroid/icu/util/CECalendar;->getJDEpochOffset()I
-Landroid/icu/util/CECalendar;->jdToCE(II[I)V
-Landroid/icu/util/CECalendar;->LIMITS:[[I
-Landroid/icu/util/CharsTrie$Entry;-><init>()V
-Landroid/icu/util/CharsTrie$Entry;->chars:Ljava/lang/CharSequence;
-Landroid/icu/util/CharsTrie$Entry;->value:I
-Landroid/icu/util/CharsTrie$Iterator;-><init>(Ljava/lang/CharSequence;III)V
-Landroid/icu/util/CharsTrie$Iterator;->branchNext(II)I
-Landroid/icu/util/CharsTrie$Iterator;->chars_:Ljava/lang/CharSequence;
-Landroid/icu/util/CharsTrie$Iterator;->entry_:Landroid/icu/util/CharsTrie$Entry;
-Landroid/icu/util/CharsTrie$Iterator;->initialPos_:I
-Landroid/icu/util/CharsTrie$Iterator;->initialRemainingMatchLength_:I
-Landroid/icu/util/CharsTrie$Iterator;->maxLength_:I
-Landroid/icu/util/CharsTrie$Iterator;->pos_:I
-Landroid/icu/util/CharsTrie$Iterator;->remainingMatchLength_:I
-Landroid/icu/util/CharsTrie$Iterator;->reset()Landroid/icu/util/CharsTrie$Iterator;
-Landroid/icu/util/CharsTrie$Iterator;->skipValue_:Z
-Landroid/icu/util/CharsTrie$Iterator;->stack_:Ljava/util/ArrayList;
-Landroid/icu/util/CharsTrie$Iterator;->str_:Ljava/lang/StringBuilder;
-Landroid/icu/util/CharsTrie$Iterator;->truncateAndStop()Landroid/icu/util/CharsTrie$Entry;
-Landroid/icu/util/CharsTrie$State;-><init>()V
-Landroid/icu/util/CharsTrie$State;->chars:Ljava/lang/CharSequence;
-Landroid/icu/util/CharsTrie$State;->pos:I
-Landroid/icu/util/CharsTrie$State;->remainingMatchLength:I
-Landroid/icu/util/CharsTrie$State;->root:I
-Landroid/icu/util/CharsTrie;-><init>(Ljava/lang/CharSequence;I)V
-Landroid/icu/util/CharsTrie;->append(Ljava/lang/Appendable;I)V
-Landroid/icu/util/CharsTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->chars_:Ljava/lang/CharSequence;
-Landroid/icu/util/CharsTrie;->current()Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->findUniqueValue(Ljava/lang/CharSequence;IJ)J
-Landroid/icu/util/CharsTrie;->findUniqueValueFromBranch(Ljava/lang/CharSequence;IIJ)J
-Landroid/icu/util/CharsTrie;->first(I)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->firstForCodePoint(I)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->getNextBranchChars(Ljava/lang/CharSequence;IILjava/lang/Appendable;)V
-Landroid/icu/util/CharsTrie;->getNextChars(Ljava/lang/Appendable;)I
-Landroid/icu/util/CharsTrie;->getUniqueValue()J
-Landroid/icu/util/CharsTrie;->getValue()I
-Landroid/icu/util/CharsTrie;->iterator(I)Landroid/icu/util/CharsTrie$Iterator;
-Landroid/icu/util/CharsTrie;->iterator(Ljava/lang/CharSequence;II)Landroid/icu/util/CharsTrie$Iterator;
-Landroid/icu/util/CharsTrie;->jumpByDelta(Ljava/lang/CharSequence;I)I
-Landroid/icu/util/CharsTrie;->kMaxBranchLinearSubNodeLength:I
-Landroid/icu/util/CharsTrie;->kMaxLinearMatchLength:I
-Landroid/icu/util/CharsTrie;->kMaxOneUnitDelta:I
-Landroid/icu/util/CharsTrie;->kMaxOneUnitNodeValue:I
-Landroid/icu/util/CharsTrie;->kMaxOneUnitValue:I
-Landroid/icu/util/CharsTrie;->kMaxTwoUnitDelta:I
-Landroid/icu/util/CharsTrie;->kMaxTwoUnitNodeValue:I
-Landroid/icu/util/CharsTrie;->kMaxTwoUnitValue:I
-Landroid/icu/util/CharsTrie;->kMinLinearMatch:I
-Landroid/icu/util/CharsTrie;->kMinTwoUnitDeltaLead:I
-Landroid/icu/util/CharsTrie;->kMinTwoUnitNodeValueLead:I
-Landroid/icu/util/CharsTrie;->kMinTwoUnitValueLead:I
-Landroid/icu/util/CharsTrie;->kMinValueLead:I
-Landroid/icu/util/CharsTrie;->kNodeTypeMask:I
-Landroid/icu/util/CharsTrie;->kThreeUnitDeltaLead:I
-Landroid/icu/util/CharsTrie;->kThreeUnitNodeValueLead:I
-Landroid/icu/util/CharsTrie;->kThreeUnitValueLead:I
-Landroid/icu/util/CharsTrie;->kValueIsFinal:I
-Landroid/icu/util/CharsTrie;->next(I)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->next(Ljava/lang/CharSequence;II)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->nextForCodePoint(I)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->nextImpl(II)Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrie;->pos_:I
-Landroid/icu/util/CharsTrie;->readNodeValue(Ljava/lang/CharSequence;II)I
-Landroid/icu/util/CharsTrie;->readValue(Ljava/lang/CharSequence;II)I
-Landroid/icu/util/CharsTrie;->remainingMatchLength_:I
-Landroid/icu/util/CharsTrie;->reset()Landroid/icu/util/CharsTrie;
-Landroid/icu/util/CharsTrie;->resetToState(Landroid/icu/util/CharsTrie$State;)Landroid/icu/util/CharsTrie;
-Landroid/icu/util/CharsTrie;->root_:I
-Landroid/icu/util/CharsTrie;->saveState(Landroid/icu/util/CharsTrie$State;)Landroid/icu/util/CharsTrie;
-Landroid/icu/util/CharsTrie;->skipDelta(Ljava/lang/CharSequence;I)I
-Landroid/icu/util/CharsTrie;->skipNodeValue(II)I
-Landroid/icu/util/CharsTrie;->skipValue(II)I
-Landroid/icu/util/CharsTrie;->skipValue(Ljava/lang/CharSequence;I)I
-Landroid/icu/util/CharsTrie;->stop()V
-Landroid/icu/util/CharsTrie;->valueResults_:[Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/CharsTrieBuilder;-><init>()V
-Landroid/icu/util/CharsTrieBuilder;->add(Ljava/lang/CharSequence;I)Landroid/icu/util/CharsTrieBuilder;
-Landroid/icu/util/CharsTrieBuilder;->build(Landroid/icu/util/StringTrieBuilder$Option;)Landroid/icu/util/CharsTrie;
-Landroid/icu/util/CharsTrieBuilder;->buildChars(Landroid/icu/util/StringTrieBuilder$Option;)V
-Landroid/icu/util/CharsTrieBuilder;->buildCharSequence(Landroid/icu/util/StringTrieBuilder$Option;)Ljava/lang/CharSequence;
-Landroid/icu/util/CharsTrieBuilder;->chars:[C
-Landroid/icu/util/CharsTrieBuilder;->charsLength:I
-Landroid/icu/util/CharsTrieBuilder;->clear()Landroid/icu/util/CharsTrieBuilder;
-Landroid/icu/util/CharsTrieBuilder;->ensureCapacity(I)V
-Landroid/icu/util/CharsTrieBuilder;->getMaxBranchLinearSubNodeLength()I
-Landroid/icu/util/CharsTrieBuilder;->getMaxLinearMatchLength()I
-Landroid/icu/util/CharsTrieBuilder;->getMinLinearMatch()I
-Landroid/icu/util/CharsTrieBuilder;->intUnits:[C
-Landroid/icu/util/CharsTrieBuilder;->matchNodesCanHaveValues()Z
-Landroid/icu/util/CharsTrieBuilder;->write(I)I
-Landroid/icu/util/CharsTrieBuilder;->write(II)I
-Landroid/icu/util/CharsTrieBuilder;->write([CI)I
-Landroid/icu/util/CharsTrieBuilder;->writeDeltaTo(I)I
-Landroid/icu/util/CharsTrieBuilder;->writeValueAndFinal(IZ)I
-Landroid/icu/util/CharsTrieBuilder;->writeValueAndType(ZII)I
-Landroid/icu/util/ChineseCalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;ILandroid/icu/util/TimeZone;)V
-Landroid/icu/util/ChineseCalendar;->astro:Landroid/icu/impl/CalendarAstronomer;
-Landroid/icu/util/ChineseCalendar;->CHINA_ZONE:Landroid/icu/util/TimeZone;
-Landroid/icu/util/ChineseCalendar;->CHINESE_DATE_PRECEDENCE:[[[I
-Landroid/icu/util/ChineseCalendar;->CHINESE_EPOCH_YEAR:I
-Landroid/icu/util/ChineseCalendar;->computeChineseFields(IIIZ)V
-Landroid/icu/util/ChineseCalendar;->daysToMillis(I)J
-Landroid/icu/util/ChineseCalendar;->epochYear:I
-Landroid/icu/util/ChineseCalendar;->hasNoMajorSolarTerm(I)Z
-Landroid/icu/util/ChineseCalendar;->haveDefaultCentury()Z
-Landroid/icu/util/ChineseCalendar;->isLeapMonthBetween(II)Z
-Landroid/icu/util/ChineseCalendar;->isLeapYear:Z
-Landroid/icu/util/ChineseCalendar;->LIMITS:[[I
-Landroid/icu/util/ChineseCalendar;->majorSolarTerm(I)I
-Landroid/icu/util/ChineseCalendar;->millisToDays(J)I
-Landroid/icu/util/ChineseCalendar;->newMoonNear(IZ)I
-Landroid/icu/util/ChineseCalendar;->newYear(I)I
-Landroid/icu/util/ChineseCalendar;->newYearCache:Landroid/icu/impl/CalendarCache;
-Landroid/icu/util/ChineseCalendar;->offsetMonth(III)V
-Landroid/icu/util/ChineseCalendar;->synodicMonthsBetween(II)I
-Landroid/icu/util/ChineseCalendar;->SYNODIC_GAP:I
-Landroid/icu/util/ChineseCalendar;->winterSolstice(I)I
-Landroid/icu/util/ChineseCalendar;->winterSolsticeCache:Landroid/icu/impl/CalendarCache;
-Landroid/icu/util/ChineseCalendar;->zoneAstro:Landroid/icu/util/TimeZone;
-Landroid/icu/util/CompactByteArray;-><init>()V
-Landroid/icu/util/CompactByteArray;-><init>(B)V
-Landroid/icu/util/CompactByteArray;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/CompactByteArray;-><init>([C[B)V
-Landroid/icu/util/CompactByteArray;->arrayRegionMatches([BI[BII)Z
-Landroid/icu/util/CompactByteArray;->BLOCKCOUNT:I
-Landroid/icu/util/CompactByteArray;->BLOCKMASK:I
-Landroid/icu/util/CompactByteArray;->BLOCKSHIFT:I
-Landroid/icu/util/CompactByteArray;->blockTouched(I)Z
-Landroid/icu/util/CompactByteArray;->compact()V
-Landroid/icu/util/CompactByteArray;->compact(Z)V
-Landroid/icu/util/CompactByteArray;->defaultValue:B
-Landroid/icu/util/CompactByteArray;->elementAt(C)B
-Landroid/icu/util/CompactByteArray;->expand()V
-Landroid/icu/util/CompactByteArray;->getIndexArray()[C
-Landroid/icu/util/CompactByteArray;->getValueArray()[B
-Landroid/icu/util/CompactByteArray;->hashes:[I
-Landroid/icu/util/CompactByteArray;->INDEXCOUNT:I
-Landroid/icu/util/CompactByteArray;->INDEXSHIFT:I
-Landroid/icu/util/CompactByteArray;->indices:[C
-Landroid/icu/util/CompactByteArray;->isCompact:Z
-Landroid/icu/util/CompactByteArray;->setElementAt(CB)V
-Landroid/icu/util/CompactByteArray;->setElementAt(CCB)V
-Landroid/icu/util/CompactByteArray;->touchBlock(II)V
-Landroid/icu/util/CompactByteArray;->UNICODECOUNT:I
-Landroid/icu/util/CompactByteArray;->values:[B
-Landroid/icu/util/CompactCharArray;-><init>()V
-Landroid/icu/util/CompactCharArray;-><init>(C)V
-Landroid/icu/util/CompactCharArray;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/CompactCharArray;-><init>([C[C)V
-Landroid/icu/util/CompactCharArray;->arrayRegionMatches([CI[CII)Z
-Landroid/icu/util/CompactCharArray;->BLOCKCOUNT:I
-Landroid/icu/util/CompactCharArray;->BLOCKMASK:I
-Landroid/icu/util/CompactCharArray;->BLOCKSHIFT:I
-Landroid/icu/util/CompactCharArray;->blockTouched(I)Z
-Landroid/icu/util/CompactCharArray;->compact()V
-Landroid/icu/util/CompactCharArray;->compact(Z)V
-Landroid/icu/util/CompactCharArray;->defaultValue:C
-Landroid/icu/util/CompactCharArray;->elementAt(C)C
-Landroid/icu/util/CompactCharArray;->expand()V
-Landroid/icu/util/CompactCharArray;->FindOverlappingPosition(I[CI)I
-Landroid/icu/util/CompactCharArray;->getIndexArray()[C
-Landroid/icu/util/CompactCharArray;->getValueArray()[C
-Landroid/icu/util/CompactCharArray;->hashes:[I
-Landroid/icu/util/CompactCharArray;->INDEXCOUNT:I
-Landroid/icu/util/CompactCharArray;->INDEXSHIFT:I
-Landroid/icu/util/CompactCharArray;->indices:[C
-Landroid/icu/util/CompactCharArray;->isCompact:Z
-Landroid/icu/util/CompactCharArray;->setElementAt(CC)V
-Landroid/icu/util/CompactCharArray;->setElementAt(CCC)V
-Landroid/icu/util/CompactCharArray;->touchBlock(II)V
-Landroid/icu/util/CompactCharArray;->UNICODECOUNT:I
-Landroid/icu/util/CompactCharArray;->values:[C
-Landroid/icu/util/CopticCalendar;->BCE:I
-Landroid/icu/util/CopticCalendar;->CE:I
-Landroid/icu/util/CopticCalendar;->copticToJD(JII)I
-Landroid/icu/util/CopticCalendar;->getJDEpochOffset()I
-Landroid/icu/util/CopticCalendar;->JD_EPOCH_OFFSET:I
-Landroid/icu/util/Currency$CurrencyNameResultHandler;-><init>()V
-Landroid/icu/util/Currency$CurrencyNameResultHandler;->bestCurrencyISOCode:Ljava/lang/String;
-Landroid/icu/util/Currency$CurrencyNameResultHandler;->bestMatchLength:I
-Landroid/icu/util/Currency$CurrencyNameResultHandler;->getBestCurrencyISOCode()Ljava/lang/String;
-Landroid/icu/util/Currency$CurrencyNameResultHandler;->getBestMatchLength()I
-Landroid/icu/util/Currency$CurrencyNameResultHandler;->handlePrefixMatch(ILjava/util/Iterator;)Z
-Landroid/icu/util/Currency$CurrencyStringInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/Currency$CurrencyStringInfo;->currencyString:Ljava/lang/String;
-Landroid/icu/util/Currency$CurrencyStringInfo;->getCurrencyString()Ljava/lang/String;
-Landroid/icu/util/Currency$CurrencyStringInfo;->getISOCode()Ljava/lang/String;
-Landroid/icu/util/Currency$CurrencyStringInfo;->isoCode:Ljava/lang/String;
-Landroid/icu/util/Currency$EquivalenceRelation;-><init>()V
-Landroid/icu/util/Currency$EquivalenceRelation;->data:Ljava/util/Map;
-Landroid/icu/util/Currency$EquivalenceRelation;->get(Ljava/lang/Object;)Ljava/util/Set;
-Landroid/icu/util/Currency$ServiceShim;-><init>()V
-Landroid/icu/util/Currency$ServiceShim;->createInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Currency;
-Landroid/icu/util/Currency$ServiceShim;->getAvailableLocales()[Ljava/util/Locale;
-Landroid/icu/util/Currency$ServiceShim;->getAvailableULocales()[Landroid/icu/util/ULocale;
-Landroid/icu/util/Currency$ServiceShim;->registerInstance(Landroid/icu/util/Currency;Landroid/icu/util/ULocale;)Ljava/lang/Object;
-Landroid/icu/util/Currency$ServiceShim;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/util/Currency;->ALL_CODES_AS_SET:Ljava/lang/ref/SoftReference;
-Landroid/icu/util/Currency;->ALL_TENDER_CODES:Ljava/lang/ref/SoftReference;
-Landroid/icu/util/Currency;->createCurrency(Landroid/icu/util/ULocale;)Landroid/icu/util/Currency;
-Landroid/icu/util/Currency;->CURRENCY_NAME_CACHE:Landroid/icu/impl/ICUCache;
-Landroid/icu/util/Currency;->DEBUG:Z
-Landroid/icu/util/Currency;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
-Landroid/icu/util/Currency;->EQUIVALENT_CURRENCY_SYMBOLS:Landroid/icu/util/Currency$EquivalenceRelation;
-Landroid/icu/util/Currency;->EUR_STR:Ljava/lang/String;
-Landroid/icu/util/Currency;->fromJavaCurrency(Ljava/util/Currency;)Landroid/icu/util/Currency;
-Landroid/icu/util/Currency;->getAllCurrenciesAsSet()Ljava/util/Set;
-Landroid/icu/util/Currency;->getAllTenderCurrencies()Ljava/util/List;
-Landroid/icu/util/Currency;->getCurrencyTrieVec(Landroid/icu/util/ULocale;)Ljava/util/List;
-Landroid/icu/util/Currency;->getShim()Landroid/icu/util/Currency$ServiceShim;
-Landroid/icu/util/Currency;->getTenderCurrencies(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List;
-Landroid/icu/util/Currency;->isAlpha3Code(Ljava/lang/String;)Z
-Landroid/icu/util/Currency;->isoCode:Ljava/lang/String;
-Landroid/icu/util/Currency;->loadCurrency(Ljava/lang/String;)Landroid/icu/util/Currency;
-Landroid/icu/util/Currency;->NARROW_SYMBOL_NAME:I
-Landroid/icu/util/Currency;->openParseState(Landroid/icu/util/ULocale;II)Landroid/icu/impl/TextTrieMap$ParseState;
-Landroid/icu/util/Currency;->parse(Landroid/icu/util/ULocale;Ljava/lang/String;ILjava/text/ParsePosition;)Ljava/lang/String;
-Landroid/icu/util/Currency;->POW10:[I
-Landroid/icu/util/Currency;->regionCurrencyCache:Landroid/icu/impl/CacheBase;
-Landroid/icu/util/Currency;->registerInstance(Landroid/icu/util/Currency;Landroid/icu/util/ULocale;)Ljava/lang/Object;
-Landroid/icu/util/Currency;->setupCurrencyTrieVec(Landroid/icu/util/ULocale;Ljava/util/List;)V
-Landroid/icu/util/Currency;->shim:Landroid/icu/util/Currency$ServiceShim;
-Landroid/icu/util/Currency;->toJavaCurrency()Ljava/util/Currency;
-Landroid/icu/util/Currency;->UND:Landroid/icu/util/ULocale;
-Landroid/icu/util/Currency;->unregister(Ljava/lang/Object;)Z
-Landroid/icu/util/CurrencyAmount;-><init>(DLjava/util/Currency;)V
-Landroid/icu/util/CurrencyAmount;-><init>(Ljava/lang/Number;Ljava/util/Currency;)V
-Landroid/icu/util/DangiCalendar;-><init>()V
-Landroid/icu/util/DangiCalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V
-Landroid/icu/util/DangiCalendar;-><init>(Ljava/util/Date;)V
-Landroid/icu/util/DangiCalendar;->DANGI_EPOCH_YEAR:I
-Landroid/icu/util/DangiCalendar;->KOREA_ZONE:Landroid/icu/util/TimeZone;
-Landroid/icu/util/DateInterval;->fromDate:J
-Landroid/icu/util/DateInterval;->toDate:J
-Landroid/icu/util/DateRule;->firstAfter(Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/DateRule;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/DateRule;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z
-Landroid/icu/util/DateRule;->isOn(Ljava/util/Date;)Z
-Landroid/icu/util/DateTimeRule;-><init>(IIII)V
-Landroid/icu/util/DateTimeRule;-><init>(IIIII)V
-Landroid/icu/util/DateTimeRule;-><init>(IIIZII)V
-Landroid/icu/util/DateTimeRule;->dateRuleType:I
-Landroid/icu/util/DateTimeRule;->dayOfMonth:I
-Landroid/icu/util/DateTimeRule;->dayOfWeek:I
-Landroid/icu/util/DateTimeRule;->DOM:I
-Landroid/icu/util/DateTimeRule;->DOW:I
-Landroid/icu/util/DateTimeRule;->DOWSTR:[Ljava/lang/String;
-Landroid/icu/util/DateTimeRule;->DOW_GEQ_DOM:I
-Landroid/icu/util/DateTimeRule;->DOW_LEQ_DOM:I
-Landroid/icu/util/DateTimeRule;->getDateRuleType()I
-Landroid/icu/util/DateTimeRule;->getRuleDayOfMonth()I
-Landroid/icu/util/DateTimeRule;->getRuleDayOfWeek()I
-Landroid/icu/util/DateTimeRule;->getRuleMillisInDay()I
-Landroid/icu/util/DateTimeRule;->getRuleMonth()I
-Landroid/icu/util/DateTimeRule;->getRuleWeekInMonth()I
-Landroid/icu/util/DateTimeRule;->getTimeRuleType()I
-Landroid/icu/util/DateTimeRule;->millisInDay:I
-Landroid/icu/util/DateTimeRule;->MONSTR:[Ljava/lang/String;
-Landroid/icu/util/DateTimeRule;->month:I
-Landroid/icu/util/DateTimeRule;->STANDARD_TIME:I
-Landroid/icu/util/DateTimeRule;->timeRuleType:I
-Landroid/icu/util/DateTimeRule;->UTC_TIME:I
-Landroid/icu/util/DateTimeRule;->WALL_TIME:I
-Landroid/icu/util/DateTimeRule;->weekInMonth:I
-Landroid/icu/util/EasterHoliday;-><init>(ILjava/lang/String;)V
-Landroid/icu/util/EasterHoliday;-><init>(IZLjava/lang/String;)V
-Landroid/icu/util/EasterHoliday;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/EasterHoliday;->ASCENSION:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->ASH_WEDNESDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->CORPUS_CHRISTI:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->EASTER_MONDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->EASTER_SUNDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->GOOD_FRIDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->MAUNDY_THURSDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->PALM_SUNDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->PENTECOST:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->SHROVE_TUESDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->WHIT_MONDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EasterHoliday;->WHIT_SUNDAY:Landroid/icu/util/EasterHoliday;
-Landroid/icu/util/EthiopicCalendar;->AMETE_ALEM:I
-Landroid/icu/util/EthiopicCalendar;->AMETE_ALEM_ERA:I
-Landroid/icu/util/EthiopicCalendar;->AMETE_MIHRET:I
-Landroid/icu/util/EthiopicCalendar;->AMETE_MIHRET_DELTA:I
-Landroid/icu/util/EthiopicCalendar;->AMETE_MIHRET_ERA:I
-Landroid/icu/util/EthiopicCalendar;->eraType:I
-Landroid/icu/util/EthiopicCalendar;->EthiopicToJD(JII)I
-Landroid/icu/util/EthiopicCalendar;->getJDEpochOffset()I
-Landroid/icu/util/EthiopicCalendar;->JD_EPOCH_OFFSET_AMETE_MIHRET:I
-Landroid/icu/util/EthiopicCalendar;->setCalcTypeForLocale(Landroid/icu/util/ULocale;)V
-Landroid/icu/util/GenderInfo$Cache;-><init>()V
-Landroid/icu/util/GenderInfo$Cache;->cache:Landroid/icu/impl/ICUCache;
-Landroid/icu/util/GenderInfo$Cache;->get(Landroid/icu/util/ULocale;)Landroid/icu/util/GenderInfo;
-Landroid/icu/util/GenderInfo$Cache;->load(Landroid/icu/util/ULocale;)Landroid/icu/util/GenderInfo;
-Landroid/icu/util/GenderInfo$Gender;->FEMALE:Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo$Gender;->MALE:Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo$Gender;->OTHER:Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo$Gender;->valueOf(Ljava/lang/String;)Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo$Gender;->values()[Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->fromName(Ljava/lang/String;)Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->fromNameMap:Ljava/util/Map;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->MALE_TAINTS:Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->MIXED_NEUTRAL:Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->NEUTRAL:Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->valueOf(Ljava/lang/String;)Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo$ListGenderStyle;->values()[Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GenderInfo;-><init>(Landroid/icu/util/GenderInfo$ListGenderStyle;)V
-Landroid/icu/util/GenderInfo;->genderInfoCache:Landroid/icu/util/GenderInfo$Cache;
-Landroid/icu/util/GenderInfo;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/GenderInfo;
-Landroid/icu/util/GenderInfo;->getInstance(Ljava/util/Locale;)Landroid/icu/util/GenderInfo;
-Landroid/icu/util/GenderInfo;->getListGender(Ljava/util/List;)Landroid/icu/util/GenderInfo$Gender;
-Landroid/icu/util/GenderInfo;->neutral:Landroid/icu/util/GenderInfo;
-Landroid/icu/util/GenderInfo;->style:Landroid/icu/util/GenderInfo$ListGenderStyle;
-Landroid/icu/util/GlobalizationPreferences;-><init>()V
-Landroid/icu/util/GlobalizationPreferences;->available_locales:Ljava/util/HashMap;
-Landroid/icu/util/GlobalizationPreferences;->BI_CHARACTER:I
-Landroid/icu/util/GlobalizationPreferences;->BI_LIMIT:I
-Landroid/icu/util/GlobalizationPreferences;->BI_LINE:I
-Landroid/icu/util/GlobalizationPreferences;->BI_SENTENCE:I
-Landroid/icu/util/GlobalizationPreferences;->BI_TITLE:I
-Landroid/icu/util/GlobalizationPreferences;->BI_WORD:I
-Landroid/icu/util/GlobalizationPreferences;->breakIterators:[Landroid/icu/text/BreakIterator;
-Landroid/icu/util/GlobalizationPreferences;->calendar:Landroid/icu/util/Calendar;
-Landroid/icu/util/GlobalizationPreferences;->collator:Landroid/icu/text/Collator;
-Landroid/icu/util/GlobalizationPreferences;->currency:Landroid/icu/util/Currency;
-Landroid/icu/util/GlobalizationPreferences;->dateFormats:[[Landroid/icu/text/DateFormat;
-Landroid/icu/util/GlobalizationPreferences;->DF_FULL:I
-Landroid/icu/util/GlobalizationPreferences;->DF_LIMIT:I
-Landroid/icu/util/GlobalizationPreferences;->DF_LONG:I
-Landroid/icu/util/GlobalizationPreferences;->DF_MEDIUM:I
-Landroid/icu/util/GlobalizationPreferences;->DF_NONE:I
-Landroid/icu/util/GlobalizationPreferences;->DF_SHORT:I
-Landroid/icu/util/GlobalizationPreferences;->frozen:Z
-Landroid/icu/util/GlobalizationPreferences;->getAvailableLocale(I)Landroid/icu/util/ULocale;
-Landroid/icu/util/GlobalizationPreferences;->getBreakIterator(I)Landroid/icu/text/BreakIterator;
-Landroid/icu/util/GlobalizationPreferences;->getCalendar()Landroid/icu/util/Calendar;
-Landroid/icu/util/GlobalizationPreferences;->getCollator()Landroid/icu/text/Collator;
-Landroid/icu/util/GlobalizationPreferences;->getCurrency()Landroid/icu/util/Currency;
-Landroid/icu/util/GlobalizationPreferences;->getDateFormat(II)Landroid/icu/text/DateFormat;
-Landroid/icu/util/GlobalizationPreferences;->getDisplayName(Ljava/lang/String;I)Ljava/lang/String;
-Landroid/icu/util/GlobalizationPreferences;->getLocale(I)Landroid/icu/util/ULocale;
-Landroid/icu/util/GlobalizationPreferences;->getLocales()Ljava/util/List;
-Landroid/icu/util/GlobalizationPreferences;->getNumberFormat(I)Landroid/icu/text/NumberFormat;
-Landroid/icu/util/GlobalizationPreferences;->getResourceBundle(Ljava/lang/String;)Ljava/util/ResourceBundle;
-Landroid/icu/util/GlobalizationPreferences;->getResourceBundle(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/ResourceBundle;
-Landroid/icu/util/GlobalizationPreferences;->getTerritory()Ljava/lang/String;
-Landroid/icu/util/GlobalizationPreferences;->getTimeZone()Landroid/icu/util/TimeZone;
-Landroid/icu/util/GlobalizationPreferences;->guessBreakIterator(I)Landroid/icu/text/BreakIterator;
-Landroid/icu/util/GlobalizationPreferences;->guessCalendar()Landroid/icu/util/Calendar;
-Landroid/icu/util/GlobalizationPreferences;->guessCollator()Landroid/icu/text/Collator;
-Landroid/icu/util/GlobalizationPreferences;->guessCurrency()Landroid/icu/util/Currency;
-Landroid/icu/util/GlobalizationPreferences;->guessDateFormat(II)Landroid/icu/text/DateFormat;
-Landroid/icu/util/GlobalizationPreferences;->guessLocales()Ljava/util/List;
-Landroid/icu/util/GlobalizationPreferences;->guessNumberFormat(I)Landroid/icu/text/NumberFormat;
-Landroid/icu/util/GlobalizationPreferences;->guessTerritory()Ljava/lang/String;
-Landroid/icu/util/GlobalizationPreferences;->guessTimeZone()Landroid/icu/util/TimeZone;
-Landroid/icu/util/GlobalizationPreferences;->ID_CURRENCY:I
-Landroid/icu/util/GlobalizationPreferences;->ID_CURRENCY_SYMBOL:I
-Landroid/icu/util/GlobalizationPreferences;->ID_KEYWORD:I
-Landroid/icu/util/GlobalizationPreferences;->ID_KEYWORD_VALUE:I
-Landroid/icu/util/GlobalizationPreferences;->ID_LANGUAGE:I
-Landroid/icu/util/GlobalizationPreferences;->ID_LOCALE:I
-Landroid/icu/util/GlobalizationPreferences;->ID_SCRIPT:I
-Landroid/icu/util/GlobalizationPreferences;->ID_TERRITORY:I
-Landroid/icu/util/GlobalizationPreferences;->ID_TIMEZONE:I
-Landroid/icu/util/GlobalizationPreferences;->ID_VARIANT:I
-Landroid/icu/util/GlobalizationPreferences;->implicitLocales:Ljava/util/List;
-Landroid/icu/util/GlobalizationPreferences;->isAvailableLocale(Landroid/icu/util/ULocale;I)Z
-Landroid/icu/util/GlobalizationPreferences;->language_territory_hack:[[Ljava/lang/String;
-Landroid/icu/util/GlobalizationPreferences;->language_territory_hack_map:Ljava/util/Map;
-Landroid/icu/util/GlobalizationPreferences;->locales:Ljava/util/List;
-Landroid/icu/util/GlobalizationPreferences;->NF_CURRENCY:I
-Landroid/icu/util/GlobalizationPreferences;->NF_INTEGER:I
-Landroid/icu/util/GlobalizationPreferences;->NF_LIMIT:I
-Landroid/icu/util/GlobalizationPreferences;->NF_NUMBER:I
-Landroid/icu/util/GlobalizationPreferences;->NF_PERCENT:I
-Landroid/icu/util/GlobalizationPreferences;->NF_SCIENTIFIC:I
-Landroid/icu/util/GlobalizationPreferences;->numberFormats:[Landroid/icu/text/NumberFormat;
-Landroid/icu/util/GlobalizationPreferences;->processLocales(Ljava/util/List;)Ljava/util/List;
-Landroid/icu/util/GlobalizationPreferences;->reset()Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setBreakIterator(ILandroid/icu/text/BreakIterator;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setCalendar(Landroid/icu/util/Calendar;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setCollator(Landroid/icu/text/Collator;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setCurrency(Landroid/icu/util/Currency;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setDateFormat(IILandroid/icu/text/DateFormat;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setLocale(Landroid/icu/util/ULocale;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setLocales(Ljava/lang/String;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setLocales(Ljava/util/List;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setLocales([Landroid/icu/util/ULocale;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setNumberFormat(ILandroid/icu/text/NumberFormat;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setTerritory(Ljava/lang/String;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->setTimeZone(Landroid/icu/util/TimeZone;)Landroid/icu/util/GlobalizationPreferences;
-Landroid/icu/util/GlobalizationPreferences;->territory:Ljava/lang/String;
-Landroid/icu/util/GlobalizationPreferences;->territory_tzid_hack:[[Ljava/lang/String;
-Landroid/icu/util/GlobalizationPreferences;->territory_tzid_hack_map:Ljava/util/Map;
-Landroid/icu/util/GlobalizationPreferences;->timezone:Landroid/icu/util/TimeZone;
-Landroid/icu/util/GlobalizationPreferences;->TYPE_BREAKITERATOR:I
-Landroid/icu/util/GlobalizationPreferences;->TYPE_CALENDAR:I
-Landroid/icu/util/GlobalizationPreferences;->TYPE_COLLATOR:I
-Landroid/icu/util/GlobalizationPreferences;->TYPE_DATEFORMAT:I
-Landroid/icu/util/GlobalizationPreferences;->TYPE_GENERIC:I
-Landroid/icu/util/GlobalizationPreferences;->TYPE_LIMIT:I
-Landroid/icu/util/GlobalizationPreferences;->TYPE_NUMBERFORMAT:I
-Landroid/icu/util/GregorianCalendar;->cutoverJulianDay:I
-Landroid/icu/util/GregorianCalendar;->EPOCH_YEAR:I
-Landroid/icu/util/GregorianCalendar;->gregorianCutover:J
-Landroid/icu/util/GregorianCalendar;->gregorianCutoverYear:I
-Landroid/icu/util/GregorianCalendar;->inDaylightTime()Z
-Landroid/icu/util/GregorianCalendar;->LIMITS:[[I
-Landroid/icu/util/GregorianCalendar;->MONTH_COUNT:[[I
-Landroid/icu/util/HebrewCalendar;->BAHARAD:J
-Landroid/icu/util/HebrewCalendar;->cache:Landroid/icu/impl/CalendarCache;
-Landroid/icu/util/HebrewCalendar;->DAY_PARTS:J
-Landroid/icu/util/HebrewCalendar;->HOUR_PARTS:J
-Landroid/icu/util/HebrewCalendar;->isLeapYear(I)Z
-Landroid/icu/util/HebrewCalendar;->LEAP_MONTH_START:[[I
-Landroid/icu/util/HebrewCalendar;->LIMITS:[[I
-Landroid/icu/util/HebrewCalendar;->monthsInYear(I)I
-Landroid/icu/util/HebrewCalendar;->MONTH_DAYS:I
-Landroid/icu/util/HebrewCalendar;->MONTH_FRACT:J
-Landroid/icu/util/HebrewCalendar;->MONTH_LENGTH:[[I
-Landroid/icu/util/HebrewCalendar;->MONTH_PARTS:J
-Landroid/icu/util/HebrewCalendar;->MONTH_START:[[I
-Landroid/icu/util/HebrewCalendar;->startOfYear(I)J
-Landroid/icu/util/HebrewCalendar;->yearType(I)I
-Landroid/icu/util/HebrewHoliday;-><init>(IIILjava/lang/String;)V
-Landroid/icu/util/HebrewHoliday;-><init>(IILjava/lang/String;)V
-Landroid/icu/util/HebrewHoliday;->ESTHER:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->gCalendar:Landroid/icu/util/HebrewCalendar;
-Landroid/icu/util/HebrewHoliday;->GEDALIAH:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->HANUKKAH:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->HOSHANAH_RABBAH:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->LAG_BOMER:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->PASSOVER:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->PESACH_SHEINI:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->PURIM:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->ROSH_HASHANAH:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->SELIHOT:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->SHAVUOT:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->SHEMINI_ATZERET:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->SHUSHAN_PURIM:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->SIMCHAT_TORAH:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->SUKKOT:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->TAMMUZ_17:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->TEVET_10:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->TISHA_BAV:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->TU_BSHEVAT:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->YOM_HAATZMAUT:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->YOM_HASHOAH:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->YOM_HAZIKARON:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->YOM_KIPPUR:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/HebrewHoliday;->YOM_YERUSHALAYIM:Landroid/icu/util/HebrewHoliday;
-Landroid/icu/util/Holiday;-><init>(Ljava/lang/String;Landroid/icu/util/DateRule;)V
-Landroid/icu/util/Holiday;->firstAfter(Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/Holiday;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/Holiday;->getDisplayName()Ljava/lang/String;
-Landroid/icu/util/Holiday;->getDisplayName(Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/Holiday;->getDisplayName(Ljava/util/Locale;)Ljava/lang/String;
-Landroid/icu/util/Holiday;->getHolidays()[Landroid/icu/util/Holiday;
-Landroid/icu/util/Holiday;->getHolidays(Landroid/icu/util/ULocale;)[Landroid/icu/util/Holiday;
-Landroid/icu/util/Holiday;->getHolidays(Ljava/util/Locale;)[Landroid/icu/util/Holiday;
-Landroid/icu/util/Holiday;->getRule()Landroid/icu/util/DateRule;
-Landroid/icu/util/Holiday;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z
-Landroid/icu/util/Holiday;->isOn(Ljava/util/Date;)Z
-Landroid/icu/util/Holiday;->name:Ljava/lang/String;
-Landroid/icu/util/Holiday;->noHolidays:[Landroid/icu/util/Holiday;
-Landroid/icu/util/Holiday;->rule:Landroid/icu/util/DateRule;
-Landroid/icu/util/Holiday;->setRule(Landroid/icu/util/DateRule;)V
-Landroid/icu/util/ICUCloneNotSupportedException;-><init>()V
-Landroid/icu/util/ICUCloneNotSupportedException;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/ICUCloneNotSupportedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Landroid/icu/util/ICUCloneNotSupportedException;-><init>(Ljava/lang/Throwable;)V
-Landroid/icu/util/ICUException;-><init>()V
-Landroid/icu/util/ICUException;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/ICUException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Landroid/icu/util/ICUException;-><init>(Ljava/lang/Throwable;)V
-Landroid/icu/util/IllformedLocaleException;->_errIdx:I
-Landroid/icu/util/IndianCalendar;->gregorianToJD(III)D
-Landroid/icu/util/IndianCalendar;->IndianToJD(III)D
-Landroid/icu/util/IndianCalendar;->INDIAN_ERA_START:I
-Landroid/icu/util/IndianCalendar;->INDIAN_YEAR_START:I
-Landroid/icu/util/IndianCalendar;->isGregorianLeap(I)Z
-Landroid/icu/util/IndianCalendar;->jdToGregorian(D)[I
-Landroid/icu/util/IndianCalendar;->LIMITS:[[I
-Landroid/icu/util/InitialTimeZoneRule;-><init>(Ljava/lang/String;II)V
-Landroid/icu/util/InitialTimeZoneRule;->getFinalStart(II)Ljava/util/Date;
-Landroid/icu/util/InitialTimeZoneRule;->getFirstStart(II)Ljava/util/Date;
-Landroid/icu/util/InitialTimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/InitialTimeZoneRule;->getPreviousStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/InitialTimeZoneRule;->isEquivalentTo(Landroid/icu/util/TimeZoneRule;)Z
-Landroid/icu/util/InitialTimeZoneRule;->isTransitionRule()Z
-Landroid/icu/util/IslamicCalendar$CalculationType;->bcpType()Ljava/lang/String;
-Landroid/icu/util/IslamicCalendar$CalculationType;->bcpType:Ljava/lang/String;
-Landroid/icu/util/IslamicCalendar;->astro:Landroid/icu/impl/CalendarAstronomer;
-Landroid/icu/util/IslamicCalendar;->ASTRONOMICAL_EPOC:J
-Landroid/icu/util/IslamicCalendar;->cache:Landroid/icu/impl/CalendarCache;
-Landroid/icu/util/IslamicCalendar;->civil:Z
-Landroid/icu/util/IslamicCalendar;->civilLeapYear(I)Z
-Landroid/icu/util/IslamicCalendar;->CIVIL_EPOC:J
-Landroid/icu/util/IslamicCalendar;->cType:Landroid/icu/util/IslamicCalendar$CalculationType;
-Landroid/icu/util/IslamicCalendar;->HIJRA_MILLIS:J
-Landroid/icu/util/IslamicCalendar;->isCivil()Z
-Landroid/icu/util/IslamicCalendar;->LIMITS:[[I
-Landroid/icu/util/IslamicCalendar;->monthStart(II)J
-Landroid/icu/util/IslamicCalendar;->moonAge(J)D
-Landroid/icu/util/IslamicCalendar;->setCalcTypeForLocale(Landroid/icu/util/ULocale;)V
-Landroid/icu/util/IslamicCalendar;->setCivil(Z)V
-Landroid/icu/util/IslamicCalendar;->trueMonthStart(J)J
-Landroid/icu/util/IslamicCalendar;->UMALQURA_MONTHLENGTH:[I
-Landroid/icu/util/IslamicCalendar;->UMALQURA_YEAR_END:I
-Landroid/icu/util/IslamicCalendar;->UMALQURA_YEAR_START:I
-Landroid/icu/util/IslamicCalendar;->UMALQURA_YEAR_START_ESTIMATE_FIX:[B
-Landroid/icu/util/IslamicCalendar;->yearStart(I)J
-Landroid/icu/util/JapaneseCalendar;->ERAS:[I
-Landroid/icu/util/JapaneseCalendar;->getDefaultDayInMonth(II)I
-Landroid/icu/util/JapaneseCalendar;->getDefaultMonthInYear(I)I
-Landroid/icu/util/JapaneseCalendar;->GREGORIAN_EPOCH:I
-Landroid/icu/util/JapaneseCalendar;->haveDefaultCentury()Z
-Landroid/icu/util/LocaleData$MeasurementSystem;-><init>()V
-Landroid/icu/util/LocaleData$PaperSize;-><init>(II)V
-Landroid/icu/util/LocaleData$PaperSize;->height:I
-Landroid/icu/util/LocaleData$PaperSize;->width:I
-Landroid/icu/util/LocaleData;-><init>()V
-Landroid/icu/util/LocaleData;->bundle:Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/util/LocaleData;->DELIMITER_COUNT:I
-Landroid/icu/util/LocaleData;->DELIMITER_TYPES:[Ljava/lang/String;
-Landroid/icu/util/LocaleData;->ES_AUXILIARY:I
-Landroid/icu/util/LocaleData;->ES_COUNT:I
-Landroid/icu/util/LocaleData;->ES_CURRENCY:I
-Landroid/icu/util/LocaleData;->ES_INDEX:I
-Landroid/icu/util/LocaleData;->ES_PUNCTUATION:I
-Landroid/icu/util/LocaleData;->ES_STANDARD:I
-Landroid/icu/util/LocaleData;->gCLDRVersion:Landroid/icu/util/VersionInfo;
-Landroid/icu/util/LocaleData;->getExemplarSet(II)Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/LocaleData;->getExemplarSet(Landroid/icu/util/ULocale;I)Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/LocaleData;->getExemplarSet(Landroid/icu/util/ULocale;II)Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/LocaleData;->getLocaleDisplayPattern()Ljava/lang/String;
-Landroid/icu/util/LocaleData;->getLocaleSeparator()Ljava/lang/String;
-Landroid/icu/util/LocaleData;->langBundle:Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/util/LocaleData;->LOCALE_DISPLAY_PATTERN:Ljava/lang/String;
-Landroid/icu/util/LocaleData;->measurementTypeBundleForLocale(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/LocaleData;->MEASUREMENT_SYSTEM:Ljava/lang/String;
-Landroid/icu/util/LocaleData;->noSubstitute:Z
-Landroid/icu/util/LocaleData;->PAPER_SIZE:Ljava/lang/String;
-Landroid/icu/util/LocaleData;->PATTERN:Ljava/lang/String;
-Landroid/icu/util/LocaleData;->SEPARATOR:Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;-><init>()V
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->addDistance(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/icu/util/LocaleMatcher$LanguageMatcherData;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->addDistance(Ljava/lang/String;Ljava/lang/String;IZ)Landroid/icu/util/LocaleMatcher$LanguageMatcherData;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->addDistance(Ljava/lang/String;Ljava/lang/String;IZLjava/lang/String;)Landroid/icu/util/LocaleMatcher$LanguageMatcherData;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->frozen:Z
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->languageScores:Landroid/icu/util/LocaleMatcher$ScoreData;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->match(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)D
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->matchingLanguages()Landroid/icu/impl/Relation;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->matchingLanguages:Landroid/icu/impl/Relation;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->regionScores:Landroid/icu/util/LocaleMatcher$ScoreData;
-Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->scriptScores:Landroid/icu/util/LocaleMatcher$ScoreData;
-Landroid/icu/util/LocaleMatcher$Level;->language:Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$Level;->region:Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$Level;->script:Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$Level;->valueOf(Ljava/lang/String;)Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$Level;->values()[Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$Level;->worst:D
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getLanguage()Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getLevel()Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getRegion()Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getScript()Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->lang:Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->level:Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->matches(Landroid/icu/util/ULocale;)Z
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->pattern:Ljava/util/regex/Pattern;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->region:Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->script:Ljava/lang/String;
-Landroid/icu/util/LocaleMatcher$OutputDouble;-><init>()V
-Landroid/icu/util/LocaleMatcher$OutputDouble;->value:D
-Landroid/icu/util/LocaleMatcher$ScoreData;-><init>(Landroid/icu/util/LocaleMatcher$Level;)V
-Landroid/icu/util/LocaleMatcher$ScoreData;->addDataToScores(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/Row$R3;)V
-Landroid/icu/util/LocaleMatcher$ScoreData;->frozen:Z
-Landroid/icu/util/LocaleMatcher$ScoreData;->getMatchingLanguages()Landroid/icu/impl/Relation;
-Landroid/icu/util/LocaleMatcher$ScoreData;->getRawScore(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)D
-Landroid/icu/util/LocaleMatcher$ScoreData;->getScore(Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;)D
-Landroid/icu/util/LocaleMatcher$ScoreData;->level:Landroid/icu/util/LocaleMatcher$Level;
-Landroid/icu/util/LocaleMatcher$ScoreData;->maxUnequal_changeD_sameS:D
-Landroid/icu/util/LocaleMatcher$ScoreData;->maxUnequal_changeEqual:D
-Landroid/icu/util/LocaleMatcher$ScoreData;->scores:Ljava/util/LinkedHashSet;
-Landroid/icu/util/LocaleMatcher;-><init>(Landroid/icu/util/LocalePriorityList;)V
-Landroid/icu/util/LocaleMatcher;-><init>(Landroid/icu/util/LocalePriorityList;Landroid/icu/util/LocaleMatcher$LanguageMatcherData;)V
-Landroid/icu/util/LocaleMatcher;-><init>(Landroid/icu/util/LocalePriorityList;Landroid/icu/util/LocaleMatcher$LanguageMatcherData;D)V
-Landroid/icu/util/LocaleMatcher;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/LocaleMatcher;->add(Landroid/icu/util/ULocale;Ljava/lang/Double;)V
-Landroid/icu/util/LocaleMatcher;->addFiltered(Ljava/lang/String;Landroid/icu/impl/Row$R3;)V
-Landroid/icu/util/LocaleMatcher;->addLikelySubtags(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->canonicalize(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->canonicalMap:Ljava/util/HashMap;
-Landroid/icu/util/LocaleMatcher;->DEBUG:Z
-Landroid/icu/util/LocaleMatcher;->defaultLanguage:Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->defaultWritten:Landroid/icu/util/LocaleMatcher$LanguageMatcherData;
-Landroid/icu/util/LocaleMatcher;->DEFAULT_THRESHOLD:D
-Landroid/icu/util/LocaleMatcher;->desiredLanguageToPossibleLocalesToMaxLocaleToData:Ljava/util/Map;
-Landroid/icu/util/LocaleMatcher;->distance(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)I
-Landroid/icu/util/LocaleMatcher;->getBestMatch(Landroid/icu/util/LocalePriorityList;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->getBestMatch(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->getBestMatch(Ljava/lang/String;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->getBestMatch(Ljava/util/LinkedHashSet;Landroid/icu/util/Output;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->getBestMatchInternal(Landroid/icu/util/ULocale;Landroid/icu/util/LocaleMatcher$OutputDouble;)Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->getICUSupplementalData()Landroid/icu/impl/ICUResourceBundle;
-Landroid/icu/util/LocaleMatcher;->getLocaleMatcher()Landroid/icu/impl/locale/XLocaleMatcher;
-Landroid/icu/util/LocaleMatcher;->languagePriorityList:Landroid/icu/util/LocalePriorityList;
-Landroid/icu/util/LocaleMatcher;->localeToMaxLocaleAndWeight:Ljava/util/Set;
-Landroid/icu/util/LocaleMatcher;->match(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)D
-Landroid/icu/util/LocaleMatcher;->match(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)D
-Landroid/icu/util/LocaleMatcher;->matcherData:Landroid/icu/util/LocaleMatcher$LanguageMatcherData;
-Landroid/icu/util/LocaleMatcher;->processMapping()V
-Landroid/icu/util/LocaleMatcher;->setDefaultLanguage(Landroid/icu/util/ULocale;)Landroid/icu/util/LocaleMatcher;
-Landroid/icu/util/LocaleMatcher;->setFavorScript(Z)Landroid/icu/util/LocaleMatcher;
-Landroid/icu/util/LocaleMatcher;->threshold:D
-Landroid/icu/util/LocaleMatcher;->UNKNOWN_LOCALE:Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->xDefaultLanguage:Landroid/icu/util/ULocale;
-Landroid/icu/util/LocaleMatcher;->xFavorScript:Z
-Landroid/icu/util/LocaleMatcher;->xLocaleMatcher:Landroid/icu/impl/locale/XLocaleMatcher;
-Landroid/icu/util/LocalePriorityList$Builder;-><init>()V
-Landroid/icu/util/LocalePriorityList$Builder;->add(Landroid/icu/util/LocalePriorityList;)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList$Builder;->add(Landroid/icu/util/ULocale;)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList$Builder;->add(Landroid/icu/util/ULocale;D)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList$Builder;->add(Ljava/lang/String;)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList$Builder;->build()Landroid/icu/util/LocalePriorityList;
-Landroid/icu/util/LocalePriorityList$Builder;->build(Z)Landroid/icu/util/LocalePriorityList;
-Landroid/icu/util/LocalePriorityList$Builder;->languageToWeight:Ljava/util/Map;
-Landroid/icu/util/LocalePriorityList;-><init>(Ljava/util/Map;)V
-Landroid/icu/util/LocalePriorityList;->add(Landroid/icu/util/LocalePriorityList;)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList;->add(Landroid/icu/util/ULocale;D)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList;->add(Ljava/lang/String;)Landroid/icu/util/LocalePriorityList$Builder;
-Landroid/icu/util/LocalePriorityList;->D0:D
-Landroid/icu/util/LocalePriorityList;->D1:Ljava/lang/Double;
-Landroid/icu/util/LocalePriorityList;->getWeight(Landroid/icu/util/ULocale;)Ljava/lang/Double;
-Landroid/icu/util/LocalePriorityList;->languagesAndWeights:Ljava/util/Map;
-Landroid/icu/util/LocalePriorityList;->languageSplitter:Ljava/util/regex/Pattern;
-Landroid/icu/util/LocalePriorityList;->myDescendingDouble:Ljava/util/Comparator;
-Landroid/icu/util/LocalePriorityList;->weightSplitter:Ljava/util/regex/Pattern;
-Landroid/icu/util/Measure;->number:Ljava/lang/Number;
-Landroid/icu/util/Measure;->numbersEqual(Ljava/lang/Number;Ljava/lang/Number;)Z
-Landroid/icu/util/Measure;->unit:Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit$CurrencyNumericCodeSink;-><init>()V
-Landroid/icu/util/MeasureUnit$Factory;->create(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit$MeasureUnitProxy;-><init>()V
-Landroid/icu/util/MeasureUnit$MeasureUnitProxy;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/MeasureUnit$MeasureUnitProxy;->subType:Ljava/lang/String;
-Landroid/icu/util/MeasureUnit$MeasureUnitProxy;->type:Ljava/lang/String;
-Landroid/icu/util/MeasureUnit$MeasureUnitSink;-><init>()V
-Landroid/icu/util/MeasureUnit;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/MeasureUnit;->addUnit(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/MeasureUnit$Factory;)Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit;->ASCII:Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/MeasureUnit;->ASCII_HYPHEN_DIGITS:Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/MeasureUnit;->cache:Ljava/util/Map;
-Landroid/icu/util/MeasureUnit;->cacheIsPopulated:Z
-Landroid/icu/util/MeasureUnit;->CURRENCY_FACTORY:Landroid/icu/util/MeasureUnit$Factory;
-Landroid/icu/util/MeasureUnit;->internalGetInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit;->NOUNIT_FACTORY:Landroid/icu/util/MeasureUnit$Factory;
-Landroid/icu/util/MeasureUnit;->POINT:Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit;->populateCache()V
-Landroid/icu/util/MeasureUnit;->resolveUnitPerUnit(Landroid/icu/util/MeasureUnit;Landroid/icu/util/MeasureUnit;)Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/MeasureUnit;->subType:Ljava/lang/String;
-Landroid/icu/util/MeasureUnit;->TIMEUNIT_FACTORY:Landroid/icu/util/MeasureUnit$Factory;
-Landroid/icu/util/MeasureUnit;->type:Ljava/lang/String;
-Landroid/icu/util/MeasureUnit;->unitPerUnitToSingleUnit:Ljava/util/HashMap;
-Landroid/icu/util/MeasureUnit;->UNIT_FACTORY:Landroid/icu/util/MeasureUnit$Factory;
-Landroid/icu/util/NoUnit;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/NoUnit;->BASE:Landroid/icu/util/NoUnit;
-Landroid/icu/util/NoUnit;->PERCENT:Landroid/icu/util/NoUnit;
-Landroid/icu/util/NoUnit;->PERMILLE:Landroid/icu/util/NoUnit;
-Landroid/icu/util/OutputInt;-><init>()V
-Landroid/icu/util/OutputInt;-><init>(I)V
-Landroid/icu/util/OutputInt;->value:I
-Landroid/icu/util/PersianCalendar;-><init>()V
-Landroid/icu/util/PersianCalendar;-><init>(III)V
-Landroid/icu/util/PersianCalendar;-><init>(IIIIII)V
-Landroid/icu/util/PersianCalendar;-><init>(Landroid/icu/util/TimeZone;)V
-Landroid/icu/util/PersianCalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V
-Landroid/icu/util/PersianCalendar;-><init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V
-Landroid/icu/util/PersianCalendar;-><init>(Landroid/icu/util/ULocale;)V
-Landroid/icu/util/PersianCalendar;-><init>(Ljava/util/Date;)V
-Landroid/icu/util/PersianCalendar;->isLeapYear(I)Z
-Landroid/icu/util/PersianCalendar;->LIMITS:[[I
-Landroid/icu/util/PersianCalendar;->MONTH_COUNT:[[I
-Landroid/icu/util/PersianCalendar;->PERSIAN_EPOCH:I
-Landroid/icu/util/Range;-><init>(Ljava/util/Date;Landroid/icu/util/DateRule;)V
-Landroid/icu/util/Range;->rule:Landroid/icu/util/DateRule;
-Landroid/icu/util/Range;->start:Ljava/util/Date;
-Landroid/icu/util/RangeDateRule;-><init>()V
-Landroid/icu/util/RangeDateRule;->add(Landroid/icu/util/DateRule;)V
-Landroid/icu/util/RangeDateRule;->add(Ljava/util/Date;Landroid/icu/util/DateRule;)V
-Landroid/icu/util/RangeDateRule;->firstAfter(Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/RangeDateRule;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/RangeDateRule;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z
-Landroid/icu/util/RangeDateRule;->isOn(Ljava/util/Date;)Z
-Landroid/icu/util/RangeDateRule;->rangeAt(I)Landroid/icu/util/Range;
-Landroid/icu/util/RangeDateRule;->ranges:Ljava/util/List;
-Landroid/icu/util/RangeDateRule;->startIndex(Ljava/util/Date;)I
-Landroid/icu/util/Region$RegionType;->CONTINENT:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->DEPRECATED:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->GROUPING:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->SUBCONTINENT:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->TERRITORY:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->UNKNOWN:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->valueOf(Ljava/lang/String;)Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->values()[Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region$RegionType;->WORLD:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region;-><init>()V
-Landroid/icu/util/Region;->availableRegions:Ljava/util/ArrayList;
-Landroid/icu/util/Region;->code:I
-Landroid/icu/util/Region;->compareTo(Landroid/icu/util/Region;)I
-Landroid/icu/util/Region;->containedRegions:Ljava/util/Set;
-Landroid/icu/util/Region;->containingRegion:Landroid/icu/util/Region;
-Landroid/icu/util/Region;->contains(Landroid/icu/util/Region;)Z
-Landroid/icu/util/Region;->getAvailable(Landroid/icu/util/Region$RegionType;)Ljava/util/Set;
-Landroid/icu/util/Region;->getContainedRegions()Ljava/util/Set;
-Landroid/icu/util/Region;->getContainedRegions(Landroid/icu/util/Region$RegionType;)Ljava/util/Set;
-Landroid/icu/util/Region;->getContainingRegion()Landroid/icu/util/Region;
-Landroid/icu/util/Region;->getContainingRegion(Landroid/icu/util/Region$RegionType;)Landroid/icu/util/Region;
-Landroid/icu/util/Region;->getInstance(I)Landroid/icu/util/Region;
-Landroid/icu/util/Region;->getInstance(Ljava/lang/String;)Landroid/icu/util/Region;
-Landroid/icu/util/Region;->getNumericCode()I
-Landroid/icu/util/Region;->getPreferredValues()Ljava/util/List;
-Landroid/icu/util/Region;->getType()Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region;->id:Ljava/lang/String;
-Landroid/icu/util/Region;->loadRegionData()V
-Landroid/icu/util/Region;->numericCodeMap:Ljava/util/Map;
-Landroid/icu/util/Region;->OUTLYING_OCEANIA_REGION_ID:Ljava/lang/String;
-Landroid/icu/util/Region;->preferredValues:Ljava/util/List;
-Landroid/icu/util/Region;->regionAliases:Ljava/util/Map;
-Landroid/icu/util/Region;->regionDataIsLoaded:Z
-Landroid/icu/util/Region;->regionIDMap:Ljava/util/Map;
-Landroid/icu/util/Region;->regions:Ljava/util/ArrayList;
-Landroid/icu/util/Region;->type:Landroid/icu/util/Region$RegionType;
-Landroid/icu/util/Region;->UNKNOWN_REGION_ID:Ljava/lang/String;
-Landroid/icu/util/Region;->WORLD_ID:Ljava/lang/String;
-Landroid/icu/util/RuleBasedTimeZone;-><init>(Ljava/lang/String;Landroid/icu/util/InitialTimeZoneRule;)V
-Landroid/icu/util/RuleBasedTimeZone;->addTransitionRule(Landroid/icu/util/TimeZoneRule;)V
-Landroid/icu/util/RuleBasedTimeZone;->complete()V
-Landroid/icu/util/RuleBasedTimeZone;->finalRules:[Landroid/icu/util/AnnualTimeZoneRule;
-Landroid/icu/util/RuleBasedTimeZone;->findRuleInFinal(JZII)Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/RuleBasedTimeZone;->getLocalDelta(IIIIII)I
-Landroid/icu/util/RuleBasedTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/RuleBasedTimeZone;->getOffset(JZII[I)V
-Landroid/icu/util/RuleBasedTimeZone;->getOffsetFromLocal(JII[I)V
-Landroid/icu/util/RuleBasedTimeZone;->getPreviousTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/RuleBasedTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/RuleBasedTimeZone;->getTransitionTime(Landroid/icu/util/TimeZoneTransition;ZII)J
-Landroid/icu/util/RuleBasedTimeZone;->historicRules:Ljava/util/List;
-Landroid/icu/util/RuleBasedTimeZone;->historicTransitions:Ljava/util/List;
-Landroid/icu/util/RuleBasedTimeZone;->initialRule:Landroid/icu/util/InitialTimeZoneRule;
-Landroid/icu/util/RuleBasedTimeZone;->isFrozen:Z
-Landroid/icu/util/RuleBasedTimeZone;->upToDate:Z
-Landroid/icu/util/SimpleDateRule;-><init>(II)V
-Landroid/icu/util/SimpleDateRule;-><init>(IIIZ)V
-Landroid/icu/util/SimpleDateRule;-><init>(IILandroid/icu/util/Calendar;)V
-Landroid/icu/util/SimpleDateRule;->calendar:Landroid/icu/util/Calendar;
-Landroid/icu/util/SimpleDateRule;->computeInYear(ILandroid/icu/util/Calendar;)Ljava/util/Date;
-Landroid/icu/util/SimpleDateRule;->dayOfMonth:I
-Landroid/icu/util/SimpleDateRule;->dayOfWeek:I
-Landroid/icu/util/SimpleDateRule;->doFirstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/SimpleDateRule;->firstAfter(Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/SimpleDateRule;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date;
-Landroid/icu/util/SimpleDateRule;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z
-Landroid/icu/util/SimpleDateRule;->isOn(Ljava/util/Date;)Z
-Landroid/icu/util/SimpleDateRule;->month:I
-Landroid/icu/util/SimpleHoliday;-><init>(IIILjava/lang/String;)V
-Landroid/icu/util/SimpleHoliday;-><init>(IIILjava/lang/String;I)V
-Landroid/icu/util/SimpleHoliday;-><init>(IIILjava/lang/String;II)V
-Landroid/icu/util/SimpleHoliday;-><init>(IILjava/lang/String;)V
-Landroid/icu/util/SimpleHoliday;-><init>(IILjava/lang/String;I)V
-Landroid/icu/util/SimpleHoliday;-><init>(IILjava/lang/String;II)V
-Landroid/icu/util/SimpleHoliday;->ALL_SAINTS_DAY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->ALL_SOULS_DAY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->ASSUMPTION:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->BOXING_DAY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->CHRISTMAS:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->CHRISTMAS_EVE:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->EPIPHANY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->IMMACULATE_CONCEPTION:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->MAY_DAY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->NEW_YEARS_DAY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->NEW_YEARS_EVE:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleHoliday;->rangeRule(IILandroid/icu/util/DateRule;)Landroid/icu/util/DateRule;
-Landroid/icu/util/SimpleHoliday;->ST_STEPHENS_DAY:Landroid/icu/util/SimpleHoliday;
-Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;)V
-Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;IIIIIIII)V
-Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;IIIIIIIII)V
-Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;IIIIIIIIIII)V
-Landroid/icu/util/SimpleTimeZone;->compareToRule(IIIIIIIIIIII)I
-Landroid/icu/util/SimpleTimeZone;->construct(IIIIIIIIIIII)V
-Landroid/icu/util/SimpleTimeZone;->decodeEndRule()V
-Landroid/icu/util/SimpleTimeZone;->decodeRules()V
-Landroid/icu/util/SimpleTimeZone;->decodeStartRule()V
-Landroid/icu/util/SimpleTimeZone;->DOM_MODE:I
-Landroid/icu/util/SimpleTimeZone;->DOW_GE_DOM_MODE:I
-Landroid/icu/util/SimpleTimeZone;->DOW_IN_MONTH_MODE:I
-Landroid/icu/util/SimpleTimeZone;->DOW_LE_DOM_MODE:I
-Landroid/icu/util/SimpleTimeZone;->dst:I
-Landroid/icu/util/SimpleTimeZone;->dstRule:Landroid/icu/util/AnnualTimeZoneRule;
-Landroid/icu/util/SimpleTimeZone;->endDay:I
-Landroid/icu/util/SimpleTimeZone;->endDayOfWeek:I
-Landroid/icu/util/SimpleTimeZone;->endMode:I
-Landroid/icu/util/SimpleTimeZone;->endMonth:I
-Landroid/icu/util/SimpleTimeZone;->endTime:I
-Landroid/icu/util/SimpleTimeZone;->endTimeMode:I
-Landroid/icu/util/SimpleTimeZone;->firstTransition:Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/SimpleTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/SimpleTimeZone;->getOffset(IIIIIII)I
-Landroid/icu/util/SimpleTimeZone;->getOffset(IIIIIIII)I
-Landroid/icu/util/SimpleTimeZone;->getOffsetFromLocal(JII[I)V
-Landroid/icu/util/SimpleTimeZone;->getPreviousTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/SimpleTimeZone;->getSTZInfo()Landroid/icu/util/STZInfo;
-Landroid/icu/util/SimpleTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/SimpleTimeZone;->idEquals(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/icu/util/SimpleTimeZone;->initialRule:Landroid/icu/util/InitialTimeZoneRule;
-Landroid/icu/util/SimpleTimeZone;->initTransitionRules()V
-Landroid/icu/util/SimpleTimeZone;->isFrozen:Z
-Landroid/icu/util/SimpleTimeZone;->raw:I
-Landroid/icu/util/SimpleTimeZone;->setDSTSavings(I)V
-Landroid/icu/util/SimpleTimeZone;->setEndRule(III)V
-Landroid/icu/util/SimpleTimeZone;->setEndRule(IIII)V
-Landroid/icu/util/SimpleTimeZone;->setEndRule(IIIII)V
-Landroid/icu/util/SimpleTimeZone;->setEndRule(IIIIIZ)V
-Landroid/icu/util/SimpleTimeZone;->setEndRule(IIIIZ)V
-Landroid/icu/util/SimpleTimeZone;->setStartRule(III)V
-Landroid/icu/util/SimpleTimeZone;->setStartRule(IIII)V
-Landroid/icu/util/SimpleTimeZone;->setStartRule(IIIII)V
-Landroid/icu/util/SimpleTimeZone;->setStartRule(IIIIZ)V
-Landroid/icu/util/SimpleTimeZone;->setStartYear(I)V
-Landroid/icu/util/SimpleTimeZone;->STANDARD_TIME:I
-Landroid/icu/util/SimpleTimeZone;->startDay:I
-Landroid/icu/util/SimpleTimeZone;->startDayOfWeek:I
-Landroid/icu/util/SimpleTimeZone;->startMode:I
-Landroid/icu/util/SimpleTimeZone;->startMonth:I
-Landroid/icu/util/SimpleTimeZone;->startTime:I
-Landroid/icu/util/SimpleTimeZone;->startTimeMode:I
-Landroid/icu/util/SimpleTimeZone;->startYear:I
-Landroid/icu/util/SimpleTimeZone;->staticMonthLength:[B
-Landroid/icu/util/SimpleTimeZone;->stdRule:Landroid/icu/util/AnnualTimeZoneRule;
-Landroid/icu/util/SimpleTimeZone;->transitionRulesInitialized:Z
-Landroid/icu/util/SimpleTimeZone;->useDaylight:Z
-Landroid/icu/util/SimpleTimeZone;->UTC_TIME:I
-Landroid/icu/util/SimpleTimeZone;->WALL_TIME:I
-Landroid/icu/util/SimpleTimeZone;->xinfo:Landroid/icu/util/STZInfo;
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeSet;)V
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeSet;Z)V
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeSet;ZZ)V
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
-Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Ljava/lang/String;ZZ)V
-Landroid/icu/util/StringTokenizer;->checkDelimiters()V
-Landroid/icu/util/StringTokenizer;->countTokens()I
-Landroid/icu/util/StringTokenizer;->DEFAULT_DELIMITERS_:Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/StringTokenizer;->delims:[Z
-Landroid/icu/util/StringTokenizer;->EMPTY_DELIMITER_:Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/StringTokenizer;->getNextDelimiter(I)I
-Landroid/icu/util/StringTokenizer;->getNextNonDelimiter(I)I
-Landroid/icu/util/StringTokenizer;->hasMoreTokens()Z
-Landroid/icu/util/StringTokenizer;->m_coalesceDelimiters_:Z
-Landroid/icu/util/StringTokenizer;->m_delimiters_:Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/StringTokenizer;->m_length_:I
-Landroid/icu/util/StringTokenizer;->m_nextOffset_:I
-Landroid/icu/util/StringTokenizer;->m_returnDelimiters_:Z
-Landroid/icu/util/StringTokenizer;->m_source_:Ljava/lang/String;
-Landroid/icu/util/StringTokenizer;->m_tokenLimit_:[I
-Landroid/icu/util/StringTokenizer;->m_tokenOffset_:I
-Landroid/icu/util/StringTokenizer;->m_tokenSize_:I
-Landroid/icu/util/StringTokenizer;->m_tokenStart_:[I
-Landroid/icu/util/StringTokenizer;->nextToken()Ljava/lang/String;
-Landroid/icu/util/StringTokenizer;->nextToken(Landroid/icu/text/UnicodeSet;)Ljava/lang/String;
-Landroid/icu/util/StringTokenizer;->nextToken(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/StringTokenizer;->TOKEN_SIZE_:I
-Landroid/icu/util/StringTrieBuilder$BranchHeadNode;-><init>(ILandroid/icu/util/StringTrieBuilder$Node;)V
-Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->length:I
-Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->markRightEdgesFirst(I)I
-Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->next:Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$BranchNode;-><init>()V
-Landroid/icu/util/StringTrieBuilder$BranchNode;->firstEdgeNumber:I
-Landroid/icu/util/StringTrieBuilder$BranchNode;->hash:I
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;-><init>()V
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->add(CLandroid/icu/util/StringTrieBuilder$Node;)V
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->chars:Ljava/lang/StringBuilder;
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->equal:Ljava/util/ArrayList;
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->find(C)I
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->register(Landroid/icu/util/StringTrieBuilder;)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->register(Landroid/icu/util/StringTrieBuilder;II)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;-><init>(ILandroid/icu/util/StringTrieBuilder$Node;)V
-Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;->markRightEdgesFirst(I)I
-Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;->next:Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;-><init>(Ljava/lang/CharSequence;IILandroid/icu/util/StringTrieBuilder$Node;)V
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->hash:I
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->length:I
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->markRightEdgesFirst(I)I
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->next:Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->register(Landroid/icu/util/StringTrieBuilder;)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->setHashCode()V
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->stringOffset:I
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->strings:Ljava/lang/CharSequence;
-Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;-><init>(I)V
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->add(II)V
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->add(ILandroid/icu/util/StringTrieBuilder$Node;)V
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->equal:[Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->length:I
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->markRightEdgesFirst(I)I
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->units:[C
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->values:[I
-Landroid/icu/util/StringTrieBuilder$ListBranchNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$Node;-><init>()V
-Landroid/icu/util/StringTrieBuilder$Node;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$Node;->getOffset()I
-Landroid/icu/util/StringTrieBuilder$Node;->markRightEdgesFirst(I)I
-Landroid/icu/util/StringTrieBuilder$Node;->offset:I
-Landroid/icu/util/StringTrieBuilder$Node;->register(Landroid/icu/util/StringTrieBuilder;)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$Node;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$Node;->writeUnlessInsideRightEdge(IILandroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$Option;->FAST:Landroid/icu/util/StringTrieBuilder$Option;
-Landroid/icu/util/StringTrieBuilder$Option;->SMALL:Landroid/icu/util/StringTrieBuilder$Option;
-Landroid/icu/util/StringTrieBuilder$Option;->valueOf(Ljava/lang/String;)Landroid/icu/util/StringTrieBuilder$Option;
-Landroid/icu/util/StringTrieBuilder$Option;->values()[Landroid/icu/util/StringTrieBuilder$Option;
-Landroid/icu/util/StringTrieBuilder$SplitBranchNode;-><init>(CLandroid/icu/util/StringTrieBuilder$Node;Landroid/icu/util/StringTrieBuilder$Node;)V
-Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->greaterOrEqual:Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->lessThan:Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->markRightEdgesFirst(I)I
-Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->unit:C
-Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder$State;->ADDING:Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$State;->BUILDING_FAST:Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$State;->BUILDING_SMALL:Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$State;->BUILT:Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$State;->valueOf(Ljava/lang/String;)Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$State;->values()[Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder$ValueNode;-><init>()V
-Landroid/icu/util/StringTrieBuilder$ValueNode;-><init>(I)V
-Landroid/icu/util/StringTrieBuilder$ValueNode;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder$ValueNode;->hasValue:Z
-Landroid/icu/util/StringTrieBuilder$ValueNode;->setFinalValue(I)V
-Landroid/icu/util/StringTrieBuilder$ValueNode;->setValue(I)V
-Landroid/icu/util/StringTrieBuilder$ValueNode;->value:I
-Landroid/icu/util/StringTrieBuilder$ValueNode;->write(Landroid/icu/util/StringTrieBuilder;)V
-Landroid/icu/util/StringTrieBuilder;-><init>()V
-Landroid/icu/util/StringTrieBuilder;->addImpl(Ljava/lang/CharSequence;I)V
-Landroid/icu/util/StringTrieBuilder;->buildImpl(Landroid/icu/util/StringTrieBuilder$Option;)V
-Landroid/icu/util/StringTrieBuilder;->clearImpl()V
-Landroid/icu/util/StringTrieBuilder;->createSuffixNode(Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$ValueNode;
-Landroid/icu/util/StringTrieBuilder;->getMaxBranchLinearSubNodeLength()I
-Landroid/icu/util/StringTrieBuilder;->getMaxLinearMatchLength()I
-Landroid/icu/util/StringTrieBuilder;->getMinLinearMatch()I
-Landroid/icu/util/StringTrieBuilder;->lookupFinalValueNode:Landroid/icu/util/StringTrieBuilder$ValueNode;
-Landroid/icu/util/StringTrieBuilder;->matchNodesCanHaveValues()Z
-Landroid/icu/util/StringTrieBuilder;->nodes:Ljava/util/HashMap;
-Landroid/icu/util/StringTrieBuilder;->registerFinalValue(I)Landroid/icu/util/StringTrieBuilder$ValueNode;
-Landroid/icu/util/StringTrieBuilder;->registerNode(Landroid/icu/util/StringTrieBuilder$Node;)Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder;->root:Landroid/icu/util/StringTrieBuilder$Node;
-Landroid/icu/util/StringTrieBuilder;->state:Landroid/icu/util/StringTrieBuilder$State;
-Landroid/icu/util/StringTrieBuilder;->strings:Ljava/lang/StringBuilder;
-Landroid/icu/util/StringTrieBuilder;->write(I)I
-Landroid/icu/util/StringTrieBuilder;->write(II)I
-Landroid/icu/util/StringTrieBuilder;->writeDeltaTo(I)I
-Landroid/icu/util/StringTrieBuilder;->writeValueAndFinal(IZ)I
-Landroid/icu/util/StringTrieBuilder;->writeValueAndType(ZII)I
-Landroid/icu/util/STZInfo;-><init>()V
-Landroid/icu/util/STZInfo;->applyTo(Landroid/icu/util/SimpleTimeZone;)V
-Landroid/icu/util/STZInfo;->ea:Z
-Landroid/icu/util/STZInfo;->edm:I
-Landroid/icu/util/STZInfo;->edw:I
-Landroid/icu/util/STZInfo;->edwm:I
-Landroid/icu/util/STZInfo;->em:I
-Landroid/icu/util/STZInfo;->et:I
-Landroid/icu/util/STZInfo;->sa:Z
-Landroid/icu/util/STZInfo;->sdm:I
-Landroid/icu/util/STZInfo;->sdw:I
-Landroid/icu/util/STZInfo;->sdwm:I
-Landroid/icu/util/STZInfo;->setEnd(IIIIIZ)V
-Landroid/icu/util/STZInfo;->setStart(IIIIIZ)V
-Landroid/icu/util/STZInfo;->sm:I
-Landroid/icu/util/STZInfo;->st:I
-Landroid/icu/util/STZInfo;->sy:I
-Landroid/icu/util/TaiwanCalendar;->GREGORIAN_EPOCH:I
-Landroid/icu/util/TaiwanCalendar;->Taiwan_ERA_START:I
-Landroid/icu/util/TimeArrayTimeZoneRule;-><init>(Ljava/lang/String;II[JI)V
-Landroid/icu/util/TimeArrayTimeZoneRule;->getFinalStart(II)Ljava/util/Date;
-Landroid/icu/util/TimeArrayTimeZoneRule;->getFirstStart(II)Ljava/util/Date;
-Landroid/icu/util/TimeArrayTimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/TimeArrayTimeZoneRule;->getPreviousStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/TimeArrayTimeZoneRule;->getStartTimes()[J
-Landroid/icu/util/TimeArrayTimeZoneRule;->getTimeType()I
-Landroid/icu/util/TimeArrayTimeZoneRule;->getUTC(JII)J
-Landroid/icu/util/TimeArrayTimeZoneRule;->isEquivalentTo(Landroid/icu/util/TimeZoneRule;)Z
-Landroid/icu/util/TimeArrayTimeZoneRule;->isTransitionRule()Z
-Landroid/icu/util/TimeArrayTimeZoneRule;->startTimes:[J
-Landroid/icu/util/TimeArrayTimeZoneRule;->timeType:I
-Landroid/icu/util/TimeUnit;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/icu/util/TimeUnit;->index:I
-Landroid/icu/util/TimeUnitAmount;-><init>(DLandroid/icu/util/TimeUnit;)V
-Landroid/icu/util/TimeUnitAmount;-><init>(Ljava/lang/Number;Landroid/icu/util/TimeUnit;)V
-Landroid/icu/util/TimeUnitAmount;->getTimeUnit()Landroid/icu/util/TimeUnit;
-Landroid/icu/util/TimeZone$ConstantZone;-><init>(ILjava/lang/String;)V
-Landroid/icu/util/TimeZone$ConstantZone;->isFrozen:Z
-Landroid/icu/util/TimeZone$ConstantZone;->rawOffset:I
-Landroid/icu/util/TimeZone;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/TimeZone;->defaultZone:Landroid/icu/util/TimeZone;
-Landroid/icu/util/TimeZone;->getDefaultTimeZoneType()I
-Landroid/icu/util/TimeZone;->getFrozenICUTimeZone(Ljava/lang/String;Z)Landroid/icu/util/BasicTimeZone;
-Landroid/icu/util/TimeZone;->getTimeZone(Ljava/lang/String;IZ)Landroid/icu/util/TimeZone;
-Landroid/icu/util/TimeZone;->GMT_ZONE_ID:Ljava/lang/String;
-Landroid/icu/util/TimeZone;->ID:Ljava/lang/String;
-Landroid/icu/util/TimeZone;->LOGGER:Ljava/util/logging/Logger;
-Landroid/icu/util/TimeZone;->setDefault(Landroid/icu/util/TimeZone;)V
-Landroid/icu/util/TimeZone;->setDefaultTimeZoneType(I)V
-Landroid/icu/util/TimeZone;->setICUDefault(Landroid/icu/util/TimeZone;)V
-Landroid/icu/util/TimeZone;->TZIMPL_CONFIG_ICU:Ljava/lang/String;
-Landroid/icu/util/TimeZone;->TZIMPL_CONFIG_JDK:Ljava/lang/String;
-Landroid/icu/util/TimeZone;->TZIMPL_CONFIG_KEY:Ljava/lang/String;
-Landroid/icu/util/TimeZone;->TZ_IMPL:I
-Landroid/icu/util/TimeZone;->_getDisplayName(IZLandroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/TimeZoneRule;-><init>(Ljava/lang/String;II)V
-Landroid/icu/util/TimeZoneRule;->dstSavings:I
-Landroid/icu/util/TimeZoneRule;->getDSTSavings()I
-Landroid/icu/util/TimeZoneRule;->getFinalStart(II)Ljava/util/Date;
-Landroid/icu/util/TimeZoneRule;->getFirstStart(II)Ljava/util/Date;
-Landroid/icu/util/TimeZoneRule;->getName()Ljava/lang/String;
-Landroid/icu/util/TimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/TimeZoneRule;->getPreviousStart(JIIZ)Ljava/util/Date;
-Landroid/icu/util/TimeZoneRule;->getRawOffset()I
-Landroid/icu/util/TimeZoneRule;->isEquivalentTo(Landroid/icu/util/TimeZoneRule;)Z
-Landroid/icu/util/TimeZoneRule;->isTransitionRule()Z
-Landroid/icu/util/TimeZoneRule;->name:Ljava/lang/String;
-Landroid/icu/util/TimeZoneRule;->rawOffset:I
-Landroid/icu/util/TimeZoneTransition;-><init>(JLandroid/icu/util/TimeZoneRule;Landroid/icu/util/TimeZoneRule;)V
-Landroid/icu/util/TimeZoneTransition;->from:Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/TimeZoneTransition;->getFrom()Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/TimeZoneTransition;->getTime()J
-Landroid/icu/util/TimeZoneTransition;->getTo()Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/TimeZoneTransition;->time:J
-Landroid/icu/util/TimeZoneTransition;->to:Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/ULocale$Builder;->_locbld:Landroid/icu/impl/locale/InternalLocaleBuilder;
-Landroid/icu/util/ULocale$JDKLocaleHelper;-><init>()V
-Landroid/icu/util/ULocale$JDKLocaleHelper;->eDISPLAY:Ljava/lang/Object;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->eFORMAT:Ljava/lang/Object;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->getDefault(Landroid/icu/util/ULocale$Category;)Ljava/util/Locale;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->getSystemProperty(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->hasLocaleCategories()Z
-Landroid/icu/util/ULocale$JDKLocaleHelper;->hasLocaleCategories:Z
-Landroid/icu/util/ULocale$JDKLocaleHelper;->hasScriptsAndUnicodeExtensions:Z
-Landroid/icu/util/ULocale$JDKLocaleHelper;->isOriginalDefaultLocale(Ljava/util/Locale;)Z
-Landroid/icu/util/ULocale$JDKLocaleHelper;->JAVA6_MAPDATA:[[Ljava/lang/String;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mForLanguageTag:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetDefault:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetExtension:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetExtensionKeys:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetScript:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetUnicodeLocaleAttributes:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetUnicodeLocaleKeys:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetUnicodeLocaleType:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->mSetDefault:Ljava/lang/reflect/Method;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->setDefault(Landroid/icu/util/ULocale$Category;Ljava/util/Locale;)V
-Landroid/icu/util/ULocale$JDKLocaleHelper;->toLocale(Landroid/icu/util/ULocale;)Ljava/util/Locale;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->toLocale6(Landroid/icu/util/ULocale;)Ljava/util/Locale;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->toLocale7(Landroid/icu/util/ULocale;)Ljava/util/Locale;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->toULocale(Ljava/util/Locale;)Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->toULocale6(Ljava/util/Locale;)Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale$JDKLocaleHelper;->toULocale7(Ljava/util/Locale;)Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale$Minimize;->FAVOR_REGION:Landroid/icu/util/ULocale$Minimize;
-Landroid/icu/util/ULocale$Minimize;->FAVOR_SCRIPT:Landroid/icu/util/ULocale$Minimize;
-Landroid/icu/util/ULocale$Minimize;->valueOf(Ljava/lang/String;)Landroid/icu/util/ULocale$Minimize;
-Landroid/icu/util/ULocale$Minimize;->values()[Landroid/icu/util/ULocale$Minimize;
-Landroid/icu/util/ULocale$Type;-><init>()V
-Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;Ljava/util/Locale;)V
-Landroid/icu/util/ULocale;-><init>(Ljava/util/Locale;)V
-Landroid/icu/util/ULocale;->ACTUAL_LOCALE:Landroid/icu/util/ULocale$Type;
-Landroid/icu/util/ULocale;->appendTag(Ljava/lang/String;Ljava/lang/StringBuilder;)V
-Landroid/icu/util/ULocale;->base()Landroid/icu/impl/locale/BaseLocale;
-Landroid/icu/util/ULocale;->baseLocale:Landroid/icu/impl/locale/BaseLocale;
-Landroid/icu/util/ULocale;->CACHE:Landroid/icu/impl/SoftCache;
-Landroid/icu/util/ULocale;->CANONICALIZE_MAP:[[Ljava/lang/String;
-Landroid/icu/util/ULocale;->createLikelySubtagsString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->defaultCategoryLocales:[Ljava/util/Locale;
-Landroid/icu/util/ULocale;->defaultCategoryULocales:[Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale;->defaultLocale:Ljava/util/Locale;
-Landroid/icu/util/ULocale;->defaultULocale:Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale;->EMPTY_LOCALE:Ljava/util/Locale;
-Landroid/icu/util/ULocale;->EMPTY_STRING:Ljava/lang/String;
-Landroid/icu/util/ULocale;->extensions()Landroid/icu/impl/locale/LocaleExtensions;
-Landroid/icu/util/ULocale;->extensions:Landroid/icu/impl/locale/LocaleExtensions;
-Landroid/icu/util/ULocale;->getDisplayCountryInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayKeywordInternal(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayKeywordValueInternal(Landroid/icu/util/ULocale;Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayLanguageInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Z)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayNameInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayNameWithDialectInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayScriptInContext()Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayScriptInContext(Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayScriptInContext(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayScriptInContext(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayScriptInContextInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayScriptInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getDisplayVariantInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getFallbackString(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getInstance(Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/LocaleExtensions;)Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale;->getRegionForSupplementalData(Landroid/icu/util/ULocale;Z)Ljava/lang/String;
-Landroid/icu/util/ULocale;->getShortestSubtagLength(Ljava/lang/String;)I
-Landroid/icu/util/ULocale;->isEmptyString(Ljava/lang/String;)Z
-Landroid/icu/util/ULocale;->LANG_DIR_STRING:Ljava/lang/String;
-Landroid/icu/util/ULocale;->locale:Ljava/util/Locale;
-Landroid/icu/util/ULocale;->localeID:Ljava/lang/String;
-Landroid/icu/util/ULocale;->LOCALE_ATTRIBUTE_KEY:Ljava/lang/String;
-Landroid/icu/util/ULocale;->lookupLikelySubtags(Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->lscvToID(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/icu/util/ULocale;->minimizeSubtags(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale$Minimize;)Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale;->nameCache:Landroid/icu/impl/CacheBase;
-Landroid/icu/util/ULocale;->parseAcceptLanguage(Ljava/lang/String;Z)[Landroid/icu/util/ULocale;
-Landroid/icu/util/ULocale;->parseTagString(Ljava/lang/String;[Ljava/lang/String;)I
-Landroid/icu/util/ULocale;->setDefault(Landroid/icu/util/ULocale$Category;Landroid/icu/util/ULocale;)V
-Landroid/icu/util/ULocale;->setDefault(Landroid/icu/util/ULocale;)V
-Landroid/icu/util/ULocale;->UNDEFINED_LANGUAGE:Ljava/lang/String;
-Landroid/icu/util/ULocale;->UNDEFINED_REGION:Ljava/lang/String;
-Landroid/icu/util/ULocale;->UNDEFINED_SCRIPT:Ljava/lang/String;
-Landroid/icu/util/ULocale;->UNDERSCORE:C
-Landroid/icu/util/ULocale;->VALID_LOCALE:Landroid/icu/util/ULocale$Type;
-Landroid/icu/util/ULocale;->variantsToKeywords:[[Ljava/lang/String;
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;-><init>(JJJJJJ)V
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->epochOffset:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->epochOffsetM1:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->epochOffsetP1:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->fromMax:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->fromMin:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->maxRound:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->minRound:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->toMax:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->toMin:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->units:J
-Landroid/icu/util/UniversalTimeScale$TimeScaleData;->unitsRound:J
-Landroid/icu/util/UniversalTimeScale;-><init>()V
-Landroid/icu/util/UniversalTimeScale;->days:J
-Landroid/icu/util/UniversalTimeScale;->EPOCH_OFFSET_MINUS_1_VALUE:I
-Landroid/icu/util/UniversalTimeScale;->fromRangeCheck(JI)Landroid/icu/util/UniversalTimeScale$TimeScaleData;
-Landroid/icu/util/UniversalTimeScale;->getTimeScaleData(I)Landroid/icu/util/UniversalTimeScale$TimeScaleData;
-Landroid/icu/util/UniversalTimeScale;->hours:J
-Landroid/icu/util/UniversalTimeScale;->MAX_ROUND_VALUE:I
-Landroid/icu/util/UniversalTimeScale;->MAX_SCALE_VALUE:I
-Landroid/icu/util/UniversalTimeScale;->microseconds:J
-Landroid/icu/util/UniversalTimeScale;->milliseconds:J
-Landroid/icu/util/UniversalTimeScale;->minutes:J
-Landroid/icu/util/UniversalTimeScale;->MIN_ROUND_VALUE:I
-Landroid/icu/util/UniversalTimeScale;->seconds:J
-Landroid/icu/util/UniversalTimeScale;->ticks:J
-Landroid/icu/util/UniversalTimeScale;->timeScaleTable:[Landroid/icu/util/UniversalTimeScale$TimeScaleData;
-Landroid/icu/util/UniversalTimeScale;->toBigDecimalTrunc(Landroid/icu/math/BigDecimal;I)Landroid/icu/math/BigDecimal;
-Landroid/icu/util/UniversalTimeScale;->toRangeCheck(JI)Landroid/icu/util/UniversalTimeScale$TimeScaleData;
-Landroid/icu/util/UniversalTimeScale;->UNITS_ROUND_VALUE:I
-Landroid/icu/util/UResourceBundle$RootType;->ICU:Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle$RootType;->JAVA:Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle$RootType;->MISSING:Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle$RootType;->valueOf(Ljava/lang/String;)Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle$RootType;->values()[Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle;-><init>()V
-Landroid/icu/util/UResourceBundle;->ARRAY:I
-Landroid/icu/util/UResourceBundle;->BINARY:I
-Landroid/icu/util/UResourceBundle;->findTopLevel(I)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->findTopLevel(Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->get(I)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->get(Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBaseName()Ljava/lang/String;
-Landroid/icu/util/UResourceBundle;->getBinary()Ljava/nio/ByteBuffer;
-Landroid/icu/util/UResourceBundle;->getBinary([B)[B
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Landroid/icu/util/ULocale;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getInt()I
-Landroid/icu/util/UResourceBundle;->getIntVector()[I
-Landroid/icu/util/UResourceBundle;->getIterator()Landroid/icu/util/UResourceBundleIterator;
-Landroid/icu/util/UResourceBundle;->getLocaleID()Ljava/lang/String;
-Landroid/icu/util/UResourceBundle;->getParent()Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->getRootType(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle$RootType;
-Landroid/icu/util/UResourceBundle;->getSize()I
-Landroid/icu/util/UResourceBundle;->getString(I)Ljava/lang/String;
-Landroid/icu/util/UResourceBundle;->getStringArray()[Ljava/lang/String;
-Landroid/icu/util/UResourceBundle;->getUInt()I
-Landroid/icu/util/UResourceBundle;->getULocale()Landroid/icu/util/ULocale;
-Landroid/icu/util/UResourceBundle;->getVersion()Landroid/icu/util/VersionInfo;
-Landroid/icu/util/UResourceBundle;->handleGet(ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->handleGet(Ljava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->handleGetKeys()Ljava/util/Enumeration;
-Landroid/icu/util/UResourceBundle;->handleGetObjectImpl(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object;
-Landroid/icu/util/UResourceBundle;->handleGetStringArray()[Ljava/lang/String;
-Landroid/icu/util/UResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundle;->INT:I
-Landroid/icu/util/UResourceBundle;->INT_VECTOR:I
-Landroid/icu/util/UResourceBundle;->isTopLevelResource()Z
-Landroid/icu/util/UResourceBundle;->NONE:I
-Landroid/icu/util/UResourceBundle;->resolveObject(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object;
-Landroid/icu/util/UResourceBundle;->ROOT_CACHE:Ljava/util/Map;
-Landroid/icu/util/UResourceBundle;->setRootType(Ljava/lang/String;Landroid/icu/util/UResourceBundle$RootType;)V
-Landroid/icu/util/UResourceBundle;->STRING:I
-Landroid/icu/util/UResourceBundle;->TABLE:I
-Landroid/icu/util/UResourceBundleIterator;-><init>(Landroid/icu/util/UResourceBundle;)V
-Landroid/icu/util/UResourceBundleIterator;->bundle:Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundleIterator;->index:I
-Landroid/icu/util/UResourceBundleIterator;->nextString()Ljava/lang/String;
-Landroid/icu/util/UResourceBundleIterator;->reset()V
-Landroid/icu/util/UResourceBundleIterator;->size:I
-Landroid/icu/util/UResourceTypeMismatchException;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/VersionInfo;-><init>(I)V
-Landroid/icu/util/VersionInfo;->getInt(IIII)I
-Landroid/icu/util/VersionInfo;->getTZDataVersion()Ljava/lang/String;
-Landroid/icu/util/VersionInfo;->getVersionString(II)Ljava/lang/String;
-Landroid/icu/util/VersionInfo;->ICU_DATA_VERSION:Landroid/icu/util/VersionInfo;
-Landroid/icu/util/VersionInfo;->ICU_DATA_VERSION_PATH:Ljava/lang/String;
-Landroid/icu/util/VersionInfo;->INVALID_VERSION_NUMBER_:Ljava/lang/String;
-Landroid/icu/util/VersionInfo;->javaVersion()Landroid/icu/util/VersionInfo;
-Landroid/icu/util/VersionInfo;->javaVersion:Landroid/icu/util/VersionInfo;
-Landroid/icu/util/VersionInfo;->LAST_BYTE_MASK_:I
-Landroid/icu/util/VersionInfo;->main([Ljava/lang/String;)V
-Landroid/icu/util/VersionInfo;->MAP_:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/icu/util/VersionInfo;->m_version_:I
-Landroid/icu/util/VersionInfo;->TZDATA_VERSION:Ljava/lang/String;
-Landroid/icu/util/VersionInfo;->UCOL_TAILORINGS_VERSION:Landroid/icu/util/VersionInfo;
-Landroid/icu/util/VersionInfo;->UNICODE_VERSION:Landroid/icu/util/VersionInfo;
-Landroid/icu/util/VTimeZone;-><init>()V
-Landroid/icu/util/VTimeZone;-><init>(Ljava/lang/String;)V
-Landroid/icu/util/VTimeZone;->appendUNTIL(Ljava/io/Writer;Ljava/lang/String;)V
-Landroid/icu/util/VTimeZone;->beginRRULE(Ljava/io/Writer;I)V
-Landroid/icu/util/VTimeZone;->beginZoneProps(Ljava/io/Writer;ZLjava/lang/String;IIJ)V
-Landroid/icu/util/VTimeZone;->COLON:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->COMMA:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->create(Ljava/io/Reader;)Landroid/icu/util/VTimeZone;
-Landroid/icu/util/VTimeZone;->create(Ljava/lang/String;)Landroid/icu/util/VTimeZone;
-Landroid/icu/util/VTimeZone;->createRuleByRDATE(Ljava/lang/String;IIJLjava/util/List;I)Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/VTimeZone;->createRuleByRRULE(Ljava/lang/String;IIJLjava/util/List;I)Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/VTimeZone;->DEF_DSTSAVINGS:I
-Landroid/icu/util/VTimeZone;->DEF_TZSTARTTIME:J
-Landroid/icu/util/VTimeZone;->endZoneProps(Ljava/io/Writer;Z)V
-Landroid/icu/util/VTimeZone;->EQUALS_SIGN:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ERR:I
-Landroid/icu/util/VTimeZone;->getDateTimeString(J)Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->getDefaultTZName(Ljava/lang/String;Z)Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->getLastModified()Ljava/util/Date;
-Landroid/icu/util/VTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/VTimeZone;->getOffsetFromLocal(JII[I)V
-Landroid/icu/util/VTimeZone;->getPreviousTransition(JZ)Landroid/icu/util/TimeZoneTransition;
-Landroid/icu/util/VTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/VTimeZone;->getTimeZoneRules(J)[Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/VTimeZone;->getTZURL()Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->getUTCDateTimeString(J)Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->hasEquivalentTransitions(Landroid/icu/util/TimeZone;JJ)Z
-Landroid/icu/util/VTimeZone;->ICAL_BEGIN:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_BEGIN_VTIMEZONE:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_BYDAY:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_BYMONTH:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_BYMONTHDAY:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_DAYLIGHT:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_DOW_NAMES:[Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_DTSTART:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_END:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_END_VTIMEZONE:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_FREQ:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_LASTMOD:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_RDATE:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_RRULE:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_STANDARD:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_TZID:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_TZNAME:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_TZOFFSETFROM:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_TZOFFSETTO:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_TZURL:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_UNTIL:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_VTIMEZONE:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICAL_YEARLY:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICU_TZINFO_PROP:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->ICU_TZVERSION:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->INI:I
-Landroid/icu/util/VTimeZone;->isEquivalentDateRule(IIILandroid/icu/util/DateTimeRule;)Z
-Landroid/icu/util/VTimeZone;->isFrozen:Z
-Landroid/icu/util/VTimeZone;->lastmod:Ljava/util/Date;
-Landroid/icu/util/VTimeZone;->load(Ljava/io/Reader;)Z
-Landroid/icu/util/VTimeZone;->MAX_TIME:J
-Landroid/icu/util/VTimeZone;->millisToOffset(I)Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->MIN_TIME:J
-Landroid/icu/util/VTimeZone;->MONTHLENGTH:[I
-Landroid/icu/util/VTimeZone;->NEWLINE:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->numToString(II)Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->offsetStrToMillis(Ljava/lang/String;)I
-Landroid/icu/util/VTimeZone;->olsonzid:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->parse()Z
-Landroid/icu/util/VTimeZone;->parseDateTimeString(Ljava/lang/String;I)J
-Landroid/icu/util/VTimeZone;->parseRRULE(Ljava/lang/String;[J)[I
-Landroid/icu/util/VTimeZone;->SEMICOLON:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->setLastModified(Ljava/util/Date;)V
-Landroid/icu/util/VTimeZone;->setTZURL(Ljava/lang/String;)V
-Landroid/icu/util/VTimeZone;->toWallTimeRule(Landroid/icu/util/DateTimeRule;II)Landroid/icu/util/DateTimeRule;
-Landroid/icu/util/VTimeZone;->tz:Landroid/icu/util/BasicTimeZone;
-Landroid/icu/util/VTimeZone;->TZI:I
-Landroid/icu/util/VTimeZone;->tzurl:Ljava/lang/String;
-Landroid/icu/util/VTimeZone;->VTZ:I
-Landroid/icu/util/VTimeZone;->vtzlines:Ljava/util/List;
-Landroid/icu/util/VTimeZone;->write(Ljava/io/Writer;)V
-Landroid/icu/util/VTimeZone;->write(Ljava/io/Writer;J)V
-Landroid/icu/util/VTimeZone;->writeFinalRule(Ljava/io/Writer;ZLandroid/icu/util/AnnualTimeZoneRule;IIJ)V
-Landroid/icu/util/VTimeZone;->writeFooter(Ljava/io/Writer;)V
-Landroid/icu/util/VTimeZone;->writeHeader(Ljava/io/Writer;)V
-Landroid/icu/util/VTimeZone;->writeSimple(Ljava/io/Writer;J)V
-Landroid/icu/util/VTimeZone;->writeZone(Ljava/io/Writer;Landroid/icu/util/BasicTimeZone;[Ljava/lang/String;)V
-Landroid/icu/util/VTimeZone;->writeZonePropsByDOM(Ljava/io/Writer;ZLjava/lang/String;IIIIJJ)V
-Landroid/icu/util/VTimeZone;->writeZonePropsByDOW(Ljava/io/Writer;ZLjava/lang/String;IIIIIJJ)V
-Landroid/icu/util/VTimeZone;->writeZonePropsByDOW_GEQ_DOM(Ljava/io/Writer;ZLjava/lang/String;IIIIIJJ)V
-Landroid/icu/util/VTimeZone;->writeZonePropsByDOW_GEQ_DOM_sub(Ljava/io/Writer;IIIIJI)V
-Landroid/icu/util/VTimeZone;->writeZonePropsByDOW_LEQ_DOM(Ljava/io/Writer;ZLjava/lang/String;IIIIIJJ)V
-Landroid/icu/util/VTimeZone;->writeZonePropsByTime(Ljava/io/Writer;ZLjava/lang/String;IIJZ)V
 Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;->mEnabled:Z
 Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;->mRevoked:Z
 Landroid/inputmethodservice/AbstractInputMethodService;->exposeContent(Landroid/view/inputmethod/InputContentInfo;Landroid/view/inputmethod/InputConnection;)V
@@ -65381,117 +58139,6 @@
 Landroid/speech/tts/Voice;->mName:Ljava/lang/String;
 Landroid/speech/tts/Voice;->mQuality:I
 Landroid/speech/tts/Voice;->mRequiresNetworkConnection:Z
-Landroid/system/ErrnoException;->functionName:Ljava/lang/String;
-Landroid/system/ErrnoException;->rethrowAsIOException()Ljava/io/IOException;
-Landroid/system/ErrnoException;->rethrowAsSocketException()Ljava/net/SocketException;
-Landroid/system/GaiException;-><init>(Ljava/lang/String;I)V
-Landroid/system/GaiException;-><init>(Ljava/lang/String;ILjava/lang/Throwable;)V
-Landroid/system/GaiException;->error:I
-Landroid/system/GaiException;->functionName:Ljava/lang/String;
-Landroid/system/GaiException;->rethrowAsUnknownHostException()Ljava/net/UnknownHostException;
-Landroid/system/GaiException;->rethrowAsUnknownHostException(Ljava/lang/String;)Ljava/net/UnknownHostException;
-Landroid/system/Int32Ref;-><init>(I)V
-Landroid/system/NetlinkSocketAddress;-><init>()V
-Landroid/system/NetlinkSocketAddress;-><init>(I)V
-Landroid/system/NetlinkSocketAddress;->getGroupsMask()I
-Landroid/system/NetlinkSocketAddress;->getPortId()I
-Landroid/system/NetlinkSocketAddress;->nlGroupsMask:I
-Landroid/system/NetlinkSocketAddress;->nlPortId:I
-Landroid/system/Os;-><init>()V
-Landroid/system/Os;->accept(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)Ljava/io/FileDescriptor;
-Landroid/system/Os;->android_getaddrinfo(Ljava/lang/String;Landroid/system/StructAddrinfo;I)[Ljava/net/InetAddress;
-Landroid/system/Os;->capget(Landroid/system/StructCapUserHeader;)[Landroid/system/StructCapUserData;
-Landroid/system/Os;->capset(Landroid/system/StructCapUserHeader;[Landroid/system/StructCapUserData;)V
-Landroid/system/Os;->fcntlFlock(Ljava/io/FileDescriptor;ILandroid/system/StructFlock;)I
-Landroid/system/Os;->fcntlInt(Ljava/io/FileDescriptor;II)I
-Landroid/system/Os;->fcntlVoid(Ljava/io/FileDescriptor;I)I
-Landroid/system/Os;->getifaddrs()[Landroid/system/StructIfaddrs;
-Landroid/system/Os;->getnameinfo(Ljava/net/InetAddress;I)Ljava/lang/String;
-Landroid/system/Os;->getpgid(I)I
-Landroid/system/Os;->getpwnam(Ljava/lang/String;)Landroid/system/StructPasswd;
-Landroid/system/Os;->getpwuid(I)Landroid/system/StructPasswd;
-Landroid/system/Os;->getrlimit(I)Landroid/system/StructRlimit;
-Landroid/system/Os;->getsockoptByte(Ljava/io/FileDescriptor;II)I
-Landroid/system/Os;->getsockoptInAddr(Ljava/io/FileDescriptor;II)Ljava/net/InetAddress;
-Landroid/system/Os;->getsockoptInt(Ljava/io/FileDescriptor;II)I
-Landroid/system/Os;->getsockoptLinger(Ljava/io/FileDescriptor;II)Landroid/system/StructLinger;
-Landroid/system/Os;->getsockoptTimeval(Ljava/io/FileDescriptor;II)Landroid/system/StructTimeval;
-Landroid/system/Os;->getsockoptUcred(Ljava/io/FileDescriptor;II)Landroid/system/StructUcred;
-Landroid/system/Os;->ioctlInetAddress(Ljava/io/FileDescriptor;ILjava/lang/String;)Ljava/net/InetAddress;
-Landroid/system/Os;->ioctlInt(Ljava/io/FileDescriptor;ILandroid/system/Int32Ref;)I
-Landroid/system/Os;->pipe2(I)[Ljava/io/FileDescriptor;
-Landroid/system/Os;->realpath(Ljava/lang/String;)Ljava/lang/String;
-Landroid/system/Os;->setpgid(II)V
-Landroid/system/Os;->setregid(II)V
-Landroid/system/Os;->setreuid(II)V
-Landroid/system/Os;->setsockoptByte(Ljava/io/FileDescriptor;III)V
-Landroid/system/Os;->setsockoptGroupReq(Ljava/io/FileDescriptor;IILandroid/system/StructGroupReq;)V
-Landroid/system/Os;->setsockoptIpMreqn(Ljava/io/FileDescriptor;III)V
-Landroid/system/Os;->setsockoptLinger(Ljava/io/FileDescriptor;IILandroid/system/StructLinger;)V
-Landroid/system/Os;->splice(Ljava/io/FileDescriptor;Landroid/system/Int64Ref;Ljava/io/FileDescriptor;Landroid/system/Int64Ref;JI)J
-Landroid/system/Os;->unlink(Ljava/lang/String;)V
-Landroid/system/Os;->waitpid(ILandroid/system/Int32Ref;I)I
-Landroid/system/PacketSocketAddress;-><init>(SISB[B)V
-Landroid/system/PacketSocketAddress;->sll_addr:[B
-Landroid/system/PacketSocketAddress;->sll_hatype:S
-Landroid/system/PacketSocketAddress;->sll_ifindex:I
-Landroid/system/PacketSocketAddress;->sll_pkttype:B
-Landroid/system/PacketSocketAddress;->sll_protocol:S
-Landroid/system/StructAddrinfo;-><init>()V
-Landroid/system/StructAddrinfo;->ai_addr:Ljava/net/InetAddress;
-Landroid/system/StructAddrinfo;->ai_family:I
-Landroid/system/StructAddrinfo;->ai_flags:I
-Landroid/system/StructAddrinfo;->ai_next:Landroid/system/StructAddrinfo;
-Landroid/system/StructAddrinfo;->ai_protocol:I
-Landroid/system/StructAddrinfo;->ai_socktype:I
-Landroid/system/StructCapUserData;-><init>(III)V
-Landroid/system/StructCapUserData;->effective:I
-Landroid/system/StructCapUserData;->inheritable:I
-Landroid/system/StructCapUserData;->permitted:I
-Landroid/system/StructCapUserHeader;-><init>(II)V
-Landroid/system/StructCapUserHeader;->pid:I
-Landroid/system/StructCapUserHeader;->version:I
-Landroid/system/StructFlock;-><init>()V
-Landroid/system/StructFlock;->l_len:J
-Landroid/system/StructFlock;->l_pid:I
-Landroid/system/StructFlock;->l_start:J
-Landroid/system/StructFlock;->l_type:S
-Landroid/system/StructFlock;->l_whence:S
-Landroid/system/StructGroupReq;-><init>(ILjava/net/InetAddress;)V
-Landroid/system/StructGroupReq;->gr_group:Ljava/net/InetAddress;
-Landroid/system/StructGroupReq;->gr_interface:I
-Landroid/system/StructIcmpHdr;-><init>()V
-Landroid/system/StructIcmpHdr;->getBytes()[B
-Landroid/system/StructIcmpHdr;->IcmpEchoHdr(ZI)Landroid/system/StructIcmpHdr;
-Landroid/system/StructIcmpHdr;->packet:[B
-Landroid/system/StructIfaddrs;-><init>(Ljava/lang/String;ILjava/net/InetAddress;Ljava/net/InetAddress;Ljava/net/InetAddress;[B)V
-Landroid/system/StructIfaddrs;->hwaddr:[B
-Landroid/system/StructIfaddrs;->ifa_addr:Ljava/net/InetAddress;
-Landroid/system/StructIfaddrs;->ifa_broadaddr:Ljava/net/InetAddress;
-Landroid/system/StructIfaddrs;->ifa_flags:I
-Landroid/system/StructIfaddrs;->ifa_name:Ljava/lang/String;
-Landroid/system/StructIfaddrs;->ifa_netmask:Ljava/net/InetAddress;
-Landroid/system/StructLinger;-><init>(II)V
-Landroid/system/StructLinger;->isOn()Z
-Landroid/system/StructLinger;->l_linger:I
-Landroid/system/StructLinger;->l_onoff:I
-Landroid/system/StructPasswd;-><init>(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)V
-Landroid/system/StructPasswd;->pw_dir:Ljava/lang/String;
-Landroid/system/StructPasswd;->pw_gid:I
-Landroid/system/StructPasswd;->pw_name:Ljava/lang/String;
-Landroid/system/StructPasswd;->pw_shell:Ljava/lang/String;
-Landroid/system/StructPasswd;->pw_uid:I
-Landroid/system/StructRlimit;-><init>(JJ)V
-Landroid/system/StructRlimit;->rlim_cur:J
-Landroid/system/StructRlimit;->rlim_max:J
-Landroid/system/StructTimeval;-><init>(JJ)V
-Landroid/system/StructTimeval;->toMillis()J
-Landroid/system/StructTimeval;->tv_sec:J
-Landroid/system/StructTimeval;->tv_usec:J
-Landroid/system/StructUcred;-><init>(III)V
-Landroid/system/StructUcred;->gid:I
-Landroid/system/StructUcred;->pid:I
-Landroid/system/StructUcred;->uid:I
 Landroid/telecom/AudioState;->listAppend(Ljava/lang/StringBuffer;Ljava/lang/String;)V
 Landroid/telecom/AudioState;->ROUTE_ALL:I
 Landroid/telecom/AuthenticatorService;-><init>()V
@@ -101216,1154 +93863,6 @@
 Lcom/android/internal/widget/VerifyCredentialResponse;->setTimeout(I)V
 Lcom/android/internal/widget/VerifyCredentialResponse;->stripPayload()Lcom/android/internal/widget/VerifyCredentialResponse;
 Lcom/android/internal/widget/VerifyCredentialResponse;->TAG:Ljava/lang/String;
-Lcom/android/okhttp/Address;-><init>(Ljava/lang/String;ILcom/android/okhttp/Dns;Ljavax/net/SocketFactory;Ljavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/HostnameVerifier;Lcom/android/okhttp/CertificatePinner;Lcom/android/okhttp/Authenticator;Ljava/net/Proxy;Ljava/util/List;Ljava/util/List;Ljava/net/ProxySelector;)V
-Lcom/android/okhttp/Address;->authenticator:Lcom/android/okhttp/Authenticator;
-Lcom/android/okhttp/Address;->certificatePinner:Lcom/android/okhttp/CertificatePinner;
-Lcom/android/okhttp/Address;->connectionSpecs:Ljava/util/List;
-Lcom/android/okhttp/Address;->dns:Lcom/android/okhttp/Dns;
-Lcom/android/okhttp/Address;->getAuthenticator()Lcom/android/okhttp/Authenticator;
-Lcom/android/okhttp/Address;->getCertificatePinner()Lcom/android/okhttp/CertificatePinner;
-Lcom/android/okhttp/Address;->getConnectionSpecs()Ljava/util/List;
-Lcom/android/okhttp/Address;->getDns()Lcom/android/okhttp/Dns;
-Lcom/android/okhttp/Address;->getHostnameVerifier()Ljavax/net/ssl/HostnameVerifier;
-Lcom/android/okhttp/Address;->getProtocols()Ljava/util/List;
-Lcom/android/okhttp/Address;->getProxy()Ljava/net/Proxy;
-Lcom/android/okhttp/Address;->getProxySelector()Ljava/net/ProxySelector;
-Lcom/android/okhttp/Address;->getSocketFactory()Ljavax/net/SocketFactory;
-Lcom/android/okhttp/Address;->getSslSocketFactory()Ljavax/net/ssl/SSLSocketFactory;
-Lcom/android/okhttp/Address;->getUriHost()Ljava/lang/String;
-Lcom/android/okhttp/Address;->getUriPort()I
-Lcom/android/okhttp/Address;->hostnameVerifier:Ljavax/net/ssl/HostnameVerifier;
-Lcom/android/okhttp/Address;->protocols:Ljava/util/List;
-Lcom/android/okhttp/Address;->proxy:Ljava/net/Proxy;
-Lcom/android/okhttp/Address;->proxySelector:Ljava/net/ProxySelector;
-Lcom/android/okhttp/Address;->socketFactory:Ljavax/net/SocketFactory;
-Lcom/android/okhttp/Address;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
-Lcom/android/okhttp/Address;->url()Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/Address;->url:Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/AndroidShimResponseCache;-><init>(Lcom/android/okhttp/Cache;)V
-Lcom/android/okhttp/AndroidShimResponseCache;->close()V
-Lcom/android/okhttp/AndroidShimResponseCache;->create(Ljava/io/File;J)Lcom/android/okhttp/AndroidShimResponseCache;
-Lcom/android/okhttp/AndroidShimResponseCache;->delegate:Lcom/android/okhttp/Cache;
-Lcom/android/okhttp/AndroidShimResponseCache;->delete()V
-Lcom/android/okhttp/AndroidShimResponseCache;->flush()V
-Lcom/android/okhttp/AndroidShimResponseCache;->getCache()Lcom/android/okhttp/Cache;
-Lcom/android/okhttp/AndroidShimResponseCache;->getHitCount()I
-Lcom/android/okhttp/AndroidShimResponseCache;->getNetworkCount()I
-Lcom/android/okhttp/AndroidShimResponseCache;->getRequestCount()I
-Lcom/android/okhttp/AndroidShimResponseCache;->isEquivalent(Ljava/io/File;J)Z
-Lcom/android/okhttp/AndroidShimResponseCache;->maxSize()J
-Lcom/android/okhttp/AndroidShimResponseCache;->size()J
-Lcom/android/okhttp/Authenticator;->authenticate(Ljava/net/Proxy;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Authenticator;->authenticateProxy(Ljava/net/Proxy;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Cache$CacheRequestImpl;->abort()V
-Lcom/android/okhttp/Cache$CacheRequestImpl;->body()Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/Cache$CacheRequestImpl;->body:Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/Cache$CacheRequestImpl;->cacheOut:Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/Cache$CacheRequestImpl;->done:Z
-Lcom/android/okhttp/Cache$CacheRequestImpl;->editor:Lcom/android/okhttp/internal/DiskLruCache$Editor;
-Lcom/android/okhttp/Cache$CacheResponseBody;-><init>(Lcom/android/okhttp/internal/DiskLruCache$Snapshot;Ljava/lang/String;Ljava/lang/String;)V
-Lcom/android/okhttp/Cache$CacheResponseBody;->bodySource:Lcom/android/okhttp/okio/BufferedSource;
-Lcom/android/okhttp/Cache$CacheResponseBody;->contentLength()J
-Lcom/android/okhttp/Cache$CacheResponseBody;->contentLength:Ljava/lang/String;
-Lcom/android/okhttp/Cache$CacheResponseBody;->contentType()Lcom/android/okhttp/MediaType;
-Lcom/android/okhttp/Cache$CacheResponseBody;->contentType:Ljava/lang/String;
-Lcom/android/okhttp/Cache$CacheResponseBody;->snapshot:Lcom/android/okhttp/internal/DiskLruCache$Snapshot;
-Lcom/android/okhttp/Cache$CacheResponseBody;->source()Lcom/android/okhttp/okio/BufferedSource;
-Lcom/android/okhttp/Cache$Entry;-><init>(Lcom/android/okhttp/okio/Source;)V
-Lcom/android/okhttp/Cache$Entry;-><init>(Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/Cache$Entry;->code:I
-Lcom/android/okhttp/Cache$Entry;->handshake:Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Cache$Entry;->isHttps()Z
-Lcom/android/okhttp/Cache$Entry;->matches(Lcom/android/okhttp/Request;Lcom/android/okhttp/Response;)Z
-Lcom/android/okhttp/Cache$Entry;->message:Ljava/lang/String;
-Lcom/android/okhttp/Cache$Entry;->protocol:Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Cache$Entry;->readCertificateList(Lcom/android/okhttp/okio/BufferedSource;)Ljava/util/List;
-Lcom/android/okhttp/Cache$Entry;->requestMethod:Ljava/lang/String;
-Lcom/android/okhttp/Cache$Entry;->response(Lcom/android/okhttp/Request;Lcom/android/okhttp/internal/DiskLruCache$Snapshot;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Cache$Entry;->responseHeaders:Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/Cache$Entry;->url:Ljava/lang/String;
-Lcom/android/okhttp/Cache$Entry;->varyHeaders:Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/Cache$Entry;->writeCertList(Lcom/android/okhttp/okio/BufferedSink;Ljava/util/List;)V
-Lcom/android/okhttp/Cache$Entry;->writeTo(Lcom/android/okhttp/internal/DiskLruCache$Editor;)V
-Lcom/android/okhttp/Cache;-><init>(Ljava/io/File;J)V
-Lcom/android/okhttp/Cache;-><init>(Ljava/io/File;JLcom/android/okhttp/internal/io/FileSystem;)V
-Lcom/android/okhttp/Cache;->abortQuietly(Lcom/android/okhttp/internal/DiskLruCache$Editor;)V
-Lcom/android/okhttp/Cache;->cache:Lcom/android/okhttp/internal/DiskLruCache;
-Lcom/android/okhttp/Cache;->close()V
-Lcom/android/okhttp/Cache;->delete()V
-Lcom/android/okhttp/Cache;->ENTRY_BODY:I
-Lcom/android/okhttp/Cache;->ENTRY_COUNT:I
-Lcom/android/okhttp/Cache;->ENTRY_METADATA:I
-Lcom/android/okhttp/Cache;->evictAll()V
-Lcom/android/okhttp/Cache;->flush()V
-Lcom/android/okhttp/Cache;->get(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Cache;->getDirectory()Ljava/io/File;
-Lcom/android/okhttp/Cache;->getHitCount()I
-Lcom/android/okhttp/Cache;->getMaxSize()J
-Lcom/android/okhttp/Cache;->getNetworkCount()I
-Lcom/android/okhttp/Cache;->getRequestCount()I
-Lcom/android/okhttp/Cache;->getSize()J
-Lcom/android/okhttp/Cache;->getWriteAbortCount()I
-Lcom/android/okhttp/Cache;->getWriteSuccessCount()I
-Lcom/android/okhttp/Cache;->hitCount:I
-Lcom/android/okhttp/Cache;->initialize()V
-Lcom/android/okhttp/Cache;->internalCache:Lcom/android/okhttp/internal/InternalCache;
-Lcom/android/okhttp/Cache;->isClosed()Z
-Lcom/android/okhttp/Cache;->networkCount:I
-Lcom/android/okhttp/Cache;->put(Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/CacheRequest;
-Lcom/android/okhttp/Cache;->readInt(Lcom/android/okhttp/okio/BufferedSource;)I
-Lcom/android/okhttp/Cache;->remove(Lcom/android/okhttp/Request;)V
-Lcom/android/okhttp/Cache;->requestCount:I
-Lcom/android/okhttp/Cache;->trackConditionalCacheHit()V
-Lcom/android/okhttp/Cache;->trackResponse(Lcom/android/okhttp/internal/http/CacheStrategy;)V
-Lcom/android/okhttp/Cache;->update(Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/Cache;->urls()Ljava/util/Iterator;
-Lcom/android/okhttp/Cache;->urlToKey(Lcom/android/okhttp/Request;)Ljava/lang/String;
-Lcom/android/okhttp/Cache;->VERSION:I
-Lcom/android/okhttp/Cache;->writeAbortCount:I
-Lcom/android/okhttp/Cache;->writeSuccessCount:I
-Lcom/android/okhttp/CacheControl$Builder;-><init>()V
-Lcom/android/okhttp/CacheControl$Builder;->build()Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/CacheControl$Builder;->maxAge(ILjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->maxAgeSeconds:I
-Lcom/android/okhttp/CacheControl$Builder;->maxStale(ILjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->maxStaleSeconds:I
-Lcom/android/okhttp/CacheControl$Builder;->minFresh(ILjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->minFreshSeconds:I
-Lcom/android/okhttp/CacheControl$Builder;->noCache()Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->noCache:Z
-Lcom/android/okhttp/CacheControl$Builder;->noStore()Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->noStore:Z
-Lcom/android/okhttp/CacheControl$Builder;->noTransform()Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->noTransform:Z
-Lcom/android/okhttp/CacheControl$Builder;->onlyIfCached()Lcom/android/okhttp/CacheControl$Builder;
-Lcom/android/okhttp/CacheControl$Builder;->onlyIfCached:Z
-Lcom/android/okhttp/CacheControl;-><init>(Lcom/android/okhttp/CacheControl$Builder;)V
-Lcom/android/okhttp/CacheControl;-><init>(ZZIIZZZIIZZLjava/lang/String;)V
-Lcom/android/okhttp/CacheControl;->FORCE_CACHE:Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/CacheControl;->FORCE_NETWORK:Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/CacheControl;->headerValue()Ljava/lang/String;
-Lcom/android/okhttp/CacheControl;->headerValue:Ljava/lang/String;
-Lcom/android/okhttp/CacheControl;->isPrivate()Z
-Lcom/android/okhttp/CacheControl;->isPrivate:Z
-Lcom/android/okhttp/CacheControl;->isPublic()Z
-Lcom/android/okhttp/CacheControl;->isPublic:Z
-Lcom/android/okhttp/CacheControl;->maxAgeSeconds()I
-Lcom/android/okhttp/CacheControl;->maxAgeSeconds:I
-Lcom/android/okhttp/CacheControl;->maxStaleSeconds()I
-Lcom/android/okhttp/CacheControl;->maxStaleSeconds:I
-Lcom/android/okhttp/CacheControl;->minFreshSeconds()I
-Lcom/android/okhttp/CacheControl;->minFreshSeconds:I
-Lcom/android/okhttp/CacheControl;->mustRevalidate()Z
-Lcom/android/okhttp/CacheControl;->mustRevalidate:Z
-Lcom/android/okhttp/CacheControl;->noCache()Z
-Lcom/android/okhttp/CacheControl;->noCache:Z
-Lcom/android/okhttp/CacheControl;->noStore()Z
-Lcom/android/okhttp/CacheControl;->noStore:Z
-Lcom/android/okhttp/CacheControl;->noTransform()Z
-Lcom/android/okhttp/CacheControl;->noTransform:Z
-Lcom/android/okhttp/CacheControl;->onlyIfCached()Z
-Lcom/android/okhttp/CacheControl;->onlyIfCached:Z
-Lcom/android/okhttp/CacheControl;->parse(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/CacheControl;->sMaxAgeSeconds()I
-Lcom/android/okhttp/CacheControl;->sMaxAgeSeconds:I
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;->connection()Lcom/android/okhttp/Connection;
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;->forWebSocket:Z
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;->index:I
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;->proceed(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;->request()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Call$ApplicationInterceptorChain;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Call$AsyncCall;->cancel()V
-Lcom/android/okhttp/Call$AsyncCall;->execute()V
-Lcom/android/okhttp/Call$AsyncCall;->forWebSocket:Z
-Lcom/android/okhttp/Call$AsyncCall;->get()Lcom/android/okhttp/Call;
-Lcom/android/okhttp/Call$AsyncCall;->host()Ljava/lang/String;
-Lcom/android/okhttp/Call$AsyncCall;->request()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Call$AsyncCall;->responseCallback:Lcom/android/okhttp/Callback;
-Lcom/android/okhttp/Call$AsyncCall;->tag()Ljava/lang/Object;
-Lcom/android/okhttp/Call;-><init>(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;)V
-Lcom/android/okhttp/Call;->cancel()V
-Lcom/android/okhttp/Call;->canceled:Z
-Lcom/android/okhttp/Call;->client:Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/Call;->engine:Lcom/android/okhttp/internal/http/HttpEngine;
-Lcom/android/okhttp/Call;->enqueue(Lcom/android/okhttp/Callback;)V
-Lcom/android/okhttp/Call;->enqueue(Lcom/android/okhttp/Callback;Z)V
-Lcom/android/okhttp/Call;->execute()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Call;->executed:Z
-Lcom/android/okhttp/Call;->getResponse(Lcom/android/okhttp/Request;Z)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Call;->getResponseWithInterceptorChain(Z)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Call;->isCanceled()Z
-Lcom/android/okhttp/Call;->isExecuted()Z
-Lcom/android/okhttp/Call;->originalRequest:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Call;->tag()Ljava/lang/Object;
-Lcom/android/okhttp/Call;->toLoggableString()Ljava/lang/String;
-Lcom/android/okhttp/Callback;->onFailure(Lcom/android/okhttp/Request;Ljava/io/IOException;)V
-Lcom/android/okhttp/Callback;->onResponse(Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/CertificatePinner$Builder;-><init>()V
-Lcom/android/okhttp/CertificatePinner$Builder;->build()Lcom/android/okhttp/CertificatePinner;
-Lcom/android/okhttp/CertificatePinner$Builder;->hostnameToPins:Ljava/util/Map;
-Lcom/android/okhttp/CertificatePinner;-><init>(Lcom/android/okhttp/CertificatePinner$Builder;)V
-Lcom/android/okhttp/CertificatePinner;->check(Ljava/lang/String;Ljava/util/List;)V
-Lcom/android/okhttp/CertificatePinner;->DEFAULT:Lcom/android/okhttp/CertificatePinner;
-Lcom/android/okhttp/CertificatePinner;->findMatchingPins(Ljava/lang/String;)Ljava/util/Set;
-Lcom/android/okhttp/CertificatePinner;->hostnameToPins:Ljava/util/Map;
-Lcom/android/okhttp/CertificatePinner;->pin(Ljava/security/cert/Certificate;)Ljava/lang/String;
-Lcom/android/okhttp/CertificatePinner;->sha1(Ljava/security/cert/X509Certificate;)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/Challenge;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Lcom/android/okhttp/Challenge;->getRealm()Ljava/lang/String;
-Lcom/android/okhttp/Challenge;->getScheme()Ljava/lang/String;
-Lcom/android/okhttp/Challenge;->realm:Ljava/lang/String;
-Lcom/android/okhttp/Challenge;->scheme:Ljava/lang/String;
-Lcom/android/okhttp/CipherSuite;->forJavaName(Ljava/lang/String;)Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->javaName:Ljava/lang/String;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_256_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_256_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_EXPORT_WITH_RC4_40_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_256_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_RC4_128_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_EMPTY_RENEGOTIATION_INFO_SCSV:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_EXPORT_WITH_RC4_40_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_EXPORT_WITH_RC4_40_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_3DES_EDE_CBC_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_DES_CBC_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_RC4_128_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_EXPORT_WITH_DES40_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_EXPORT_WITH_RC4_40_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_256_CBC_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_NULL_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_NULL_SHA256:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_RC4_128_MD5:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/CipherSuite;->values()[Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/Connection;->getHandshake()Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Connection;->getProtocol()Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Connection;->getRoute()Lcom/android/okhttp/Route;
-Lcom/android/okhttp/ConnectionPool;-><init>(IJ)V
-Lcom/android/okhttp/ConnectionPool;-><init>(IJLjava/util/concurrent/TimeUnit;)V
-Lcom/android/okhttp/ConnectionPool;->cleanup(J)J
-Lcom/android/okhttp/ConnectionPool;->cleanupRunnable:Ljava/lang/Runnable;
-Lcom/android/okhttp/ConnectionPool;->connectionBecameIdle(Lcom/android/okhttp/internal/io/RealConnection;)Z
-Lcom/android/okhttp/ConnectionPool;->DEFAULT_KEEP_ALIVE_DURATION_MS:J
-Lcom/android/okhttp/ConnectionPool;->evictAll()V
-Lcom/android/okhttp/ConnectionPool;->executor:Ljava/util/concurrent/Executor;
-Lcom/android/okhttp/ConnectionPool;->get(Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/http/StreamAllocation;)Lcom/android/okhttp/internal/io/RealConnection;
-Lcom/android/okhttp/ConnectionPool;->getConnectionCount()I
-Lcom/android/okhttp/ConnectionPool;->getDefault()Lcom/android/okhttp/ConnectionPool;
-Lcom/android/okhttp/ConnectionPool;->getHttpConnectionCount()I
-Lcom/android/okhttp/ConnectionPool;->getIdleConnectionCount()I
-Lcom/android/okhttp/ConnectionPool;->getMultiplexedConnectionCount()I
-Lcom/android/okhttp/ConnectionPool;->getSpdyConnectionCount()I
-Lcom/android/okhttp/ConnectionPool;->pruneAndGetAllocationCount(Lcom/android/okhttp/internal/io/RealConnection;J)I
-Lcom/android/okhttp/ConnectionPool;->put(Lcom/android/okhttp/internal/io/RealConnection;)V
-Lcom/android/okhttp/ConnectionPool;->routeDatabase:Lcom/android/okhttp/internal/RouteDatabase;
-Lcom/android/okhttp/ConnectionPool;->setCleanupRunnableForTest(Ljava/lang/Runnable;)V
-Lcom/android/okhttp/ConnectionSpec$Builder;-><init>(Lcom/android/okhttp/ConnectionSpec;)V
-Lcom/android/okhttp/ConnectionSpec$Builder;-><init>(Z)V
-Lcom/android/okhttp/ConnectionSpec$Builder;->allEnabledCipherSuites()Lcom/android/okhttp/ConnectionSpec$Builder;
-Lcom/android/okhttp/ConnectionSpec$Builder;->allEnabledTlsVersions()Lcom/android/okhttp/ConnectionSpec$Builder;
-Lcom/android/okhttp/ConnectionSpec$Builder;->build()Lcom/android/okhttp/ConnectionSpec;
-Lcom/android/okhttp/ConnectionSpec$Builder;->cipherSuites:[Ljava/lang/String;
-Lcom/android/okhttp/ConnectionSpec$Builder;->supportsTlsExtensions(Z)Lcom/android/okhttp/ConnectionSpec$Builder;
-Lcom/android/okhttp/ConnectionSpec$Builder;->supportsTlsExtensions:Z
-Lcom/android/okhttp/ConnectionSpec$Builder;->tls:Z
-Lcom/android/okhttp/ConnectionSpec$Builder;->tlsVersions:[Ljava/lang/String;
-Lcom/android/okhttp/ConnectionSpec;-><init>(Lcom/android/okhttp/ConnectionSpec$Builder;)V
-Lcom/android/okhttp/ConnectionSpec;->apply(Ljavax/net/ssl/SSLSocket;Z)V
-Lcom/android/okhttp/ConnectionSpec;->APPROVED_CIPHER_SUITES:[Lcom/android/okhttp/CipherSuite;
-Lcom/android/okhttp/ConnectionSpec;->cipherSuites()Ljava/util/List;
-Lcom/android/okhttp/ConnectionSpec;->cipherSuites:[Ljava/lang/String;
-Lcom/android/okhttp/ConnectionSpec;->CLEARTEXT:Lcom/android/okhttp/ConnectionSpec;
-Lcom/android/okhttp/ConnectionSpec;->COMPATIBLE_TLS:Lcom/android/okhttp/ConnectionSpec;
-Lcom/android/okhttp/ConnectionSpec;->isCompatible(Ljavax/net/ssl/SSLSocket;)Z
-Lcom/android/okhttp/ConnectionSpec;->isTls()Z
-Lcom/android/okhttp/ConnectionSpec;->MODERN_TLS:Lcom/android/okhttp/ConnectionSpec;
-Lcom/android/okhttp/ConnectionSpec;->nonEmptyIntersection([Ljava/lang/String;[Ljava/lang/String;)Z
-Lcom/android/okhttp/ConnectionSpec;->supportedSpec(Ljavax/net/ssl/SSLSocket;Z)Lcom/android/okhttp/ConnectionSpec;
-Lcom/android/okhttp/ConnectionSpec;->supportsTlsExtensions()Z
-Lcom/android/okhttp/ConnectionSpec;->supportsTlsExtensions:Z
-Lcom/android/okhttp/ConnectionSpec;->tls:Z
-Lcom/android/okhttp/ConnectionSpec;->tlsVersions()Ljava/util/List;
-Lcom/android/okhttp/ConnectionSpec;->tlsVersions:[Ljava/lang/String;
-Lcom/android/okhttp/Dispatcher;-><init>()V
-Lcom/android/okhttp/Dispatcher;-><init>(Ljava/util/concurrent/ExecutorService;)V
-Lcom/android/okhttp/Dispatcher;->cancel(Ljava/lang/Object;)V
-Lcom/android/okhttp/Dispatcher;->enqueue(Lcom/android/okhttp/Call$AsyncCall;)V
-Lcom/android/okhttp/Dispatcher;->executed(Lcom/android/okhttp/Call;)V
-Lcom/android/okhttp/Dispatcher;->executedCalls:Ljava/util/Deque;
-Lcom/android/okhttp/Dispatcher;->executorService:Ljava/util/concurrent/ExecutorService;
-Lcom/android/okhttp/Dispatcher;->finished(Lcom/android/okhttp/Call$AsyncCall;)V
-Lcom/android/okhttp/Dispatcher;->finished(Lcom/android/okhttp/Call;)V
-Lcom/android/okhttp/Dispatcher;->getExecutorService()Ljava/util/concurrent/ExecutorService;
-Lcom/android/okhttp/Dispatcher;->getMaxRequests()I
-Lcom/android/okhttp/Dispatcher;->getMaxRequestsPerHost()I
-Lcom/android/okhttp/Dispatcher;->getQueuedCallCount()I
-Lcom/android/okhttp/Dispatcher;->getRunningCallCount()I
-Lcom/android/okhttp/Dispatcher;->maxRequests:I
-Lcom/android/okhttp/Dispatcher;->maxRequestsPerHost:I
-Lcom/android/okhttp/Dispatcher;->promoteCalls()V
-Lcom/android/okhttp/Dispatcher;->readyCalls:Ljava/util/Deque;
-Lcom/android/okhttp/Dispatcher;->runningCalls:Ljava/util/Deque;
-Lcom/android/okhttp/Dispatcher;->runningCallsForHost(Lcom/android/okhttp/Call$AsyncCall;)I
-Lcom/android/okhttp/Dispatcher;->setMaxRequests(I)V
-Lcom/android/okhttp/Dispatcher;->setMaxRequestsPerHost(I)V
-Lcom/android/okhttp/Dns;->lookup(Ljava/lang/String;)Ljava/util/List;
-Lcom/android/okhttp/Dns;->SYSTEM:Lcom/android/okhttp/Dns;
-Lcom/android/okhttp/Handshake;-><init>(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V
-Lcom/android/okhttp/Handshake;->cipherSuite()Ljava/lang/String;
-Lcom/android/okhttp/Handshake;->cipherSuite:Ljava/lang/String;
-Lcom/android/okhttp/Handshake;->get(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Handshake;->get(Ljavax/net/ssl/SSLSession;)Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Handshake;->localCertificates()Ljava/util/List;
-Lcom/android/okhttp/Handshake;->localCertificates:Ljava/util/List;
-Lcom/android/okhttp/Handshake;->localPrincipal()Ljava/security/Principal;
-Lcom/android/okhttp/Handshake;->peerCertificates()Ljava/util/List;
-Lcom/android/okhttp/Handshake;->peerCertificates:Ljava/util/List;
-Lcom/android/okhttp/Handshake;->peerPrincipal()Ljava/security/Principal;
-Lcom/android/okhttp/Headers$Builder;-><init>()V
-Lcom/android/okhttp/Headers$Builder;->add(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers$Builder;->add(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers$Builder;->addLenient(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers$Builder;->addLenient(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers$Builder;->build()Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/Headers$Builder;->checkNameAndValue(Ljava/lang/String;Ljava/lang/String;)V
-Lcom/android/okhttp/Headers$Builder;->get(Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/Headers$Builder;->namesAndValues:Ljava/util/List;
-Lcom/android/okhttp/Headers$Builder;->removeAll(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers$Builder;->set(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers;-><init>(Lcom/android/okhttp/Headers$Builder;)V
-Lcom/android/okhttp/Headers;-><init>([Ljava/lang/String;)V
-Lcom/android/okhttp/Headers;->get(Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/Headers;->get([Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/Headers;->getDate(Ljava/lang/String;)Ljava/util/Date;
-Lcom/android/okhttp/Headers;->name(I)Ljava/lang/String;
-Lcom/android/okhttp/Headers;->names()Ljava/util/Set;
-Lcom/android/okhttp/Headers;->namesAndValues:[Ljava/lang/String;
-Lcom/android/okhttp/Headers;->newBuilder()Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Headers;->of(Ljava/util/Map;)Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/Headers;->size()I
-Lcom/android/okhttp/Headers;->toMultimap()Ljava/util/Map;
-Lcom/android/okhttp/Headers;->value(I)Ljava/lang/String;
-Lcom/android/okhttp/Headers;->values(Ljava/lang/String;)Ljava/util/List;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->INVALID_HOST:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->INVALID_PORT:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->MISSING_SCHEME:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->SUCCESS:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->UNSUPPORTED_SCHEME:Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->values()[Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder;-><init>()V
-Lcom/android/okhttp/HttpUrl$Builder;->addEncodedPathSegment(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->addEncodedQueryParameter(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->addPathSegment(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->addQueryParameter(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->canonicalizeHost(Ljava/lang/String;II)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->containsInvalidHostnameAsciiCodes(Ljava/lang/String;)Z
-Lcom/android/okhttp/HttpUrl$Builder;->decodeIpv4Suffix(Ljava/lang/String;II[BI)Z
-Lcom/android/okhttp/HttpUrl$Builder;->decodeIpv6(Ljava/lang/String;II)Ljava/net/InetAddress;
-Lcom/android/okhttp/HttpUrl$Builder;->domainToAscii(Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->effectivePort()I
-Lcom/android/okhttp/HttpUrl$Builder;->encodedFragment(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedFragment:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedPassword(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedPassword:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedPath(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedPathSegments:Ljava/util/List;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedQuery(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedQueryNamesAndValues:Ljava/util/List;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedUsername(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->encodedUsername:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->fragment(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->host(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->host:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->inet6AddressToAscii([B)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->isDot(Ljava/lang/String;)Z
-Lcom/android/okhttp/HttpUrl$Builder;->isDotDot(Ljava/lang/String;)Z
-Lcom/android/okhttp/HttpUrl$Builder;->parse(Lcom/android/okhttp/HttpUrl;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
-Lcom/android/okhttp/HttpUrl$Builder;->parsePort(Ljava/lang/String;II)I
-Lcom/android/okhttp/HttpUrl$Builder;->password(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->pop()V
-Lcom/android/okhttp/HttpUrl$Builder;->port(I)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->port:I
-Lcom/android/okhttp/HttpUrl$Builder;->portColonOffset(Ljava/lang/String;II)I
-Lcom/android/okhttp/HttpUrl$Builder;->push(Ljava/lang/String;IIZZ)V
-Lcom/android/okhttp/HttpUrl$Builder;->query(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->reencodeForUri()Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->removeAllCanonicalQueryParameters(Ljava/lang/String;)V
-Lcom/android/okhttp/HttpUrl$Builder;->removeAllEncodedQueryParameters(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->removeAllQueryParameters(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->removePathSegment(I)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->resolvePath(Ljava/lang/String;II)V
-Lcom/android/okhttp/HttpUrl$Builder;->scheme(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->scheme:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl$Builder;->schemeDelimiterOffset(Ljava/lang/String;II)I
-Lcom/android/okhttp/HttpUrl$Builder;->setEncodedPathSegment(ILjava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->setEncodedQueryParameter(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->setPathSegment(ILjava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->setQueryParameter(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl$Builder;->skipLeadingAsciiWhitespace(Ljava/lang/String;II)I
-Lcom/android/okhttp/HttpUrl$Builder;->skipTrailingAsciiWhitespace(Ljava/lang/String;II)I
-Lcom/android/okhttp/HttpUrl$Builder;->slashCount(Ljava/lang/String;II)I
-Lcom/android/okhttp/HttpUrl$Builder;->username(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
-Lcom/android/okhttp/HttpUrl;-><init>(Lcom/android/okhttp/HttpUrl$Builder;)V
-Lcom/android/okhttp/HttpUrl;->canonicalize(Lcom/android/okhttp/okio/Buffer;Ljava/lang/String;IILjava/lang/String;ZZZZ)V
-Lcom/android/okhttp/HttpUrl;->canonicalize(Ljava/lang/String;IILjava/lang/String;ZZZZ)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->canonicalize(Ljava/lang/String;Ljava/lang/String;ZZZZ)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->decodeHexDigit(C)I
-Lcom/android/okhttp/HttpUrl;->defaultPort(Ljava/lang/String;)I
-Lcom/android/okhttp/HttpUrl;->delimiterOffset(Ljava/lang/String;IILjava/lang/String;)I
-Lcom/android/okhttp/HttpUrl;->encodedFragment()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->encodedPassword()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->encodedPathSegments()Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->encodedQuery()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->encodedUsername()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->FORM_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->fragment()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->fragment:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->FRAGMENT_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->FRAGMENT_ENCODE_SET_URI:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->get(Ljava/net/URI;)Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/HttpUrl;->get(Ljava/net/URL;)Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/HttpUrl;->getChecked(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/HttpUrl;->HEX_DIGITS:[C
-Lcom/android/okhttp/HttpUrl;->host()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->host:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->isHttps()Z
-Lcom/android/okhttp/HttpUrl;->namesAndValuesToQueryString(Ljava/lang/StringBuilder;Ljava/util/List;)V
-Lcom/android/okhttp/HttpUrl;->password()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->password:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->PASSWORD_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->pathSegments()Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->pathSegments:Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->pathSegmentsToString(Ljava/lang/StringBuilder;Ljava/util/List;)V
-Lcom/android/okhttp/HttpUrl;->pathSize()I
-Lcom/android/okhttp/HttpUrl;->PATH_SEGMENT_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->PATH_SEGMENT_ENCODE_SET_URI:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->percentDecode(Lcom/android/okhttp/okio/Buffer;Ljava/lang/String;IIZ)V
-Lcom/android/okhttp/HttpUrl;->percentDecode(Ljava/lang/String;IIZ)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->percentDecode(Ljava/lang/String;Z)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->percentDecode(Ljava/util/List;Z)Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->percentEncoded(Ljava/lang/String;II)Z
-Lcom/android/okhttp/HttpUrl;->port()I
-Lcom/android/okhttp/HttpUrl;->port:I
-Lcom/android/okhttp/HttpUrl;->queryNamesAndValues:Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->queryParameter(Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->queryParameterName(I)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->queryParameterNames()Ljava/util/Set;
-Lcom/android/okhttp/HttpUrl;->queryParameterValue(I)Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->queryParameterValues(Ljava/lang/String;)Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->querySize()I
-Lcom/android/okhttp/HttpUrl;->queryStringToNamesAndValues(Ljava/lang/String;)Ljava/util/List;
-Lcom/android/okhttp/HttpUrl;->QUERY_COMPONENT_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->QUERY_COMPONENT_ENCODE_SET_URI:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->QUERY_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->resolve(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/HttpUrl;->scheme()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->scheme:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->uri()Ljava/net/URI;
-Lcom/android/okhttp/HttpUrl;->url()Ljava/net/URL;
-Lcom/android/okhttp/HttpUrl;->url:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->username()Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->username:Ljava/lang/String;
-Lcom/android/okhttp/HttpUrl;->USERNAME_ENCODE_SET:Ljava/lang/String;
-Lcom/android/okhttp/Interceptor$Chain;->connection()Lcom/android/okhttp/Connection;
-Lcom/android/okhttp/Interceptor$Chain;->proceed(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Interceptor$Chain;->request()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Interceptor;->intercept(Lcom/android/okhttp/Interceptor$Chain;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/CacheRequest;->abort()V
-Lcom/android/okhttp/internal/http/CacheRequest;->body()Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;-><init>(JLcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->ageSeconds:I
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->cacheResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->cacheResponseAge()J
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->computeFreshnessLifetime()J
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->etag:Ljava/lang/String;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->expires:Ljava/util/Date;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->get()Lcom/android/okhttp/internal/http/CacheStrategy;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->getCandidate()Lcom/android/okhttp/internal/http/CacheStrategy;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->hasConditions(Lcom/android/okhttp/Request;)Z
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->isFreshnessLifetimeHeuristic()Z
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->lastModified:Ljava/util/Date;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->lastModifiedString:Ljava/lang/String;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->nowMillis:J
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->receivedResponseMillis:J
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->sentRequestMillis:J
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->servedDate:Ljava/util/Date;
-Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->servedDateString:Ljava/lang/String;
-Lcom/android/okhttp/internal/http/CacheStrategy;-><init>(Lcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/internal/http/CacheStrategy;->cacheResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/CacheStrategy;->isCacheable(Lcom/android/okhttp/Response;Lcom/android/okhttp/Request;)Z
-Lcom/android/okhttp/internal/http/CacheStrategy;->networkRequest:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->calls:I
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->connection()Lcom/android/okhttp/Connection;
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->index:I
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->proceed(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->request()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine;-><init>(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;ZZZLcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/RetryableSink;Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/internal/http/HttpEngine;->bufferedRequestBody:Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/internal/http/HttpEngine;->bufferRequestBody:Z
-Lcom/android/okhttp/internal/http/HttpEngine;->cacheResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine;->cacheStrategy:Lcom/android/okhttp/internal/http/CacheStrategy;
-Lcom/android/okhttp/internal/http/HttpEngine;->cacheWritingResponse(Lcom/android/okhttp/internal/http/CacheRequest;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine;->callerWritesRequestBody:Z
-Lcom/android/okhttp/internal/http/HttpEngine;->cancel()V
-Lcom/android/okhttp/internal/http/HttpEngine;->client:Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/internal/http/HttpEngine;->close()Lcom/android/okhttp/internal/http/StreamAllocation;
-Lcom/android/okhttp/internal/http/HttpEngine;->combine(Lcom/android/okhttp/Headers;Lcom/android/okhttp/Headers;)Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/internal/http/HttpEngine;->connect()Lcom/android/okhttp/internal/http/HttpStream;
-Lcom/android/okhttp/internal/http/HttpEngine;->createAddress(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;)Lcom/android/okhttp/Address;
-Lcom/android/okhttp/internal/http/HttpEngine;->EMPTY_BODY:Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/internal/http/HttpEngine;->followUpRequest()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine;->forWebSocket:Z
-Lcom/android/okhttp/internal/http/HttpEngine;->getBufferedRequestBody()Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/internal/http/HttpEngine;->getRequest()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine;->getRequestBody()Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/internal/http/HttpEngine;->getResponse()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine;->hasBody(Lcom/android/okhttp/Response;)Z
-Lcom/android/okhttp/internal/http/HttpEngine;->MAX_FOLLOW_UPS:I
-Lcom/android/okhttp/internal/http/HttpEngine;->maybeCache()V
-Lcom/android/okhttp/internal/http/HttpEngine;->permitsRequestBody(Lcom/android/okhttp/Request;)Z
-Lcom/android/okhttp/internal/http/HttpEngine;->readNetworkResponse()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine;->receiveHeaders(Lcom/android/okhttp/Headers;)V
-Lcom/android/okhttp/internal/http/HttpEngine;->recover(Lcom/android/okhttp/internal/http/RouteException;)Lcom/android/okhttp/internal/http/HttpEngine;
-Lcom/android/okhttp/internal/http/HttpEngine;->recover(Ljava/io/IOException;)Lcom/android/okhttp/internal/http/HttpEngine;
-Lcom/android/okhttp/internal/http/HttpEngine;->recover(Ljava/io/IOException;Lcom/android/okhttp/okio/Sink;)Lcom/android/okhttp/internal/http/HttpEngine;
-Lcom/android/okhttp/internal/http/HttpEngine;->releaseStreamAllocation()V
-Lcom/android/okhttp/internal/http/HttpEngine;->requestBodyOut:Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/internal/http/HttpEngine;->sameConnection(Lcom/android/okhttp/HttpUrl;)Z
-Lcom/android/okhttp/internal/http/HttpEngine;->storeRequest:Lcom/android/okhttp/internal/http/CacheRequest;
-Lcom/android/okhttp/internal/http/HttpEngine;->streamAllocation:Lcom/android/okhttp/internal/http/StreamAllocation;
-Lcom/android/okhttp/internal/http/HttpEngine;->stripBody(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine;->transparentGzip:Z
-Lcom/android/okhttp/internal/http/HttpEngine;->unzip(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;
-Lcom/android/okhttp/internal/http/HttpEngine;->userRequest:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/internal/http/HttpEngine;->validate(Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;)Z
-Lcom/android/okhttp/internal/http/HttpStream;->cancel()V
-Lcom/android/okhttp/internal/http/HttpStream;->createRequestBody(Lcom/android/okhttp/Request;J)Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/internal/http/HttpStream;->DISCARD_STREAM_TIMEOUT_MILLIS:I
-Lcom/android/okhttp/internal/http/HttpStream;->finishRequest()V
-Lcom/android/okhttp/internal/http/HttpStream;->openResponseBody(Lcom/android/okhttp/Response;)Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/internal/http/HttpStream;->readResponseHeaders()Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/internal/http/HttpStream;->setHttpEngine(Lcom/android/okhttp/internal/http/HttpEngine;)V
-Lcom/android/okhttp/internal/http/HttpStream;->writeRequestBody(Lcom/android/okhttp/internal/http/RetryableSink;)V
-Lcom/android/okhttp/internal/http/HttpStream;->writeRequestHeaders(Lcom/android/okhttp/Request;)V
-Lcom/android/okhttp/internal/http/RequestException;-><init>(Ljava/io/IOException;)V
-Lcom/android/okhttp/internal/http/RetryableSink;-><init>()V
-Lcom/android/okhttp/internal/http/RetryableSink;-><init>(I)V
-Lcom/android/okhttp/internal/http/RetryableSink;->closed:Z
-Lcom/android/okhttp/internal/http/RetryableSink;->content:Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/internal/http/RetryableSink;->contentLength()J
-Lcom/android/okhttp/internal/http/RetryableSink;->limit:I
-Lcom/android/okhttp/internal/http/RetryableSink;->timeout()Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/internal/http/RetryableSink;->write(Lcom/android/okhttp/okio/Buffer;J)V
-Lcom/android/okhttp/internal/http/RetryableSink;->writeToSocket(Lcom/android/okhttp/okio/Sink;)V
-Lcom/android/okhttp/internal/http/RouteException;-><init>(Ljava/io/IOException;)V
-Lcom/android/okhttp/internal/http/RouteException;->addConnectException(Ljava/io/IOException;)V
-Lcom/android/okhttp/internal/http/RouteException;->addSuppressedExceptionMethod:Ljava/lang/reflect/Method;
-Lcom/android/okhttp/internal/http/RouteException;->addSuppressedIfPossible(Ljava/io/IOException;Ljava/io/IOException;)V
-Lcom/android/okhttp/internal/http/RouteException;->getLastConnectException()Ljava/io/IOException;
-Lcom/android/okhttp/internal/http/RouteException;->lastException:Ljava/io/IOException;
-Lcom/android/okhttp/internal/http/RouteSelector;-><init>(Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/RouteDatabase;)V
-Lcom/android/okhttp/internal/http/RouteSelector;->address:Lcom/android/okhttp/Address;
-Lcom/android/okhttp/internal/http/RouteSelector;->connectFailed(Lcom/android/okhttp/Route;Ljava/io/IOException;)V
-Lcom/android/okhttp/internal/http/RouteSelector;->getHostString(Ljava/net/InetSocketAddress;)Ljava/lang/String;
-Lcom/android/okhttp/internal/http/RouteSelector;->hasNextInetSocketAddress()Z
-Lcom/android/okhttp/internal/http/RouteSelector;->hasNextPostponed()Z
-Lcom/android/okhttp/internal/http/RouteSelector;->hasNextProxy()Z
-Lcom/android/okhttp/internal/http/RouteSelector;->inetSocketAddresses:Ljava/util/List;
-Lcom/android/okhttp/internal/http/RouteSelector;->lastInetSocketAddress:Ljava/net/InetSocketAddress;
-Lcom/android/okhttp/internal/http/RouteSelector;->lastProxy:Ljava/net/Proxy;
-Lcom/android/okhttp/internal/http/RouteSelector;->next()Lcom/android/okhttp/Route;
-Lcom/android/okhttp/internal/http/RouteSelector;->nextInetSocketAddress()Ljava/net/InetSocketAddress;
-Lcom/android/okhttp/internal/http/RouteSelector;->nextInetSocketAddressIndex:I
-Lcom/android/okhttp/internal/http/RouteSelector;->nextPostponed()Lcom/android/okhttp/Route;
-Lcom/android/okhttp/internal/http/RouteSelector;->nextProxy()Ljava/net/Proxy;
-Lcom/android/okhttp/internal/http/RouteSelector;->nextProxyIndex:I
-Lcom/android/okhttp/internal/http/RouteSelector;->postponedRoutes:Ljava/util/List;
-Lcom/android/okhttp/internal/http/RouteSelector;->proxies:Ljava/util/List;
-Lcom/android/okhttp/internal/http/RouteSelector;->resetNextInetSocketAddress(Ljava/net/Proxy;)V
-Lcom/android/okhttp/internal/http/RouteSelector;->resetNextProxy(Lcom/android/okhttp/HttpUrl;Ljava/net/Proxy;)V
-Lcom/android/okhttp/internal/http/RouteSelector;->routeDatabase:Lcom/android/okhttp/internal/RouteDatabase;
-Lcom/android/okhttp/internal/http/StreamAllocation;-><init>(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/Address;)V
-Lcom/android/okhttp/internal/http/StreamAllocation;->acquire(Lcom/android/okhttp/internal/io/RealConnection;)V
-Lcom/android/okhttp/internal/http/StreamAllocation;->address:Lcom/android/okhttp/Address;
-Lcom/android/okhttp/internal/http/StreamAllocation;->cancel()V
-Lcom/android/okhttp/internal/http/StreamAllocation;->canceled:Z
-Lcom/android/okhttp/internal/http/StreamAllocation;->connection()Lcom/android/okhttp/internal/io/RealConnection;
-Lcom/android/okhttp/internal/http/StreamAllocation;->connection:Lcom/android/okhttp/internal/io/RealConnection;
-Lcom/android/okhttp/internal/http/StreamAllocation;->connectionFailed()V
-Lcom/android/okhttp/internal/http/StreamAllocation;->connectionFailed(Ljava/io/IOException;)V
-Lcom/android/okhttp/internal/http/StreamAllocation;->connectionPool:Lcom/android/okhttp/ConnectionPool;
-Lcom/android/okhttp/internal/http/StreamAllocation;->deallocate(ZZZ)V
-Lcom/android/okhttp/internal/http/StreamAllocation;->findConnection(IIIZ)Lcom/android/okhttp/internal/io/RealConnection;
-Lcom/android/okhttp/internal/http/StreamAllocation;->findHealthyConnection(IIIZZ)Lcom/android/okhttp/internal/io/RealConnection;
-Lcom/android/okhttp/internal/http/StreamAllocation;->isRecoverable(Lcom/android/okhttp/internal/http/RouteException;)Z
-Lcom/android/okhttp/internal/http/StreamAllocation;->isRecoverable(Ljava/io/IOException;)Z
-Lcom/android/okhttp/internal/http/StreamAllocation;->newStream(IIIZZ)Lcom/android/okhttp/internal/http/HttpStream;
-Lcom/android/okhttp/internal/http/StreamAllocation;->noNewStreams()V
-Lcom/android/okhttp/internal/http/StreamAllocation;->recover(Lcom/android/okhttp/internal/http/RouteException;)Z
-Lcom/android/okhttp/internal/http/StreamAllocation;->recover(Ljava/io/IOException;Lcom/android/okhttp/okio/Sink;)Z
-Lcom/android/okhttp/internal/http/StreamAllocation;->release()V
-Lcom/android/okhttp/internal/http/StreamAllocation;->release(Lcom/android/okhttp/internal/io/RealConnection;)V
-Lcom/android/okhttp/internal/http/StreamAllocation;->released:Z
-Lcom/android/okhttp/internal/http/StreamAllocation;->routeDatabase()Lcom/android/okhttp/internal/RouteDatabase;
-Lcom/android/okhttp/internal/http/StreamAllocation;->routeSelector:Lcom/android/okhttp/internal/http/RouteSelector;
-Lcom/android/okhttp/internal/http/StreamAllocation;->stream()Lcom/android/okhttp/internal/http/HttpStream;
-Lcom/android/okhttp/internal/http/StreamAllocation;->stream:Lcom/android/okhttp/internal/http/HttpStream;
-Lcom/android/okhttp/internal/http/StreamAllocation;->streamFinished(Lcom/android/okhttp/internal/http/HttpStream;)V
-Lcom/android/okhttp/MediaType;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Lcom/android/okhttp/MediaType;->charset()Ljava/nio/charset/Charset;
-Lcom/android/okhttp/MediaType;->charset(Ljava/nio/charset/Charset;)Ljava/nio/charset/Charset;
-Lcom/android/okhttp/MediaType;->charset:Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->mediaType:Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->PARAMETER:Ljava/util/regex/Pattern;
-Lcom/android/okhttp/MediaType;->parse(Ljava/lang/String;)Lcom/android/okhttp/MediaType;
-Lcom/android/okhttp/MediaType;->QUOTED:Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->subtype()Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->subtype:Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->TOKEN:Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->type()Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->type:Ljava/lang/String;
-Lcom/android/okhttp/MediaType;->TYPE_SUBTYPE:Ljava/util/regex/Pattern;
-Lcom/android/okhttp/OkCacheContainer;->getCache()Lcom/android/okhttp/Cache;
-Lcom/android/okhttp/OkHttpClient;-><init>(Lcom/android/okhttp/OkHttpClient;)V
-Lcom/android/okhttp/OkHttpClient;->authenticator:Lcom/android/okhttp/Authenticator;
-Lcom/android/okhttp/OkHttpClient;->cache:Lcom/android/okhttp/Cache;
-Lcom/android/okhttp/OkHttpClient;->cancel(Ljava/lang/Object;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->certificatePinner:Lcom/android/okhttp/CertificatePinner;
-Lcom/android/okhttp/OkHttpClient;->connectionSpecs:Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->connectTimeout:I
-Lcom/android/okhttp/OkHttpClient;->cookieHandler:Ljava/net/CookieHandler;
-Lcom/android/okhttp/OkHttpClient;->copyWithDefaults()Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->defaultSslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
-Lcom/android/okhttp/OkHttpClient;->DEFAULT_CONNECTION_SPECS:Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->dispatcher:Lcom/android/okhttp/Dispatcher;
-Lcom/android/okhttp/OkHttpClient;->followRedirects:Z
-Lcom/android/okhttp/OkHttpClient;->followSslRedirects:Z
-Lcom/android/okhttp/OkHttpClient;->getAuthenticator()Lcom/android/okhttp/Authenticator;
-Lcom/android/okhttp/OkHttpClient;->getCache()Lcom/android/okhttp/Cache;
-Lcom/android/okhttp/OkHttpClient;->getCertificatePinner()Lcom/android/okhttp/CertificatePinner;
-Lcom/android/okhttp/OkHttpClient;->getConnectionSpecs()Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->getConnectTimeout()I
-Lcom/android/okhttp/OkHttpClient;->getDefaultSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;
-Lcom/android/okhttp/OkHttpClient;->getDispatcher()Lcom/android/okhttp/Dispatcher;
-Lcom/android/okhttp/OkHttpClient;->getDns()Lcom/android/okhttp/Dns;
-Lcom/android/okhttp/OkHttpClient;->getFollowRedirects()Z
-Lcom/android/okhttp/OkHttpClient;->getFollowSslRedirects()Z
-Lcom/android/okhttp/OkHttpClient;->getProtocols()Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->getReadTimeout()I
-Lcom/android/okhttp/OkHttpClient;->getRetryOnConnectionFailure()Z
-Lcom/android/okhttp/OkHttpClient;->getSocketFactory()Ljavax/net/SocketFactory;
-Lcom/android/okhttp/OkHttpClient;->getWriteTimeout()I
-Lcom/android/okhttp/OkHttpClient;->hostnameVerifier:Ljavax/net/ssl/HostnameVerifier;
-Lcom/android/okhttp/OkHttpClient;->interceptors()Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->interceptors:Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->internalCache()Lcom/android/okhttp/internal/InternalCache;
-Lcom/android/okhttp/OkHttpClient;->internalCache:Lcom/android/okhttp/internal/InternalCache;
-Lcom/android/okhttp/OkHttpClient;->networkInterceptors()Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->networkInterceptors:Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->newCall(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Call;
-Lcom/android/okhttp/OkHttpClient;->protocols:Ljava/util/List;
-Lcom/android/okhttp/OkHttpClient;->proxy:Ljava/net/Proxy;
-Lcom/android/okhttp/OkHttpClient;->proxySelector:Ljava/net/ProxySelector;
-Lcom/android/okhttp/OkHttpClient;->readTimeout:I
-Lcom/android/okhttp/OkHttpClient;->retryOnConnectionFailure:Z
-Lcom/android/okhttp/OkHttpClient;->routeDatabase()Lcom/android/okhttp/internal/RouteDatabase;
-Lcom/android/okhttp/OkHttpClient;->routeDatabase:Lcom/android/okhttp/internal/RouteDatabase;
-Lcom/android/okhttp/OkHttpClient;->setAuthenticator(Lcom/android/okhttp/Authenticator;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setCache(Lcom/android/okhttp/Cache;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setCertificatePinner(Lcom/android/okhttp/CertificatePinner;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setConnectionPool(Lcom/android/okhttp/ConnectionPool;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setConnectionSpecs(Ljava/util/List;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setConnectTimeout(JLjava/util/concurrent/TimeUnit;)V
-Lcom/android/okhttp/OkHttpClient;->setCookieHandler(Ljava/net/CookieHandler;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setDispatcher(Lcom/android/okhttp/Dispatcher;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setDns(Lcom/android/okhttp/Dns;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setFollowRedirects(Z)V
-Lcom/android/okhttp/OkHttpClient;->setFollowSslRedirects(Z)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setInternalCache(Lcom/android/okhttp/internal/InternalCache;)V
-Lcom/android/okhttp/OkHttpClient;->setProxy(Ljava/net/Proxy;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setProxySelector(Ljava/net/ProxySelector;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setReadTimeout(JLjava/util/concurrent/TimeUnit;)V
-Lcom/android/okhttp/OkHttpClient;->setSocketFactory(Ljavax/net/SocketFactory;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setSslSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)Lcom/android/okhttp/OkHttpClient;
-Lcom/android/okhttp/OkHttpClient;->setWriteTimeout(JLjava/util/concurrent/TimeUnit;)V
-Lcom/android/okhttp/OkHttpClient;->socketFactory:Ljavax/net/SocketFactory;
-Lcom/android/okhttp/OkHttpClient;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
-Lcom/android/okhttp/OkHttpClient;->writeTimeout:I
-Lcom/android/okhttp/okio/AsyncTimeout$Watchdog;-><init>()V
-Lcom/android/okhttp/okio/AsyncTimeout;-><init>()V
-Lcom/android/okhttp/okio/AsyncTimeout;->awaitTimeout()Lcom/android/okhttp/okio/AsyncTimeout;
-Lcom/android/okhttp/okio/AsyncTimeout;->cancelScheduledTimeout(Lcom/android/okhttp/okio/AsyncTimeout;)Z
-Lcom/android/okhttp/okio/AsyncTimeout;->enter()V
-Lcom/android/okhttp/okio/AsyncTimeout;->exit()Z
-Lcom/android/okhttp/okio/AsyncTimeout;->exit(Ljava/io/IOException;)Ljava/io/IOException;
-Lcom/android/okhttp/okio/AsyncTimeout;->exit(Z)V
-Lcom/android/okhttp/okio/AsyncTimeout;->head:Lcom/android/okhttp/okio/AsyncTimeout;
-Lcom/android/okhttp/okio/AsyncTimeout;->inQueue:Z
-Lcom/android/okhttp/okio/AsyncTimeout;->newTimeoutException(Ljava/io/IOException;)Ljava/io/IOException;
-Lcom/android/okhttp/okio/AsyncTimeout;->next:Lcom/android/okhttp/okio/AsyncTimeout;
-Lcom/android/okhttp/okio/AsyncTimeout;->remainingNanos(J)J
-Lcom/android/okhttp/okio/AsyncTimeout;->scheduleTimeout(Lcom/android/okhttp/okio/AsyncTimeout;JZ)V
-Lcom/android/okhttp/okio/AsyncTimeout;->sink(Lcom/android/okhttp/okio/Sink;)Lcom/android/okhttp/okio/Sink;
-Lcom/android/okhttp/okio/AsyncTimeout;->source(Lcom/android/okhttp/okio/Source;)Lcom/android/okhttp/okio/Source;
-Lcom/android/okhttp/okio/AsyncTimeout;->timedOut()V
-Lcom/android/okhttp/okio/AsyncTimeout;->timeoutAt:J
-Lcom/android/okhttp/okio/Buffer;-><init>()V
-Lcom/android/okhttp/okio/Buffer;->buffer()Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->clear()V
-Lcom/android/okhttp/okio/Buffer;->completeSegmentByteCount()J
-Lcom/android/okhttp/okio/Buffer;->copyTo(Lcom/android/okhttp/okio/Buffer;JJ)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->copyTo(Ljava/io/OutputStream;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->copyTo(Ljava/io/OutputStream;JJ)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->DIGITS:[B
-Lcom/android/okhttp/okio/Buffer;->emit()Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->emitCompleteSegments()Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->emitCompleteSegments()Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->exhausted()Z
-Lcom/android/okhttp/okio/Buffer;->getByte(J)B
-Lcom/android/okhttp/okio/Buffer;->head:Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Buffer;->indexOf(B)J
-Lcom/android/okhttp/okio/Buffer;->indexOf(BJ)J
-Lcom/android/okhttp/okio/Buffer;->indexOf(Lcom/android/okhttp/okio/ByteString;)J
-Lcom/android/okhttp/okio/Buffer;->indexOf(Lcom/android/okhttp/okio/ByteString;J)J
-Lcom/android/okhttp/okio/Buffer;->indexOfElement(Lcom/android/okhttp/okio/ByteString;)J
-Lcom/android/okhttp/okio/Buffer;->indexOfElement(Lcom/android/okhttp/okio/ByteString;J)J
-Lcom/android/okhttp/okio/Buffer;->inputStream()Ljava/io/InputStream;
-Lcom/android/okhttp/okio/Buffer;->outputStream()Ljava/io/OutputStream;
-Lcom/android/okhttp/okio/Buffer;->rangeEquals(JLcom/android/okhttp/okio/ByteString;)Z
-Lcom/android/okhttp/okio/Buffer;->read(Lcom/android/okhttp/okio/Buffer;J)J
-Lcom/android/okhttp/okio/Buffer;->read([B)I
-Lcom/android/okhttp/okio/Buffer;->read([BII)I
-Lcom/android/okhttp/okio/Buffer;->readAll(Lcom/android/okhttp/okio/Sink;)J
-Lcom/android/okhttp/okio/Buffer;->readByte()B
-Lcom/android/okhttp/okio/Buffer;->readByteArray()[B
-Lcom/android/okhttp/okio/Buffer;->readByteArray(J)[B
-Lcom/android/okhttp/okio/Buffer;->readByteString()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/Buffer;->readByteString(J)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/Buffer;->readDecimalLong()J
-Lcom/android/okhttp/okio/Buffer;->readFrom(Ljava/io/InputStream;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->readFrom(Ljava/io/InputStream;J)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->readFrom(Ljava/io/InputStream;JZ)V
-Lcom/android/okhttp/okio/Buffer;->readFully(Lcom/android/okhttp/okio/Buffer;J)V
-Lcom/android/okhttp/okio/Buffer;->readFully([B)V
-Lcom/android/okhttp/okio/Buffer;->readHexadecimalUnsignedLong()J
-Lcom/android/okhttp/okio/Buffer;->readInt()I
-Lcom/android/okhttp/okio/Buffer;->readIntLe()I
-Lcom/android/okhttp/okio/Buffer;->readLong()J
-Lcom/android/okhttp/okio/Buffer;->readLongLe()J
-Lcom/android/okhttp/okio/Buffer;->readShort()S
-Lcom/android/okhttp/okio/Buffer;->readShortLe()S
-Lcom/android/okhttp/okio/Buffer;->readString(JLjava/nio/charset/Charset;)Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->readString(Ljava/nio/charset/Charset;)Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->readUtf8()Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->readUtf8(J)Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->readUtf8CodePoint()I
-Lcom/android/okhttp/okio/Buffer;->readUtf8Line()Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->readUtf8Line(J)Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->readUtf8LineStrict()Ljava/lang/String;
-Lcom/android/okhttp/okio/Buffer;->REPLACEMENT_CHARACTER:I
-Lcom/android/okhttp/okio/Buffer;->request(J)Z
-Lcom/android/okhttp/okio/Buffer;->require(J)V
-Lcom/android/okhttp/okio/Buffer;->segmentSizes()Ljava/util/List;
-Lcom/android/okhttp/okio/Buffer;->size()J
-Lcom/android/okhttp/okio/Buffer;->size:J
-Lcom/android/okhttp/okio/Buffer;->skip(J)V
-Lcom/android/okhttp/okio/Buffer;->snapshot()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/Buffer;->snapshot(I)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/Buffer;->timeout()Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Buffer;->writableSegment(I)Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/Buffer;J)V
-Lcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/ByteString;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/ByteString;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/Source;J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->write([B)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->write([B)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->write([BII)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->write([BII)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeAll(Lcom/android/okhttp/okio/Source;)J
-Lcom/android/okhttp/okio/Buffer;->writeByte(I)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeByte(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeDecimalLong(J)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeDecimalLong(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeInt(I)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeInt(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeIntLe(I)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeIntLe(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeLong(J)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeLong(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeLongLe(J)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeLongLe(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeShort(I)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeShort(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeShortLe(I)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeShortLe(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeString(Ljava/lang/String;IILjava/nio/charset/Charset;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeString(Ljava/lang/String;IILjava/nio/charset/Charset;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeString(Ljava/lang/String;Ljava/nio/charset/Charset;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeString(Ljava/lang/String;Ljava/nio/charset/Charset;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeTo(Ljava/io/OutputStream;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeTo(Ljava/io/OutputStream;J)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/Buffer;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/Buffer;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->buffer()Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/BufferedSink;->emit()Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->emitCompleteSegments()Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->outputStream()Ljava/io/OutputStream;
-Lcom/android/okhttp/okio/BufferedSink;->write(Lcom/android/okhttp/okio/ByteString;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->write(Lcom/android/okhttp/okio/Source;J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->write([B)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->write([BII)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeAll(Lcom/android/okhttp/okio/Source;)J
-Lcom/android/okhttp/okio/BufferedSink;->writeByte(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeDecimalLong(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeInt(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeIntLe(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeLong(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeLongLe(J)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeShort(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeShortLe(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeString(Ljava/lang/String;IILjava/nio/charset/Charset;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeString(Ljava/lang/String;Ljava/nio/charset/Charset;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSink;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/BufferedSink;
-Lcom/android/okhttp/okio/BufferedSource;->buffer()Lcom/android/okhttp/okio/Buffer;
-Lcom/android/okhttp/okio/BufferedSource;->exhausted()Z
-Lcom/android/okhttp/okio/BufferedSource;->indexOf(B)J
-Lcom/android/okhttp/okio/BufferedSource;->indexOf(BJ)J
-Lcom/android/okhttp/okio/BufferedSource;->indexOf(Lcom/android/okhttp/okio/ByteString;)J
-Lcom/android/okhttp/okio/BufferedSource;->indexOf(Lcom/android/okhttp/okio/ByteString;J)J
-Lcom/android/okhttp/okio/BufferedSource;->indexOfElement(Lcom/android/okhttp/okio/ByteString;)J
-Lcom/android/okhttp/okio/BufferedSource;->indexOfElement(Lcom/android/okhttp/okio/ByteString;J)J
-Lcom/android/okhttp/okio/BufferedSource;->inputStream()Ljava/io/InputStream;
-Lcom/android/okhttp/okio/BufferedSource;->read([B)I
-Lcom/android/okhttp/okio/BufferedSource;->read([BII)I
-Lcom/android/okhttp/okio/BufferedSource;->readAll(Lcom/android/okhttp/okio/Sink;)J
-Lcom/android/okhttp/okio/BufferedSource;->readByte()B
-Lcom/android/okhttp/okio/BufferedSource;->readByteArray()[B
-Lcom/android/okhttp/okio/BufferedSource;->readByteArray(J)[B
-Lcom/android/okhttp/okio/BufferedSource;->readByteString()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/BufferedSource;->readByteString(J)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/BufferedSource;->readDecimalLong()J
-Lcom/android/okhttp/okio/BufferedSource;->readFully(Lcom/android/okhttp/okio/Buffer;J)V
-Lcom/android/okhttp/okio/BufferedSource;->readFully([B)V
-Lcom/android/okhttp/okio/BufferedSource;->readHexadecimalUnsignedLong()J
-Lcom/android/okhttp/okio/BufferedSource;->readInt()I
-Lcom/android/okhttp/okio/BufferedSource;->readIntLe()I
-Lcom/android/okhttp/okio/BufferedSource;->readLong()J
-Lcom/android/okhttp/okio/BufferedSource;->readLongLe()J
-Lcom/android/okhttp/okio/BufferedSource;->readShort()S
-Lcom/android/okhttp/okio/BufferedSource;->readShortLe()S
-Lcom/android/okhttp/okio/BufferedSource;->readString(JLjava/nio/charset/Charset;)Ljava/lang/String;
-Lcom/android/okhttp/okio/BufferedSource;->readString(Ljava/nio/charset/Charset;)Ljava/lang/String;
-Lcom/android/okhttp/okio/BufferedSource;->readUtf8()Ljava/lang/String;
-Lcom/android/okhttp/okio/BufferedSource;->readUtf8(J)Ljava/lang/String;
-Lcom/android/okhttp/okio/BufferedSource;->readUtf8CodePoint()I
-Lcom/android/okhttp/okio/BufferedSource;->readUtf8Line()Ljava/lang/String;
-Lcom/android/okhttp/okio/BufferedSource;->readUtf8LineStrict()Ljava/lang/String;
-Lcom/android/okhttp/okio/BufferedSource;->request(J)Z
-Lcom/android/okhttp/okio/BufferedSource;->require(J)V
-Lcom/android/okhttp/okio/BufferedSource;->skip(J)V
-Lcom/android/okhttp/okio/ByteString;-><init>([B)V
-Lcom/android/okhttp/okio/ByteString;->base64()Ljava/lang/String;
-Lcom/android/okhttp/okio/ByteString;->base64Url()Ljava/lang/String;
-Lcom/android/okhttp/okio/ByteString;->compareTo(Lcom/android/okhttp/okio/ByteString;)I
-Lcom/android/okhttp/okio/ByteString;->compareTo(Ljava/lang/Object;)I
-Lcom/android/okhttp/okio/ByteString;->data:[B
-Lcom/android/okhttp/okio/ByteString;->decodeBase64(Ljava/lang/String;)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->decodeHex(Ljava/lang/String;)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->decodeHexDigit(C)I
-Lcom/android/okhttp/okio/ByteString;->digest(Ljava/lang/String;)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->EMPTY:Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->encodeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->getByte(I)B
-Lcom/android/okhttp/okio/ByteString;->hashCode:I
-Lcom/android/okhttp/okio/ByteString;->hex()Ljava/lang/String;
-Lcom/android/okhttp/okio/ByteString;->HEX_DIGITS:[C
-Lcom/android/okhttp/okio/ByteString;->md5()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->of([BII)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->rangeEquals(ILcom/android/okhttp/okio/ByteString;II)Z
-Lcom/android/okhttp/okio/ByteString;->rangeEquals(I[BII)Z
-Lcom/android/okhttp/okio/ByteString;->read(Ljava/io/InputStream;I)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->sha256()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->size()I
-Lcom/android/okhttp/okio/ByteString;->substring(I)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->substring(II)Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->toAsciiLowercase()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->toAsciiUppercase()Lcom/android/okhttp/okio/ByteString;
-Lcom/android/okhttp/okio/ByteString;->toByteArray()[B
-Lcom/android/okhttp/okio/ByteString;->utf8()Ljava/lang/String;
-Lcom/android/okhttp/okio/ByteString;->utf8:Ljava/lang/String;
-Lcom/android/okhttp/okio/ByteString;->write(Lcom/android/okhttp/okio/Buffer;)V
-Lcom/android/okhttp/okio/ByteString;->write(Ljava/io/OutputStream;)V
-Lcom/android/okhttp/okio/Segment;-><init>()V
-Lcom/android/okhttp/okio/Segment;-><init>(Lcom/android/okhttp/okio/Segment;)V
-Lcom/android/okhttp/okio/Segment;-><init>([BII)V
-Lcom/android/okhttp/okio/Segment;->compact()V
-Lcom/android/okhttp/okio/Segment;->data:[B
-Lcom/android/okhttp/okio/Segment;->limit:I
-Lcom/android/okhttp/okio/Segment;->next:Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Segment;->owner:Z
-Lcom/android/okhttp/okio/Segment;->pop()Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Segment;->pos:I
-Lcom/android/okhttp/okio/Segment;->prev:Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Segment;->push(Lcom/android/okhttp/okio/Segment;)Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Segment;->shared:Z
-Lcom/android/okhttp/okio/Segment;->SIZE:I
-Lcom/android/okhttp/okio/Segment;->split(I)Lcom/android/okhttp/okio/Segment;
-Lcom/android/okhttp/okio/Segment;->writeTo(Lcom/android/okhttp/okio/Segment;I)V
-Lcom/android/okhttp/okio/Sink;->timeout()Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Sink;->write(Lcom/android/okhttp/okio/Buffer;J)V
-Lcom/android/okhttp/okio/Source;->read(Lcom/android/okhttp/okio/Buffer;J)J
-Lcom/android/okhttp/okio/Source;->timeout()Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;-><init>()V
-Lcom/android/okhttp/okio/Timeout;->clearDeadline()Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;->clearTimeout()Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;->deadline(JLjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;->deadlineNanoTime()J
-Lcom/android/okhttp/okio/Timeout;->deadlineNanoTime(J)Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;->deadlineNanoTime:J
-Lcom/android/okhttp/okio/Timeout;->hasDeadline()Z
-Lcom/android/okhttp/okio/Timeout;->hasDeadline:Z
-Lcom/android/okhttp/okio/Timeout;->NONE:Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;->throwIfReached()V
-Lcom/android/okhttp/okio/Timeout;->timeout(JLjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/okio/Timeout;
-Lcom/android/okhttp/okio/Timeout;->timeoutNanos()J
-Lcom/android/okhttp/okio/Timeout;->timeoutNanos:J
-Lcom/android/okhttp/Protocol;->get(Ljava/lang/String;)Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Protocol;->HTTP_1_0:Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Protocol;->HTTP_1_1:Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Protocol;->HTTP_2:Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Protocol;->protocol:Ljava/lang/String;
-Lcom/android/okhttp/Protocol;->SPDY_3:Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Protocol;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Protocol;->values()[Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Request$Builder;-><init>()V
-Lcom/android/okhttp/Request$Builder;-><init>(Lcom/android/okhttp/Request;)V
-Lcom/android/okhttp/Request$Builder;->addHeader(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->body:Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/Request$Builder;->build()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Request$Builder;->cacheControl(Lcom/android/okhttp/CacheControl;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->delete()Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->delete(Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->get()Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->head()Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->header(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->headers(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->headers:Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Request$Builder;->method(Ljava/lang/String;Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->method:Ljava/lang/String;
-Lcom/android/okhttp/Request$Builder;->patch(Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->post(Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->put(Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->removeHeader(Ljava/lang/String;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->tag(Ljava/lang/Object;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->tag:Ljava/lang/Object;
-Lcom/android/okhttp/Request$Builder;->url(Lcom/android/okhttp/HttpUrl;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->url(Ljava/lang/String;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->url(Ljava/net/URL;)Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request$Builder;->url:Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/Request;-><init>(Lcom/android/okhttp/Request$Builder;)V
-Lcom/android/okhttp/Request;->body()Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/Request;->body:Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/Request;->cacheControl()Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/Request;->cacheControl:Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/Request;->header(Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/Request;->headers()Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/Request;->headers(Ljava/lang/String;)Ljava/util/List;
-Lcom/android/okhttp/Request;->httpUrl()Lcom/android/okhttp/HttpUrl;
-Lcom/android/okhttp/Request;->isHttps()Z
-Lcom/android/okhttp/Request;->javaNetUri:Ljava/net/URI;
-Lcom/android/okhttp/Request;->javaNetUrl:Ljava/net/URL;
-Lcom/android/okhttp/Request;->method()Ljava/lang/String;
-Lcom/android/okhttp/Request;->newBuilder()Lcom/android/okhttp/Request$Builder;
-Lcom/android/okhttp/Request;->tag()Ljava/lang/Object;
-Lcom/android/okhttp/Request;->tag:Ljava/lang/Object;
-Lcom/android/okhttp/Request;->uri()Ljava/net/URI;
-Lcom/android/okhttp/Request;->url()Ljava/net/URL;
-Lcom/android/okhttp/Request;->urlString()Ljava/lang/String;
-Lcom/android/okhttp/RequestBody;-><init>()V
-Lcom/android/okhttp/RequestBody;->contentLength()J
-Lcom/android/okhttp/RequestBody;->contentType()Lcom/android/okhttp/MediaType;
-Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;Lcom/android/okhttp/okio/ByteString;)Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;Ljava/io/File;)Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;Ljava/lang/String;)Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;[B)Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;[BII)Lcom/android/okhttp/RequestBody;
-Lcom/android/okhttp/RequestBody;->writeTo(Lcom/android/okhttp/okio/BufferedSink;)V
-Lcom/android/okhttp/Response$Builder;-><init>()V
-Lcom/android/okhttp/Response$Builder;-><init>(Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/Response$Builder;->addHeader(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->body(Lcom/android/okhttp/ResponseBody;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->body:Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/Response$Builder;->build()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response$Builder;->cacheResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->cacheResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response$Builder;->checkPriorResponse(Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/Response$Builder;->checkSupportResponse(Ljava/lang/String;Lcom/android/okhttp/Response;)V
-Lcom/android/okhttp/Response$Builder;->code(I)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->code:I
-Lcom/android/okhttp/Response$Builder;->handshake(Lcom/android/okhttp/Handshake;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->handshake:Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Response$Builder;->header(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->headers(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->headers:Lcom/android/okhttp/Headers$Builder;
-Lcom/android/okhttp/Response$Builder;->message(Ljava/lang/String;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->message:Ljava/lang/String;
-Lcom/android/okhttp/Response$Builder;->networkResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->networkResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response$Builder;->priorResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->priorResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response$Builder;->protocol(Lcom/android/okhttp/Protocol;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->protocol:Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Response$Builder;->removeHeader(Ljava/lang/String;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->request(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response$Builder;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Response;-><init>(Lcom/android/okhttp/Response$Builder;)V
-Lcom/android/okhttp/Response;->body()Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/Response;->body:Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/Response;->cacheControl()Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/Response;->cacheControl:Lcom/android/okhttp/CacheControl;
-Lcom/android/okhttp/Response;->cacheResponse()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response;->cacheResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response;->challenges()Ljava/util/List;
-Lcom/android/okhttp/Response;->code()I
-Lcom/android/okhttp/Response;->handshake()Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Response;->handshake:Lcom/android/okhttp/Handshake;
-Lcom/android/okhttp/Response;->header(Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/Response;->header(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Lcom/android/okhttp/Response;->headers()Lcom/android/okhttp/Headers;
-Lcom/android/okhttp/Response;->headers(Ljava/lang/String;)Ljava/util/List;
-Lcom/android/okhttp/Response;->isRedirect()Z
-Lcom/android/okhttp/Response;->isSuccessful()Z
-Lcom/android/okhttp/Response;->message()Ljava/lang/String;
-Lcom/android/okhttp/Response;->networkResponse()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response;->newBuilder()Lcom/android/okhttp/Response$Builder;
-Lcom/android/okhttp/Response;->priorResponse()Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response;->priorResponse:Lcom/android/okhttp/Response;
-Lcom/android/okhttp/Response;->protocol()Lcom/android/okhttp/Protocol;
-Lcom/android/okhttp/Response;->request()Lcom/android/okhttp/Request;
-Lcom/android/okhttp/Response;->request:Lcom/android/okhttp/Request;
-Lcom/android/okhttp/ResponseBody;-><init>()V
-Lcom/android/okhttp/ResponseBody;->bytes()[B
-Lcom/android/okhttp/ResponseBody;->byteStream()Ljava/io/InputStream;
-Lcom/android/okhttp/ResponseBody;->charset()Ljava/nio/charset/Charset;
-Lcom/android/okhttp/ResponseBody;->charStream()Ljava/io/Reader;
-Lcom/android/okhttp/ResponseBody;->contentLength()J
-Lcom/android/okhttp/ResponseBody;->contentType()Lcom/android/okhttp/MediaType;
-Lcom/android/okhttp/ResponseBody;->create(Lcom/android/okhttp/MediaType;JLcom/android/okhttp/okio/BufferedSource;)Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/ResponseBody;->create(Lcom/android/okhttp/MediaType;Ljava/lang/String;)Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/ResponseBody;->create(Lcom/android/okhttp/MediaType;[B)Lcom/android/okhttp/ResponseBody;
-Lcom/android/okhttp/ResponseBody;->reader:Ljava/io/Reader;
-Lcom/android/okhttp/ResponseBody;->source()Lcom/android/okhttp/okio/BufferedSource;
-Lcom/android/okhttp/ResponseBody;->string()Ljava/lang/String;
-Lcom/android/okhttp/Route;-><init>(Lcom/android/okhttp/Address;Ljava/net/Proxy;Ljava/net/InetSocketAddress;)V
-Lcom/android/okhttp/Route;->address:Lcom/android/okhttp/Address;
-Lcom/android/okhttp/Route;->getAddress()Lcom/android/okhttp/Address;
-Lcom/android/okhttp/Route;->getProxy()Ljava/net/Proxy;
-Lcom/android/okhttp/Route;->getSocketAddress()Ljava/net/InetSocketAddress;
-Lcom/android/okhttp/Route;->inetSocketAddress:Ljava/net/InetSocketAddress;
-Lcom/android/okhttp/Route;->proxy:Ljava/net/Proxy;
-Lcom/android/okhttp/Route;->requiresTunnel()Z
-Lcom/android/okhttp/TlsVersion;->forJavaName(Ljava/lang/String;)Lcom/android/okhttp/TlsVersion;
-Lcom/android/okhttp/TlsVersion;->javaName()Ljava/lang/String;
-Lcom/android/okhttp/TlsVersion;->javaName:Ljava/lang/String;
-Lcom/android/okhttp/TlsVersion;->SSL_3_0:Lcom/android/okhttp/TlsVersion;
-Lcom/android/okhttp/TlsVersion;->TLS_1_0:Lcom/android/okhttp/TlsVersion;
-Lcom/android/okhttp/TlsVersion;->TLS_1_1:Lcom/android/okhttp/TlsVersion;
-Lcom/android/okhttp/TlsVersion;->TLS_1_2:Lcom/android/okhttp/TlsVersion;
-Lcom/android/okhttp/TlsVersion;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/TlsVersion;
-Lcom/android/okhttp/TlsVersion;->values()[Lcom/android/okhttp/TlsVersion;
 Lcom/android/org/conscrypt/AbstractConscryptSocket;-><init>()V
 Lcom/android/org/conscrypt/AbstractConscryptSocket;-><init>(Ljava/lang/String;I)V
 Lcom/android/org/conscrypt/AbstractConscryptSocket;-><init>(Ljava/lang/String;ILjava/net/InetAddress;I)V
@@ -102641,9868 +94140,6 @@
 Lcom/android/org/conscrypt/TrustManagerImpl;->TRUST_ANCHOR_COMPARATOR:Lcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator;
 Lcom/android/org/conscrypt/TrustManagerImpl;->validator:Ljava/security/cert/CertPathValidator;
 Lcom/android/org/conscrypt/TrustManagerImpl;->verifyChain(Ljava/util/List;Ljava/util/List;Ljava/lang/String;Z[B[B)Ljava/util/List;
-Ldalvik/bytecode/OpcodeInfo;-><init>()V
-Ldalvik/bytecode/OpcodeInfo;->isInvoke(I)Z
-Ldalvik/system/AllocationLimitError;-><init>()V
-Ldalvik/system/AllocationLimitError;-><init>(Ljava/lang/String;)V
-Ldalvik/system/AnnotatedStackTraceElement;-><init>()V
-Ldalvik/system/AnnotatedStackTraceElement;->blockedOn:Ljava/lang/Object;
-Ldalvik/system/AnnotatedStackTraceElement;->getBlockedOn()Ljava/lang/Object;
-Ldalvik/system/AnnotatedStackTraceElement;->getHeldLocks()[Ljava/lang/Object;
-Ldalvik/system/AnnotatedStackTraceElement;->getStackTraceElement()Ljava/lang/StackTraceElement;
-Ldalvik/system/AnnotatedStackTraceElement;->heldLocks:[Ljava/lang/Object;
-Ldalvik/system/AnnotatedStackTraceElement;->stackTraceElement:Ljava/lang/StackTraceElement;
-Ldalvik/system/BaseDexClassLoader$Reporter;->report(Ljava/util/List;Ljava/util/List;)V
-Ldalvik/system/BaseDexClassLoader;-><init>([Ljava/nio/ByteBuffer;Ljava/lang/ClassLoader;)V
-Ldalvik/system/BaseDexClassLoader;->addNativePath(Ljava/util/Collection;)V
-Ldalvik/system/BaseDexClassLoader;->getReporter()Ldalvik/system/BaseDexClassLoader$Reporter;
-Ldalvik/system/BaseDexClassLoader;->reportClassLoaderChain()V
-Ldalvik/system/BaseDexClassLoader;->reporter:Ldalvik/system/BaseDexClassLoader$Reporter;
-Ldalvik/system/BaseDexClassLoader;->setReporter(Ldalvik/system/BaseDexClassLoader$Reporter;)V
-Ldalvik/system/BlockGuard$BlockGuardPolicyException;-><init>(II)V
-Ldalvik/system/BlockGuard$BlockGuardPolicyException;->getPolicy()I
-Ldalvik/system/BlockGuard$BlockGuardPolicyException;->getPolicyViolation()I
-Ldalvik/system/BlockGuard$Policy;->getPolicyMask()I
-Ldalvik/system/BlockGuard$Policy;->onUnbufferedIO()V
-Ldalvik/system/BlockGuard$Policy;->onWriteToDisk()V
-Ldalvik/system/BlockGuard;-><init>()V
-Ldalvik/system/BlockGuard;->DISALLOW_DISK_READ:I
-Ldalvik/system/BlockGuard;->DISALLOW_DISK_WRITE:I
-Ldalvik/system/BlockGuard;->DISALLOW_NETWORK:I
-Ldalvik/system/BlockGuard;->PASS_RESTRICTIONS_VIA_RPC:I
-Ldalvik/system/BlockGuard;->PENALTY_DEATH:I
-Ldalvik/system/BlockGuard;->PENALTY_DIALOG:I
-Ldalvik/system/BlockGuard;->PENALTY_LOG:I
-Ldalvik/system/ClassExt;-><init>()V
-Ldalvik/system/ClassExt;->obsoleteDexCaches:[Ljava/lang/Object;
-Ldalvik/system/ClassExt;->obsoleteMethods:Ljava/lang/Object;
-Ldalvik/system/ClassExt;->originalDexFile:Ljava/lang/Object;
-Ldalvik/system/ClassExt;->verifyError:Ljava/lang/Object;
-Ldalvik/system/CloseGuard$DefaultReporter;->report(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ldalvik/system/CloseGuard$Tracker;->close(Ljava/lang/Throwable;)V
-Ldalvik/system/CloseGuard$Tracker;->open(Ljava/lang/Throwable;)V
-Ldalvik/system/CloseGuard;->closerNameOrAllocationInfo:Ljava/lang/Object;
-Ldalvik/system/CloseGuard;->currentTracker:Ldalvik/system/CloseGuard$Tracker;
-Ldalvik/system/CloseGuard;->getReporter()Ldalvik/system/CloseGuard$Reporter;
-Ldalvik/system/CloseGuard;->getTracker()Ldalvik/system/CloseGuard$Tracker;
-Ldalvik/system/CloseGuard;->isEnabled()Z
-Ldalvik/system/CloseGuard;->reporter:Ldalvik/system/CloseGuard$Reporter;
-Ldalvik/system/CloseGuard;->setTracker(Ldalvik/system/CloseGuard$Tracker;)V
-Ldalvik/system/CloseGuard;->stackAndTrackingEnabled:Z
-Ldalvik/system/DalvikLogging;-><init>()V
-Ldalvik/system/DalvikLogging;->loggerNameToTag(Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/DalvikLogHandler;->publish(Ljava/util/logging/Logger;Ljava/lang/String;Ljava/util/logging/Level;Ljava/lang/String;)V
-Ldalvik/system/DexFile$DFEnum;-><init>(Ldalvik/system/DexFile;)V
-Ldalvik/system/DexFile$DFEnum;->mIndex:I
-Ldalvik/system/DexFile$OptimizationInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Ldalvik/system/DexFile$OptimizationInfo;->getReason()Ljava/lang/String;
-Ldalvik/system/DexFile$OptimizationInfo;->getStatus()Ljava/lang/String;
-Ldalvik/system/DexFile$OptimizationInfo;->reason:Ljava/lang/String;
-Ldalvik/system/DexFile$OptimizationInfo;->status:Ljava/lang/String;
-Ldalvik/system/DexFile;-><init>(Ljava/io/File;Ljava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)V
-Ldalvik/system/DexFile;-><init>(Ljava/lang/String;Ljava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)V
-Ldalvik/system/DexFile;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)V
-Ldalvik/system/DexFile;-><init>(Ljava/nio/ByteBuffer;)V
-Ldalvik/system/DexFile;->closeDexFile(Ljava/lang/Object;)Z
-Ldalvik/system/DexFile;->createCookieWithArray([BII)Ljava/lang/Object;
-Ldalvik/system/DexFile;->createCookieWithDirectBuffer(Ljava/nio/ByteBuffer;II)Ljava/lang/Object;
-Ldalvik/system/DexFile;->defineClass(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/Object;Ldalvik/system/DexFile;Ljava/util/List;)Ljava/lang/Class;
-Ldalvik/system/DexFile;->defineClassNative(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/Object;Ldalvik/system/DexFile;)Ljava/lang/Class;
-Ldalvik/system/DexFile;->DEX2OAT_FOR_BOOT_IMAGE:I
-Ldalvik/system/DexFile;->DEX2OAT_FOR_FILTER:I
-Ldalvik/system/DexFile;->DEX2OAT_FOR_RELOCATION:I
-Ldalvik/system/DexFile;->DEX2OAT_FROM_SCRATCH:I
-Ldalvik/system/DexFile;->getDexFileOptimizationInfo(Ljava/lang/String;Ljava/lang/String;)Ldalvik/system/DexFile$OptimizationInfo;
-Ldalvik/system/DexFile;->getDexFileOptimizationStatus(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-Ldalvik/system/DexFile;->getDexFileOutputPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-Ldalvik/system/DexFile;->getDexFileStatus(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/DexFile;->getDexOptNeeded(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)I
-Ldalvik/system/DexFile;->getDexOptNeeded(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)I
-Ldalvik/system/DexFile;->getNonProfileGuidedCompilerFilter(Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/DexFile;->getSafeModeCompilerFilter(Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/DexFile;->getStaticSizeOfDexFile()J
-Ldalvik/system/DexFile;->getStaticSizeOfDexFile(Ljava/lang/Object;)J
-Ldalvik/system/DexFile;->isBackedByOatFile(Ljava/lang/Object;)Z
-Ldalvik/system/DexFile;->isProfileGuidedCompilerFilter(Ljava/lang/String;)Z
-Ldalvik/system/DexFile;->isValidCompilerFilter(Ljava/lang/String;)Z
-Ldalvik/system/DexFile;->NO_DEXOPT_NEEDED:I
-Ldalvik/system/DexFile;->openInMemoryDexFile(Ljava/nio/ByteBuffer;)Ljava/lang/Object;
-Ldalvik/system/DexFile;->setTrusted()V
-Ldalvik/system/DexFile;->setTrusted(Ljava/lang/Object;)V
-Ldalvik/system/DexPathList$Element;-><init>(Ldalvik/system/DexFile;)V
-Ldalvik/system/DexPathList$Element;-><init>(Ljava/io/File;)V
-Ldalvik/system/DexPathList$Element;->findClass(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/List;)Ljava/lang/Class;
-Ldalvik/system/DexPathList$Element;->findResource(Ljava/lang/String;)Ljava/net/URL;
-Ldalvik/system/DexPathList$Element;->getDexPath()Ljava/lang/String;
-Ldalvik/system/DexPathList$Element;->initialized:Z
-Ldalvik/system/DexPathList$Element;->maybeInit()V
-Ldalvik/system/DexPathList$Element;->urlHandler:Llibcore/io/ClassPathURLStreamHandler;
-Ldalvik/system/DexPathList$NativeLibraryElement;-><init>(Ljava/io/File;Ljava/lang/String;)V
-Ldalvik/system/DexPathList$NativeLibraryElement;->findNativeLibrary(Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/DexPathList$NativeLibraryElement;->initialized:Z
-Ldalvik/system/DexPathList$NativeLibraryElement;->maybeInit()V
-Ldalvik/system/DexPathList$NativeLibraryElement;->urlHandler:Llibcore/io/ClassPathURLStreamHandler;
-Ldalvik/system/DexPathList$NativeLibraryElement;->zipDir:Ljava/lang/String;
-Ldalvik/system/DexPathList;-><init>(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Z)V
-Ldalvik/system/DexPathList;-><init>(Ljava/lang/ClassLoader;[Ljava/nio/ByteBuffer;)V
-Ldalvik/system/DexPathList;->addDexPath(Ljava/lang/String;Ljava/io/File;Z)V
-Ldalvik/system/DexPathList;->DEX_SUFFIX:Ljava/lang/String;
-Ldalvik/system/DexPathList;->findClass(Ljava/lang/String;Ljava/util/List;)Ljava/lang/Class;
-Ldalvik/system/DexPathList;->findLibrary(Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/DexPathList;->findResource(Ljava/lang/String;)Ljava/net/URL;
-Ldalvik/system/DexPathList;->findResources(Ljava/lang/String;)Ljava/util/Enumeration;
-Ldalvik/system/DexPathList;->getDexPaths()Ljava/util/List;
-Ldalvik/system/DexPathList;->getNativeLibraryDirectories()Ljava/util/List;
-Ldalvik/system/DexPathList;->makeDexElements(Ljava/util/List;Ljava/io/File;Ljava/util/List;Ljava/lang/ClassLoader;Z)[Ldalvik/system/DexPathList$Element;
-Ldalvik/system/DexPathList;->optimizedPathFor(Ljava/io/File;Ljava/io/File;)Ljava/lang/String;
-Ldalvik/system/DexPathList;->splitDexPath(Ljava/lang/String;)Ljava/util/List;
-Ldalvik/system/DexPathList;->zipSeparator:Ljava/lang/String;
-Ldalvik/system/EmulatedStackFrame$Range;-><init>(IIII)V
-Ldalvik/system/EmulatedStackFrame$Range;->all(Ljava/lang/invoke/MethodType;)Ldalvik/system/EmulatedStackFrame$Range;
-Ldalvik/system/EmulatedStackFrame$Range;->numBytes:I
-Ldalvik/system/EmulatedStackFrame$Range;->numReferences:I
-Ldalvik/system/EmulatedStackFrame$Range;->of(Ljava/lang/invoke/MethodType;II)Ldalvik/system/EmulatedStackFrame$Range;
-Ldalvik/system/EmulatedStackFrame$Range;->referencesStart:I
-Ldalvik/system/EmulatedStackFrame$Range;->stackFrameStart:I
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;-><init>()V
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->argumentIdx:I
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->attach(Ldalvik/system/EmulatedStackFrame;)Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->attach(Ldalvik/system/EmulatedStackFrame;III)Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->checkType(Ljava/lang/Class;)V
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->copyNext(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->frame:Ldalvik/system/EmulatedStackFrame;
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->frameBuf:Ljava/nio/ByteBuffer;
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->makeReturnValueAccessor()V
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->numArgs:I
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->referencesOffset:I
-Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->RETURN_VALUE_IDX:I
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;-><init>()V
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextBoolean()Z
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextByte()B
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextChar()C
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextDouble()D
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextFloat()F
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextInt()I
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextLong()J
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextReference(Ljava/lang/Class;)Ljava/lang/Object;
-Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextShort()S
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;-><init>()V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextBoolean(Z)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextByte(B)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextChar(C)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextDouble(D)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextFloat(F)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextInt(I)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextLong(J)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextReference(Ljava/lang/Object;Ljava/lang/Class;)V
-Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextShort(S)V
-Ldalvik/system/EmulatedStackFrame;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;[B)V
-Ldalvik/system/EmulatedStackFrame;->callsiteType:Ljava/lang/invoke/MethodType;
-Ldalvik/system/EmulatedStackFrame;->copyRangeTo(Ldalvik/system/EmulatedStackFrame;Ldalvik/system/EmulatedStackFrame$Range;II)V
-Ldalvik/system/EmulatedStackFrame;->copyReturnValueTo(Ldalvik/system/EmulatedStackFrame;)V
-Ldalvik/system/EmulatedStackFrame;->create(Ljava/lang/invoke/MethodType;)Ldalvik/system/EmulatedStackFrame;
-Ldalvik/system/EmulatedStackFrame;->getCallsiteType()Ljava/lang/invoke/MethodType;
-Ldalvik/system/EmulatedStackFrame;->getMethodType()Ljava/lang/invoke/MethodType;
-Ldalvik/system/EmulatedStackFrame;->getReference(ILjava/lang/Class;)Ljava/lang/Object;
-Ldalvik/system/EmulatedStackFrame;->getSize(Ljava/lang/Class;)I
-Ldalvik/system/EmulatedStackFrame;->is64BitPrimitive(Ljava/lang/Class;)Z
-Ldalvik/system/EmulatedStackFrame;->references:[Ljava/lang/Object;
-Ldalvik/system/EmulatedStackFrame;->setReference(ILjava/lang/Object;)V
-Ldalvik/system/EmulatedStackFrame;->setReturnValueTo(Ljava/lang/Object;)V
-Ldalvik/system/EmulatedStackFrame;->stackFrame:[B
-Ldalvik/system/EmulatedStackFrame;->type:Ljava/lang/invoke/MethodType;
-Ldalvik/system/PotentialDeadlockError;-><init>()V
-Ldalvik/system/PotentialDeadlockError;-><init>(Ljava/lang/String;)V
-Ldalvik/system/SocketTagger;-><init>()V
-Ldalvik/system/SocketTagger;->set(Ldalvik/system/SocketTagger;)V
-Ldalvik/system/SocketTagger;->tag(Ljava/io/FileDescriptor;)V
-Ldalvik/system/SocketTagger;->tag(Ljava/net/DatagramSocket;)V
-Ldalvik/system/SocketTagger;->tagger:Ldalvik/system/SocketTagger;
-Ldalvik/system/SocketTagger;->untag(Ljava/io/FileDescriptor;)V
-Ldalvik/system/SocketTagger;->untag(Ljava/net/DatagramSocket;)V
-Ldalvik/system/TemporaryDirectory;-><init>()V
-Ldalvik/system/TemporaryDirectory;->setUpDirectory(Ljava/io/File;)V
-Ldalvik/system/TemporaryDirectory;->setUpDirectory(Ljava/lang/String;)V
-Ldalvik/system/VMDebug;-><init>()V
-Ldalvik/system/VMDebug;->attachAgent(Ljava/lang/String;)V
-Ldalvik/system/VMDebug;->attachAgent(Ljava/lang/String;Ljava/lang/ClassLoader;)V
-Ldalvik/system/VMDebug;->cacheRegisterMap(Ljava/lang/String;)Z
-Ldalvik/system/VMDebug;->checkBufferSize(I)I
-Ldalvik/system/VMDebug;->countInstancesOfClass(Ljava/lang/Class;Z)J
-Ldalvik/system/VMDebug;->countInstancesOfClasses([Ljava/lang/Class;Z)[J
-Ldalvik/system/VMDebug;->crash()V
-Ldalvik/system/VMDebug;->dumpHprofData(Ljava/lang/String;)V
-Ldalvik/system/VMDebug;->dumpHprofData(Ljava/lang/String;I)V
-Ldalvik/system/VMDebug;->dumpHprofData(Ljava/lang/String;Ljava/io/FileDescriptor;)V
-Ldalvik/system/VMDebug;->dumpHprofDataDdms()V
-Ldalvik/system/VMDebug;->getAllocCount(I)I
-Ldalvik/system/VMDebug;->getHeapSpaceStats([J)V
-Ldalvik/system/VMDebug;->getInstancesOfClasses([Ljava/lang/Class;Z)[[Ljava/lang/Object;
-Ldalvik/system/VMDebug;->getInstructionCount([I)V
-Ldalvik/system/VMDebug;->getLoadedClassCount()I
-Ldalvik/system/VMDebug;->getMethodTracingMode()I
-Ldalvik/system/VMDebug;->getRuntimeStat(Ljava/lang/String;)Ljava/lang/String;
-Ldalvik/system/VMDebug;->getRuntimeStatInternal(I)Ljava/lang/String;
-Ldalvik/system/VMDebug;->getRuntimeStats()Ljava/util/Map;
-Ldalvik/system/VMDebug;->getRuntimeStatsInternal()[Ljava/lang/String;
-Ldalvik/system/VMDebug;->getVmFeatureList()[Ljava/lang/String;
-Ldalvik/system/VMDebug;->infopoint(I)V
-Ldalvik/system/VMDebug;->isDebuggingEnabled()Z
-Ldalvik/system/VMDebug;->KIND_ALLOCATED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_ALLOCATED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_ALL_COUNTS:I
-Ldalvik/system/VMDebug;->KIND_CLASS_INIT_COUNT:I
-Ldalvik/system/VMDebug;->KIND_CLASS_INIT_TIME:I
-Ldalvik/system/VMDebug;->KIND_EXT_ALLOCATED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_EXT_ALLOCATED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_EXT_FREED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_EXT_FREED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_FREED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_FREED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_GC_INVOCATIONS:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_ALLOCATED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_ALLOCATED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_CLASS_INIT_COUNT:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_CLASS_INIT_TIME:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_EXT_ALLOCATED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_EXT_ALLOCATED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_EXT_FREED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_EXT_FREED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_FREED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_FREED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_GLOBAL_GC_INVOCATIONS:I
-Ldalvik/system/VMDebug;->KIND_THREAD_ALLOCATED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_THREAD_ALLOCATED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_THREAD_CLASS_INIT_COUNT:I
-Ldalvik/system/VMDebug;->KIND_THREAD_CLASS_INIT_TIME:I
-Ldalvik/system/VMDebug;->KIND_THREAD_EXT_ALLOCATED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_THREAD_EXT_ALLOCATED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_THREAD_EXT_FREED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_THREAD_EXT_FREED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_THREAD_FREED_BYTES:I
-Ldalvik/system/VMDebug;->KIND_THREAD_FREED_OBJECTS:I
-Ldalvik/system/VMDebug;->KIND_THREAD_GC_INVOCATIONS:I
-Ldalvik/system/VMDebug;->lastDebuggerActivity()J
-Ldalvik/system/VMDebug;->nativeAttachAgent(Ljava/lang/String;Ljava/lang/ClassLoader;)V
-Ldalvik/system/VMDebug;->printLoadedClasses(I)V
-Ldalvik/system/VMDebug;->resetAllocCount(I)V
-Ldalvik/system/VMDebug;->resetInstructionCount()V
-Ldalvik/system/VMDebug;->runtimeStatsMap:Ljava/util/HashMap;
-Ldalvik/system/VMDebug;->setAllocationLimit(I)I
-Ldalvik/system/VMDebug;->setGlobalAllocationLimit(I)I
-Ldalvik/system/VMDebug;->startAllocCounting()V
-Ldalvik/system/VMDebug;->startClassPrep()V
-Ldalvik/system/VMDebug;->startEmulatorTracing()V
-Ldalvik/system/VMDebug;->startGC()V
-Ldalvik/system/VMDebug;->startInstructionCounting()V
-Ldalvik/system/VMDebug;->startMethodTracing()V
-Ldalvik/system/VMDebug;->startMethodTracing(Ljava/lang/String;IIZI)V
-Ldalvik/system/VMDebug;->startMethodTracing(Ljava/lang/String;Ljava/io/FileDescriptor;IIZI)V
-Ldalvik/system/VMDebug;->startMethodTracing(Ljava/lang/String;Ljava/io/FileDescriptor;IIZIZ)V
-Ldalvik/system/VMDebug;->startMethodTracingDdms(IIZI)V
-Ldalvik/system/VMDebug;->startMethodTracingDdmsImpl(IIZI)V
-Ldalvik/system/VMDebug;->startMethodTracingFd(Ljava/lang/String;IIIZIZ)V
-Ldalvik/system/VMDebug;->startMethodTracingFilename(Ljava/lang/String;IIZI)V
-Ldalvik/system/VMDebug;->stopAllocCounting()V
-Ldalvik/system/VMDebug;->stopEmulatorTracing()V
-Ldalvik/system/VMDebug;->stopInstructionCounting()V
-Ldalvik/system/VMDebug;->stopMethodTracing()V
-Ldalvik/system/VMDebug;->threadCpuTimeNanos()J
-Ldalvik/system/VMDebug;->TRACE_COUNT_ALLOCS:I
-Ldalvik/system/VMRuntime;-><init>()V
-Ldalvik/system/VMRuntime;->ABI_TO_INSTRUCTION_SET_MAP:Ljava/util/Map;
-Ldalvik/system/VMRuntime;->bootClassPath()Ljava/lang/String;
-Ldalvik/system/VMRuntime;->clampGrowthLimit()V
-Ldalvik/system/VMRuntime;->classPath()Ljava/lang/String;
-Ldalvik/system/VMRuntime;->concurrentGC()V
-Ldalvik/system/VMRuntime;->didPruneDalvikCache()Z
-Ldalvik/system/VMRuntime;->disableJitCompilation()V
-Ldalvik/system/VMRuntime;->getTargetHeapUtilization()F
-Ldalvik/system/VMRuntime;->getTargetSdkVersion()I
-Ldalvik/system/VMRuntime;->hasUsedHiddenApi()Z
-Ldalvik/system/VMRuntime;->is64BitInstructionSet(Ljava/lang/String;)Z
-Ldalvik/system/VMRuntime;->isBootClassPathOnDisk(Ljava/lang/String;)Z
-Ldalvik/system/VMRuntime;->isCheckJniEnabled()Z
-Ldalvik/system/VMRuntime;->isDebuggerActive()Z
-Ldalvik/system/VMRuntime;->isJavaDebuggable()Z
-Ldalvik/system/VMRuntime;->isNativeDebuggable()Z
-Ldalvik/system/VMRuntime;->nativeSetTargetHeapUtilization(F)V
-Ldalvik/system/VMRuntime;->newUnpaddedArray(Ljava/lang/Class;I)Ljava/lang/Object;
-Ldalvik/system/VMRuntime;->nonSdkApiUsageConsumer:Ljava/util/function/Consumer;
-Ldalvik/system/VMRuntime;->preloadDexCaches()V
-Ldalvik/system/VMRuntime;->properties()[Ljava/lang/String;
-Ldalvik/system/VMRuntime;->registerAppInfo(Ljava/lang/String;[Ljava/lang/String;)V
-Ldalvik/system/VMRuntime;->registerSensitiveThread()V
-Ldalvik/system/VMRuntime;->requestConcurrentGC()V
-Ldalvik/system/VMRuntime;->requestHeapTrim()V
-Ldalvik/system/VMRuntime;->runHeapTasks()V
-Ldalvik/system/VMRuntime;->SDK_VERSION_CUR_DEVELOPMENT:I
-Ldalvik/system/VMRuntime;->setDedupeHiddenApiWarnings(Z)V
-Ldalvik/system/VMRuntime;->setHiddenApiAccessLogSamplingRate(I)V
-Ldalvik/system/VMRuntime;->setNonSdkApiUsageConsumer(Ljava/util/function/Consumer;)V
-Ldalvik/system/VMRuntime;->setProcessPackageName(Ljava/lang/String;)V
-Ldalvik/system/VMRuntime;->setSystemDaemonThreadPriority()V
-Ldalvik/system/VMRuntime;->startHeapTaskProcessor()V
-Ldalvik/system/VMRuntime;->startJitCompilation()V
-Ldalvik/system/VMRuntime;->stopHeapTaskProcessor()V
-Ldalvik/system/VMRuntime;->targetSdkVersion:I
-Ldalvik/system/VMRuntime;->THE_ONE:Ldalvik/system/VMRuntime;
-Ldalvik/system/VMRuntime;->trimHeap()V
-Ldalvik/system/VMRuntime;->updateProcessState(I)V
-Ldalvik/system/VMRuntime;->vmVersion()Ljava/lang/String;
-Ldalvik/system/VMStack;-><init>()V
-Ldalvik/system/VMStack;->getAnnotatedThreadStackTrace(Ljava/lang/Thread;)[Ldalvik/system/AnnotatedStackTraceElement;
-Ldalvik/system/VMStack;->getClosestUserClassLoader()Ljava/lang/ClassLoader;
-Ldalvik/system/VMStack;->getStackClass1()Ljava/lang/Class;
-Ldalvik/system/ZygoteHooks;-><init>()V
-Ldalvik/system/ZygoteHooks;->nativePostForkChild(JIZZLjava/lang/String;)V
-Ldalvik/system/ZygoteHooks;->nativePreFork()J
-Ldalvik/system/ZygoteHooks;->postForkChild(IZZLjava/lang/String;)V
-Ldalvik/system/ZygoteHooks;->postForkCommon()V
-Ldalvik/system/ZygoteHooks;->preFork()V
-Ldalvik/system/ZygoteHooks;->startZygoteNoThreadCreation()V
-Ldalvik/system/ZygoteHooks;->stopZygoteNoThreadCreation()V
-Ldalvik/system/ZygoteHooks;->token:J
-Ldalvik/system/ZygoteHooks;->waitUntilAllThreadsStopped()V
-Ljava/awt/font/NumericShaper$Range;->base:I
-Ljava/awt/font/NumericShaper$Range;->end:I
-Ljava/awt/font/NumericShaper$Range;->getDigitBase()I
-Ljava/awt/font/NumericShaper$Range;->getNumericBase()C
-Ljava/awt/font/NumericShaper$Range;->indexToRange(I)Ljava/awt/font/NumericShaper$Range;
-Ljava/awt/font/NumericShaper$Range;->inRange(I)Z
-Ljava/awt/font/NumericShaper$Range;->maskToRangeSet(I)Ljava/util/Set;
-Ljava/awt/font/NumericShaper$Range;->start:I
-Ljava/awt/font/NumericShaper$Range;->toRangeIndex(Ljava/awt/font/NumericShaper$Range;)I
-Ljava/awt/font/NumericShaper$Range;->toRangeMask(Ljava/util/Set;)I
-Ljava/awt/font/NumericShaper;-><init>(II)V
-Ljava/awt/font/NumericShaper;-><init>(Ljava/awt/font/NumericShaper$Range;Ljava/util/Set;)V
-Ljava/awt/font/NumericShaper;->ARABIC_KEY:I
-Ljava/awt/font/NumericShaper;->bases:[C
-Ljava/awt/font/NumericShaper;->BENGALI_KEY:I
-Ljava/awt/font/NumericShaper;->BSEARCH_THRESHOLD:I
-Ljava/awt/font/NumericShaper;->checkParams([CII)V
-Ljava/awt/font/NumericShaper;->contexts:[C
-Ljava/awt/font/NumericShaper;->CONTEXTUAL_MASK:I
-Ljava/awt/font/NumericShaper;->ctCache:I
-Ljava/awt/font/NumericShaper;->ctCacheLimit:I
-Ljava/awt/font/NumericShaper;->currentRange:Ljava/awt/font/NumericShaper$Range;
-Ljava/awt/font/NumericShaper;->DEVANAGARI_KEY:I
-Ljava/awt/font/NumericShaper;->EASTERN_ARABIC_KEY:I
-Ljava/awt/font/NumericShaper;->ETHIOPIC_KEY:I
-Ljava/awt/font/NumericShaper;->EUROPEAN_KEY:I
-Ljava/awt/font/NumericShaper;->getContextKey(C)I
-Ljava/awt/font/NumericShaper;->getHighBit(I)I
-Ljava/awt/font/NumericShaper;->getKeyFromMask(I)I
-Ljava/awt/font/NumericShaper;->GUJARATI_KEY:I
-Ljava/awt/font/NumericShaper;->GURMUKHI_KEY:I
-Ljava/awt/font/NumericShaper;->isStrongDirectional(C)Z
-Ljava/awt/font/NumericShaper;->KANNADA_KEY:I
-Ljava/awt/font/NumericShaper;->key:I
-Ljava/awt/font/NumericShaper;->KHMER_KEY:I
-Ljava/awt/font/NumericShaper;->LAO_KEY:I
-Ljava/awt/font/NumericShaper;->MALAYALAM_KEY:I
-Ljava/awt/font/NumericShaper;->mask:I
-Ljava/awt/font/NumericShaper;->MONGOLIAN_KEY:I
-Ljava/awt/font/NumericShaper;->MYANMAR_KEY:I
-Ljava/awt/font/NumericShaper;->NUM_KEYS:I
-Ljava/awt/font/NumericShaper;->ORIYA_KEY:I
-Ljava/awt/font/NumericShaper;->rangeArray:[Ljava/awt/font/NumericShaper$Range;
-Ljava/awt/font/NumericShaper;->rangeForCodePoint(I)Ljava/awt/font/NumericShaper$Range;
-Ljava/awt/font/NumericShaper;->rangeSet:Ljava/util/Set;
-Ljava/awt/font/NumericShaper;->search(I[III)I
-Ljava/awt/font/NumericShaper;->shapeContextually([CIII)V
-Ljava/awt/font/NumericShaper;->shapeContextually([CIILjava/awt/font/NumericShaper$Range;)V
-Ljava/awt/font/NumericShaper;->shapeNonContextually([CII)V
-Ljava/awt/font/NumericShaper;->shapingRange:Ljava/awt/font/NumericShaper$Range;
-Ljava/awt/font/NumericShaper;->stCache:I
-Ljava/awt/font/NumericShaper;->strongTable:[I
-Ljava/awt/font/NumericShaper;->TAMIL_KEY:I
-Ljava/awt/font/NumericShaper;->TELUGU_KEY:I
-Ljava/awt/font/NumericShaper;->THAI_KEY:I
-Ljava/awt/font/NumericShaper;->TIBETAN_KEY:I
-Ljava/awt/font/TextAttribute;->instanceMap:Ljava/util/Map;
-Ljava/beans/ChangeListenerMap;-><init>()V
-Ljava/beans/ChangeListenerMap;->add(Ljava/lang/String;Ljava/util/EventListener;)V
-Ljava/beans/ChangeListenerMap;->extract(Ljava/util/EventListener;)Ljava/util/EventListener;
-Ljava/beans/ChangeListenerMap;->get(Ljava/lang/String;)[Ljava/util/EventListener;
-Ljava/beans/ChangeListenerMap;->getEntries()Ljava/util/Set;
-Ljava/beans/ChangeListenerMap;->getListeners()[Ljava/util/EventListener;
-Ljava/beans/ChangeListenerMap;->getListeners(Ljava/lang/String;)[Ljava/util/EventListener;
-Ljava/beans/ChangeListenerMap;->hasListeners(Ljava/lang/String;)Z
-Ljava/beans/ChangeListenerMap;->map:Ljava/util/Map;
-Ljava/beans/ChangeListenerMap;->newArray(I)[Ljava/util/EventListener;
-Ljava/beans/ChangeListenerMap;->newProxy(Ljava/lang/String;Ljava/util/EventListener;)Ljava/util/EventListener;
-Ljava/beans/ChangeListenerMap;->remove(Ljava/lang/String;Ljava/util/EventListener;)V
-Ljava/beans/ChangeListenerMap;->set(Ljava/lang/String;[Ljava/util/EventListener;)V
-Ljava/beans/IndexedPropertyChangeEvent;->appendTo(Ljava/lang/StringBuilder;)V
-Ljava/beans/IndexedPropertyChangeEvent;->index:I
-Ljava/beans/PropertyChangeEvent;->appendTo(Ljava/lang/StringBuilder;)V
-Ljava/beans/PropertyChangeEvent;->newValue:Ljava/lang/Object;
-Ljava/beans/PropertyChangeEvent;->oldValue:Ljava/lang/Object;
-Ljava/beans/PropertyChangeEvent;->propagationId:Ljava/lang/Object;
-Ljava/beans/PropertyChangeEvent;->propertyName:Ljava/lang/String;
-Ljava/beans/PropertyChangeListenerProxy;->propertyName:Ljava/lang/String;
-Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;-><init>()V
-Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->EMPTY:[Ljava/beans/PropertyChangeListener;
-Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->extract(Ljava/beans/PropertyChangeListener;)Ljava/beans/PropertyChangeListener;
-Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->newArray(I)[Ljava/beans/PropertyChangeListener;
-Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->newProxy(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)Ljava/beans/PropertyChangeListener;
-Ljava/beans/PropertyChangeSupport;->fire([Ljava/beans/PropertyChangeListener;Ljava/beans/PropertyChangeEvent;)V
-Ljava/beans/PropertyChangeSupport;->map:Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;
-Ljava/beans/PropertyChangeSupport;->source:Ljava/lang/Object;
-Ljava/io/BufferedInputStream;->bufUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
-Ljava/io/BufferedInputStream;->DEFAULT_BUFFER_SIZE:I
-Ljava/io/BufferedInputStream;->fill()V
-Ljava/io/BufferedInputStream;->getBufIfOpen()[B
-Ljava/io/BufferedInputStream;->getInIfOpen()Ljava/io/InputStream;
-Ljava/io/BufferedInputStream;->MAX_BUFFER_SIZE:I
-Ljava/io/BufferedInputStream;->read1([BII)I
-Ljava/io/BufferedOutputStream;->flushBuffer()V
-Ljava/io/BufferedReader;->cb:[C
-Ljava/io/BufferedReader;->defaultCharBufferSize:I
-Ljava/io/BufferedReader;->defaultExpectedLineLength:I
-Ljava/io/BufferedReader;->ensureOpen()V
-Ljava/io/BufferedReader;->fill()V
-Ljava/io/BufferedReader;->in:Ljava/io/Reader;
-Ljava/io/BufferedReader;->INVALIDATED:I
-Ljava/io/BufferedReader;->markedChar:I
-Ljava/io/BufferedReader;->markedSkipLF:Z
-Ljava/io/BufferedReader;->nChars:I
-Ljava/io/BufferedReader;->nextChar:I
-Ljava/io/BufferedReader;->read1([CII)I
-Ljava/io/BufferedReader;->readAheadLimit:I
-Ljava/io/BufferedReader;->readLine(Z)Ljava/lang/String;
-Ljava/io/BufferedReader;->skipLF:Z
-Ljava/io/BufferedReader;->UNMARKED:I
-Ljava/io/BufferedWriter;->cb:[C
-Ljava/io/BufferedWriter;->defaultCharBufferSize:I
-Ljava/io/BufferedWriter;->ensureOpen()V
-Ljava/io/BufferedWriter;->flushBuffer()V
-Ljava/io/BufferedWriter;->lineSeparator:Ljava/lang/String;
-Ljava/io/BufferedWriter;->min(II)I
-Ljava/io/BufferedWriter;->nChars:I
-Ljava/io/BufferedWriter;->nextChar:I
-Ljava/io/BufferedWriter;->out:Ljava/io/Writer;
-Ljava/io/ByteArrayOutputStream;->ensureCapacity(I)V
-Ljava/io/ByteArrayOutputStream;->grow(I)V
-Ljava/io/ByteArrayOutputStream;->hugeCapacity(I)I
-Ljava/io/ByteArrayOutputStream;->MAX_ARRAY_SIZE:I
-Ljava/io/CharArrayReader;->ensureOpen()V
-Ljava/io/Console$LineReader;->cb:[C
-Ljava/io/Console$LineReader;->in:Ljava/io/Reader;
-Ljava/io/Console$LineReader;->leftoverLF:Z
-Ljava/io/Console$LineReader;->nChars:I
-Ljava/io/Console$LineReader;->nextChar:I
-Ljava/io/Console;-><init>()V
-Ljava/io/Console;-><init>(Ljava/io/InputStream;Ljava/io/OutputStream;)V
-Ljava/io/Console;->cons:Ljava/io/Console;
-Ljava/io/Console;->console()Ljava/io/Console;
-Ljava/io/Console;->cs:Ljava/nio/charset/Charset;
-Ljava/io/Console;->echo(Z)Z
-Ljava/io/Console;->echoOff:Z
-Ljava/io/Console;->formatter:Ljava/util/Formatter;
-Ljava/io/Console;->grow()[C
-Ljava/io/Console;->istty()Z
-Ljava/io/Console;->out:Ljava/io/Writer;
-Ljava/io/Console;->pw:Ljava/io/PrintWriter;
-Ljava/io/Console;->rcb:[C
-Ljava/io/Console;->reader:Ljava/io/Reader;
-Ljava/io/Console;->readline(Z)[C
-Ljava/io/Console;->readLock:Ljava/lang/Object;
-Ljava/io/Console;->writeLock:Ljava/lang/Object;
-Ljava/io/DataInputStream;->bytearr:[B
-Ljava/io/DataInputStream;->chararr:[C
-Ljava/io/DataInputStream;->lineBuffer:[C
-Ljava/io/DataInputStream;->readBuffer:[B
-Ljava/io/DataOutputStream;->bytearr:[B
-Ljava/io/DataOutputStream;->incCount(I)V
-Ljava/io/DataOutputStream;->writeBuffer:[B
-Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;Ljava/io/DataOutput;)I
-Ljava/io/File$PathStatus;->CHECKED:Ljava/io/File$PathStatus;
-Ljava/io/File$PathStatus;->INVALID:Ljava/io/File$PathStatus;
-Ljava/io/File$PathStatus;->valueOf(Ljava/lang/String;)Ljava/io/File$PathStatus;
-Ljava/io/File$PathStatus;->values()[Ljava/io/File$PathStatus;
-Ljava/io/File$TempDirectory;-><init>()V
-Ljava/io/File$TempDirectory;->generateFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
-Ljava/io/File;-><init>(Ljava/lang/String;I)V
-Ljava/io/File;-><init>(Ljava/lang/String;Ljava/io/File;)V
-Ljava/io/File;->getPrefixLength()I
-Ljava/io/File;->isInvalid()Z
-Ljava/io/File;->PATH_OFFSET:J
-Ljava/io/File;->PREFIX_LENGTH_OFFSET:J
-Ljava/io/File;->slashify(Ljava/lang/String;Z)Ljava/lang/String;
-Ljava/io/File;->UNSAFE:Lsun/misc/Unsafe;
-Ljava/io/FileDescriptor;-><init>(I)V
-Ljava/io/FileDescriptor;->dupFd(I)Ljava/io/FileDescriptor;
-Ljava/io/FileDescriptor;->isSocket(I)Z
-Ljava/io/FileInputStream$UseManualSkipException;-><init>()V
-Ljava/io/FileInputStream;-><init>(Ljava/io/FileDescriptor;Z)V
-Ljava/io/FileInputStream;->available0()I
-Ljava/io/FileInputStream;->channel:Ljava/nio/channels/FileChannel;
-Ljava/io/FileInputStream;->closed:Z
-Ljava/io/FileInputStream;->closeLock:Ljava/lang/Object;
-Ljava/io/FileInputStream;->guard:Ldalvik/system/CloseGuard;
-Ljava/io/FileInputStream;->isFdOwner:Z
-Ljava/io/FileInputStream;->open(Ljava/lang/String;)V
-Ljava/io/FileInputStream;->open0(Ljava/lang/String;)V
-Ljava/io/FileInputStream;->path:Ljava/lang/String;
-Ljava/io/FileInputStream;->skip0(J)J
-Ljava/io/FileInputStream;->tracker:Llibcore/io/IoTracker;
-Ljava/io/FileNotFoundException;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/io/FileOutputStream;-><init>(Ljava/io/FileDescriptor;Z)V
-Ljava/io/FileOutputStream;->append:Z
-Ljava/io/FileOutputStream;->closed:Z
-Ljava/io/FileOutputStream;->closeLock:Ljava/lang/Object;
-Ljava/io/FileOutputStream;->guard:Ldalvik/system/CloseGuard;
-Ljava/io/FileOutputStream;->isFdOwner:Z
-Ljava/io/FileOutputStream;->open(Ljava/lang/String;Z)V
-Ljava/io/FileOutputStream;->open0(Ljava/lang/String;Z)V
-Ljava/io/FileOutputStream;->path:Ljava/lang/String;
-Ljava/io/FileOutputStream;->tracker:Llibcore/io/IoTracker;
-Ljava/io/FileSystem;-><init>()V
-Ljava/io/FileSystem;->ACCESS_EXECUTE:I
-Ljava/io/FileSystem;->ACCESS_OK:I
-Ljava/io/FileSystem;->ACCESS_READ:I
-Ljava/io/FileSystem;->ACCESS_WRITE:I
-Ljava/io/FileSystem;->BA_DIRECTORY:I
-Ljava/io/FileSystem;->BA_EXISTS:I
-Ljava/io/FileSystem;->BA_HIDDEN:I
-Ljava/io/FileSystem;->BA_REGULAR:I
-Ljava/io/FileSystem;->getBooleanProperty(Ljava/lang/String;Z)Z
-Ljava/io/FileSystem;->SPACE_FREE:I
-Ljava/io/FileSystem;->SPACE_TOTAL:I
-Ljava/io/FileSystem;->SPACE_USABLE:I
-Ljava/io/FileSystem;->useCanonCaches:Z
-Ljava/io/FileSystem;->useCanonPrefixCache:Z
-Ljava/io/InputStream;->MAX_SKIP_BUFFER_SIZE:I
-Ljava/io/InputStreamReader;->sd:Lsun/nio/cs/StreamDecoder;
-Ljava/io/InterruptedIOException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/io/InterruptedIOException;-><init>(Ljava/lang/Throwable;)V
-Ljava/io/LineNumberInputStream;->lineNumber:I
-Ljava/io/LineNumberInputStream;->markLineNumber:I
-Ljava/io/LineNumberInputStream;->markPushBack:I
-Ljava/io/LineNumberInputStream;->pushBack:I
-Ljava/io/LineNumberReader;->lineNumber:I
-Ljava/io/LineNumberReader;->markedLineNumber:I
-Ljava/io/LineNumberReader;->markedSkipLF:Z
-Ljava/io/LineNumberReader;->maxSkipBufferSize:I
-Ljava/io/LineNumberReader;->skipBuffer:[C
-Ljava/io/LineNumberReader;->skipLF:Z
-Ljava/io/ObjectInputStream$BlockDataInputStream;->blkmode:Z
-Ljava/io/ObjectInputStream$BlockDataInputStream;->buf:[B
-Ljava/io/ObjectInputStream$BlockDataInputStream;->cbuf:[C
-Ljava/io/ObjectInputStream$BlockDataInputStream;->CHAR_BUF_SIZE:I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->currentBlockRemaining()I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->din:Ljava/io/DataInputStream;
-Ljava/io/ObjectInputStream$BlockDataInputStream;->end:I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->getBlockDataMode()Z
-Ljava/io/ObjectInputStream$BlockDataInputStream;->hbuf:[B
-Ljava/io/ObjectInputStream$BlockDataInputStream;->HEADER_BLOCKED:I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->in:Ljava/io/ObjectInputStream$PeekInputStream;
-Ljava/io/ObjectInputStream$BlockDataInputStream;->MAX_BLOCK_SIZE:I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->MAX_HEADER_SIZE:I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->peek()I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->peekByte()B
-Ljava/io/ObjectInputStream$BlockDataInputStream;->pos:I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->read([BIIZ)I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readBlockHeader(Z)I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readBooleans([ZII)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readChars([CII)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readDoubles([DII)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readFloats([FII)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readFully([BIIZ)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readInts([III)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readLongs([JII)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readLongUTF()Ljava/lang/String;
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readShorts([SII)V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readUTFBody(J)Ljava/lang/String;
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readUTFChar(Ljava/lang/StringBuilder;J)I
-Ljava/io/ObjectInputStream$BlockDataInputStream;->readUTFSpan(Ljava/lang/StringBuilder;J)J
-Ljava/io/ObjectInputStream$BlockDataInputStream;->refill()V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->setBlockDataMode(Z)Z
-Ljava/io/ObjectInputStream$BlockDataInputStream;->skipBlockData()V
-Ljava/io/ObjectInputStream$BlockDataInputStream;->unread:I
-Ljava/io/ObjectInputStream$Caches;-><init>()V
-Ljava/io/ObjectInputStream$Caches;->subclassAudits:Ljava/util/concurrent/ConcurrentMap;
-Ljava/io/ObjectInputStream$Caches;->subclassAuditsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/io/ObjectInputStream$GetFieldImpl;->desc:Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectInputStream$GetFieldImpl;->getFieldOffset(Ljava/lang/String;Ljava/lang/Class;)I
-Ljava/io/ObjectInputStream$GetFieldImpl;->objHandles:[I
-Ljava/io/ObjectInputStream$GetFieldImpl;->objVals:[Ljava/lang/Object;
-Ljava/io/ObjectInputStream$GetFieldImpl;->primVals:[B
-Ljava/io/ObjectInputStream$GetFieldImpl;->readFields()V
-Ljava/io/ObjectInputStream$HandleTable$HandleList;-><init>()V
-Ljava/io/ObjectInputStream$HandleTable$HandleList;->add(I)V
-Ljava/io/ObjectInputStream$HandleTable$HandleList;->get(I)I
-Ljava/io/ObjectInputStream$HandleTable$HandleList;->list:[I
-Ljava/io/ObjectInputStream$HandleTable$HandleList;->size()I
-Ljava/io/ObjectInputStream$HandleTable$HandleList;->size:I
-Ljava/io/ObjectInputStream$HandleTable;-><init>(I)V
-Ljava/io/ObjectInputStream$HandleTable;->assign(Ljava/lang/Object;)I
-Ljava/io/ObjectInputStream$HandleTable;->clear()V
-Ljava/io/ObjectInputStream$HandleTable;->deps:[Ljava/io/ObjectInputStream$HandleTable$HandleList;
-Ljava/io/ObjectInputStream$HandleTable;->entries:[Ljava/lang/Object;
-Ljava/io/ObjectInputStream$HandleTable;->finish(I)V
-Ljava/io/ObjectInputStream$HandleTable;->grow()V
-Ljava/io/ObjectInputStream$HandleTable;->lookupException(I)Ljava/lang/ClassNotFoundException;
-Ljava/io/ObjectInputStream$HandleTable;->lookupObject(I)Ljava/lang/Object;
-Ljava/io/ObjectInputStream$HandleTable;->lowDep:I
-Ljava/io/ObjectInputStream$HandleTable;->markDependency(II)V
-Ljava/io/ObjectInputStream$HandleTable;->markException(ILjava/lang/ClassNotFoundException;)V
-Ljava/io/ObjectInputStream$HandleTable;->setObject(ILjava/lang/Object;)V
-Ljava/io/ObjectInputStream$HandleTable;->size()I
-Ljava/io/ObjectInputStream$HandleTable;->size:I
-Ljava/io/ObjectInputStream$HandleTable;->status:[B
-Ljava/io/ObjectInputStream$HandleTable;->STATUS_EXCEPTION:B
-Ljava/io/ObjectInputStream$HandleTable;->STATUS_OK:B
-Ljava/io/ObjectInputStream$HandleTable;->STATUS_UNKNOWN:B
-Ljava/io/ObjectInputStream$PeekInputStream;-><init>(Ljava/io/InputStream;)V
-Ljava/io/ObjectInputStream$PeekInputStream;->in:Ljava/io/InputStream;
-Ljava/io/ObjectInputStream$PeekInputStream;->peek()I
-Ljava/io/ObjectInputStream$PeekInputStream;->peekb:I
-Ljava/io/ObjectInputStream$PeekInputStream;->readFully([BII)V
-Ljava/io/ObjectInputStream$ValidationList$Callback;-><init>(Ljava/io/ObjectInputValidation;ILjava/io/ObjectInputStream$ValidationList$Callback;Ljava/security/AccessControlContext;)V
-Ljava/io/ObjectInputStream$ValidationList$Callback;->acc:Ljava/security/AccessControlContext;
-Ljava/io/ObjectInputStream$ValidationList$Callback;->next:Ljava/io/ObjectInputStream$ValidationList$Callback;
-Ljava/io/ObjectInputStream$ValidationList$Callback;->obj:Ljava/io/ObjectInputValidation;
-Ljava/io/ObjectInputStream$ValidationList$Callback;->priority:I
-Ljava/io/ObjectInputStream$ValidationList;-><init>()V
-Ljava/io/ObjectInputStream$ValidationList;->clear()V
-Ljava/io/ObjectInputStream$ValidationList;->doCallbacks()V
-Ljava/io/ObjectInputStream$ValidationList;->list:Ljava/io/ObjectInputStream$ValidationList$Callback;
-Ljava/io/ObjectInputStream$ValidationList;->register(Ljava/io/ObjectInputValidation;I)V
-Ljava/io/ObjectInputStream;->auditSubclass(Ljava/lang/Class;)Z
-Ljava/io/ObjectInputStream;->checkResolve(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->clear()V
-Ljava/io/ObjectInputStream;->cloneArray(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->closed:Z
-Ljava/io/ObjectInputStream;->curContext:Ljava/io/SerialCallbackContext;
-Ljava/io/ObjectInputStream;->defaultDataEnd:Z
-Ljava/io/ObjectInputStream;->defaultReadFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectInputStream;->depth:I
-Ljava/io/ObjectInputStream;->enableOverride:Z
-Ljava/io/ObjectInputStream;->enableResolve:Z
-Ljava/io/ObjectInputStream;->handleReset()V
-Ljava/io/ObjectInputStream;->handles:Ljava/io/ObjectInputStream$HandleTable;
-Ljava/io/ObjectInputStream;->isCustomSubclass()Z
-Ljava/io/ObjectInputStream;->latestUserDefinedLoader()Ljava/lang/ClassLoader;
-Ljava/io/ObjectInputStream;->NULL_HANDLE:I
-Ljava/io/ObjectInputStream;->passHandle:I
-Ljava/io/ObjectInputStream;->primClasses:Ljava/util/HashMap;
-Ljava/io/ObjectInputStream;->primVals:[B
-Ljava/io/ObjectInputStream;->readArray(Z)Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->readClass(Z)Ljava/lang/Class;
-Ljava/io/ObjectInputStream;->readClassDesc(Z)Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectInputStream;->readEnum(Z)Ljava/lang/Enum;
-Ljava/io/ObjectInputStream;->readExternalData(Ljava/io/Externalizable;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectInputStream;->readFatalException()Ljava/io/IOException;
-Ljava/io/ObjectInputStream;->readHandle(Z)Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->readNonProxyDesc(Z)Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectInputStream;->readNull()Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->readObject0(Z)Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->readOrdinaryObject(Z)Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->readProxyDesc(Z)Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectInputStream;->readSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectInputStream;->readString(Z)Ljava/lang/String;
-Ljava/io/ObjectInputStream;->readTypeString()Ljava/lang/String;
-Ljava/io/ObjectInputStream;->skipCustomData()V
-Ljava/io/ObjectInputStream;->unsharedMarker:Ljava/lang/Object;
-Ljava/io/ObjectInputStream;->verifySubclass()V
-Ljava/io/ObjectInputStream;->vlist:Ljava/io/ObjectInputStream$ValidationList;
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;-><init>(Ljava/io/OutputStream;)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->blkmode:Z
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->buf:[B
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->cbuf:[C
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->CHAR_BUF_SIZE:I
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->dout:Ljava/io/DataOutputStream;
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->drain()V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->getBlockDataMode()Z
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->getUTFLength(Ljava/lang/String;)J
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->hbuf:[B
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->MAX_BLOCK_SIZE:I
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->MAX_HEADER_SIZE:I
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->out:Ljava/io/OutputStream;
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->pos:I
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->setBlockDataMode(Z)Z
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->warnIfClosed()V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->warnOnceWhenWriting:Z
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->write([BIIZ)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeBlockHeader(I)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeBooleans([ZII)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeChars([CII)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeDoubles([DII)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeFloats([FII)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeInts([III)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeLongs([JII)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeLongUTF(Ljava/lang/String;)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeLongUTF(Ljava/lang/String;J)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeShorts([SII)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeUTF(Ljava/lang/String;J)V
-Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeUTFBody(Ljava/lang/String;)V
-Ljava/io/ObjectOutputStream$Caches;-><init>()V
-Ljava/io/ObjectOutputStream$Caches;->subclassAudits:Ljava/util/concurrent/ConcurrentMap;
-Ljava/io/ObjectOutputStream$Caches;->subclassAuditsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/io/ObjectOutputStream$DebugTraceInfoStack;-><init>()V
-Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->clear()V
-Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->pop()V
-Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->push(Ljava/lang/String;)V
-Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->stack:Ljava/util/List;
-Ljava/io/ObjectOutputStream$HandleTable;-><init>(IF)V
-Ljava/io/ObjectOutputStream$HandleTable;->assign(Ljava/lang/Object;)I
-Ljava/io/ObjectOutputStream$HandleTable;->clear()V
-Ljava/io/ObjectOutputStream$HandleTable;->growEntries()V
-Ljava/io/ObjectOutputStream$HandleTable;->growSpine()V
-Ljava/io/ObjectOutputStream$HandleTable;->hash(Ljava/lang/Object;)I
-Ljava/io/ObjectOutputStream$HandleTable;->insert(Ljava/lang/Object;I)V
-Ljava/io/ObjectOutputStream$HandleTable;->loadFactor:F
-Ljava/io/ObjectOutputStream$HandleTable;->lookup(Ljava/lang/Object;)I
-Ljava/io/ObjectOutputStream$HandleTable;->next:[I
-Ljava/io/ObjectOutputStream$HandleTable;->objs:[Ljava/lang/Object;
-Ljava/io/ObjectOutputStream$HandleTable;->size()I
-Ljava/io/ObjectOutputStream$HandleTable;->size:I
-Ljava/io/ObjectOutputStream$HandleTable;->spine:[I
-Ljava/io/ObjectOutputStream$HandleTable;->threshold:I
-Ljava/io/ObjectOutputStream$PutFieldImpl;->desc:Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectOutputStream$PutFieldImpl;->getFieldOffset(Ljava/lang/String;Ljava/lang/Class;)I
-Ljava/io/ObjectOutputStream$PutFieldImpl;->objVals:[Ljava/lang/Object;
-Ljava/io/ObjectOutputStream$PutFieldImpl;->primVals:[B
-Ljava/io/ObjectOutputStream$PutFieldImpl;->writeFields()V
-Ljava/io/ObjectOutputStream$ReplaceTable;-><init>(IF)V
-Ljava/io/ObjectOutputStream$ReplaceTable;->assign(Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/io/ObjectOutputStream$ReplaceTable;->clear()V
-Ljava/io/ObjectOutputStream$ReplaceTable;->grow()V
-Ljava/io/ObjectOutputStream$ReplaceTable;->htab:Ljava/io/ObjectOutputStream$HandleTable;
-Ljava/io/ObjectOutputStream$ReplaceTable;->lookup(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/io/ObjectOutputStream$ReplaceTable;->reps:[Ljava/lang/Object;
-Ljava/io/ObjectOutputStream$ReplaceTable;->size()I
-Ljava/io/ObjectOutputStream;->auditSubclass(Ljava/lang/Class;)Z
-Ljava/io/ObjectOutputStream;->bout:Ljava/io/ObjectOutputStream$BlockDataOutputStream;
-Ljava/io/ObjectOutputStream;->clear()V
-Ljava/io/ObjectOutputStream;->curContext:Ljava/io/SerialCallbackContext;
-Ljava/io/ObjectOutputStream;->curPut:Ljava/io/ObjectOutputStream$PutFieldImpl;
-Ljava/io/ObjectOutputStream;->debugInfoStack:Ljava/io/ObjectOutputStream$DebugTraceInfoStack;
-Ljava/io/ObjectOutputStream;->defaultWriteFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectOutputStream;->depth:I
-Ljava/io/ObjectOutputStream;->doublesToBytes([DI[BII)V
-Ljava/io/ObjectOutputStream;->enableOverride:Z
-Ljava/io/ObjectOutputStream;->enableReplace:Z
-Ljava/io/ObjectOutputStream;->extendedDebugInfo:Z
-Ljava/io/ObjectOutputStream;->floatsToBytes([FI[BII)V
-Ljava/io/ObjectOutputStream;->getProtocolVersion()I
-Ljava/io/ObjectOutputStream;->handles:Ljava/io/ObjectOutputStream$HandleTable;
-Ljava/io/ObjectOutputStream;->isCustomSubclass()Z
-Ljava/io/ObjectOutputStream;->primVals:[B
-Ljava/io/ObjectOutputStream;->subs:Ljava/io/ObjectOutputStream$ReplaceTable;
-Ljava/io/ObjectOutputStream;->verifySubclass()V
-Ljava/io/ObjectOutputStream;->writeArray(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectOutputStream;->writeClass(Ljava/lang/Class;Z)V
-Ljava/io/ObjectOutputStream;->writeClassDesc(Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectOutputStream;->writeEnum(Ljava/lang/Enum;Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectOutputStream;->writeExternalData(Ljava/io/Externalizable;)V
-Ljava/io/ObjectOutputStream;->writeFatalException(Ljava/io/IOException;)V
-Ljava/io/ObjectOutputStream;->writeHandle(I)V
-Ljava/io/ObjectOutputStream;->writeNonProxyDesc(Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectOutputStream;->writeNull()V
-Ljava/io/ObjectOutputStream;->writeObject0(Ljava/lang/Object;Z)V
-Ljava/io/ObjectOutputStream;->writeOrdinaryObject(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectOutputStream;->writeProxyDesc(Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectOutputStream;->writeSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectOutputStream;->writeString(Ljava/lang/String;Z)V
-Ljava/io/ObjectOutputStream;->writeTypeString(Ljava/lang/String;)V
-Ljava/io/ObjectStreamClass$Caches;-><init>()V
-Ljava/io/ObjectStreamClass$Caches;->localDescs:Ljava/util/concurrent/ConcurrentMap;
-Ljava/io/ObjectStreamClass$Caches;->localDescsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/io/ObjectStreamClass$Caches;->reflectors:Ljava/util/concurrent/ConcurrentMap;
-Ljava/io/ObjectStreamClass$Caches;->reflectorsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/io/ObjectStreamClass$ClassDataSlot;-><init>(Ljava/io/ObjectStreamClass;Z)V
-Ljava/io/ObjectStreamClass$ClassDataSlot;->desc:Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectStreamClass$ClassDataSlot;->hasData:Z
-Ljava/io/ObjectStreamClass$EntryFuture;-><init>()V
-Ljava/io/ObjectStreamClass$EntryFuture;->entry:Ljava/lang/Object;
-Ljava/io/ObjectStreamClass$EntryFuture;->get()Ljava/lang/Object;
-Ljava/io/ObjectStreamClass$EntryFuture;->getOwner()Ljava/lang/Thread;
-Ljava/io/ObjectStreamClass$EntryFuture;->owner:Ljava/lang/Thread;
-Ljava/io/ObjectStreamClass$EntryFuture;->set(Ljava/lang/Object;)Z
-Ljava/io/ObjectStreamClass$EntryFuture;->unset:Ljava/lang/Object;
-Ljava/io/ObjectStreamClass$ExceptionInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/io/ObjectStreamClass$ExceptionInfo;->className:Ljava/lang/String;
-Ljava/io/ObjectStreamClass$ExceptionInfo;->message:Ljava/lang/String;
-Ljava/io/ObjectStreamClass$ExceptionInfo;->newInvalidClassException()Ljava/io/InvalidClassException;
-Ljava/io/ObjectStreamClass$FieldReflector;-><init>([Ljava/io/ObjectStreamField;)V
-Ljava/io/ObjectStreamClass$FieldReflector;->fields:[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass$FieldReflector;->getFields()[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass$FieldReflector;->getObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V
-Ljava/io/ObjectStreamClass$FieldReflector;->getPrimFieldValues(Ljava/lang/Object;[B)V
-Ljava/io/ObjectStreamClass$FieldReflector;->numPrimFields:I
-Ljava/io/ObjectStreamClass$FieldReflector;->offsets:[I
-Ljava/io/ObjectStreamClass$FieldReflector;->readKeys:[J
-Ljava/io/ObjectStreamClass$FieldReflector;->setObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V
-Ljava/io/ObjectStreamClass$FieldReflector;->setPrimFieldValues(Ljava/lang/Object;[B)V
-Ljava/io/ObjectStreamClass$FieldReflector;->typeCodes:[C
-Ljava/io/ObjectStreamClass$FieldReflector;->types:[Ljava/lang/Class;
-Ljava/io/ObjectStreamClass$FieldReflector;->unsafe:Lsun/misc/Unsafe;
-Ljava/io/ObjectStreamClass$FieldReflector;->writeKeys:[J
-Ljava/io/ObjectStreamClass$FieldReflectorKey;-><init>(Ljava/lang/Class;[Ljava/io/ObjectStreamField;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/io/ObjectStreamClass$FieldReflectorKey;->hash:I
-Ljava/io/ObjectStreamClass$FieldReflectorKey;->nullClass:Z
-Ljava/io/ObjectStreamClass$FieldReflectorKey;->sigs:Ljava/lang/String;
-Ljava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Constructor;)V
-Ljava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Field;)V
-Ljava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Method;)V
-Ljava/io/ObjectStreamClass$MemberSignature;->member:Ljava/lang/reflect/Member;
-Ljava/io/ObjectStreamClass$MemberSignature;->name:Ljava/lang/String;
-Ljava/io/ObjectStreamClass$MemberSignature;->signature:Ljava/lang/String;
-Ljava/io/ObjectStreamClass$WeakClassKey;-><init>(Ljava/lang/Class;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/io/ObjectStreamClass$WeakClassKey;->hash:I
-Ljava/io/ObjectStreamClass;-><init>()V
-Ljava/io/ObjectStreamClass;-><init>(Ljava/lang/Class;)V
-Ljava/io/ObjectStreamClass;->checkDefaultSerialize()V
-Ljava/io/ObjectStreamClass;->checkDeserialize()V
-Ljava/io/ObjectStreamClass;->checkSerialize()V
-Ljava/io/ObjectStreamClass;->cl:Ljava/lang/Class;
-Ljava/io/ObjectStreamClass;->classNamesEqual(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/io/ObjectStreamClass;->cons:Ljava/lang/reflect/Constructor;
-Ljava/io/ObjectStreamClass;->dataLayout:[Ljava/io/ObjectStreamClass$ClassDataSlot;
-Ljava/io/ObjectStreamClass;->defaultSerializeEx:Ljava/io/ObjectStreamClass$ExceptionInfo;
-Ljava/io/ObjectStreamClass;->deserializeEx:Ljava/io/ObjectStreamClass$ExceptionInfo;
-Ljava/io/ObjectStreamClass;->externalizable:Z
-Ljava/io/ObjectStreamClass;->fieldRefl:Ljava/io/ObjectStreamClass$FieldReflector;
-Ljava/io/ObjectStreamClass;->getClassDataLayout()[Ljava/io/ObjectStreamClass$ClassDataSlot;
-Ljava/io/ObjectStreamClass;->getClassDataLayout0()[Ljava/io/ObjectStreamClass$ClassDataSlot;
-Ljava/io/ObjectStreamClass;->getClassSignature(Ljava/lang/Class;)Ljava/lang/String;
-Ljava/io/ObjectStreamClass;->getDeclaredSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass;->getDeclaredSUID(Ljava/lang/Class;)Ljava/lang/Long;
-Ljava/io/ObjectStreamClass;->getDefaultSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass;->getExternalizableConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
-Ljava/io/ObjectStreamClass;->getField(Ljava/lang/String;Ljava/lang/Class;)Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass;->getFields(Z)[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass;->getInheritableMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamClass;->getMethodSignature([Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/String;
-Ljava/io/ObjectStreamClass;->getObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V
-Ljava/io/ObjectStreamClass;->getPackageName(Ljava/lang/Class;)Ljava/lang/String;
-Ljava/io/ObjectStreamClass;->getPrimFieldValues(Ljava/lang/Object;[B)V
-Ljava/io/ObjectStreamClass;->getPrivateMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamClass;->getReflector([Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamClass;)Ljava/io/ObjectStreamClass$FieldReflector;
-Ljava/io/ObjectStreamClass;->getResolveException()Ljava/lang/ClassNotFoundException;
-Ljava/io/ObjectStreamClass;->getSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass;->getSerializableConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
-Ljava/io/ObjectStreamClass;->getSuperDesc()Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectStreamClass;->getVariantFor(Ljava/lang/Class;)Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectStreamClass;->hasBlockExternalData()Z
-Ljava/io/ObjectStreamClass;->hasBlockExternalData:Z
-Ljava/io/ObjectStreamClass;->hasReadResolveMethod()Z
-Ljava/io/ObjectStreamClass;->hasStaticInitializer(Ljava/lang/Class;Z)Z
-Ljava/io/ObjectStreamClass;->hasWriteObjectData:Z
-Ljava/io/ObjectStreamClass;->hasWriteObjectMethod()Z
-Ljava/io/ObjectStreamClass;->hasWriteReplaceMethod()Z
-Ljava/io/ObjectStreamClass;->initialized:Z
-Ljava/io/ObjectStreamClass;->initNonProxy(Ljava/io/ObjectStreamClass;Ljava/lang/Class;Ljava/lang/ClassNotFoundException;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectStreamClass;->initProxy(Ljava/lang/Class;Ljava/lang/ClassNotFoundException;Ljava/io/ObjectStreamClass;)V
-Ljava/io/ObjectStreamClass;->invokeReadObject(Ljava/lang/Object;Ljava/io/ObjectInputStream;)V
-Ljava/io/ObjectStreamClass;->invokeReadObjectNoData(Ljava/lang/Object;)V
-Ljava/io/ObjectStreamClass;->invokeReadResolve(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/io/ObjectStreamClass;->invokeWriteObject(Ljava/lang/Object;Ljava/io/ObjectOutputStream;)V
-Ljava/io/ObjectStreamClass;->invokeWriteReplace(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/io/ObjectStreamClass;->isEnum()Z
-Ljava/io/ObjectStreamClass;->isEnum:Z
-Ljava/io/ObjectStreamClass;->isExternalizable()Z
-Ljava/io/ObjectStreamClass;->isInstantiable()Z
-Ljava/io/ObjectStreamClass;->isProxy()Z
-Ljava/io/ObjectStreamClass;->isProxy:Z
-Ljava/io/ObjectStreamClass;->isSerializable()Z
-Ljava/io/ObjectStreamClass;->localDesc:Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectStreamClass;->lookup(Ljava/lang/Class;Z)Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectStreamClass;->matchFields([Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamClass;)[Ljava/io/ObjectStreamField;
-Ljava/io/ObjectStreamClass;->MAX_SDK_TARGET_FOR_CLINIT_UIDGEN_WORKAROUND:I
-Ljava/io/ObjectStreamClass;->name:Ljava/lang/String;
-Ljava/io/ObjectStreamClass;->numObjFields:I
-Ljava/io/ObjectStreamClass;->packageEquals(Ljava/lang/Class;Ljava/lang/Class;)Z
-Ljava/io/ObjectStreamClass;->primDataSize:I
-Ljava/io/ObjectStreamClass;->processQueue(Ljava/lang/ref/ReferenceQueue;Ljava/util/concurrent/ConcurrentMap;)V
-Ljava/io/ObjectStreamClass;->readNonProxy(Ljava/io/ObjectInputStream;)V
-Ljava/io/ObjectStreamClass;->readObjectMethod:Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamClass;->readObjectNoDataMethod:Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamClass;->readResolveMethod:Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamClass;->requireInitialized()V
-Ljava/io/ObjectStreamClass;->resolveEx:Ljava/lang/ClassNotFoundException;
-Ljava/io/ObjectStreamClass;->serializable:Z
-Ljava/io/ObjectStreamClass;->serializeEx:Ljava/io/ObjectStreamClass$ExceptionInfo;
-Ljava/io/ObjectStreamClass;->setObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V
-Ljava/io/ObjectStreamClass;->setPrimFieldValues(Ljava/lang/Object;[B)V
-Ljava/io/ObjectStreamClass;->suid:Ljava/lang/Long;
-Ljava/io/ObjectStreamClass;->superDesc:Ljava/io/ObjectStreamClass;
-Ljava/io/ObjectStreamClass;->throwMiscException(Ljava/lang/Throwable;)V
-Ljava/io/ObjectStreamClass;->writeNonProxy(Ljava/io/ObjectOutputStream;)V
-Ljava/io/ObjectStreamClass;->writeObjectMethod:Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamClass;->writeReplaceMethod:Ljava/lang/reflect/Method;
-Ljava/io/ObjectStreamField;-><init>(Ljava/lang/reflect/Field;ZZ)V
-Ljava/io/ObjectStreamField;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
-Ljava/io/ObjectStreamField;->field:Ljava/lang/reflect/Field;
-Ljava/io/ObjectStreamField;->getClassSignature(Ljava/lang/Class;)Ljava/lang/String;
-Ljava/io/ObjectStreamField;->getSignature()Ljava/lang/String;
-Ljava/io/ObjectStreamField;->name:Ljava/lang/String;
-Ljava/io/ObjectStreamField;->offset:I
-Ljava/io/ObjectStreamField;->signature:Ljava/lang/String;
-Ljava/io/ObjectStreamField;->type:Ljava/lang/Class;
-Ljava/io/ObjectStreamField;->unshared:Z
-Ljava/io/OptionalDataException;-><init>(I)V
-Ljava/io/OptionalDataException;-><init>(Z)V
-Ljava/io/OutputStreamWriter;->flushBuffer()V
-Ljava/io/OutputStreamWriter;->se:Lsun/nio/cs/StreamEncoder;
-Ljava/io/PipedInputStream;->awaitSpace()V
-Ljava/io/PipedInputStream;->checkStateForReceive()V
-Ljava/io/PipedInputStream;->closedByReader:Z
-Ljava/io/PipedInputStream;->closedByWriter:Z
-Ljava/io/PipedInputStream;->connected:Z
-Ljava/io/PipedInputStream;->DEFAULT_PIPE_SIZE:I
-Ljava/io/PipedInputStream;->initPipe(I)V
-Ljava/io/PipedInputStream;->readSide:Ljava/lang/Thread;
-Ljava/io/PipedInputStream;->receive([BII)V
-Ljava/io/PipedInputStream;->receivedLast()V
-Ljava/io/PipedInputStream;->writeSide:Ljava/lang/Thread;
-Ljava/io/PipedOutputStream;->sink:Ljava/io/PipedInputStream;
-Ljava/io/PipedReader;->buffer:[C
-Ljava/io/PipedReader;->closedByReader:Z
-Ljava/io/PipedReader;->closedByWriter:Z
-Ljava/io/PipedReader;->connected:Z
-Ljava/io/PipedReader;->DEFAULT_PIPE_SIZE:I
-Ljava/io/PipedReader;->in:I
-Ljava/io/PipedReader;->initPipe(I)V
-Ljava/io/PipedReader;->out:I
-Ljava/io/PipedReader;->readSide:Ljava/lang/Thread;
-Ljava/io/PipedReader;->receive(I)V
-Ljava/io/PipedReader;->receive([CII)V
-Ljava/io/PipedReader;->receivedLast()V
-Ljava/io/PipedReader;->writeSide:Ljava/lang/Thread;
-Ljava/io/PipedWriter;->closed:Z
-Ljava/io/PipedWriter;->sink:Ljava/io/PipedReader;
-Ljava/io/PrintStream;-><init>(ZLjava/io/OutputStream;)V
-Ljava/io/PrintStream;-><init>(ZLjava/io/OutputStream;Ljava/nio/charset/Charset;)V
-Ljava/io/PrintStream;-><init>(ZLjava/nio/charset/Charset;Ljava/io/OutputStream;)V
-Ljava/io/PrintStream;->autoFlush:Z
-Ljava/io/PrintStream;->charOut:Ljava/io/OutputStreamWriter;
-Ljava/io/PrintStream;->charset:Ljava/nio/charset/Charset;
-Ljava/io/PrintStream;->closing:Z
-Ljava/io/PrintStream;->ensureOpen()V
-Ljava/io/PrintStream;->formatter:Ljava/util/Formatter;
-Ljava/io/PrintStream;->getTextOut()Ljava/io/BufferedWriter;
-Ljava/io/PrintStream;->newLine()V
-Ljava/io/PrintStream;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
-Ljava/io/PrintStream;->textOut:Ljava/io/BufferedWriter;
-Ljava/io/PrintStream;->toCharset(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/io/PrintStream;->trouble:Z
-Ljava/io/PrintStream;->write(Ljava/lang/String;)V
-Ljava/io/PrintStream;->write([C)V
-Ljava/io/PrintWriter;-><init>(Ljava/nio/charset/Charset;Ljava/io/File;)V
-Ljava/io/PrintWriter;->autoFlush:Z
-Ljava/io/PrintWriter;->ensureOpen()V
-Ljava/io/PrintWriter;->formatter:Ljava/util/Formatter;
-Ljava/io/PrintWriter;->lineSeparator:Ljava/lang/String;
-Ljava/io/PrintWriter;->newLine()V
-Ljava/io/PrintWriter;->psOut:Ljava/io/PrintStream;
-Ljava/io/PrintWriter;->toCharset(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/io/PrintWriter;->trouble:Z
-Ljava/io/PushbackInputStream;->ensureOpen()V
-Ljava/io/PushbackReader;->buf:[C
-Ljava/io/PushbackReader;->ensureOpen()V
-Ljava/io/PushbackReader;->pos:I
-Ljava/io/RandomAccessFile;->channel:Ljava/nio/channels/FileChannel;
-Ljava/io/RandomAccessFile;->closed:Z
-Ljava/io/RandomAccessFile;->closeLock:Ljava/lang/Object;
-Ljava/io/RandomAccessFile;->flushAfterWrite:I
-Ljava/io/RandomAccessFile;->FLUSH_FDATASYNC:I
-Ljava/io/RandomAccessFile;->FLUSH_FSYNC:I
-Ljava/io/RandomAccessFile;->FLUSH_NONE:I
-Ljava/io/RandomAccessFile;->guard:Ldalvik/system/CloseGuard;
-Ljava/io/RandomAccessFile;->ioTracker:Llibcore/io/IoTracker;
-Ljava/io/RandomAccessFile;->maybeSync()V
-Ljava/io/RandomAccessFile;->mode:I
-Ljava/io/RandomAccessFile;->path:Ljava/lang/String;
-Ljava/io/RandomAccessFile;->readBytes([BII)I
-Ljava/io/RandomAccessFile;->rw:Z
-Ljava/io/RandomAccessFile;->scratch:[B
-Ljava/io/RandomAccessFile;->writeBytes([BII)V
-Ljava/io/Reader;->maxSkipBufferSize:I
-Ljava/io/Reader;->skipBuffer:[C
-Ljava/io/SequenceInputStream;->e:Ljava/util/Enumeration;
-Ljava/io/SequenceInputStream;->in:Ljava/io/InputStream;
-Ljava/io/SequenceInputStream;->nextStream()V
-Ljava/io/SerialCallbackContext;-><init>(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
-Ljava/io/SerialCallbackContext;->check()V
-Ljava/io/SerialCallbackContext;->checkAndSetUsed()V
-Ljava/io/SerialCallbackContext;->desc:Ljava/io/ObjectStreamClass;
-Ljava/io/SerialCallbackContext;->getDesc()Ljava/io/ObjectStreamClass;
-Ljava/io/SerialCallbackContext;->getObj()Ljava/lang/Object;
-Ljava/io/SerialCallbackContext;->obj:Ljava/lang/Object;
-Ljava/io/SerialCallbackContext;->setUsed()V
-Ljava/io/SerialCallbackContext;->thread:Ljava/lang/Thread;
-Ljava/io/StreamTokenizer;-><init>()V
-Ljava/io/StreamTokenizer;->buf:[C
-Ljava/io/StreamTokenizer;->ctype:[B
-Ljava/io/StreamTokenizer;->CT_ALPHA:B
-Ljava/io/StreamTokenizer;->CT_COMMENT:B
-Ljava/io/StreamTokenizer;->CT_DIGIT:B
-Ljava/io/StreamTokenizer;->CT_QUOTE:B
-Ljava/io/StreamTokenizer;->CT_WHITESPACE:B
-Ljava/io/StreamTokenizer;->eolIsSignificantP:Z
-Ljava/io/StreamTokenizer;->forceLower:Z
-Ljava/io/StreamTokenizer;->input:Ljava/io/InputStream;
-Ljava/io/StreamTokenizer;->LINENO:I
-Ljava/io/StreamTokenizer;->NEED_CHAR:I
-Ljava/io/StreamTokenizer;->peekc:I
-Ljava/io/StreamTokenizer;->pushedBack:Z
-Ljava/io/StreamTokenizer;->read()I
-Ljava/io/StreamTokenizer;->reader:Ljava/io/Reader;
-Ljava/io/StreamTokenizer;->SKIP_LF:I
-Ljava/io/StreamTokenizer;->slashSlashCommentsP:Z
-Ljava/io/StreamTokenizer;->slashStarCommentsP:Z
-Ljava/io/StreamTokenizer;->TT_NOTHING:I
-Ljava/io/StringReader;->ensureOpen()V
-Ljava/io/StringReader;->length:I
-Ljava/io/StringReader;->mark:I
-Ljava/io/StringReader;->next:I
-Ljava/io/StringReader;->str:Ljava/lang/String;
-Ljava/io/StringWriter;->buf:Ljava/lang/StringBuffer;
-Ljava/io/Writer;->writeBuffer:[C
-Ljava/io/Writer;->WRITE_BUFFER_SIZE:I
-Ljava/lang/AbstractStringBuilder;-><init>()V
-Ljava/lang/AbstractStringBuilder;-><init>(I)V
-Ljava/lang/AbstractStringBuilder;->append(D)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(F)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(I)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(J)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(Ljava/lang/Object;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(Ljava/lang/StringBuffer;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append(Z)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append([C)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->append([CII)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->appendCodePoint(I)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->appendNull()Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->capacity()I
-Ljava/lang/AbstractStringBuilder;->codePointAt(I)I
-Ljava/lang/AbstractStringBuilder;->codePointBefore(I)I
-Ljava/lang/AbstractStringBuilder;->codePointCount(II)I
-Ljava/lang/AbstractStringBuilder;->count:I
-Ljava/lang/AbstractStringBuilder;->delete(II)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->deleteCharAt(I)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->ensureCapacity(I)V
-Ljava/lang/AbstractStringBuilder;->ensureCapacityInternal(I)V
-Ljava/lang/AbstractStringBuilder;->getChars(II[CI)V
-Ljava/lang/AbstractStringBuilder;->getValue()[C
-Ljava/lang/AbstractStringBuilder;->hugeCapacity(I)I
-Ljava/lang/AbstractStringBuilder;->indexOf(Ljava/lang/String;)I
-Ljava/lang/AbstractStringBuilder;->indexOf(Ljava/lang/String;I)I
-Ljava/lang/AbstractStringBuilder;->insert(IC)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(ID)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(IF)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(II)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(IJ)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(ILjava/lang/CharSequence;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(ILjava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(ILjava/lang/Object;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(ILjava/lang/String;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(IZ)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(I[C)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->insert(I[CII)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->lastIndexOf(Ljava/lang/String;)I
-Ljava/lang/AbstractStringBuilder;->lastIndexOf(Ljava/lang/String;I)I
-Ljava/lang/AbstractStringBuilder;->MAX_ARRAY_SIZE:I
-Ljava/lang/AbstractStringBuilder;->newCapacity(I)I
-Ljava/lang/AbstractStringBuilder;->offsetByCodePoints(II)I
-Ljava/lang/AbstractStringBuilder;->replace(IILjava/lang/String;)Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->reverse()Ljava/lang/AbstractStringBuilder;
-Ljava/lang/AbstractStringBuilder;->reverseAllValidSurrogatePairs()V
-Ljava/lang/AbstractStringBuilder;->setCharAt(IC)V
-Ljava/lang/AbstractStringBuilder;->setLength(I)V
-Ljava/lang/AbstractStringBuilder;->substring(I)Ljava/lang/String;
-Ljava/lang/AbstractStringBuilder;->substring(II)Ljava/lang/String;
-Ljava/lang/AbstractStringBuilder;->trimToSize()V
-Ljava/lang/AndroidHardcodedSystemProperties;-><init>()V
-Ljava/lang/AndroidHardcodedSystemProperties;->JAVA_VERSION:Ljava/lang/String;
-Ljava/lang/AndroidHardcodedSystemProperties;->STATIC_PROPERTIES:[[Ljava/lang/String;
-Ljava/lang/annotation/AnnotationTypeMismatchException;->element:Ljava/lang/reflect/Method;
-Ljava/lang/annotation/AnnotationTypeMismatchException;->foundType:Ljava/lang/String;
-Ljava/lang/annotation/IncompleteAnnotationException;->annotationType:Ljava/lang/Class;
-Ljava/lang/annotation/IncompleteAnnotationException;->elementName:Ljava/lang/String;
-Ljava/lang/ArrayIndexOutOfBoundsException;-><init>(II)V
-Ljava/lang/ArrayIndexOutOfBoundsException;-><init>(III)V
-Ljava/lang/AssertionError;-><init>(Ljava/lang/String;)V
-Ljava/lang/Byte$ByteCache;-><init>()V
-Ljava/lang/Byte$ByteCache;->cache:[Ljava/lang/Byte;
-Ljava/lang/Byte;->DIGITS:[C
-Ljava/lang/Byte;->UPPER_CASE_DIGITS:[C
-Ljava/lang/Character$CharacterCache;-><init>()V
-Ljava/lang/Character$CharacterCache;->cache:[Ljava/lang/Character;
-Ljava/lang/Character$Subset;->name:Ljava/lang/String;
-Ljava/lang/Character$UnicodeBlock;-><init>(Ljava/lang/String;)V
-Ljava/lang/Character$UnicodeBlock;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/lang/Character$UnicodeBlock;-><init>(Ljava/lang/String;Z)V
-Ljava/lang/Character$UnicodeBlock;->blocks:[Ljava/lang/Character$UnicodeBlock;
-Ljava/lang/Character$UnicodeBlock;->blockStarts:[I
-Ljava/lang/Character$UnicodeBlock;->map:Ljava/util/Map;
-Ljava/lang/Character$UnicodeScript;->aliases:Ljava/util/HashMap;
-Ljava/lang/Character$UnicodeScript;->scripts:[Ljava/lang/Character$UnicodeScript;
-Ljava/lang/Character$UnicodeScript;->scriptStarts:[I
-Ljava/lang/Character;->codePointAtImpl([CII)I
-Ljava/lang/Character;->codePointBeforeImpl([CII)I
-Ljava/lang/Character;->codePointCountImpl([CII)I
-Ljava/lang/Character;->digitImpl(II)I
-Ljava/lang/Character;->DIRECTIONALITY:[B
-Ljava/lang/Character;->ERROR:I
-Ljava/lang/Character;->getDirectionalityImpl(I)B
-Ljava/lang/Character;->getNameImpl(I)Ljava/lang/String;
-Ljava/lang/Character;->getNumericValueImpl(I)I
-Ljava/lang/Character;->getTypeImpl(I)I
-Ljava/lang/Character;->isAlphabeticImpl(I)Z
-Ljava/lang/Character;->isDefinedImpl(I)Z
-Ljava/lang/Character;->isDigitImpl(I)Z
-Ljava/lang/Character;->isIdentifierIgnorableImpl(I)Z
-Ljava/lang/Character;->isIdeographicImpl(I)Z
-Ljava/lang/Character;->isLetterImpl(I)Z
-Ljava/lang/Character;->isLetterOrDigitImpl(I)Z
-Ljava/lang/Character;->isLowerCaseImpl(I)Z
-Ljava/lang/Character;->isMirroredImpl(I)Z
-Ljava/lang/Character;->isSpaceCharImpl(I)Z
-Ljava/lang/Character;->isTitleCaseImpl(I)Z
-Ljava/lang/Character;->isUnicodeIdentifierPartImpl(I)Z
-Ljava/lang/Character;->isUnicodeIdentifierStartImpl(I)Z
-Ljava/lang/Character;->isUpperCaseImpl(I)Z
-Ljava/lang/Character;->isWhitespaceImpl(I)Z
-Ljava/lang/Character;->offsetByCodePointsImpl([CIIII)I
-Ljava/lang/Character;->toLowerCaseImpl(I)I
-Ljava/lang/Character;->toSurrogates(I[CI)V
-Ljava/lang/Character;->toTitleCaseImpl(I)I
-Ljava/lang/Character;->toUpperCaseImpl(I)I
-Ljava/lang/Class$Caches;-><init>()V
-Ljava/lang/Class$Caches;->genericInterfaces:Llibcore/util/BasicLruCache;
-Ljava/lang/Class;->ANNOTATION:I
-Ljava/lang/Class;->cannotCastMsg(Ljava/lang/Object;)Ljava/lang/String;
-Ljava/lang/Class;->classFlags:I
-Ljava/lang/Class;->classForName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
-Ljava/lang/Class;->classNameImpliesTopLevel()Z
-Ljava/lang/Class;->classSize:I
-Ljava/lang/Class;->componentType:Ljava/lang/Class;
-Ljava/lang/Class;->copiedMethodsOffset:S
-Ljava/lang/Class;->dexTypeIndex:I
-Ljava/lang/Class;->ENUM:I
-Ljava/lang/Class;->extData:Ldalvik/system/ClassExt;
-Ljava/lang/Class;->FINALIZABLE:I
-Ljava/lang/Class;->findInterfaceMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
-Ljava/lang/Class;->getAccessFlags()I
-Ljava/lang/Class;->getConstructor0([Ljava/lang/Class;I)Ljava/lang/reflect/Constructor;
-Ljava/lang/Class;->getDeclaredConstructorInternal([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
-Ljava/lang/Class;->getDeclaredConstructorsInternal(Z)[Ljava/lang/reflect/Constructor;
-Ljava/lang/Class;->getDeclaredFieldsUnchecked(Z)[Ljava/lang/reflect/Field;
-Ljava/lang/Class;->getDeclaredMethodInternal(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
-Ljava/lang/Class;->getEnclosingConstructorNative()Ljava/lang/reflect/Constructor;
-Ljava/lang/Class;->getEnclosingMethodNative()Ljava/lang/reflect/Method;
-Ljava/lang/Class;->getEnumConstantsShared()[Ljava/lang/Object;
-Ljava/lang/Class;->getInnerClassFlags(I)I
-Ljava/lang/Class;->getInnerClassName()Ljava/lang/String;
-Ljava/lang/Class;->getInstanceMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
-Ljava/lang/Class;->getInterfacesInternal()[Ljava/lang/Class;
-Ljava/lang/Class;->getNameNative()Ljava/lang/String;
-Ljava/lang/Class;->getPackageName$()Ljava/lang/String;
-Ljava/lang/Class;->getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
-Ljava/lang/Class;->getPublicDeclaredFields()[Ljava/lang/reflect/Field;
-Ljava/lang/Class;->getPublicFieldRecursive(Ljava/lang/String;)Ljava/lang/reflect/Field;
-Ljava/lang/Class;->getPublicFieldsRecursive(Ljava/util/List;)V
-Ljava/lang/Class;->getPublicMethodRecursive(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
-Ljava/lang/Class;->getPublicMethodsInternal(Ljava/util/List;)V
-Ljava/lang/Class;->getSignatureAnnotation()[Ljava/lang/String;
-Ljava/lang/Class;->getSignatureAttribute()Ljava/lang/String;
-Ljava/lang/Class;->iFields:J
-Ljava/lang/Class;->isDeclaredAnnotationPresent(Ljava/lang/Class;)Z
-Ljava/lang/Class;->isFinalizable()Z
-Ljava/lang/Class;->isLocalOrAnonymousClass()Z
-Ljava/lang/Class;->isProxy()Z
-Ljava/lang/Class;->methods:J
-Ljava/lang/Class;->numReferenceInstanceFields:I
-Ljava/lang/Class;->numReferenceStaticFields:I
-Ljava/lang/Class;->objectSizeAllocFastPath:I
-Ljava/lang/Class;->primitiveType:I
-Ljava/lang/Class;->referenceInstanceOffsets:I
-Ljava/lang/Class;->resolveName(Ljava/lang/String;)Ljava/lang/String;
-Ljava/lang/Class;->sFields:J
-Ljava/lang/Class;->superClass:Ljava/lang/Class;
-Ljava/lang/Class;->SYNTHETIC:I
-Ljava/lang/Class;->virtualMethodsOffset:S
-Ljava/lang/Class;->vtable:Ljava/lang/Object;
-Ljava/lang/ClassLoader$SystemClassLoader;-><init>()V
-Ljava/lang/ClassLoader$SystemClassLoader;->loader:Ljava/lang/ClassLoader;
-Ljava/lang/ClassLoader;-><init>(Ljava/lang/Void;Ljava/lang/ClassLoader;)V
-Ljava/lang/ClassLoader;->allocator:J
-Ljava/lang/ClassLoader;->checkCreateClassLoader()Ljava/lang/Void;
-Ljava/lang/ClassLoader;->classTable:J
-Ljava/lang/ClassLoader;->createSystemClassLoader()Ljava/lang/ClassLoader;
-Ljava/lang/ClassLoader;->findBootstrapClassOrNull(Ljava/lang/String;)Ljava/lang/Class;
-Ljava/lang/ClassLoader;->getBootstrapResource(Ljava/lang/String;)Ljava/net/URL;
-Ljava/lang/ClassLoader;->getBootstrapResources(Ljava/lang/String;)Ljava/util/Enumeration;
-Ljava/lang/ClassLoader;->packages:Ljava/util/HashMap;
-Ljava/lang/ClassLoader;->proxyCache:Ljava/util/Map;
-Ljava/lang/ClassNotFoundException;->ex:Ljava/lang/Throwable;
-Ljava/lang/Compiler;-><init>()V
-Ljava/lang/Daemons$Daemon;-><init>(Ljava/lang/String;)V
-Ljava/lang/Daemons$Daemon;->getStackTrace()[Ljava/lang/StackTraceElement;
-Ljava/lang/Daemons$Daemon;->interrupt()V
-Ljava/lang/Daemons$Daemon;->interrupt(Ljava/lang/Thread;)V
-Ljava/lang/Daemons$Daemon;->name:Ljava/lang/String;
-Ljava/lang/Daemons$Daemon;->postZygoteFork:Z
-Ljava/lang/Daemons$Daemon;->runInternal()V
-Ljava/lang/Daemons$Daemon;->startInternal()V
-Ljava/lang/Daemons$Daemon;->startPostZygoteFork()V
-Ljava/lang/Daemons$FinalizerDaemon;-><init>()V
-Ljava/lang/Daemons$FinalizerDaemon;->doFinalize(Ljava/lang/ref/FinalizerReference;)V
-Ljava/lang/Daemons$FinalizerDaemon;->progressCounter:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/lang/Daemons$FinalizerDaemon;->queue:Ljava/lang/ref/ReferenceQueue;
-Ljava/lang/Daemons$FinalizerDaemon;->runInternal()V
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;-><init>()V
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->finalizerTimedOut(Ljava/lang/Object;)V
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->getNeedToWork()Z
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->goToSleep()V
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->needToWork:Z
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->runInternal()V
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->sleepFor(J)Z
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->sleepUntilNeeded()Z
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->waitForFinalization()Ljava/lang/Object;
-Ljava/lang/Daemons$FinalizerWatchdogDaemon;->wakeUp()V
-Ljava/lang/Daemons$HeapTaskDaemon;-><init>()V
-Ljava/lang/Daemons$HeapTaskDaemon;->INSTANCE:Ljava/lang/Daemons$HeapTaskDaemon;
-Ljava/lang/Daemons$HeapTaskDaemon;->interrupt(Ljava/lang/Thread;)V
-Ljava/lang/Daemons$HeapTaskDaemon;->runInternal()V
-Ljava/lang/Daemons$ReferenceQueueDaemon;-><init>()V
-Ljava/lang/Daemons$ReferenceQueueDaemon;->runInternal()V
-Ljava/lang/Daemons;-><init>()V
-Ljava/lang/Daemons;->NANOS_PER_MILLI:I
-Ljava/lang/Daemons;->NANOS_PER_SECOND:I
-Ljava/lang/Daemons;->requestGC()V
-Ljava/lang/Daemons;->startPostZygoteFork()V
-Ljava/lang/Enum;->sharedConstantsCache:Llibcore/util/BasicLruCache;
-Ljava/lang/EnumConstantNotPresentException;->constantName:Ljava/lang/String;
-Ljava/lang/EnumConstantNotPresentException;->enumType:Ljava/lang/Class;
-Ljava/lang/ExceptionInInitializerError;->exception:Ljava/lang/Throwable;
-Ljava/lang/InheritableThreadLocal;->createMap(Ljava/lang/Thread;Ljava/lang/Object;)V
-Ljava/lang/InheritableThreadLocal;->getMap(Ljava/lang/Thread;)Ljava/lang/ThreadLocal$ThreadLocalMap;
-Ljava/lang/Integer$IntegerCache;-><init>()V
-Ljava/lang/Integer$IntegerCache;->cache:[Ljava/lang/Integer;
-Ljava/lang/Integer$IntegerCache;->high:I
-Ljava/lang/Integer$IntegerCache;->low:I
-Ljava/lang/Integer;->DigitOnes:[C
-Ljava/lang/Integer;->digits:[C
-Ljava/lang/Integer;->DigitTens:[C
-Ljava/lang/Integer;->formatUnsignedInt(II[CII)I
-Ljava/lang/Integer;->getChars(II[C)V
-Ljava/lang/Integer;->sizeTable:[I
-Ljava/lang/Integer;->SMALL_NEG_VALUES:[Ljava/lang/String;
-Ljava/lang/Integer;->SMALL_NONNEG_VALUES:[Ljava/lang/String;
-Ljava/lang/Integer;->stringSize(I)I
-Ljava/lang/Integer;->toUnsignedString0(II)Ljava/lang/String;
-Ljava/lang/invoke/CallSite;-><init>(Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/CallSite;-><init>(Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/CallSite;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/CallSite;->checkTargetChange(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/CallSite;->getTargetVolatile()Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/CallSite;->GET_TARGET:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/CallSite;->initializeGetTarget()V
-Ljava/lang/invoke/CallSite;->makeDynamicInvoker()Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/CallSite;->setTargetNormal(Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/CallSite;->setTargetVolatile(Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/CallSite;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/CallSite;->TARGET_OFFSET:J
-Ljava/lang/invoke/CallSite;->wrongTargetType(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/WrongMethodTypeException;
-Ljava/lang/invoke/ConstantCallSite;->isFrozen:Z
-Ljava/lang/invoke/MethodHandle;-><init>(JILjava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/MethodHandle;->artFieldOrMethod:J
-Ljava/lang/invoke/MethodHandle;->asCollectorChecks(Ljava/lang/Class;I)Z
-Ljava/lang/invoke/MethodHandle;->asSpreaderChecks(Ljava/lang/Class;I)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodHandle;->cachedSpreadInvoker:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandle;->duplicate()Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandle;->getHandleKind()I
-Ljava/lang/invoke/MethodHandle;->handleKind:I
-Ljava/lang/invoke/MethodHandle;->IGET:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_CALLSITE_TRANSFORM:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_DIRECT:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_INTERFACE:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_STATIC:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_SUPER:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_TRANSFORM:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_VAR_HANDLE:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_VAR_HANDLE_EXACT:I
-Ljava/lang/invoke/MethodHandle;->INVOKE_VIRTUAL:I
-Ljava/lang/invoke/MethodHandle;->IPUT:I
-Ljava/lang/invoke/MethodHandle;->nominalType:Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodHandle;->SGET:I
-Ljava/lang/invoke/MethodHandle;->spreadArrayChecks(Ljava/lang/Class;I)V
-Ljava/lang/invoke/MethodHandle;->SPUT:I
-Ljava/lang/invoke/MethodHandle;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/MethodHandle;->transformInternal(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/MethodHandle;->type:Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodHandleImpl$HandleInfo;-><init>(Ljava/lang/reflect/Member;Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/MethodHandleImpl$HandleInfo;->handle:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandleImpl$HandleInfo;->member:Ljava/lang/reflect/Member;
-Ljava/lang/invoke/MethodHandleImpl;-><init>(JILjava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/MethodHandleImpl;->getMemberInternal()Ljava/lang/reflect/Member;
-Ljava/lang/invoke/MethodHandleImpl;->info:Ljava/lang/invoke/MethodHandleImpl$HandleInfo;
-Ljava/lang/invoke/MethodHandleImpl;->reveal()Ljava/lang/invoke/MethodHandleInfo;
-Ljava/lang/invoke/MethodHandles$Lookup;-><init>(Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodHandles$Lookup;->accessFailedMessage(Ljava/lang/Class;Ljava/lang/Class;I)Ljava/lang/String;
-Ljava/lang/invoke/MethodHandles$Lookup;->allowedModes:I
-Ljava/lang/invoke/MethodHandles$Lookup;->ALL_MODES:I
-Ljava/lang/invoke/MethodHandles$Lookup;->checkAccess(Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/String;)V
-Ljava/lang/invoke/MethodHandles$Lookup;->checkReturnType(Ljava/lang/reflect/Method;Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/MethodHandles$Lookup;->checkSpecialCaller(Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodHandles$Lookup;->checkUnprivilegedlookupClass(Ljava/lang/Class;I)V
-Ljava/lang/invoke/MethodHandles$Lookup;->commonFieldChecks(Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/Class;ZZ)V
-Ljava/lang/invoke/MethodHandles$Lookup;->createMethodHandle(Ljava/lang/reflect/Method;ILjava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->createMethodHandleForConstructor(Ljava/lang/reflect/Constructor;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findAccessor(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findAccessor(Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/Class;IZ)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findFieldOfType(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Field;
-Ljava/lang/invoke/MethodHandles$Lookup;->findSpecial(Ljava/lang/reflect/Method;Ljava/lang/invoke/MethodType;Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findStaticVarHandle(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/VarHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findVarHandle(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/VarHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findVirtualForMH(Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->findVirtualForVH(Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles$Lookup;->fixmods(I)I
-Ljava/lang/invoke/MethodHandles$Lookup;->hasPrivateAccess()Z
-Ljava/lang/invoke/MethodHandles$Lookup;->initMethodType(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodHandles$Lookup;->lookupClass:Ljava/lang/Class;
-Ljava/lang/invoke/MethodHandles$Lookup;->PUBLIC_LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
-Ljava/lang/invoke/MethodHandles$Lookup;->throwMakeAccessException(Ljava/lang/String;Ljava/lang/Object;)V
-Ljava/lang/invoke/MethodHandles$Lookup;->unreflectVarHandle(Ljava/lang/reflect/Field;)Ljava/lang/invoke/VarHandle;
-Ljava/lang/invoke/MethodHandles;-><init>()V
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([BI)B
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([CI)C
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([DI)D
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([FI)F
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([II)I
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([JI)J
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([SI)S
-Ljava/lang/invoke/MethodHandles;->arrayElementGetter([ZI)Z
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([BIB)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([CIC)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([DID)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([FIF)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([III)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([JIJ)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([SIS)V
-Ljava/lang/invoke/MethodHandles;->arrayElementSetter([ZIZ)V
-Ljava/lang/invoke/MethodHandles;->arrayElementVarHandle(Ljava/lang/Class;)Ljava/lang/invoke/VarHandle;
-Ljava/lang/invoke/MethodHandles;->byteArrayViewVarHandle(Ljava/lang/Class;Ljava/nio/ByteOrder;)Ljava/lang/invoke/VarHandle;
-Ljava/lang/invoke/MethodHandles;->byteBufferViewVarHandle(Ljava/lang/Class;Ljava/nio/ByteOrder;)Ljava/lang/invoke/VarHandle;
-Ljava/lang/invoke/MethodHandles;->checkClassIsArray(Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodHandles;->checkTypeIsViewable(Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodHandles;->collectArgumentsChecks(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodHandles;->copyTypes(Ljava/util/List;)Ljava/util/List;
-Ljava/lang/invoke/MethodHandles;->dropArgumentChecks(Ljava/lang/invoke/MethodType;ILjava/util/List;)I
-Ljava/lang/invoke/MethodHandles;->explicitCastArgumentsChecks(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/MethodHandles;->filterArgumentChecks(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/MethodHandles;->filterArgumentsCheckArity(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/MethodHandles;->filterReturnValueChecks(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/MethodHandles;->foldArgumentChecks(ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/Class;
-Ljava/lang/invoke/MethodHandles;->getMethodHandleImpl(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandleImpl;
-Ljava/lang/invoke/MethodHandles;->identity(B)B
-Ljava/lang/invoke/MethodHandles;->identity(C)C
-Ljava/lang/invoke/MethodHandles;->identity(D)D
-Ljava/lang/invoke/MethodHandles;->identity(F)F
-Ljava/lang/invoke/MethodHandles;->identity(I)I
-Ljava/lang/invoke/MethodHandles;->identity(J)J
-Ljava/lang/invoke/MethodHandles;->identity(S)S
-Ljava/lang/invoke/MethodHandles;->identity(Z)Z
-Ljava/lang/invoke/MethodHandles;->insertArgumentsChecks(Ljava/lang/invoke/MethodHandle;II)[Ljava/lang/Class;
-Ljava/lang/invoke/MethodHandles;->methodHandleForVarHandleAccessor(Ljava/lang/invoke/VarHandle$AccessMode;Ljava/lang/invoke/MethodType;Z)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles;->misMatchedTypes(Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/RuntimeException;
-Ljava/lang/invoke/MethodHandles;->permuteArgumentChecks([ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Z
-Ljava/lang/invoke/MethodHandles;->varHandleExactInvoker(Ljava/lang/invoke/VarHandle$AccessMode;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodHandles;->varHandleInvoker(Ljava/lang/invoke/VarHandle$AccessMode;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;-><init>(Ljava/lang/Object;)V
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;->hashcode:I
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;-><init>()V
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->add(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->expungeStaleElements()V
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->get(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->map:Ljava/util/concurrent/ConcurrentMap;
-Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->stale:Ljava/lang/ref/ReferenceQueue;
-Ljava/lang/invoke/MethodType;-><init>()V
-Ljava/lang/invoke/MethodType;-><init>(Ljava/lang/Class;[Ljava/lang/Class;Z)V
-Ljava/lang/invoke/MethodType;-><init>([Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodType;->asCollectorType(Ljava/lang/Class;I)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->asSpreaderType(Ljava/lang/Class;I)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->basicType()Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->canConvert(Ljava/lang/Class;Ljava/lang/Class;)Z
-Ljava/lang/invoke/MethodType;->canConvertParameters([Ljava/lang/Class;[Ljava/lang/Class;)Z
-Ljava/lang/invoke/MethodType;->checkPtype(Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodType;->checkPtypes([Ljava/lang/Class;)I
-Ljava/lang/invoke/MethodType;->checkRtype(Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodType;->checkSlotCount(I)V
-Ljava/lang/invoke/MethodType;->equals(Ljava/lang/invoke/MethodType;)Z
-Ljava/lang/invoke/MethodType;->explicitCastEquivalentToAsType(Ljava/lang/Class;Ljava/lang/Class;)Z
-Ljava/lang/invoke/MethodType;->explicitCastEquivalentToAsType(Ljava/lang/invoke/MethodType;)Z
-Ljava/lang/invoke/MethodType;->form()Ljava/lang/invoke/MethodTypeForm;
-Ljava/lang/invoke/MethodType;->form:Ljava/lang/invoke/MethodTypeForm;
-Ljava/lang/invoke/MethodType;->internTable:Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;
-Ljava/lang/invoke/MethodType;->invokerType()Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->isConvertibleTo(Ljava/lang/invoke/MethodType;)Z
-Ljava/lang/invoke/MethodType;->isGeneric()Z
-Ljava/lang/invoke/MethodType;->lastParameterType()Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->leadingReferenceParameter()Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->listToArray(Ljava/util/List;)[Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->makeImpl(Ljava/lang/Class;[Ljava/lang/Class;Z)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->MAX_JVM_ARITY:I
-Ljava/lang/invoke/MethodType;->MAX_MH_ARITY:I
-Ljava/lang/invoke/MethodType;->MAX_MH_INVOKER_ARITY:I
-Ljava/lang/invoke/MethodType;->methodDescriptor:Ljava/lang/String;
-Ljava/lang/invoke/MethodType;->MethodType_init(Ljava/lang/Class;[Ljava/lang/Class;)V
-Ljava/lang/invoke/MethodType;->newIndexOutOfBoundsException(Ljava/lang/Object;)Ljava/lang/IndexOutOfBoundsException;
-Ljava/lang/invoke/MethodType;->NO_PTYPES:[Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->objectOnlyTypes:[Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->parameterSlotCount()I
-Ljava/lang/invoke/MethodType;->ptypes()[Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->ptypes:[Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->ptypesOffset:J
-Ljava/lang/invoke/MethodType;->rtype()Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->rtype:Ljava/lang/Class;
-Ljava/lang/invoke/MethodType;->rtypeOffset:J
-Ljava/lang/invoke/MethodType;->toFieldDescriptorString(Ljava/lang/Class;)Ljava/lang/String;
-Ljava/lang/invoke/MethodType;->unwrapWithNoPrims(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->wrapAlt:Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodType;->wrapWithPrims(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodTypeForm;-><init>(Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/MethodTypeForm;->argCounts:J
-Ljava/lang/invoke/MethodTypeForm;->argSlotToParameter(I)I
-Ljava/lang/invoke/MethodTypeForm;->argToSlotTable:[I
-Ljava/lang/invoke/MethodTypeForm;->assertIsBasicType()Z
-Ljava/lang/invoke/MethodTypeForm;->basicType()Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodTypeForm;->basicType:Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodTypeForm;->canonicalize(Ljava/lang/Class;I)Ljava/lang/Class;
-Ljava/lang/invoke/MethodTypeForm;->canonicalize(Ljava/lang/invoke/MethodType;II)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodTypeForm;->canonicalizeAll([Ljava/lang/Class;I)[Ljava/lang/Class;
-Ljava/lang/invoke/MethodTypeForm;->ERASE:I
-Ljava/lang/invoke/MethodTypeForm;->erasedType()Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodTypeForm;->erasedType:Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/MethodTypeForm;->findForm(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodTypeForm;
-Ljava/lang/invoke/MethodTypeForm;->hasLongPrimitives()Z
-Ljava/lang/invoke/MethodTypeForm;->hasNonVoidPrimitives()Z
-Ljava/lang/invoke/MethodTypeForm;->hasPrimitives()Z
-Ljava/lang/invoke/MethodTypeForm;->INTS:I
-Ljava/lang/invoke/MethodTypeForm;->longPrimitiveParameterCount()I
-Ljava/lang/invoke/MethodTypeForm;->longPrimitiveReturnCount()I
-Ljava/lang/invoke/MethodTypeForm;->LONGS:I
-Ljava/lang/invoke/MethodTypeForm;->NO_CHANGE:I
-Ljava/lang/invoke/MethodTypeForm;->pack(IIII)J
-Ljava/lang/invoke/MethodTypeForm;->parameterCount()I
-Ljava/lang/invoke/MethodTypeForm;->parameterSlotCount()I
-Ljava/lang/invoke/MethodTypeForm;->parameterToArgSlot(I)I
-Ljava/lang/invoke/MethodTypeForm;->primCounts:J
-Ljava/lang/invoke/MethodTypeForm;->primitiveParameterCount()I
-Ljava/lang/invoke/MethodTypeForm;->primitiveReturnCount()I
-Ljava/lang/invoke/MethodTypeForm;->RAW_RETURN:I
-Ljava/lang/invoke/MethodTypeForm;->returnCount()I
-Ljava/lang/invoke/MethodTypeForm;->returnSlotCount()I
-Ljava/lang/invoke/MethodTypeForm;->slotToArgTable:[I
-Ljava/lang/invoke/MethodTypeForm;->unpack(JI)C
-Ljava/lang/invoke/MethodTypeForm;->UNWRAP:I
-Ljava/lang/invoke/MethodTypeForm;->WRAP:I
-Ljava/lang/invoke/Transformers$AlwaysThrow;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$AlwaysThrow;->exceptionType:Ljava/lang/Class;
-Ljava/lang/invoke/Transformers$AlwaysThrow;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$BindTo;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/Object;)V
-Ljava/lang/invoke/Transformers$BindTo;->delegate:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$BindTo;->range:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$BindTo;->receiver:Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$BindTo;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$CatchException;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$CatchException;->exType:Ljava/lang/Class;
-Ljava/lang/invoke/Transformers$CatchException;->handler:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$CatchException;->handlerArgsRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$CatchException;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$CatchException;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$CollectArguments;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/Transformers$CollectArguments;->collector:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$CollectArguments;->collectorRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$CollectArguments;->pos:I
-Ljava/lang/invoke/Transformers$CollectArguments;->range1:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$CollectArguments;->range2:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$CollectArguments;->referencesOffset:I
-Ljava/lang/invoke/Transformers$CollectArguments;->stackFrameOffset:I
-Ljava/lang/invoke/Transformers$CollectArguments;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$CollectArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$Collector;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;I)V
-Ljava/lang/invoke/Transformers$Collector;->arrayOffset:I
-Ljava/lang/invoke/Transformers$Collector;->arrayTypeChar:C
-Ljava/lang/invoke/Transformers$Collector;->copyRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$Collector;->numArrayArgs:I
-Ljava/lang/invoke/Transformers$Collector;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$Collector;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$Constant;-><init>(Ljava/lang/Class;Ljava/lang/Object;)V
-Ljava/lang/invoke/Transformers$Constant;->asDouble:D
-Ljava/lang/invoke/Transformers$Constant;->asFloat:F
-Ljava/lang/invoke/Transformers$Constant;->asInt:I
-Ljava/lang/invoke/Transformers$Constant;->asLong:J
-Ljava/lang/invoke/Transformers$Constant;->asReference:Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$Constant;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$Constant;->type:Ljava/lang/Class;
-Ljava/lang/invoke/Transformers$Constant;->typeChar:C
-Ljava/lang/invoke/Transformers$Construct;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/Transformers$Construct;->callerRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$Construct;->checkInstantiable(Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$Construct;->constructorHandle:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$Construct;->getConstructorHandle()Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$Construct;->isAbstract(Ljava/lang/Class;)Z
-Ljava/lang/invoke/Transformers$Construct;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$DropArguments;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;II)V
-Ljava/lang/invoke/Transformers$DropArguments;->delegate:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$DropArguments;->range1:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$DropArguments;->range2:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$DropArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->box(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCast(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastArguments(Ldalvik/system/EmulatedStackFrame;Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastFromBoolean(ZLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastPrimitives(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastReturnValue(Ldalvik/system/EmulatedStackFrame;Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastToBoolean(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsByte(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)B
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsChar(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)C
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsDouble(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)D
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsFloat(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)F
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsInt(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)I
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsLong(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)J
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsShort(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)S
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->throwUnexpectedType(Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->toBoolean(B)Z
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->unbox(Ljava/lang/Object;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->unboxNonNull(Ljava/lang/Object;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ExplicitCastArguments;->unboxNull(Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$FilterArguments;-><init>(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/Transformers$FilterArguments;->deriveType(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/Transformers$FilterArguments;->filters:[Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$FilterArguments;->pos:I
-Ljava/lang/invoke/Transformers$FilterArguments;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$FilterArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$FilterReturnValue;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/Transformers$FilterReturnValue;->allArgs:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$FilterReturnValue;->filter:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$FilterReturnValue;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$FilterReturnValue;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$FoldArguments;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/Transformers$FoldArguments;->combiner:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$FoldArguments;->combinerArgs:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$FoldArguments;->deriveType(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/Transformers$FoldArguments;->referencesOffset:I
-Ljava/lang/invoke/Transformers$FoldArguments;->stackFrameOffset:I
-Ljava/lang/invoke/Transformers$FoldArguments;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$FoldArguments;->targetArgs:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$FoldArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$GuardWithTest;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/Transformers$GuardWithTest;->fallback:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$GuardWithTest;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$GuardWithTest;->test:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$GuardWithTest;->testArgsRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$GuardWithTest;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$InsertArguments;-><init>(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)V
-Ljava/lang/invoke/Transformers$InsertArguments;->pos:I
-Ljava/lang/invoke/Transformers$InsertArguments;->range1:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$InsertArguments;->range2:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$InsertArguments;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$InsertArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$InsertArguments;->values:[Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$Invoker;-><init>(Ljava/lang/invoke/MethodType;Z)V
-Ljava/lang/invoke/Transformers$Invoker;->copyRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$Invoker;->isExactInvoker:Z
-Ljava/lang/invoke/Transformers$Invoker;->targetType:Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/Transformers$Invoker;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$PermuteArguments;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;[I)V
-Ljava/lang/invoke/Transformers$PermuteArguments;->reorder:[I
-Ljava/lang/invoke/Transformers$PermuteArguments;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$PermuteArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter;-><init>(Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter;->arrayClass:Ljava/lang/Class;
-Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter;-><init>(Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter;->arrayClass:Ljava/lang/Class;
-Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ReferenceIdentity;-><init>(Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$ReferenceIdentity;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$ReferenceIdentity;->type:Ljava/lang/Class;
-Ljava/lang/invoke/Transformers$Spreader;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;I)V
-Ljava/lang/invoke/Transformers$Spreader;->arrayOffset:I
-Ljava/lang/invoke/Transformers$Spreader;->arrayTypeChar:C
-Ljava/lang/invoke/Transformers$Spreader;->copyRange:Ldalvik/system/EmulatedStackFrame$Range;
-Ljava/lang/invoke/Transformers$Spreader;->numArrayArgs:I
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([BLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([CLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([DLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([FLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([ILdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([JLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([Ljava/lang/Object;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([SLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->spreadArray([ZLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V
-Ljava/lang/invoke/Transformers$Spreader;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$Spreader;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$Transformer;-><init>(Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/Transformers$Transformer;-><init>(Ljava/lang/invoke/MethodType;I)V
-Ljava/lang/invoke/Transformers$VarargsCollector;-><init>(Ljava/lang/invoke/MethodHandle;)V
-Ljava/lang/invoke/Transformers$VarargsCollector;->arityArgumentsConvertible([Ljava/lang/Class;ILjava/lang/Class;)Z
-Ljava/lang/invoke/Transformers$VarargsCollector;->booleanArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->byteArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->charArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->collectArguments(CLjava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->copyParameter(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V
-Ljava/lang/invoke/Transformers$VarargsCollector;->doubleArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->floatArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->intArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->lastParameterTypeIsAnArray([Ljava/lang/Class;)Z
-Ljava/lang/invoke/Transformers$VarargsCollector;->longArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->makeArityArray(Ljava/lang/invoke/MethodType;Ldalvik/system/EmulatedStackFrame$StackFrameReader;ILjava/lang/Class;)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->makeTargetFrameType(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/Transformers$VarargsCollector;->prepareFrame(Ldalvik/system/EmulatedStackFrame;Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers$VarargsCollector;->referenceArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->shortArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object;
-Ljava/lang/invoke/Transformers$VarargsCollector;->target:Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/Transformers$VarargsCollector;->throwWrongMethodTypeException(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)V
-Ljava/lang/invoke/Transformers$VarargsCollector;->transform(Ldalvik/system/EmulatedStackFrame;)V
-Ljava/lang/invoke/Transformers;-><init>()V
-Ljava/lang/invoke/Transformers;->TRANSFORM_INTERNAL:Ljava/lang/reflect/Method;
-Ljava/lang/invoke/VarHandle$AccessMode;->at:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_EXCHANGE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_EXCHANGE_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_EXCHANGE_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_SET:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_ADD:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_ADD_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_ADD_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_AND:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_AND_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_AND_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_OR:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_OR_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_OR_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_XOR:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_XOR_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_XOR_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_SET:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_SET_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_SET_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_OPAQUE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->GET_VOLATILE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->methodName()Ljava/lang/String;
-Ljava/lang/invoke/VarHandle$AccessMode;->methodName:Ljava/lang/String;
-Ljava/lang/invoke/VarHandle$AccessMode;->methodNameToAccessMode:Ljava/util/Map;
-Ljava/lang/invoke/VarHandle$AccessMode;->SET:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->SET_OPAQUE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->SET_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->SET_VOLATILE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->valueFromMethodName(Ljava/lang/String;)Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->valueOf(Ljava/lang/String;)Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->values()[Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET_PLAIN:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode;
-Ljava/lang/invoke/VarHandle$AccessType;->COMPARE_AND_EXCHANGE:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->COMPARE_AND_SWAP:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->GET:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->GET_AND_UPDATE:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->GET_AND_UPDATE_BITWISE:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->GET_AND_UPDATE_NUMERIC:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->SET:Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->valueOf(Ljava/lang/String;)Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle$AccessType;->values()[Ljava/lang/invoke/VarHandle$AccessType;
-Ljava/lang/invoke/VarHandle;-><init>(Ljava/lang/Class;Ljava/lang/Class;ZLjava/lang/Class;Ljava/lang/Class;)V
-Ljava/lang/invoke/VarHandle;-><init>(Ljava/lang/Class;Z)V
-Ljava/lang/invoke/VarHandle;-><init>(Ljava/lang/Class;ZLjava/lang/Class;)V
-Ljava/lang/invoke/VarHandle;->accessModesBitMask:I
-Ljava/lang/invoke/VarHandle;->accessModeType(Ljava/lang/invoke/VarHandle$AccessMode;)Ljava/lang/invoke/MethodType;
-Ljava/lang/invoke/VarHandle;->accessTypesToBitMask(Ljava/util/EnumSet;)I
-Ljava/lang/invoke/VarHandle;->alignedAccessModesBitMask(Ljava/lang/Class;Z)I
-Ljava/lang/invoke/VarHandle;->ALL_MODES_BIT_MASK:I
-Ljava/lang/invoke/VarHandle;->ATOMIC_UPDATE_ACCESS_MODES_BIT_MASK:I
-Ljava/lang/invoke/VarHandle;->BITWISE_ATOMIC_UPDATE_ACCESS_MODES_BIT_MASK:I
-Ljava/lang/invoke/VarHandle;->coordinateType0:Ljava/lang/Class;
-Ljava/lang/invoke/VarHandle;->coordinateType1:Ljava/lang/Class;
-Ljava/lang/invoke/VarHandle;->coordinateTypes()Ljava/util/List;
-Ljava/lang/invoke/VarHandle;->isAccessModeSupported(Ljava/lang/invoke/VarHandle$AccessMode;)Z
-Ljava/lang/invoke/VarHandle;->NUMERIC_ATOMIC_UPDATE_ACCESS_MODES_BIT_MASK:I
-Ljava/lang/invoke/VarHandle;->READ_ACCESS_MODES_BIT_MASK:I
-Ljava/lang/invoke/VarHandle;->toMethodHandle(Ljava/lang/invoke/VarHandle$AccessMode;)Ljava/lang/invoke/MethodHandle;
-Ljava/lang/invoke/VarHandle;->unalignedAccessModesBitMask(Ljava/lang/Class;)I
-Ljava/lang/invoke/VarHandle;->UNSAFE:Lsun/misc/Unsafe;
-Ljava/lang/invoke/VarHandle;->varType()Ljava/lang/Class;
-Ljava/lang/invoke/VarHandle;->varType:Ljava/lang/Class;
-Ljava/lang/invoke/VarHandle;->WRITE_ACCESS_MODES_BIT_MASK:I
-Ljava/lang/invoke/WrongMethodTypeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/lang/invoke/WrongMethodTypeException;-><init>(Ljava/lang/Throwable;)V
-Ljava/lang/Long$LongCache;-><init>()V
-Ljava/lang/Long$LongCache;->cache:[Ljava/lang/Long;
-Ljava/lang/Long;->formatUnsignedLong(JI[CII)I
-Ljava/lang/Long;->getChars(JI[C)V
-Ljava/lang/Long;->stringSize(J)I
-Ljava/lang/Long;->toUnsignedBigInteger(J)Ljava/math/BigInteger;
-Ljava/lang/Long;->toUnsignedString0(JI)Ljava/lang/String;
-Ljava/lang/Math$RandomNumberGeneratorHolder;-><init>()V
-Ljava/lang/Math$RandomNumberGeneratorHolder;->randomNumberGenerator:Ljava/util/Random;
-Ljava/lang/Math;-><init>()V
-Ljava/lang/Math;->negativeZeroDoubleBits:J
-Ljava/lang/Math;->negativeZeroFloatBits:J
-Ljava/lang/Math;->powerOfTwoD(I)D
-Ljava/lang/Math;->powerOfTwoF(I)F
-Ljava/lang/Math;->randomIntInternal()I
-Ljava/lang/Math;->randomLongInternal()J
-Ljava/lang/Math;->setRandomSeedInternal(J)V
-Ljava/lang/Math;->twoToTheDoubleScaleDown:D
-Ljava/lang/Math;->twoToTheDoubleScaleUp:D
-Ljava/lang/NoClassDefFoundError;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/lang/NumberFormatException;->forInputString(Ljava/lang/String;)Ljava/lang/NumberFormatException;
-Ljava/lang/Object;->identityHashCodeNative(Ljava/lang/Object;)I
-Ljava/lang/Object;->internalClone()Ljava/lang/Object;
-Ljava/lang/Object;->shadow$_klass_:Ljava/lang/Class;
-Ljava/lang/Object;->shadow$_monitor_:I
-Ljava/lang/Package;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;Ljava/lang/ClassLoader;)V
-Ljava/lang/Package;-><init>(Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;Ljava/lang/ClassLoader;)V
-Ljava/lang/Package;->defineSystemPackage(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Package;
-Ljava/lang/Package;->getPackage(Ljava/lang/Class;)Ljava/lang/Package;
-Ljava/lang/Package;->getPackageInfo()Ljava/lang/Class;
-Ljava/lang/Package;->getSystemPackage(Ljava/lang/String;)Ljava/lang/Package;
-Ljava/lang/Package;->getSystemPackage0(Ljava/lang/String;)Ljava/lang/String;
-Ljava/lang/Package;->getSystemPackages()[Ljava/lang/Package;
-Ljava/lang/Package;->getSystemPackages0()[Ljava/lang/String;
-Ljava/lang/Package;->implTitle:Ljava/lang/String;
-Ljava/lang/Package;->implVendor:Ljava/lang/String;
-Ljava/lang/Package;->implVersion:Ljava/lang/String;
-Ljava/lang/Package;->loader:Ljava/lang/ClassLoader;
-Ljava/lang/Package;->loadManifest(Ljava/lang/String;)Ljava/util/jar/Manifest;
-Ljava/lang/Package;->mans:Ljava/util/Map;
-Ljava/lang/Package;->packageInfo:Ljava/lang/Class;
-Ljava/lang/Package;->pkgName:Ljava/lang/String;
-Ljava/lang/Package;->pkgs:Ljava/util/Map;
-Ljava/lang/Package;->sealBase:Ljava/net/URL;
-Ljava/lang/Package;->specTitle:Ljava/lang/String;
-Ljava/lang/Package;->specVendor:Ljava/lang/String;
-Ljava/lang/Package;->specVersion:Ljava/lang/String;
-Ljava/lang/Package;->urls:Ljava/util/Map;
-Ljava/lang/ProcessBuilder$NullInputStream;-><init>()V
-Ljava/lang/ProcessBuilder$NullInputStream;->INSTANCE:Ljava/lang/ProcessBuilder$NullInputStream;
-Ljava/lang/ProcessBuilder$NullOutputStream;-><init>()V
-Ljava/lang/ProcessBuilder$NullOutputStream;->INSTANCE:Ljava/lang/ProcessBuilder$NullOutputStream;
-Ljava/lang/ProcessBuilder$Redirect;-><init>()V
-Ljava/lang/ProcessBuilder$Redirect;->append()Z
-Ljava/lang/ProcessBuilder;->command:Ljava/util/List;
-Ljava/lang/ProcessBuilder;->directory:Ljava/io/File;
-Ljava/lang/ProcessBuilder;->environment([Ljava/lang/String;)Ljava/lang/ProcessBuilder;
-Ljava/lang/ProcessBuilder;->environment:Ljava/util/Map;
-Ljava/lang/ProcessBuilder;->redirectErrorStream:Z
-Ljava/lang/ProcessBuilder;->redirects()[Ljava/lang/ProcessBuilder$Redirect;
-Ljava/lang/ProcessBuilder;->redirects:[Ljava/lang/ProcessBuilder$Redirect;
-Ljava/lang/ref/FinalizerReference$Sentinel;-><init>()V
-Ljava/lang/ref/FinalizerReference$Sentinel;->awaitFinalization(J)V
-Ljava/lang/ref/FinalizerReference$Sentinel;->finalized:Z
-Ljava/lang/ref/FinalizerReference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/lang/ref/FinalizerReference;->enqueueSentinelReference(Ljava/lang/ref/FinalizerReference$Sentinel;)Z
-Ljava/lang/ref/FinalizerReference;->finalizeAllEnqueued(J)V
-Ljava/lang/ref/FinalizerReference;->getReferent()Ljava/lang/Object;
-Ljava/lang/ref/FinalizerReference;->LIST_LOCK:Ljava/lang/Object;
-Ljava/lang/ref/FinalizerReference;->makeCircularListIfUnenqueued()Z
-Ljava/lang/ref/FinalizerReference;->prev:Ljava/lang/ref/FinalizerReference;
-Ljava/lang/ref/FinalizerReference;->zombie:Ljava/lang/Object;
-Ljava/lang/ref/Reference$SinkHolder;-><init>()V
-Ljava/lang/ref/Reference$SinkHolder;->finalize_count:I
-Ljava/lang/ref/Reference$SinkHolder;->sink:Ljava/lang/Object;
-Ljava/lang/ref/Reference$SinkHolder;->sinkUser:Ljava/lang/Object;
-Ljava/lang/ref/Reference;-><init>(Ljava/lang/Object;)V
-Ljava/lang/ref/Reference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/lang/ref/Reference;->clearReferent()V
-Ljava/lang/ref/Reference;->disableIntrinsic:Z
-Ljava/lang/ref/Reference;->pendingNext:Ljava/lang/ref/Reference;
-Ljava/lang/ref/Reference;->queue:Ljava/lang/ref/ReferenceQueue;
-Ljava/lang/ref/Reference;->queueNext:Ljava/lang/ref/Reference;
-Ljava/lang/ref/Reference;->slowPathEnabled:Z
-Ljava/lang/ref/ReferenceQueue;->enqueue(Ljava/lang/ref/Reference;)Z
-Ljava/lang/ref/ReferenceQueue;->enqueueLocked(Ljava/lang/ref/Reference;)Z
-Ljava/lang/ref/ReferenceQueue;->enqueuePending(Ljava/lang/ref/Reference;)V
-Ljava/lang/ref/ReferenceQueue;->head:Ljava/lang/ref/Reference;
-Ljava/lang/ref/ReferenceQueue;->isEnqueued(Ljava/lang/ref/Reference;)Z
-Ljava/lang/ref/ReferenceQueue;->lock:Ljava/lang/Object;
-Ljava/lang/ref/ReferenceQueue;->reallyPollLocked()Ljava/lang/ref/Reference;
-Ljava/lang/ref/ReferenceQueue;->sQueueNextUnenqueued:Ljava/lang/ref/Reference;
-Ljava/lang/ref/ReferenceQueue;->tail:Ljava/lang/ref/Reference;
-Ljava/lang/ref/ReferenceQueue;->unenqueued:Ljava/lang/ref/Reference;
-Ljava/lang/ref/SoftReference;->clock:J
-Ljava/lang/ref/SoftReference;->timestamp:J
-Ljava/lang/reflect/AccessibleObject;->setAccessible0(Ljava/lang/reflect/AccessibleObject;Z)V
-Ljava/lang/reflect/Array;-><init>()V
-Ljava/lang/reflect/Array;->badArray(Ljava/lang/Object;)Ljava/lang/RuntimeException;
-Ljava/lang/reflect/Array;->createMultiArray(Ljava/lang/Class;[I)Ljava/lang/Object;
-Ljava/lang/reflect/Array;->createObjectArray(Ljava/lang/Class;I)Ljava/lang/Object;
-Ljava/lang/reflect/Array;->incompatibleType(Ljava/lang/Object;)Ljava/lang/IllegalArgumentException;
-Ljava/lang/reflect/Array;->newArray(Ljava/lang/Class;I)Ljava/lang/Object;
-Ljava/lang/reflect/Array;->notAnArray(Ljava/lang/Object;)Ljava/lang/IllegalArgumentException;
-Ljava/lang/reflect/Constructor;-><init>()V
-Ljava/lang/reflect/Constructor;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/lang/reflect/Constructor;->hasGenericInformation()Z
-Ljava/lang/reflect/Constructor;->newInstanceFromSerialization(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;
-Ljava/lang/reflect/Constructor;->ORDER_BY_SIGNATURE:Ljava/util/Comparator;
-Ljava/lang/reflect/Constructor;->serializationClass:Ljava/lang/Class;
-Ljava/lang/reflect/Constructor;->serializationCtor:Ljava/lang/Class;
-Ljava/lang/reflect/Constructor;->specificToGenericStringHeader(Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Constructor;->specificToStringHeader(Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Executable$GenericInfo;-><init>(Llibcore/reflect/ListOfTypes;Llibcore/reflect/ListOfTypes;Ljava/lang/reflect/Type;[Ljava/lang/reflect/TypeVariable;)V
-Ljava/lang/reflect/Executable$GenericInfo;->formalTypeParameters:[Ljava/lang/reflect/TypeVariable;
-Ljava/lang/reflect/Executable$GenericInfo;->genericExceptionTypes:Llibcore/reflect/ListOfTypes;
-Ljava/lang/reflect/Executable$GenericInfo;->genericParameterTypes:Llibcore/reflect/ListOfTypes;
-Ljava/lang/reflect/Executable$GenericInfo;->genericReturnType:Ljava/lang/reflect/Type;
-Ljava/lang/reflect/Executable;-><init>()V
-Ljava/lang/reflect/Executable;->accessFlags:I
-Ljava/lang/reflect/Executable;->compareMethodParametersInternal(Ljava/lang/reflect/Method;)I
-Ljava/lang/reflect/Executable;->declaringClass:Ljava/lang/Class;
-Ljava/lang/reflect/Executable;->declaringClassOfOverriddenMethod:Ljava/lang/Class;
-Ljava/lang/reflect/Executable;->dexMethodIndex:I
-Ljava/lang/reflect/Executable;->equalNameAndParametersInternal(Ljava/lang/reflect/Method;)Z
-Ljava/lang/reflect/Executable;->equalParamTypes([Ljava/lang/Class;[Ljava/lang/Class;)Z
-Ljava/lang/reflect/Executable;->fixMethodFlags(I)I
-Ljava/lang/reflect/Executable;->getAccessFlags()I
-Ljava/lang/reflect/Executable;->getAllGenericParameterTypes()[Ljava/lang/reflect/Type;
-Ljava/lang/reflect/Executable;->getAnnotationNative(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
-Ljava/lang/reflect/Executable;->getArtMethod()J
-Ljava/lang/reflect/Executable;->getDeclaredAnnotationsNative()[Ljava/lang/annotation/Annotation;
-Ljava/lang/reflect/Executable;->getDeclaringClassInternal()Ljava/lang/Class;
-Ljava/lang/reflect/Executable;->getMethodNameInternal()Ljava/lang/String;
-Ljava/lang/reflect/Executable;->getMethodOrConstructorGenericInfoInternal()Ljava/lang/reflect/Executable$GenericInfo;
-Ljava/lang/reflect/Executable;->getMethodReturnTypeInternal()Ljava/lang/Class;
-Ljava/lang/reflect/Executable;->getModifiersInternal()I
-Ljava/lang/reflect/Executable;->getParameterAnnotationsInternal()[[Ljava/lang/annotation/Annotation;
-Ljava/lang/reflect/Executable;->getParameterAnnotationsNative()[[Ljava/lang/annotation/Annotation;
-Ljava/lang/reflect/Executable;->getParameterCountInternal()I
-Ljava/lang/reflect/Executable;->getParameters0()[Ljava/lang/reflect/Parameter;
-Ljava/lang/reflect/Executable;->getParameterTypesInternal()[Ljava/lang/Class;
-Ljava/lang/reflect/Executable;->getSignatureAnnotation()[Ljava/lang/String;
-Ljava/lang/reflect/Executable;->getSignatureAttribute()Ljava/lang/String;
-Ljava/lang/reflect/Executable;->hasGenericInformation()Z
-Ljava/lang/reflect/Executable;->hasGenericInformationInternal()Z
-Ljava/lang/reflect/Executable;->hasRealParameterData()Z
-Ljava/lang/reflect/Executable;->hasRealParameterData:Z
-Ljava/lang/reflect/Executable;->isAnnotationPresentNative(Ljava/lang/Class;)Z
-Ljava/lang/reflect/Executable;->isBridgeMethodInternal()Z
-Ljava/lang/reflect/Executable;->isDefaultMethodInternal()Z
-Ljava/lang/reflect/Executable;->parameters:[Ljava/lang/reflect/Parameter;
-Ljava/lang/reflect/Executable;->printModifiersIfNonzero(Ljava/lang/StringBuilder;IZ)V
-Ljava/lang/reflect/Executable;->privateGetParameters()[Ljava/lang/reflect/Parameter;
-Ljava/lang/reflect/Executable;->separateWithCommas([Ljava/lang/Class;Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Executable;->sharedToGenericString(IZ)Ljava/lang/String;
-Ljava/lang/reflect/Executable;->sharedToString(IZ[Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/String;
-Ljava/lang/reflect/Executable;->specificToGenericStringHeader(Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Executable;->specificToStringHeader(Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Executable;->synthesizeAllParams()[Ljava/lang/reflect/Parameter;
-Ljava/lang/reflect/Executable;->verifyParameters([Ljava/lang/reflect/Parameter;)V
-Ljava/lang/reflect/Field;-><init>()V
-Ljava/lang/reflect/Field;->declaringClass:Ljava/lang/Class;
-Ljava/lang/reflect/Field;->dexFieldIndex:I
-Ljava/lang/reflect/Field;->getAnnotationNative(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
-Ljava/lang/reflect/Field;->getArtField()J
-Ljava/lang/reflect/Field;->getDexFieldIndex()I
-Ljava/lang/reflect/Field;->getNameInternal()Ljava/lang/String;
-Ljava/lang/reflect/Field;->getSignatureAnnotation()[Ljava/lang/String;
-Ljava/lang/reflect/Field;->getSignatureAttribute()Ljava/lang/String;
-Ljava/lang/reflect/Field;->isAnnotationPresentNative(Ljava/lang/Class;)Z
-Ljava/lang/reflect/Field;->offset:I
-Ljava/lang/reflect/Field;->type:Ljava/lang/Class;
-Ljava/lang/reflect/InvocationTargetException;->target:Ljava/lang/Throwable;
-Ljava/lang/reflect/Method;-><init>()V
-Ljava/lang/reflect/Method;->equalNameAndParameters(Ljava/lang/reflect/Method;)Z
-Ljava/lang/reflect/Method;->hasGenericInformation()Z
-Ljava/lang/reflect/Method;->ORDER_BY_SIGNATURE:Ljava/util/Comparator;
-Ljava/lang/reflect/Method;->specificToGenericStringHeader(Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Method;->specificToStringHeader(Ljava/lang/StringBuilder;)V
-Ljava/lang/reflect/Modifier;->ACCESS_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->ANNOTATION:I
-Ljava/lang/reflect/Modifier;->BRIDGE:I
-Ljava/lang/reflect/Modifier;->CLASS_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->CONSTRUCTOR:I
-Ljava/lang/reflect/Modifier;->CONSTRUCTOR_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->DEFAULT:I
-Ljava/lang/reflect/Modifier;->ENUM:I
-Ljava/lang/reflect/Modifier;->FIELD_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->INTERFACE_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->isConstructor(I)Z
-Ljava/lang/reflect/Modifier;->isMandated(I)Z
-Ljava/lang/reflect/Modifier;->isSynthetic(I)Z
-Ljava/lang/reflect/Modifier;->MANDATED:I
-Ljava/lang/reflect/Modifier;->METHOD_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->PARAMETER_MODIFIERS:I
-Ljava/lang/reflect/Modifier;->SYNTHETIC:I
-Ljava/lang/reflect/Modifier;->VARARGS:I
-Ljava/lang/reflect/Parameter;->executable:Ljava/lang/reflect/Executable;
-Ljava/lang/reflect/Parameter;->getAnnotationNative(Ljava/lang/reflect/Executable;ILjava/lang/Class;)Ljava/lang/annotation/Annotation;
-Ljava/lang/reflect/Parameter;->getRealName()Ljava/lang/String;
-Ljava/lang/reflect/Parameter;->index:I
-Ljava/lang/reflect/Parameter;->modifiers:I
-Ljava/lang/reflect/Parameter;->name:Ljava/lang/String;
-Ljava/lang/reflect/Parameter;->parameterClassCache:Ljava/lang/Class;
-Ljava/lang/reflect/Parameter;->parameterTypeCache:Ljava/lang/reflect/Type;
-Ljava/lang/reflect/Proxy$Key1;-><init>(Ljava/lang/Class;)V
-Ljava/lang/reflect/Proxy$Key1;->hash:I
-Ljava/lang/reflect/Proxy$Key2;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/lang/reflect/Proxy$Key2;->hash:I
-Ljava/lang/reflect/Proxy$Key2;->ref2:Ljava/lang/ref/WeakReference;
-Ljava/lang/reflect/Proxy$KeyFactory;-><init>()V
-Ljava/lang/reflect/Proxy$KeyFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Object;
-Ljava/lang/reflect/Proxy$KeyX;-><init>([Ljava/lang/Class;)V
-Ljava/lang/reflect/Proxy$KeyX;->equals([Ljava/lang/ref/WeakReference;[Ljava/lang/ref/WeakReference;)Z
-Ljava/lang/reflect/Proxy$KeyX;->hash:I
-Ljava/lang/reflect/Proxy$KeyX;->refs:[Ljava/lang/ref/WeakReference;
-Ljava/lang/reflect/Proxy$ProxyClassFactory;-><init>()V
-Ljava/lang/reflect/Proxy$ProxyClassFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
-Ljava/lang/reflect/Proxy$ProxyClassFactory;->nextUniqueNumber:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/lang/reflect/Proxy$ProxyClassFactory;->proxyClassNamePrefix:Ljava/lang/String;
-Ljava/lang/reflect/Proxy;-><init>()V
-Ljava/lang/reflect/Proxy;->constructorParams:[Ljava/lang/Class;
-Ljava/lang/reflect/Proxy;->deduplicateAndGetExceptions(Ljava/util/List;)Ljava/util/List;
-Ljava/lang/reflect/Proxy;->generateProxy(Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/reflect/Method;[[Ljava/lang/Class;)Ljava/lang/Class;
-Ljava/lang/reflect/Proxy;->getMethods([Ljava/lang/Class;)Ljava/util/List;
-Ljava/lang/reflect/Proxy;->getMethodsRecursive([Ljava/lang/Class;Ljava/util/List;)V
-Ljava/lang/reflect/Proxy;->intersectExceptions([Ljava/lang/Class;[Ljava/lang/Class;)[Ljava/lang/Class;
-Ljava/lang/reflect/Proxy;->key0:Ljava/lang/Object;
-Ljava/lang/reflect/Proxy;->ORDER_BY_SIGNATURE_AND_SUBTYPE:Ljava/util/Comparator;
-Ljava/lang/reflect/Proxy;->proxyClassCache:Ljava/lang/reflect/WeakCache;
-Ljava/lang/reflect/Proxy;->validateReturnTypes(Ljava/util/List;)V
-Ljava/lang/reflect/UndeclaredThrowableException;->undeclaredThrowable:Ljava/lang/Throwable;
-Ljava/lang/reflect/WeakCache$CacheKey;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/lang/reflect/WeakCache$CacheKey;->expungeFrom(Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentMap;)V
-Ljava/lang/reflect/WeakCache$CacheKey;->hash:I
-Ljava/lang/reflect/WeakCache$CacheKey;->NULL_KEY:Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache$CacheKey;->valueOf(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache$CacheValue;-><init>(Ljava/lang/Object;)V
-Ljava/lang/reflect/WeakCache$CacheValue;->hash:I
-Ljava/lang/reflect/WeakCache$Factory;->key:Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache$Factory;->parameter:Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache$Factory;->subKey:Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache$Factory;->valuesMap:Ljava/util/concurrent/ConcurrentMap;
-Ljava/lang/reflect/WeakCache$LookupValue;-><init>(Ljava/lang/Object;)V
-Ljava/lang/reflect/WeakCache$LookupValue;->value:Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache;-><init>(Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
-Ljava/lang/reflect/WeakCache;->containsValue(Ljava/lang/Object;)Z
-Ljava/lang/reflect/WeakCache;->expungeStaleEntries()V
-Ljava/lang/reflect/WeakCache;->get(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/reflect/WeakCache;->map:Ljava/util/concurrent/ConcurrentMap;
-Ljava/lang/reflect/WeakCache;->refQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/lang/reflect/WeakCache;->reverseMap:Ljava/util/concurrent/ConcurrentMap;
-Ljava/lang/reflect/WeakCache;->size()I
-Ljava/lang/reflect/WeakCache;->subKeyFactory:Ljava/util/function/BiFunction;
-Ljava/lang/reflect/WeakCache;->valueFactory:Ljava/util/function/BiFunction;
-Ljava/lang/Runtime;->checkTargetSdkVersionForLoad(Ljava/lang/String;)V
-Ljava/lang/Runtime;->currentRuntime:Ljava/lang/Runtime;
-Ljava/lang/Runtime;->finalizeOnExit:Z
-Ljava/lang/Runtime;->getLibPaths()[Ljava/lang/String;
-Ljava/lang/Runtime;->initLibPaths()[Ljava/lang/String;
-Ljava/lang/Runtime;->load0(Ljava/lang/Class;Ljava/lang/String;)V
-Ljava/lang/Runtime;->nativeExit(I)V
-Ljava/lang/Runtime;->runFinalization0()V
-Ljava/lang/Runtime;->shutdownHooks:Ljava/util/List;
-Ljava/lang/Runtime;->shuttingDown:Z
-Ljava/lang/Runtime;->tracingMethods:Z
-Ljava/lang/Short$ShortCache;-><init>()V
-Ljava/lang/Short$ShortCache;->cache:[Ljava/lang/Short;
-Ljava/lang/StrictMath$RandomNumberGeneratorHolder;-><init>()V
-Ljava/lang/StrictMath$RandomNumberGeneratorHolder;->randomNumberGenerator:Ljava/util/Random;
-Ljava/lang/StrictMath;-><init>()V
-Ljava/lang/StrictMath;->floorOrCeil(DDDD)D
-Ljava/lang/String$CaseInsensitiveComparator;-><init>()V
-Ljava/lang/String$CaseInsensitiveComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I
-Ljava/lang/String;->doReplace(CC)Ljava/lang/String;
-Ljava/lang/String;->fastSubstring(II)Ljava/lang/String;
-Ljava/lang/String;->getChars([CI)V
-Ljava/lang/String;->indexOf(Ljava/lang/String;Ljava/lang/String;I)I
-Ljava/lang/String;->indexOfSupplementary(II)I
-Ljava/lang/String;->lastIndexOf(Ljava/lang/String;Ljava/lang/String;I)I
-Ljava/lang/String;->lastIndexOfSupplementary(II)I
-Ljava/lang/String;->nonSyncContentEquals(Ljava/lang/AbstractStringBuilder;)Z
-Ljava/lang/StringBuffer;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/StringBuffer;
-Ljava/lang/StringBuffer;->toStringCache:[C
-Ljava/lang/StringIndexOutOfBoundsException;-><init>(II)V
-Ljava/lang/StringIndexOutOfBoundsException;-><init>(III)V
-Ljava/lang/StringIndexOutOfBoundsException;-><init>(Ljava/lang/String;I)V
-Ljava/lang/StringIndexOutOfBoundsException;-><init>(Ljava/lang/String;II)V
-Ljava/lang/System$PropertiesWithNonOverrideableDefaults;-><init>(Ljava/util/Properties;)V
-Ljava/lang/System$PropertiesWithNonOverrideableDefaults;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/System;->addLegacyLocaleSystemProperties()V
-Ljava/lang/System;->arraycopy([DI[DII)V
-Ljava/lang/System;->arraycopyBooleanUnchecked([ZI[ZII)V
-Ljava/lang/System;->arraycopyByteUnchecked([BI[BII)V
-Ljava/lang/System;->arraycopyCharUnchecked([CI[CII)V
-Ljava/lang/System;->arraycopyDoubleUnchecked([DI[DII)V
-Ljava/lang/System;->arraycopyFloatUnchecked([FI[FII)V
-Ljava/lang/System;->arraycopyIntUnchecked([II[III)V
-Ljava/lang/System;->arraycopyLongUnchecked([JI[JII)V
-Ljava/lang/System;->arraycopyShortUnchecked([SI[SII)V
-Ljava/lang/System;->ARRAYCOPY_SHORT_BOOLEAN_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_BYTE_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_CHAR_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_DOUBLE_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_FLOAT_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_INT_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_LONG_ARRAY_THRESHOLD:I
-Ljava/lang/System;->ARRAYCOPY_SHORT_SHORT_ARRAY_THRESHOLD:I
-Ljava/lang/System;->checkKey(Ljava/lang/String;)V
-Ljava/lang/System;->cons:Ljava/io/Console;
-Ljava/lang/System;->initProperties()Ljava/util/Properties;
-Ljava/lang/System;->initUnchangeableSystemProperties()Ljava/util/Properties;
-Ljava/lang/System;->justRanFinalization:Z
-Ljava/lang/System;->lineSeparator:Ljava/lang/String;
-Ljava/lang/System;->LOCK:Ljava/lang/Object;
-Ljava/lang/System;->logI(Ljava/lang/String;)V
-Ljava/lang/System;->logI(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/lang/System;->logW(Ljava/lang/String;)V
-Ljava/lang/System;->newPrintStream(Ljava/io/FileOutputStream;Ljava/lang/String;)Ljava/io/PrintStream;
-Ljava/lang/System;->parsePropertyAssignments(Ljava/util/Properties;[Ljava/lang/String;)V
-Ljava/lang/System;->props:Ljava/util/Properties;
-Ljava/lang/System;->runGC:Z
-Ljava/lang/System;->setDefaultChangeableProperties(Ljava/util/Properties;)Ljava/util/Properties;
-Ljava/lang/System;->setErr0(Ljava/io/PrintStream;)V
-Ljava/lang/System;->setIn0(Ljava/io/InputStream;)V
-Ljava/lang/System;->setOut0(Ljava/io/PrintStream;)V
-Ljava/lang/System;->setUnchangeableSystemProperty(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/lang/System;->specialProperties()[Ljava/lang/String;
-Ljava/lang/System;->unchangeableProps:Ljava/util/Properties;
-Ljava/lang/Thread$Caches;-><init>()V
-Ljava/lang/Thread$Caches;->subclassAudits:Ljava/util/concurrent/ConcurrentMap;
-Ljava/lang/Thread$Caches;->subclassAuditsQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/lang/Thread$ParkState;-><init>()V
-Ljava/lang/Thread$ParkState;->PARKED:I
-Ljava/lang/Thread$ParkState;->PREEMPTIVELY_UNPARKED:I
-Ljava/lang/Thread$ParkState;->UNPARKED:I
-Ljava/lang/Thread$WeakClassKey;-><init>(Ljava/lang/Class;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/lang/Thread$WeakClassKey;->hash:I
-Ljava/lang/Thread;->auditSubclass(Ljava/lang/Class;)Z
-Ljava/lang/Thread;->blockedOn(Lsun/nio/ch/Interruptible;)V
-Ljava/lang/Thread;->blocker:Lsun/nio/ch/Interruptible;
-Ljava/lang/Thread;->blockerLock:Ljava/lang/Object;
-Ljava/lang/Thread;->defaultUncaughtExceptionHandler:Ljava/lang/Thread$UncaughtExceptionHandler;
-Ljava/lang/Thread;->eetop:J
-Ljava/lang/Thread;->EMPTY_STACK_TRACE:[Ljava/lang/StackTraceElement;
-Ljava/lang/Thread;->exit()V
-Ljava/lang/Thread;->init(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V
-Ljava/lang/Thread;->init2(Ljava/lang/Thread;)V
-Ljava/lang/Thread;->isCCLOverridden(Ljava/lang/Class;)Z
-Ljava/lang/Thread;->NANOS_PER_MILLI:I
-Ljava/lang/Thread;->nativeCreate(Ljava/lang/Thread;JZ)V
-Ljava/lang/Thread;->nativeGetStatus(Z)I
-Ljava/lang/Thread;->nativeHoldsLock(Ljava/lang/Object;)Z
-Ljava/lang/Thread;->nativeInterrupt()V
-Ljava/lang/Thread;->nativeParkEventPointer:J
-Ljava/lang/Thread;->nativeSetName(Ljava/lang/String;)V
-Ljava/lang/Thread;->nativeSetPriority(I)V
-Ljava/lang/Thread;->nextThreadID()J
-Ljava/lang/Thread;->nextThreadNum()I
-Ljava/lang/Thread;->parkFor$(J)V
-Ljava/lang/Thread;->parkState:I
-Ljava/lang/Thread;->parkUntil$(J)V
-Ljava/lang/Thread;->processQueue(Ljava/lang/ref/ReferenceQueue;Ljava/util/concurrent/ConcurrentMap;)V
-Ljava/lang/Thread;->setUncaughtExceptionPreHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V
-Ljava/lang/Thread;->single_step:Z
-Ljava/lang/Thread;->sleep(Ljava/lang/Object;JI)V
-Ljava/lang/Thread;->stackSize:J
-Ljava/lang/Thread;->started:Z
-Ljava/lang/Thread;->stillborn:Z
-Ljava/lang/Thread;->SUBCLASS_IMPLEMENTATION_PERMISSION:Ljava/lang/RuntimePermission;
-Ljava/lang/Thread;->threadInitNumber:I
-Ljava/lang/Thread;->threadLocalRandomProbe:I
-Ljava/lang/Thread;->threadLocalRandomSecondarySeed:I
-Ljava/lang/Thread;->threadLocalRandomSeed:J
-Ljava/lang/Thread;->threadQ:Ljava/lang/Thread;
-Ljava/lang/Thread;->threadStatus:I
-Ljava/lang/Thread;->tid:J
-Ljava/lang/Thread;->uncaughtExceptionHandler:Ljava/lang/Thread$UncaughtExceptionHandler;
-Ljava/lang/Thread;->uncaughtExceptionPreHandler:Ljava/lang/Thread$UncaughtExceptionHandler;
-Ljava/lang/Thread;->unpark$()V
-Ljava/lang/ThreadGroup;-><init>()V
-Ljava/lang/ThreadGroup;-><init>(Ljava/lang/Void;Ljava/lang/ThreadGroup;Ljava/lang/String;)V
-Ljava/lang/ThreadGroup;->add(Ljava/lang/ThreadGroup;)V
-Ljava/lang/ThreadGroup;->addUnstarted()V
-Ljava/lang/ThreadGroup;->checkParentAccess(Ljava/lang/ThreadGroup;)Ljava/lang/Void;
-Ljava/lang/ThreadGroup;->daemon:Z
-Ljava/lang/ThreadGroup;->destroyed:Z
-Ljava/lang/ThreadGroup;->enumerate([Ljava/lang/Thread;IZ)I
-Ljava/lang/ThreadGroup;->enumerate([Ljava/lang/ThreadGroup;IZ)I
-Ljava/lang/ThreadGroup;->list(Ljava/io/PrintStream;I)V
-Ljava/lang/ThreadGroup;->maxPriority:I
-Ljava/lang/ThreadGroup;->nthreads:I
-Ljava/lang/ThreadGroup;->nUnstartedThreads:I
-Ljava/lang/ThreadGroup;->remove(Ljava/lang/Thread;)V
-Ljava/lang/ThreadGroup;->remove(Ljava/lang/ThreadGroup;)V
-Ljava/lang/ThreadGroup;->stopOrSuspend(Z)Z
-Ljava/lang/ThreadGroup;->threads:[Ljava/lang/Thread;
-Ljava/lang/ThreadGroup;->threadStartFailed(Ljava/lang/Thread;)V
-Ljava/lang/ThreadGroup;->vmAllowSuspension:Z
-Ljava/lang/ThreadLocal$SuppliedThreadLocal;-><init>(Ljava/util/function/Supplier;)V
-Ljava/lang/ThreadLocal$SuppliedThreadLocal;->supplier:Ljava/util/function/Supplier;
-Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;-><init>(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
-Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;->value:Ljava/lang/Object;
-Ljava/lang/ThreadLocal$ThreadLocalMap;-><init>(Ljava/lang/ThreadLocal$ThreadLocalMap;)V
-Ljava/lang/ThreadLocal$ThreadLocalMap;-><init>(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->cleanSomeSlots(II)Z
-Ljava/lang/ThreadLocal$ThreadLocalMap;->expungeStaleEntries()V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->expungeStaleEntry(I)I
-Ljava/lang/ThreadLocal$ThreadLocalMap;->getEntry(Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-Ljava/lang/ThreadLocal$ThreadLocalMap;->getEntryAfterMiss(Ljava/lang/ThreadLocal;ILjava/lang/ThreadLocal$ThreadLocalMap$Entry;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-Ljava/lang/ThreadLocal$ThreadLocalMap;->INITIAL_CAPACITY:I
-Ljava/lang/ThreadLocal$ThreadLocalMap;->nextIndex(II)I
-Ljava/lang/ThreadLocal$ThreadLocalMap;->prevIndex(II)I
-Ljava/lang/ThreadLocal$ThreadLocalMap;->rehash()V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->remove(Ljava/lang/ThreadLocal;)V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->replaceStaleEntry(Ljava/lang/ThreadLocal;Ljava/lang/Object;I)V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->resize()V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->set(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->setThreshold(I)V
-Ljava/lang/ThreadLocal$ThreadLocalMap;->size:I
-Ljava/lang/ThreadLocal$ThreadLocalMap;->table:[Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-Ljava/lang/ThreadLocal$ThreadLocalMap;->threshold:I
-Ljava/lang/ThreadLocal;->childValue(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/lang/ThreadLocal;->createInheritedMap(Ljava/lang/ThreadLocal$ThreadLocalMap;)Ljava/lang/ThreadLocal$ThreadLocalMap;
-Ljava/lang/ThreadLocal;->createMap(Ljava/lang/Thread;Ljava/lang/Object;)V
-Ljava/lang/ThreadLocal;->HASH_INCREMENT:I
-Ljava/lang/ThreadLocal;->nextHashCode()I
-Ljava/lang/ThreadLocal;->nextHashCode:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/lang/ThreadLocal;->setInitialValue()Ljava/lang/Object;
-Ljava/lang/ThreadLocal;->threadLocalHashCode:I
-Ljava/lang/Throwable$PrintStreamOrWriter;-><init>()V
-Ljava/lang/Throwable$PrintStreamOrWriter;->lock()Ljava/lang/Object;
-Ljava/lang/Throwable$PrintStreamOrWriter;->println(Ljava/lang/Object;)V
-Ljava/lang/Throwable$SentinelHolder;-><init>()V
-Ljava/lang/Throwable$SentinelHolder;->STACK_TRACE_ELEMENT_SENTINEL:Ljava/lang/StackTraceElement;
-Ljava/lang/Throwable$SentinelHolder;->STACK_TRACE_SENTINEL:[Ljava/lang/StackTraceElement;
-Ljava/lang/Throwable$WrappedPrintStream;-><init>(Ljava/io/PrintStream;)V
-Ljava/lang/Throwable$WrappedPrintStream;->lock()Ljava/lang/Object;
-Ljava/lang/Throwable$WrappedPrintStream;->println(Ljava/lang/Object;)V
-Ljava/lang/Throwable$WrappedPrintStream;->printStream:Ljava/io/PrintStream;
-Ljava/lang/Throwable$WrappedPrintWriter;-><init>(Ljava/io/PrintWriter;)V
-Ljava/lang/Throwable$WrappedPrintWriter;->lock()Ljava/lang/Object;
-Ljava/lang/Throwable$WrappedPrintWriter;->println(Ljava/lang/Object;)V
-Ljava/lang/Throwable$WrappedPrintWriter;->printWriter:Ljava/io/PrintWriter;
-Ljava/lang/Throwable;->CAUSE_CAPTION:Ljava/lang/String;
-Ljava/lang/Throwable;->EMPTY_THROWABLE_ARRAY:[Ljava/lang/Throwable;
-Ljava/lang/Throwable;->nativeGetStackTrace(Ljava/lang/Object;)[Ljava/lang/StackTraceElement;
-Ljava/lang/Throwable;->NULL_CAUSE_MESSAGE:Ljava/lang/String;
-Ljava/lang/Throwable;->printEnclosedStackTrace(Ljava/lang/Throwable$PrintStreamOrWriter;[Ljava/lang/StackTraceElement;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
-Ljava/lang/Throwable;->SELF_SUPPRESSION_MESSAGE:Ljava/lang/String;
-Ljava/lang/Throwable;->SUPPRESSED_CAPTION:Ljava/lang/String;
-Ljava/lang/TypeNotPresentException;->typeName:Ljava/lang/String;
-Ljava/math/BigDecimal;-><init>(II)V
-Ljava/math/BigDecimal;-><init>(JI)V
-Ljava/math/BigDecimal;->addAndMult10(Ljava/math/BigDecimal;Ljava/math/BigDecimal;I)Ljava/math/BigDecimal;
-Ljava/math/BigDecimal;->approxPrecision()I
-Ljava/math/BigDecimal;->bitLength(I)I
-Ljava/math/BigDecimal;->bitLength(J)I
-Ljava/math/BigDecimal;->bitLength:I
-Ljava/math/BigDecimal;->BI_SCALED_BY_ZERO:[Ljava/math/BigDecimal;
-Ljava/math/BigDecimal;->BI_SCALED_BY_ZERO_LENGTH:I
-Ljava/math/BigDecimal;->CH_ZEROS:[C
-Ljava/math/BigDecimal;->compareAbsoluteValues(JJ)I
-Ljava/math/BigDecimal;->compareForRounding(JJ)I
-Ljava/math/BigDecimal;->decimalDigitsInLong(J)I
-Ljava/math/BigDecimal;->divideBigIntegers(Ljava/math/BigInteger;Ljava/math/BigInteger;ILjava/math/RoundingMode;)Ljava/math/BigDecimal;
-Ljava/math/BigDecimal;->dividePrimitiveLongs(JJILjava/math/RoundingMode;)Ljava/math/BigDecimal;
-Ljava/math/BigDecimal;->FIVE_POW:[Ljava/math/BigInteger;
-Ljava/math/BigDecimal;->getUnscaledValue()Ljava/math/BigInteger;
-Ljava/math/BigDecimal;->hashCode:I
-Ljava/math/BigDecimal;->inplaceRound(Ljava/math/MathContext;)V
-Ljava/math/BigDecimal;->intVal:Ljava/math/BigInteger;
-Ljava/math/BigDecimal;->isZero()Z
-Ljava/math/BigDecimal;->LOG10_2:D
-Ljava/math/BigDecimal;->LONG_FIVE_POW:[J
-Ljava/math/BigDecimal;->LONG_FIVE_POW_BIT_LENGTH:[I
-Ljava/math/BigDecimal;->LONG_POWERS_OF_TEN_BIT_LENGTH:[I
-Ljava/math/BigDecimal;->movePoint(J)Ljava/math/BigDecimal;
-Ljava/math/BigDecimal;->precision:I
-Ljava/math/BigDecimal;->roundingBehavior(IILjava/math/RoundingMode;)I
-Ljava/math/BigDecimal;->safeLongToInt(J)I
-Ljava/math/BigDecimal;->scale:I
-Ljava/math/BigDecimal;->setUnscaledValue(Ljava/math/BigInteger;)V
-Ljava/math/BigDecimal;->smallRound(Ljava/math/MathContext;I)V
-Ljava/math/BigDecimal;->smallValue:J
-Ljava/math/BigDecimal;->TEN_POW:[Ljava/math/BigInteger;
-Ljava/math/BigDecimal;->toStringImage:Ljava/lang/String;
-Ljava/math/BigDecimal;->valueExact(I)J
-Ljava/math/BigDecimal;->zeroScaledBy(J)Ljava/math/BigDecimal;
-Ljava/math/BigDecimal;->ZERO_SCALED_BY:[Ljava/math/BigDecimal;
-Ljava/math/BigInt;-><init>()V
-Ljava/math/BigInt;->add(Ljava/math/BigInt;)V
-Ljava/math/BigInt;->addition(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->addPositiveInt(I)V
-Ljava/math/BigInt;->bigEndianMagnitude()[B
-Ljava/math/BigInt;->bigExp(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->bignum:J
-Ljava/math/BigInt;->bitLength()I
-Ljava/math/BigInt;->checkString(Ljava/lang/String;I)Ljava/lang/String;
-Ljava/math/BigInt;->cmp(Ljava/math/BigInt;Ljava/math/BigInt;)I
-Ljava/math/BigInt;->copy()Ljava/math/BigInt;
-Ljava/math/BigInt;->decString()Ljava/lang/String;
-Ljava/math/BigInt;->division(Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;)V
-Ljava/math/BigInt;->exp(Ljava/math/BigInt;I)Ljava/math/BigInt;
-Ljava/math/BigInt;->gcd(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->generatePrimeDefault(I)Ljava/math/BigInt;
-Ljava/math/BigInt;->hasNativeBignum()Z
-Ljava/math/BigInt;->hexString()Ljava/lang/String;
-Ljava/math/BigInt;->invalidBigInteger(Ljava/lang/String;)Ljava/lang/NumberFormatException;
-Ljava/math/BigInt;->isBitSet(I)Z
-Ljava/math/BigInt;->isPrime(I)Z
-Ljava/math/BigInt;->littleEndianIntsMagnitude()[I
-Ljava/math/BigInt;->longInt()J
-Ljava/math/BigInt;->makeValid()V
-Ljava/math/BigInt;->modExp(Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->modInverse(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->modulus(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->multiplyByPositiveInt(I)V
-Ljava/math/BigInt;->newBigInt()Ljava/math/BigInt;
-Ljava/math/BigInt;->product(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->putBigEndian([BZ)V
-Ljava/math/BigInt;->putBigEndianTwosComplement([B)V
-Ljava/math/BigInt;->putCopy(Ljava/math/BigInt;)V
-Ljava/math/BigInt;->putDecString(Ljava/lang/String;)V
-Ljava/math/BigInt;->putHexString(Ljava/lang/String;)V
-Ljava/math/BigInt;->putLittleEndianInts([IZ)V
-Ljava/math/BigInt;->putLongInt(J)V
-Ljava/math/BigInt;->putULongInt(JZ)V
-Ljava/math/BigInt;->registry:Llibcore/util/NativeAllocationRegistry;
-Ljava/math/BigInt;->remainderByPositiveInt(Ljava/math/BigInt;I)I
-Ljava/math/BigInt;->setSign(I)V
-Ljava/math/BigInt;->shift(I)V
-Ljava/math/BigInt;->shift(Ljava/math/BigInt;I)Ljava/math/BigInt;
-Ljava/math/BigInt;->sign()I
-Ljava/math/BigInt;->subtraction(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-Ljava/math/BigInt;->toAscii(Ljava/lang/String;I)Ljava/lang/String;
-Ljava/math/BigInt;->twosCompFitsIntoBytes(I)Z
-Ljava/math/BigInteger;-><init>(II[I)V
-Ljava/math/BigInteger;-><init>(IJ)V
-Ljava/math/BigInteger;-><init>(Ljava/math/BigInt;)V
-Ljava/math/BigInteger;->bigInt:Ljava/math/BigInt;
-Ljava/math/BigInteger;->copy()Ljava/math/BigInteger;
-Ljava/math/BigInteger;->digits:[I
-Ljava/math/BigInteger;->firstNonzeroDigit:I
-Ljava/math/BigInteger;->getBigInt()Ljava/math/BigInt;
-Ljava/math/BigInteger;->getFirstNonzeroDigit()I
-Ljava/math/BigInteger;->hashCode:I
-Ljava/math/BigInteger;->inplaceAdd([III)I
-Ljava/math/BigInteger;->isSmallPrime(I)Z
-Ljava/math/BigInteger;->javaIsValid:Z
-Ljava/math/BigInteger;->magnitude:[B
-Ljava/math/BigInteger;->MINUS_ONE:Ljava/math/BigInteger;
-Ljava/math/BigInteger;->multiplyByInt([I[III)I
-Ljava/math/BigInteger;->nativeIsValid:Z
-Ljava/math/BigInteger;->numberLength:I
-Ljava/math/BigInteger;->parseFromString(Ljava/math/BigInteger;Ljava/lang/String;I)V
-Ljava/math/BigInteger;->prepareJavaRepresentation()V
-Ljava/math/BigInteger;->setBigInt(Ljava/math/BigInt;)V
-Ljava/math/BigInteger;->setJavaRepresentation(II[I)V
-Ljava/math/BigInteger;->shiftLeftOneBit()Ljava/math/BigInteger;
-Ljava/math/BigInteger;->sign:I
-Ljava/math/BigInteger;->signum:I
-Ljava/math/BigInteger;->SMALL_VALUES:[Ljava/math/BigInteger;
-Ljava/math/BigInteger;->twosComplement()[B
-Ljava/math/MathContext;->checkValid()V
-Ljava/math/MathContext;->invalidMathContext(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/IllegalArgumentException;
-Ljava/math/MathContext;->precision:I
-Ljava/math/MathContext;->roundingMode:Ljava/math/RoundingMode;
-Ljava/math/RoundingMode;->bigDecimalRM:I
-Ljava/net/Authenticator;->requestingAuthType:Ljava/net/Authenticator$RequestorType;
-Ljava/net/Authenticator;->requestingHost:Ljava/lang/String;
-Ljava/net/Authenticator;->requestingPort:I
-Ljava/net/Authenticator;->requestingPrompt:Ljava/lang/String;
-Ljava/net/Authenticator;->requestingProtocol:Ljava/lang/String;
-Ljava/net/Authenticator;->requestingScheme:Ljava/lang/String;
-Ljava/net/Authenticator;->requestingSite:Ljava/net/InetAddress;
-Ljava/net/Authenticator;->requestingURL:Ljava/net/URL;
-Ljava/net/Authenticator;->reset()V
-Ljava/net/BindException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/net/ConnectException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/net/CookieHandler;->cookieHandler:Ljava/net/CookieHandler;
-Ljava/net/CookieManager$CookiePathComparator;-><init>()V
-Ljava/net/CookieManager$CookiePathComparator;->compare(Ljava/net/HttpCookie;Ljava/net/HttpCookie;)I
-Ljava/net/CookieManager;->cookieJar:Ljava/net/CookieStore;
-Ljava/net/CookieManager;->isInPortList(Ljava/lang/String;I)Z
-Ljava/net/CookieManager;->normalizePath(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/CookieManager;->pathMatches(Ljava/net/URI;Ljava/net/HttpCookie;)Z
-Ljava/net/CookieManager;->policyCallback:Ljava/net/CookiePolicy;
-Ljava/net/CookieManager;->shouldAcceptInternal(Ljava/net/URI;Ljava/net/HttpCookie;)Z
-Ljava/net/CookieManager;->sortByPath(Ljava/util/List;)Ljava/util/List;
-Ljava/net/DatagramPacket;->address:Ljava/net/InetAddress;
-Ljava/net/DatagramPacket;->buf:[B
-Ljava/net/DatagramPacket;->bufLength:I
-Ljava/net/DatagramPacket;->length:I
-Ljava/net/DatagramPacket;->offset:I
-Ljava/net/DatagramPacket;->port:I
-Ljava/net/DatagramPacket;->setReceivedLength(I)V
-Ljava/net/DatagramSocket;->bound:Z
-Ljava/net/DatagramSocket;->bytesLeftToFilter:I
-Ljava/net/DatagramSocket;->checkAddress(Ljava/net/InetAddress;Ljava/lang/String;)V
-Ljava/net/DatagramSocket;->checkFiltering(Ljava/net/DatagramPacket;)Z
-Ljava/net/DatagramSocket;->checkOldImpl()V
-Ljava/net/DatagramSocket;->closed:Z
-Ljava/net/DatagramSocket;->closeLock:Ljava/lang/Object;
-Ljava/net/DatagramSocket;->connectedAddress:Ljava/net/InetAddress;
-Ljava/net/DatagramSocket;->connectedPort:I
-Ljava/net/DatagramSocket;->connectInternal(Ljava/net/InetAddress;I)V
-Ljava/net/DatagramSocket;->connectState:I
-Ljava/net/DatagramSocket;->created:Z
-Ljava/net/DatagramSocket;->createImpl()V
-Ljava/net/DatagramSocket;->explicitFilter:Z
-Ljava/net/DatagramSocket;->factory:Ljava/net/DatagramSocketImplFactory;
-Ljava/net/DatagramSocket;->getImpl()Ljava/net/DatagramSocketImpl;
-Ljava/net/DatagramSocket;->implClass:Ljava/lang/Class;
-Ljava/net/DatagramSocket;->oldImpl:Z
-Ljava/net/DatagramSocket;->pendingConnectException:Ljava/net/SocketException;
-Ljava/net/DatagramSocket;->ST_CONNECTED:I
-Ljava/net/DatagramSocket;->ST_CONNECTED_NO_IMPL:I
-Ljava/net/DatagramSocket;->ST_NOT_CONNECTED:I
-Ljava/net/DatagramSocketImpl;->dataAvailable()I
-Ljava/net/DatagramSocketImpl;->getDatagramSocket()Ljava/net/DatagramSocket;
-Ljava/net/DatagramSocketImpl;->getOption(Ljava/net/SocketOption;)Ljava/lang/Object;
-Ljava/net/DatagramSocketImpl;->setDatagramSocket(Ljava/net/DatagramSocket;)V
-Ljava/net/DatagramSocketImpl;->setOption(Ljava/net/SocketOption;Ljava/lang/Object;)V
-Ljava/net/DatagramSocketImpl;->socket:Ljava/net/DatagramSocket;
-Ljava/net/HttpCookie$CookieAttributeAssignor;->assign(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V
-Ljava/net/HttpCookie;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Ljava/net/HttpCookie;->assignAttribute(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V
-Ljava/net/HttpCookie;->equalsIgnoreCase(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/net/HttpCookie;->GMT:Ljava/util/TimeZone;
-Ljava/net/HttpCookie;->guessCookieVersion(Ljava/lang/String;)I
-Ljava/net/HttpCookie;->header()Ljava/lang/String;
-Ljava/net/HttpCookie;->isFullyQualifiedDomainName(Ljava/lang/String;I)Z
-Ljava/net/HttpCookie;->isToken(Ljava/lang/String;)Z
-Ljava/net/HttpCookie;->MAX_AGE_UNSPECIFIED:J
-Ljava/net/HttpCookie;->parse(Ljava/lang/String;Z)Ljava/util/List;
-Ljava/net/HttpCookie;->parseInternal(Ljava/lang/String;Z)Ljava/net/HttpCookie;
-Ljava/net/HttpCookie;->RESERVED_NAMES:Ljava/util/Set;
-Ljava/net/HttpCookie;->SET_COOKIE2:Ljava/lang/String;
-Ljava/net/HttpCookie;->SET_COOKIE:Ljava/lang/String;
-Ljava/net/HttpCookie;->splitMultiCookies(Ljava/lang/String;)Ljava/util/List;
-Ljava/net/HttpCookie;->startsWithIgnoreCase(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/net/HttpCookie;->stripOffSurroundingQuote(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/HttpCookie;->toNetscapeHeaderString()Ljava/lang/String;
-Ljava/net/HttpCookie;->toRFC2965HeaderString()Ljava/lang/String;
-Ljava/net/HttpRetryException;->location:Ljava/lang/String;
-Ljava/net/HttpRetryException;->responseCode:I
-Ljava/net/HttpURLConnection;->DEFAULT_CHUNK_SIZE:I
-Ljava/net/HttpURLConnection;->followRedirects:Z
-Ljava/net/HttpURLConnection;->methods:[Ljava/lang/String;
-Ljava/net/IDN;-><init>()V
-Ljava/net/IDN;->convertFullStop(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;
-Ljava/net/IDN;->isLabelSeperator(C)Z
-Ljava/net/Inet4Address;-><init>(Ljava/lang/String;I)V
-Ljava/net/Inet4Address;-><init>(Ljava/lang/String;[B)V
-Ljava/net/Inet4Address;->INADDRSZ:I
-Ljava/net/Inet4Address;->LOOPBACK:Ljava/net/InetAddress;
-Ljava/net/Inet4Address;->numericToTextFormat([B)Ljava/lang/String;
-Ljava/net/Inet6Address$Inet6AddressHolder;->init([BI)V
-Ljava/net/Inet6Address$Inet6AddressHolder;->init([BLjava/net/NetworkInterface;)V
-Ljava/net/Inet6Address$Inet6AddressHolder;->isAnyLocalAddress()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isIPv4CompatibleAddress()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isLinkLocalAddress()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isLoopbackAddress()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isMCGlobal()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isMCLinkLocal()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isMCNodeLocal()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isMCOrgLocal()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isMCSiteLocal()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isMulticastAddress()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->isSiteLocalAddress()Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->scope_ifname_set:Z
-Ljava/net/Inet6Address$Inet6AddressHolder;->setAddr([B)V
-Ljava/net/Inet6Address;-><init>(Ljava/lang/String;[B)V
-Ljava/net/Inet6Address;-><init>(Ljava/lang/String;[BI)V
-Ljava/net/Inet6Address;-><init>(Ljava/lang/String;[BLjava/lang/String;)V
-Ljava/net/Inet6Address;-><init>(Ljava/lang/String;[BLjava/net/NetworkInterface;)V
-Ljava/net/Inet6Address;->deriveNumericScope(Ljava/lang/String;)I
-Ljava/net/Inet6Address;->deriveNumericScope([BLjava/net/NetworkInterface;)I
-Ljava/net/Inet6Address;->FIELDS_OFFSET:J
-Ljava/net/Inet6Address;->INADDRSZ:I
-Ljava/net/Inet6Address;->initif(Ljava/lang/String;[BLjava/net/NetworkInterface;)V
-Ljava/net/Inet6Address;->initstr(Ljava/lang/String;[BLjava/lang/String;)V
-Ljava/net/Inet6Address;->INT16SZ:I
-Ljava/net/Inet6Address;->isDifferentLocalAddressType([B[B)Z
-Ljava/net/Inet6Address;->isLinkLocalAddress([B)Z
-Ljava/net/Inet6Address;->isSiteLocalAddress([B)Z
-Ljava/net/Inet6Address;->LOOPBACK:Ljava/net/InetAddress;
-Ljava/net/Inet6Address;->numericToTextFormat([B)Ljava/lang/String;
-Ljava/net/Inet6Address;->UNSAFE:Lsun/misc/Unsafe;
-Ljava/net/InetAddress$InetAddressHolder;-><init>()V
-Ljava/net/InetAddress$InetAddressHolder;-><init>(Ljava/lang/String;II)V
-Ljava/net/InetAddress$InetAddressHolder;->getAddress()I
-Ljava/net/InetAddress$InetAddressHolder;->getFamily()I
-Ljava/net/InetAddress$InetAddressHolder;->getHostName()Ljava/lang/String;
-Ljava/net/InetAddress$InetAddressHolder;->getOriginalHostName()Ljava/lang/String;
-Ljava/net/InetAddress$InetAddressHolder;->init(Ljava/lang/String;I)V
-Ljava/net/InetAddress;-><init>()V
-Ljava/net/InetAddress;->anyLocalAddress()Ljava/net/InetAddress;
-Ljava/net/InetAddress;->BOOT_CLASSLOADER:Ljava/lang/ClassLoader;
-Ljava/net/InetAddress;->canonicalHostName:Ljava/lang/String;
-Ljava/net/InetAddress;->disallowDeprecatedFormats(Ljava/lang/String;Ljava/net/InetAddress;)Ljava/net/InetAddress;
-Ljava/net/InetAddress;->getAllByName0(Ljava/lang/String;Z)[Ljava/net/InetAddress;
-Ljava/net/InetAddress;->getByAddress(Ljava/lang/String;[BI)Ljava/net/InetAddress;
-Ljava/net/InetAddress;->getByNameOnNet(Ljava/lang/String;I)Ljava/net/InetAddress;
-Ljava/net/InetAddress;->getHostFromNameService(Ljava/net/InetAddress;)Ljava/lang/String;
-Ljava/net/InetAddress;->getHostName(Z)Ljava/lang/String;
-Ljava/net/InetAddress;->impl:Ljava/net/InetAddressImpl;
-Ljava/net/InetAddress;->isReachableByICMP(I)Z
-Ljava/net/InetAddress;->nameService:Lsun/net/spi/nameservice/NameService;
-Ljava/net/InetAddress;->NETID_UNSET:I
-Ljava/net/InetAddress;->parseNumericAddressNoThrow(Ljava/lang/String;)Ljava/net/InetAddress;
-Ljava/net/InetAddress;->readObjectNoData(Ljava/io/ObjectInputStream;)V
-Ljava/net/InetAddressImpl;->anyLocalAddress()Ljava/net/InetAddress;
-Ljava/net/InetAddressImpl;->clearAddressCache()V
-Ljava/net/InetAddressImpl;->getHostByAddr([B)Ljava/lang/String;
-Ljava/net/InetAddressImpl;->isReachable(Ljava/net/InetAddress;ILjava/net/NetworkInterface;I)Z
-Ljava/net/InetAddressImpl;->lookupAllHostAddr(Ljava/lang/String;I)[Ljava/net/InetAddress;
-Ljava/net/InetAddressImpl;->loopbackAddresses()[Ljava/net/InetAddress;
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;-><init>(Ljava/lang/String;Ljava/net/InetAddress;I)V
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->addr:Ljava/net/InetAddress;
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->getAddress()Ljava/net/InetAddress;
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->getHostName()Ljava/lang/String;
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->getHostString()Ljava/lang/String;
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->getPort()I
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->hostname:Ljava/lang/String;
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->isUnresolved()Z
-Ljava/net/InetSocketAddress$InetSocketAddressHolder;->port:I
-Ljava/net/InetSocketAddress;-><init>()V
-Ljava/net/InetSocketAddress;-><init>(ILjava/lang/String;)V
-Ljava/net/InetSocketAddress;->checkHost(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/InetSocketAddress;->checkPort(I)I
-Ljava/net/InetSocketAddress;->FIELDS_OFFSET:J
-Ljava/net/InetSocketAddress;->UNSAFE:Lsun/misc/Unsafe;
-Ljava/net/InMemoryCookieStore;-><init>()V
-Ljava/net/InMemoryCookieStore;-><init>(I)V
-Ljava/net/InMemoryCookieStore;->addIndex(Ljava/util/Map;Ljava/lang/Object;Ljava/net/HttpCookie;)V
-Ljava/net/InMemoryCookieStore;->applyMCompatibility:Z
-Ljava/net/InMemoryCookieStore;->getEffectiveURI(Ljava/net/URI;)Ljava/net/URI;
-Ljava/net/InMemoryCookieStore;->getInternal1(Ljava/util/List;Ljava/util/Map;Ljava/lang/String;)V
-Ljava/net/InMemoryCookieStore;->getInternal2(Ljava/util/List;Ljava/util/Map;Ljava/lang/Comparable;)V
-Ljava/net/InMemoryCookieStore;->lock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/net/InMemoryCookieStore;->netscapeDomainMatches(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/net/InMemoryCookieStore;->uriIndex:Ljava/util/Map;
-Ljava/net/InterfaceAddress;-><init>(Ljava/net/InetAddress;Ljava/net/Inet4Address;Ljava/net/InetAddress;)V
-Ljava/net/InterfaceAddress;->address:Ljava/net/InetAddress;
-Ljava/net/InterfaceAddress;->broadcast:Ljava/net/Inet4Address;
-Ljava/net/InterfaceAddress;->countPrefixLength(Ljava/net/InetAddress;)S
-Ljava/net/InterfaceAddress;->maskLength:S
-Ljava/net/JarURLConnection;->entryName:Ljava/lang/String;
-Ljava/net/JarURLConnection;->jarFileURL:Ljava/net/URL;
-Ljava/net/JarURLConnection;->parseSpecs(Ljava/net/URL;)V
-Ljava/net/MulticastSocket;->infAddress:Ljava/net/InetAddress;
-Ljava/net/MulticastSocket;->infLock:Ljava/lang/Object;
-Ljava/net/MulticastSocket;->interfaceSet:Z
-Ljava/net/MulticastSocket;->ttlLock:Ljava/lang/Object;
-Ljava/net/NetworkInterface;-><init>()V
-Ljava/net/NetworkInterface;-><init>(Ljava/lang/String;I[Ljava/net/InetAddress;)V
-Ljava/net/NetworkInterface;->addrs:[Ljava/net/InetAddress;
-Ljava/net/NetworkInterface;->bindings:[Ljava/net/InterfaceAddress;
-Ljava/net/NetworkInterface;->childs:Ljava/util/List;
-Ljava/net/NetworkInterface;->defaultIndex:I
-Ljava/net/NetworkInterface;->defaultInterface:Ljava/net/NetworkInterface;
-Ljava/net/NetworkInterface;->displayName:Ljava/lang/String;
-Ljava/net/NetworkInterface;->getAll()[Ljava/net/NetworkInterface;
-Ljava/net/NetworkInterface;->getDefault()Ljava/net/NetworkInterface;
-Ljava/net/NetworkInterface;->getFlags()I
-Ljava/net/NetworkInterface;->hardwareAddr:[B
-Ljava/net/NetworkInterface;->index:I
-Ljava/net/NetworkInterface;->name:Ljava/lang/String;
-Ljava/net/NetworkInterface;->parent:Ljava/net/NetworkInterface;
-Ljava/net/NetworkInterface;->virtual:Z
-Ljava/net/PasswordAuthentication;->password:[C
-Ljava/net/PasswordAuthentication;->userName:Ljava/lang/String;
-Ljava/net/PortUnreachableException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/net/ProtocolException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/net/Proxy;->sa:Ljava/net/SocketAddress;
-Ljava/net/Proxy;->type:Ljava/net/Proxy$Type;
-Ljava/net/ProxySelector;->theProxySelector:Ljava/net/ProxySelector;
-Ljava/net/ResponseCache;->theResponseCache:Ljava/net/ResponseCache;
-Ljava/net/ServerSocket;-><init>(Ljava/net/SocketImpl;)V
-Ljava/net/ServerSocket;->bound:Z
-Ljava/net/ServerSocket;->checkOldImpl()V
-Ljava/net/ServerSocket;->closed:Z
-Ljava/net/ServerSocket;->closeLock:Ljava/lang/Object;
-Ljava/net/ServerSocket;->created:Z
-Ljava/net/ServerSocket;->createImpl()V
-Ljava/net/ServerSocket;->getFileDescriptor$()Ljava/io/FileDescriptor;
-Ljava/net/ServerSocket;->getImpl()Ljava/net/SocketImpl;
-Ljava/net/ServerSocket;->impl:Ljava/net/SocketImpl;
-Ljava/net/ServerSocket;->oldImpl:Z
-Ljava/net/ServerSocket;->setBound()V
-Ljava/net/ServerSocket;->setCreated()V
-Ljava/net/ServerSocket;->setImpl()V
-Ljava/net/Socket;-><init>([Ljava/net/InetAddress;ILjava/net/SocketAddress;Z)V
-Ljava/net/Socket;->bound:Z
-Ljava/net/Socket;->checkAddress(Ljava/net/InetAddress;Ljava/lang/String;)V
-Ljava/net/Socket;->checkOldImpl()V
-Ljava/net/Socket;->closed:Z
-Ljava/net/Socket;->closeLock:Ljava/lang/Object;
-Ljava/net/Socket;->connected:Z
-Ljava/net/Socket;->created:Z
-Ljava/net/Socket;->createImpl(Z)V
-Ljava/net/Socket;->getImpl()Ljava/net/SocketImpl;
-Ljava/net/Socket;->nonNullAddress(Ljava/net/InetAddress;)[Ljava/net/InetAddress;
-Ljava/net/Socket;->oldImpl:Z
-Ljava/net/Socket;->postAccept()V
-Ljava/net/Socket;->setBound()V
-Ljava/net/Socket;->setConnected()V
-Ljava/net/Socket;->setCreated()V
-Ljava/net/Socket;->setImpl()V
-Ljava/net/Socket;->shutIn:Z
-Ljava/net/Socket;->shutOut:Z
-Ljava/net/SocketException;-><init>(Ljava/lang/Throwable;)V
-Ljava/net/SocketImpl;->getFD$()Ljava/io/FileDescriptor;
-Ljava/net/SocketImpl;->getOption(Ljava/net/SocketOption;)Ljava/lang/Object;
-Ljava/net/SocketImpl;->getServerSocket()Ljava/net/ServerSocket;
-Ljava/net/SocketImpl;->getSocket()Ljava/net/Socket;
-Ljava/net/SocketImpl;->reset()V
-Ljava/net/SocketImpl;->setOption(Ljava/net/SocketOption;Ljava/lang/Object;)V
-Ljava/net/SocketImpl;->setServerSocket(Ljava/net/ServerSocket;)V
-Ljava/net/SocketImpl;->setSocket(Ljava/net/Socket;)V
-Ljava/net/SocketTimeoutException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/net/SocketTimeoutException;-><init>(Ljava/lang/Throwable;)V
-Ljava/net/StandardSocketOptions$StdSocketOption;-><init>(Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/net/StandardSocketOptions$StdSocketOption;->name:Ljava/lang/String;
-Ljava/net/StandardSocketOptions$StdSocketOption;->type:Ljava/lang/Class;
-Ljava/net/StandardSocketOptions;-><init>()V
-Ljava/net/URI$Parser;->at(IIC)Z
-Ljava/net/URI$Parser;->at(IILjava/lang/String;)Z
-Ljava/net/URI$Parser;->charAt(I)C
-Ljava/net/URI$Parser;->checkChar(IJJLjava/lang/String;)V
-Ljava/net/URI$Parser;->checkChars(IIJJLjava/lang/String;)V
-Ljava/net/URI$Parser;->fail(Ljava/lang/String;)V
-Ljava/net/URI$Parser;->fail(Ljava/lang/String;I)V
-Ljava/net/URI$Parser;->failExpecting(Ljava/lang/String;I)V
-Ljava/net/URI$Parser;->failExpecting(Ljava/lang/String;Ljava/lang/String;I)V
-Ljava/net/URI$Parser;->input:Ljava/lang/String;
-Ljava/net/URI$Parser;->ipv6byteCount:I
-Ljava/net/URI$Parser;->parse(Z)V
-Ljava/net/URI$Parser;->parseAuthority(II)I
-Ljava/net/URI$Parser;->parseHierarchical(II)I
-Ljava/net/URI$Parser;->parseHostname(II)I
-Ljava/net/URI$Parser;->parseIPv4Address(II)I
-Ljava/net/URI$Parser;->parseIPv6Reference(II)I
-Ljava/net/URI$Parser;->parseServer(II)I
-Ljava/net/URI$Parser;->requireServerAuthority:Z
-Ljava/net/URI$Parser;->scan(IIC)I
-Ljava/net/URI$Parser;->scan(IIJJ)I
-Ljava/net/URI$Parser;->scan(IILjava/lang/String;Ljava/lang/String;)I
-Ljava/net/URI$Parser;->scanByte(II)I
-Ljava/net/URI$Parser;->scanEscape(IIC)I
-Ljava/net/URI$Parser;->scanHexPost(II)I
-Ljava/net/URI$Parser;->scanHexSeq(II)I
-Ljava/net/URI$Parser;->scanIPv4Address(IIZ)I
-Ljava/net/URI$Parser;->substring(II)Ljava/lang/String;
-Ljava/net/URI$Parser;->takeIPv4Address(IILjava/lang/String;)I
-Ljava/net/URI;-><init>()V
-Ljava/net/URI;->appendAuthority(Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-Ljava/net/URI;->appendEncoded(Ljava/lang/StringBuffer;C)V
-Ljava/net/URI;->appendEscape(Ljava/lang/StringBuffer;B)V
-Ljava/net/URI;->appendFragment(Ljava/lang/StringBuffer;Ljava/lang/String;)V
-Ljava/net/URI;->appendSchemeSpecificPart(Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-Ljava/net/URI;->authority:Ljava/lang/String;
-Ljava/net/URI;->checkPath(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Ljava/net/URI;->compare(Ljava/lang/String;Ljava/lang/String;)I
-Ljava/net/URI;->compareIgnoringCase(Ljava/lang/String;Ljava/lang/String;)I
-Ljava/net/URI;->decode(C)I
-Ljava/net/URI;->decode(CC)B
-Ljava/net/URI;->decode(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/URI;->decodedAuthority:Ljava/lang/String;
-Ljava/net/URI;->decodedFragment:Ljava/lang/String;
-Ljava/net/URI;->decodedPath:Ljava/lang/String;
-Ljava/net/URI;->decodedQuery:Ljava/lang/String;
-Ljava/net/URI;->decodedSchemeSpecificPart:Ljava/lang/String;
-Ljava/net/URI;->decodedUserInfo:Ljava/lang/String;
-Ljava/net/URI;->defineSchemeSpecificPart()V
-Ljava/net/URI;->defineString()V
-Ljava/net/URI;->encode(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/URI;->equal(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/net/URI;->equalIgnoringCase(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/net/URI;->hash(ILjava/lang/String;)I
-Ljava/net/URI;->hash:I
-Ljava/net/URI;->hashIgnoringCase(ILjava/lang/String;)I
-Ljava/net/URI;->hexDigits:[C
-Ljava/net/URI;->highMask(CC)J
-Ljava/net/URI;->highMask(Ljava/lang/String;)J
-Ljava/net/URI;->H_ALPHA:J
-Ljava/net/URI;->H_ALPHANUM:J
-Ljava/net/URI;->H_DASH:J
-Ljava/net/URI;->H_DIGIT:J
-Ljava/net/URI;->H_DOT:J
-Ljava/net/URI;->H_ESCAPED:J
-Ljava/net/URI;->H_HEX:J
-Ljava/net/URI;->H_LEFT_BRACKET:J
-Ljava/net/URI;->H_LOWALPHA:J
-Ljava/net/URI;->H_MARK:J
-Ljava/net/URI;->H_PATH:J
-Ljava/net/URI;->H_PCHAR:J
-Ljava/net/URI;->H_REG_NAME:J
-Ljava/net/URI;->H_RESERVED:J
-Ljava/net/URI;->H_SCHEME:J
-Ljava/net/URI;->H_SERVER:J
-Ljava/net/URI;->H_SERVER_PERCENT:J
-Ljava/net/URI;->H_UNDERSCORE:J
-Ljava/net/URI;->H_UNRESERVED:J
-Ljava/net/URI;->H_UPALPHA:J
-Ljava/net/URI;->H_URIC:J
-Ljava/net/URI;->H_URIC_NO_SLASH:J
-Ljava/net/URI;->H_USERINFO:J
-Ljava/net/URI;->join([C[I)I
-Ljava/net/URI;->lowMask(CC)J
-Ljava/net/URI;->lowMask(Ljava/lang/String;)J
-Ljava/net/URI;->L_ALPHA:J
-Ljava/net/URI;->L_ALPHANUM:J
-Ljava/net/URI;->L_DASH:J
-Ljava/net/URI;->L_DIGIT:J
-Ljava/net/URI;->L_DOT:J
-Ljava/net/URI;->L_ESCAPED:J
-Ljava/net/URI;->L_HEX:J
-Ljava/net/URI;->L_LEFT_BRACKET:J
-Ljava/net/URI;->L_LOWALPHA:J
-Ljava/net/URI;->L_MARK:J
-Ljava/net/URI;->L_PATH:J
-Ljava/net/URI;->L_PCHAR:J
-Ljava/net/URI;->L_REG_NAME:J
-Ljava/net/URI;->L_RESERVED:J
-Ljava/net/URI;->L_SCHEME:J
-Ljava/net/URI;->L_SERVER:J
-Ljava/net/URI;->L_SERVER_PERCENT:J
-Ljava/net/URI;->L_UNDERSCORE:J
-Ljava/net/URI;->L_UNRESERVED:J
-Ljava/net/URI;->L_UPALPHA:J
-Ljava/net/URI;->L_URIC:J
-Ljava/net/URI;->L_URIC_NO_SLASH:J
-Ljava/net/URI;->L_USERINFO:J
-Ljava/net/URI;->match(CJJ)Z
-Ljava/net/URI;->maybeAddLeadingDot([C[I)V
-Ljava/net/URI;->needsNormalization(Ljava/lang/String;)I
-Ljava/net/URI;->normalize(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/URI;->normalize(Ljava/lang/String;Z)Ljava/lang/String;
-Ljava/net/URI;->normalize(Ljava/net/URI;)Ljava/net/URI;
-Ljava/net/URI;->normalizedHash(ILjava/lang/String;)I
-Ljava/net/URI;->path:Ljava/lang/String;
-Ljava/net/URI;->quote(Ljava/lang/String;JJ)Ljava/lang/String;
-Ljava/net/URI;->relativize(Ljava/net/URI;Ljava/net/URI;)Ljava/net/URI;
-Ljava/net/URI;->removeDots([C[IZ)V
-Ljava/net/URI;->resolve(Ljava/net/URI;Ljava/net/URI;)Ljava/net/URI;
-Ljava/net/URI;->resolvePath(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
-Ljava/net/URI;->scheme:Ljava/lang/String;
-Ljava/net/URI;->schemeSpecificPart:Ljava/lang/String;
-Ljava/net/URI;->split([C[I)V
-Ljava/net/URI;->toLower(C)I
-Ljava/net/URI;->toString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/URI;->toUpper(C)I
-Ljava/net/URI;->userInfo:Ljava/lang/String;
-Ljava/net/URISyntaxException;->index:I
-Ljava/net/URISyntaxException;->input:Ljava/lang/String;
-Ljava/net/URL;->authority:Ljava/lang/String;
-Ljava/net/URL;->BUILTIN_HANDLER_CLASS_NAMES:Ljava/util/Set;
-Ljava/net/URL;->checkSpecifyHandler(Ljava/lang/SecurityManager;)V
-Ljava/net/URL;->createBuiltinHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler;
-Ljava/net/URL;->createBuiltinHandlerClassNames()Ljava/util/Set;
-Ljava/net/URL;->fabricateNewURL()Ljava/net/URL;
-Ljava/net/URL;->file:Ljava/lang/String;
-Ljava/net/URL;->getURLStreamHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler;
-Ljava/net/URL;->hashCode:I
-Ljava/net/URL;->host:Ljava/lang/String;
-Ljava/net/URL;->hostAddress:Ljava/net/InetAddress;
-Ljava/net/URL;->isBuiltinStreamHandler(Ljava/lang/String;)Z
-Ljava/net/URL;->isValidProtocol(Ljava/lang/String;)Z
-Ljava/net/URL;->path:Ljava/lang/String;
-Ljava/net/URL;->port:I
-Ljava/net/URL;->protocolPathProp:Ljava/lang/String;
-Ljava/net/URL;->query:Ljava/lang/String;
-Ljava/net/URL;->ref:Ljava/lang/String;
-Ljava/net/URL;->resetState()V
-Ljava/net/URL;->set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-Ljava/net/URL;->set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Ljava/net/URL;->setDeserializedFields(Ljava/net/URLStreamHandler;)Ljava/net/URL;
-Ljava/net/URL;->setSerializedHashCode(I)V
-Ljava/net/URL;->streamHandlerLock:Ljava/lang/Object;
-Ljava/net/URL;->tempState:Ljava/net/UrlDeserializedState;
-Ljava/net/URL;->userInfo:Ljava/lang/String;
-Ljava/net/URLClassLoader;-><init>([Ljava/net/URL;Ljava/lang/ClassLoader;Ljava/security/AccessControlContext;)V
-Ljava/net/URLClassLoader;-><init>([Ljava/net/URL;Ljava/security/AccessControlContext;)V
-Ljava/net/URLClassLoader;->closeables:Ljava/util/WeakHashMap;
-Ljava/net/URLClassLoader;->defineClass(Ljava/lang/String;Lsun/misc/Resource;)Ljava/lang/Class;
-Ljava/net/URLClassLoader;->definePackageInternal(Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;)V
-Ljava/net/URLClassLoader;->getAndVerifyPackage(Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;)Ljava/lang/Package;
-Ljava/net/URLClassLoader;->isSealed(Ljava/lang/String;Ljava/util/jar/Manifest;)Z
-Ljava/net/URLConnection;->checkfpx(Ljava/io/InputStream;)Z
-Ljava/net/URLConnection;->connectTimeout:I
-Ljava/net/URLConnection;->contentClassPrefix:Ljava/lang/String;
-Ljava/net/URLConnection;->contentPathProp:Ljava/lang/String;
-Ljava/net/URLConnection;->defaultAllowUserInteraction:Z
-Ljava/net/URLConnection;->defaultUseCaches:Z
-Ljava/net/URLConnection;->factory:Ljava/net/ContentHandlerFactory;
-Ljava/net/URLConnection;->fileNameMap:Ljava/net/FileNameMap;
-Ljava/net/URLConnection;->getContentHandler()Ljava/net/ContentHandler;
-Ljava/net/URLConnection;->getContentHandlerPkgPrefixes()Ljava/lang/String;
-Ljava/net/URLConnection;->handlers:Ljava/util/Hashtable;
-Ljava/net/URLConnection;->lookupContentHandlerClassFor(Ljava/lang/String;)Ljava/net/ContentHandler;
-Ljava/net/URLConnection;->readBytes([IILjava/io/InputStream;)I
-Ljava/net/URLConnection;->readTimeout:I
-Ljava/net/URLConnection;->requests:Lsun/net/www/MessageHeader;
-Ljava/net/URLConnection;->skipForward(Ljava/io/InputStream;J)J
-Ljava/net/URLConnection;->stripOffParameters(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/URLConnection;->typeToPackageName(Ljava/lang/String;)Ljava/lang/String;
-Ljava/net/URLDecoder;->dfltEncName:Ljava/lang/String;
-Ljava/net/URLDecoder;->isValidHexChar(C)Z
-Ljava/net/UrlDeserializedState;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-Ljava/net/UrlDeserializedState;->authority:Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->file:Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->getAuthority()Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->getFile()Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->getHashCode()I
-Ljava/net/UrlDeserializedState;->getHost()Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->getPort()I
-Ljava/net/UrlDeserializedState;->getProtocol()Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->getRef()Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->hashCode:I
-Ljava/net/UrlDeserializedState;->host:Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->port:I
-Ljava/net/UrlDeserializedState;->protocol:Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->reconstituteUrlString()Ljava/lang/String;
-Ljava/net/UrlDeserializedState;->ref:Ljava/lang/String;
-Ljava/net/URLEncoder;-><init>()V
-Ljava/net/URLEncoder;->caseDiff:I
-Ljava/net/URLEncoder;->dfltEncName:Ljava/lang/String;
-Ljava/net/URLEncoder;->dontNeedEncoding:Ljava/util/BitSet;
-Ljava/nio/Buffer;-><init>(IIIII)V
-Ljava/nio/Buffer;->checkBounds(III)V
-Ljava/nio/Buffer;->checkIndex(I)I
-Ljava/nio/Buffer;->checkIndex(II)I
-Ljava/nio/Buffer;->discardMark()V
-Ljava/nio/Buffer;->getElementSizeShift()I
-Ljava/nio/Buffer;->mark:I
-Ljava/nio/Buffer;->markValue()I
-Ljava/nio/Buffer;->nextGetIndex()I
-Ljava/nio/Buffer;->nextGetIndex(I)I
-Ljava/nio/Buffer;->nextPutIndex()I
-Ljava/nio/Buffer;->nextPutIndex(I)I
-Ljava/nio/Buffer;->SPLITERATOR_CHARACTERISTICS:I
-Ljava/nio/Buffer;->truncate()V
-Ljava/nio/ByteBuffer;-><init>(IIII)V
-Ljava/nio/ByteBuffer;-><init>(IIII[BI)V
-Ljava/nio/ByteBuffer;->bigEndian:Z
-Ljava/nio/ByteBuffer;->compare(BB)I
-Ljava/nio/ByteBuffer;->equals(BB)Z
-Ljava/nio/ByteBuffer;->getCharUnchecked(I)C
-Ljava/nio/ByteBuffer;->getDoubleUnchecked(I)D
-Ljava/nio/ByteBuffer;->getFloatUnchecked(I)F
-Ljava/nio/ByteBuffer;->getIntUnchecked(I)I
-Ljava/nio/ByteBuffer;->getLongUnchecked(I)J
-Ljava/nio/ByteBuffer;->getShortUnchecked(I)S
-Ljava/nio/ByteBuffer;->getUnchecked(I[CII)V
-Ljava/nio/ByteBuffer;->getUnchecked(I[DII)V
-Ljava/nio/ByteBuffer;->getUnchecked(I[FII)V
-Ljava/nio/ByteBuffer;->getUnchecked(I[III)V
-Ljava/nio/ByteBuffer;->getUnchecked(I[JII)V
-Ljava/nio/ByteBuffer;->getUnchecked(I[SII)V
-Ljava/nio/ByteBuffer;->isAccessible()Z
-Ljava/nio/ByteBuffer;->nativeByteOrder:Z
-Ljava/nio/ByteBuffer;->putCharUnchecked(IC)V
-Ljava/nio/ByteBuffer;->putDoubleUnchecked(ID)V
-Ljava/nio/ByteBuffer;->putFloatUnchecked(IF)V
-Ljava/nio/ByteBuffer;->putIntUnchecked(II)V
-Ljava/nio/ByteBuffer;->putLongUnchecked(IJ)V
-Ljava/nio/ByteBuffer;->putShortUnchecked(IS)V
-Ljava/nio/ByteBuffer;->putUnchecked(I[CII)V
-Ljava/nio/ByteBuffer;->putUnchecked(I[DII)V
-Ljava/nio/ByteBuffer;->putUnchecked(I[FII)V
-Ljava/nio/ByteBuffer;->putUnchecked(I[III)V
-Ljava/nio/ByteBuffer;->putUnchecked(I[JII)V
-Ljava/nio/ByteBuffer;->putUnchecked(I[SII)V
-Ljava/nio/ByteBuffer;->setAccessible(Z)V
-Ljava/nio/ByteBuffer;->_get(I)B
-Ljava/nio/ByteBuffer;->_put(IB)V
-Ljava/nio/ByteOrder;-><init>(Ljava/lang/String;)V
-Ljava/nio/ByteOrder;->name:Ljava/lang/String;
-Ljava/nio/channels/AsynchronousChannelGroup;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/AsynchronousFileChannel;->NO_ATTRIBUTES:[Ljava/nio/file/attribute/FileAttribute;
-Ljava/nio/channels/AsynchronousServerSocketChannel;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/AsynchronousSocketChannel;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/Channels$ReadableByteChannelImpl;-><init>(Ljava/io/InputStream;)V
-Ljava/nio/channels/Channels$ReadableByteChannelImpl;->buf:[B
-Ljava/nio/channels/Channels$ReadableByteChannelImpl;->in:Ljava/io/InputStream;
-Ljava/nio/channels/Channels$ReadableByteChannelImpl;->open:Z
-Ljava/nio/channels/Channels$ReadableByteChannelImpl;->readLock:Ljava/lang/Object;
-Ljava/nio/channels/Channels$ReadableByteChannelImpl;->TRANSFER_SIZE:I
-Ljava/nio/channels/Channels$WritableByteChannelImpl;-><init>(Ljava/io/OutputStream;)V
-Ljava/nio/channels/Channels$WritableByteChannelImpl;->buf:[B
-Ljava/nio/channels/Channels$WritableByteChannelImpl;->open:Z
-Ljava/nio/channels/Channels$WritableByteChannelImpl;->out:Ljava/io/OutputStream;
-Ljava/nio/channels/Channels$WritableByteChannelImpl;->TRANSFER_SIZE:I
-Ljava/nio/channels/Channels$WritableByteChannelImpl;->writeLock:Ljava/lang/Object;
-Ljava/nio/channels/Channels;-><init>()V
-Ljava/nio/channels/Channels;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V
-Ljava/nio/channels/Channels;->writeFully(Ljava/nio/channels/WritableByteChannel;Ljava/nio/ByteBuffer;)V
-Ljava/nio/channels/Channels;->writeFullyImpl(Ljava/nio/channels/WritableByteChannel;Ljava/nio/ByteBuffer;)V
-Ljava/nio/channels/FileChannel$MapMode;-><init>(Ljava/lang/String;)V
-Ljava/nio/channels/FileChannel$MapMode;->name:Ljava/lang/String;
-Ljava/nio/channels/FileChannel;->NO_ATTRIBUTES:[Ljava/nio/file/attribute/FileAttribute;
-Ljava/nio/channels/FileLock;->channel:Ljava/nio/channels/Channel;
-Ljava/nio/channels/FileLock;->position:J
-Ljava/nio/channels/FileLock;->shared:Z
-Ljava/nio/channels/FileLock;->size:J
-Ljava/nio/channels/SelectionKey;->attachment:Ljava/lang/Object;
-Ljava/nio/channels/SelectionKey;->attachmentUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
-Ljava/nio/channels/spi/AbstractInterruptibleChannel;->blockedOn(Lsun/nio/ch/Interruptible;)V
-Ljava/nio/channels/spi/AbstractInterruptibleChannel;->closeLock:Ljava/lang/Object;
-Ljava/nio/channels/spi/AbstractInterruptibleChannel;->interrupted:Ljava/lang/Thread;
-Ljava/nio/channels/spi/AbstractInterruptibleChannel;->interruptor:Lsun/nio/ch/Interruptible;
-Ljava/nio/channels/spi/AbstractInterruptibleChannel;->open:Z
-Ljava/nio/channels/spi/AbstractSelectableChannel;->addKey(Ljava/nio/channels/SelectionKey;)V
-Ljava/nio/channels/spi/AbstractSelectableChannel;->blocking:Z
-Ljava/nio/channels/spi/AbstractSelectableChannel;->findKey(Ljava/nio/channels/Selector;)Ljava/nio/channels/SelectionKey;
-Ljava/nio/channels/spi/AbstractSelectableChannel;->haveValidKeys()Z
-Ljava/nio/channels/spi/AbstractSelectableChannel;->keyCount:I
-Ljava/nio/channels/spi/AbstractSelectableChannel;->keyLock:Ljava/lang/Object;
-Ljava/nio/channels/spi/AbstractSelectableChannel;->keys:[Ljava/nio/channels/SelectionKey;
-Ljava/nio/channels/spi/AbstractSelectableChannel;->provider:Ljava/nio/channels/spi/SelectorProvider;
-Ljava/nio/channels/spi/AbstractSelectableChannel;->regLock:Ljava/lang/Object;
-Ljava/nio/channels/spi/AbstractSelectableChannel;->removeKey(Ljava/nio/channels/SelectionKey;)V
-Ljava/nio/channels/spi/AbstractSelectionKey;->invalidate()V
-Ljava/nio/channels/spi/AbstractSelectionKey;->valid:Z
-Ljava/nio/channels/spi/AbstractSelector;->cancel(Ljava/nio/channels/SelectionKey;)V
-Ljava/nio/channels/spi/AbstractSelector;->cancelledKeys:Ljava/util/Set;
-Ljava/nio/channels/spi/AbstractSelector;->interruptor:Lsun/nio/ch/Interruptible;
-Ljava/nio/channels/spi/AbstractSelector;->provider:Ljava/nio/channels/spi/SelectorProvider;
-Ljava/nio/channels/spi/AbstractSelector;->selectorOpen:Ljava/util/concurrent/atomic/AtomicBoolean;
-Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;-><init>()V
-Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->load()Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->loadProviderAsService()Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->loadProviderFromProperty()Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider;
-Ljava/nio/channels/spi/AsynchronousChannelProvider;-><init>(Ljava/lang/Void;)V
-Ljava/nio/channels/spi/AsynchronousChannelProvider;->checkPermission()Ljava/lang/Void;
-Ljava/nio/channels/spi/SelectorProvider;->loadProviderAsService()Z
-Ljava/nio/channels/spi/SelectorProvider;->loadProviderFromProperty()Z
-Ljava/nio/channels/spi/SelectorProvider;->lock:Ljava/lang/Object;
-Ljava/nio/channels/spi/SelectorProvider;->provider:Ljava/nio/channels/spi/SelectorProvider;
-Ljava/nio/CharBuffer;-><init>(IIII)V
-Ljava/nio/CharBuffer;-><init>(IIII[CI)V
-Ljava/nio/CharBuffer;->compare(CC)I
-Ljava/nio/CharBuffer;->equals(CC)Z
-Ljava/nio/CharBuffer;->getUnchecked(I)C
-Ljava/nio/CharBuffer;->hb:[C
-Ljava/nio/CharBuffer;->isReadOnly:Z
-Ljava/nio/CharBuffer;->offset:I
-Ljava/nio/charset/Charset;->aliases:[Ljava/lang/String;
-Ljava/nio/charset/Charset;->aliasSet:Ljava/util/Set;
-Ljava/nio/charset/Charset;->atBugLevel(Ljava/lang/String;)Z
-Ljava/nio/charset/Charset;->bugLevel:Ljava/lang/String;
-Ljava/nio/charset/Charset;->cache(Ljava/lang/String;Ljava/nio/charset/Charset;)V
-Ljava/nio/charset/Charset;->cache1:Ljava/util/Map$Entry;
-Ljava/nio/charset/Charset;->cache2:Ljava/util/HashMap;
-Ljava/nio/charset/Charset;->checkName(Ljava/lang/String;)V
-Ljava/nio/charset/Charset;->forNameUEE(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/nio/charset/Charset;->gate:Ljava/lang/ThreadLocal;
-Ljava/nio/charset/Charset;->lookup(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/nio/charset/Charset;->lookup2(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/nio/charset/Charset;->lookupViaProviders(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/nio/charset/Charset;->name:Ljava/lang/String;
-Ljava/nio/charset/Charset;->providers()Ljava/util/Iterator;
-Ljava/nio/charset/Charset;->put(Ljava/util/Iterator;Ljava/util/Map;)V
-Ljava/nio/charset/CharsetDecoder;-><init>(Ljava/nio/charset/Charset;FFLjava/lang/String;)V
-Ljava/nio/charset/CharsetDecoder;->averageCharsPerByte:F
-Ljava/nio/charset/CharsetDecoder;->charset:Ljava/nio/charset/Charset;
-Ljava/nio/charset/CharsetDecoder;->malformedInputAction:Ljava/nio/charset/CodingErrorAction;
-Ljava/nio/charset/CharsetDecoder;->maxCharsPerByte:F
-Ljava/nio/charset/CharsetDecoder;->replacement:Ljava/lang/String;
-Ljava/nio/charset/CharsetDecoder;->state:I
-Ljava/nio/charset/CharsetDecoder;->stateNames:[Ljava/lang/String;
-Ljava/nio/charset/CharsetDecoder;->ST_CODING:I
-Ljava/nio/charset/CharsetDecoder;->ST_END:I
-Ljava/nio/charset/CharsetDecoder;->ST_FLUSHED:I
-Ljava/nio/charset/CharsetDecoder;->ST_RESET:I
-Ljava/nio/charset/CharsetDecoder;->throwIllegalStateException(II)V
-Ljava/nio/charset/CharsetDecoder;->unmappableCharacterAction:Ljava/nio/charset/CodingErrorAction;
-Ljava/nio/charset/CharsetEncoder;-><init>(Ljava/nio/charset/Charset;FF[BZ)V
-Ljava/nio/charset/CharsetEncoder;->averageBytesPerChar:F
-Ljava/nio/charset/CharsetEncoder;->cachedDecoder:Ljava/lang/ref/WeakReference;
-Ljava/nio/charset/CharsetEncoder;->charset:Ljava/nio/charset/Charset;
-Ljava/nio/charset/CharsetEncoder;->malformedInputAction:Ljava/nio/charset/CodingErrorAction;
-Ljava/nio/charset/CharsetEncoder;->maxBytesPerChar:F
-Ljava/nio/charset/CharsetEncoder;->replacement:[B
-Ljava/nio/charset/CharsetEncoder;->state:I
-Ljava/nio/charset/CharsetEncoder;->stateNames:[Ljava/lang/String;
-Ljava/nio/charset/CharsetEncoder;->ST_CODING:I
-Ljava/nio/charset/CharsetEncoder;->ST_END:I
-Ljava/nio/charset/CharsetEncoder;->ST_FLUSHED:I
-Ljava/nio/charset/CharsetEncoder;->ST_RESET:I
-Ljava/nio/charset/CharsetEncoder;->throwIllegalStateException(II)V
-Ljava/nio/charset/CharsetEncoder;->unmappableCharacterAction:Ljava/nio/charset/CodingErrorAction;
-Ljava/nio/charset/CoderResult$Cache;-><init>()V
-Ljava/nio/charset/CoderResult$Cache;->cache:Ljava/util/Map;
-Ljava/nio/charset/CoderResult$Cache;->create(I)Ljava/nio/charset/CoderResult;
-Ljava/nio/charset/CoderResult$Cache;->get(I)Ljava/nio/charset/CoderResult;
-Ljava/nio/charset/CoderResult;-><init>(II)V
-Ljava/nio/charset/CoderResult;->CR_ERROR_MIN:I
-Ljava/nio/charset/CoderResult;->CR_MALFORMED:I
-Ljava/nio/charset/CoderResult;->CR_OVERFLOW:I
-Ljava/nio/charset/CoderResult;->CR_UNDERFLOW:I
-Ljava/nio/charset/CoderResult;->CR_UNMAPPABLE:I
-Ljava/nio/charset/CoderResult;->length:I
-Ljava/nio/charset/CoderResult;->malformedCache:Ljava/nio/charset/CoderResult$Cache;
-Ljava/nio/charset/CoderResult;->names:[Ljava/lang/String;
-Ljava/nio/charset/CoderResult;->type:I
-Ljava/nio/charset/CoderResult;->unmappableCache:Ljava/nio/charset/CoderResult$Cache;
-Ljava/nio/charset/CodingErrorAction;-><init>(Ljava/lang/String;)V
-Ljava/nio/charset/CodingErrorAction;->name:Ljava/lang/String;
-Ljava/nio/charset/IllegalCharsetNameException;->charsetName:Ljava/lang/String;
-Ljava/nio/charset/MalformedInputException;->inputLength:I
-Ljava/nio/charset/ModifiedUtf8;-><init>()V
-Ljava/nio/charset/ModifiedUtf8;->countBytes(Ljava/lang/String;Z)J
-Ljava/nio/charset/ModifiedUtf8;->decode([B[CII)Ljava/lang/String;
-Ljava/nio/charset/ModifiedUtf8;->encode(Ljava/lang/String;)[B
-Ljava/nio/charset/ModifiedUtf8;->encode([BILjava/lang/String;)V
-Ljava/nio/charset/StandardCharsets;-><init>()V
-Ljava/nio/charset/UnmappableCharacterException;->inputLength:I
-Ljava/nio/charset/UnsupportedCharsetException;->charsetName:Ljava/lang/String;
-Ljava/nio/DirectByteBuffer$MemoryRef;-><init>(I)V
-Ljava/nio/DirectByteBuffer$MemoryRef;-><init>(JLjava/lang/Object;)V
-Ljava/nio/DirectByteBuffer$MemoryRef;->allocatedAddress:J
-Ljava/nio/DirectByteBuffer$MemoryRef;->buffer:[B
-Ljava/nio/DirectByteBuffer$MemoryRef;->free()V
-Ljava/nio/DirectByteBuffer$MemoryRef;->isAccessible:Z
-Ljava/nio/DirectByteBuffer$MemoryRef;->isFreed:Z
-Ljava/nio/DirectByteBuffer$MemoryRef;->offset:I
-Ljava/nio/DirectByteBuffer$MemoryRef;->originalBufferObject:Ljava/lang/Object;
-Ljava/nio/DirectByteBuffer;-><init>(IJLjava/io/FileDescriptor;Ljava/lang/Runnable;Z)V
-Ljava/nio/DirectByteBuffer;-><init>(ILjava/nio/DirectByteBuffer$MemoryRef;)V
-Ljava/nio/DirectByteBuffer;-><init>(Ljava/nio/DirectByteBuffer$MemoryRef;IIIII)V
-Ljava/nio/DirectByteBuffer;-><init>(Ljava/nio/DirectByteBuffer$MemoryRef;IIIIIZ)V
-Ljava/nio/DirectByteBuffer;->cleaner:Lsun/misc/Cleaner;
-Ljava/nio/DirectByteBuffer;->get(J)B
-Ljava/nio/DirectByteBuffer;->getCharUnchecked(I)C
-Ljava/nio/DirectByteBuffer;->getDouble(J)D
-Ljava/nio/DirectByteBuffer;->getDoubleUnchecked(I)D
-Ljava/nio/DirectByteBuffer;->getFloat(J)F
-Ljava/nio/DirectByteBuffer;->getFloatUnchecked(I)F
-Ljava/nio/DirectByteBuffer;->getInt(J)I
-Ljava/nio/DirectByteBuffer;->getIntUnchecked(I)I
-Ljava/nio/DirectByteBuffer;->getLong(J)J
-Ljava/nio/DirectByteBuffer;->getLongUnchecked(I)J
-Ljava/nio/DirectByteBuffer;->getShort(J)S
-Ljava/nio/DirectByteBuffer;->getShortUnchecked(I)S
-Ljava/nio/DirectByteBuffer;->getUnchecked(I[CII)V
-Ljava/nio/DirectByteBuffer;->getUnchecked(I[DII)V
-Ljava/nio/DirectByteBuffer;->getUnchecked(I[FII)V
-Ljava/nio/DirectByteBuffer;->getUnchecked(I[III)V
-Ljava/nio/DirectByteBuffer;->getUnchecked(I[JII)V
-Ljava/nio/DirectByteBuffer;->getUnchecked(I[SII)V
-Ljava/nio/DirectByteBuffer;->isAccessible()Z
-Ljava/nio/DirectByteBuffer;->ix(I)J
-Ljava/nio/DirectByteBuffer;->memoryRef:Ljava/nio/DirectByteBuffer$MemoryRef;
-Ljava/nio/DirectByteBuffer;->put(JB)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putChar(JC)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putCharUnchecked(IC)V
-Ljava/nio/DirectByteBuffer;->putDouble(JD)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putDoubleUnchecked(ID)V
-Ljava/nio/DirectByteBuffer;->putFloat(JF)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putFloatUnchecked(IF)V
-Ljava/nio/DirectByteBuffer;->putInt(JI)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putIntUnchecked(II)V
-Ljava/nio/DirectByteBuffer;->putLong(JJ)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putLongUnchecked(IJ)V
-Ljava/nio/DirectByteBuffer;->putShort(JS)Ljava/nio/ByteBuffer;
-Ljava/nio/DirectByteBuffer;->putShortUnchecked(IS)V
-Ljava/nio/DirectByteBuffer;->putUnchecked(I[CII)V
-Ljava/nio/DirectByteBuffer;->putUnchecked(I[DII)V
-Ljava/nio/DirectByteBuffer;->putUnchecked(I[FII)V
-Ljava/nio/DirectByteBuffer;->putUnchecked(I[III)V
-Ljava/nio/DirectByteBuffer;->putUnchecked(I[JII)V
-Ljava/nio/DirectByteBuffer;->putUnchecked(I[SII)V
-Ljava/nio/DirectByteBuffer;->setAccessible(Z)V
-Ljava/nio/DirectByteBuffer;->_get(I)B
-Ljava/nio/DirectByteBuffer;->_put(IB)V
-Ljava/nio/DoubleBuffer;-><init>(IIII)V
-Ljava/nio/DoubleBuffer;-><init>(IIII[DI)V
-Ljava/nio/DoubleBuffer;->compare(DD)I
-Ljava/nio/DoubleBuffer;->equals(DD)Z
-Ljava/nio/DoubleBuffer;->hb:[D
-Ljava/nio/DoubleBuffer;->isReadOnly:Z
-Ljava/nio/DoubleBuffer;->offset:I
-Ljava/nio/file/attribute/AclEntry$Builder;-><init>(Ljava/nio/file/attribute/AclEntryType;Ljava/nio/file/attribute/UserPrincipal;Ljava/util/Set;Ljava/util/Set;)V
-Ljava/nio/file/attribute/AclEntry$Builder;->checkSet(Ljava/util/Set;Ljava/lang/Class;)V
-Ljava/nio/file/attribute/AclEntry$Builder;->flags:Ljava/util/Set;
-Ljava/nio/file/attribute/AclEntry$Builder;->perms:Ljava/util/Set;
-Ljava/nio/file/attribute/AclEntry$Builder;->type:Ljava/nio/file/attribute/AclEntryType;
-Ljava/nio/file/attribute/AclEntry$Builder;->who:Ljava/nio/file/attribute/UserPrincipal;
-Ljava/nio/file/attribute/AclEntry;-><init>(Ljava/nio/file/attribute/AclEntryType;Ljava/nio/file/attribute/UserPrincipal;Ljava/util/Set;Ljava/util/Set;)V
-Ljava/nio/file/attribute/AclEntry;->flags:Ljava/util/Set;
-Ljava/nio/file/attribute/AclEntry;->hash(ILjava/lang/Object;)I
-Ljava/nio/file/attribute/AclEntry;->hash:I
-Ljava/nio/file/attribute/AclEntry;->perms:Ljava/util/Set;
-Ljava/nio/file/attribute/AclEntry;->type:Ljava/nio/file/attribute/AclEntryType;
-Ljava/nio/file/attribute/AclEntry;->who:Ljava/nio/file/attribute/UserPrincipal;
-Ljava/nio/file/attribute/FileTime;-><init>(JLjava/util/concurrent/TimeUnit;Ljava/time/Instant;)V
-Ljava/nio/file/attribute/FileTime;->append(Ljava/lang/StringBuilder;II)Ljava/lang/StringBuilder;
-Ljava/nio/file/attribute/FileTime;->DAYS_PER_10000_YEARS:J
-Ljava/nio/file/attribute/FileTime;->HOURS_PER_DAY:J
-Ljava/nio/file/attribute/FileTime;->instant:Ljava/time/Instant;
-Ljava/nio/file/attribute/FileTime;->MAX_SECOND:J
-Ljava/nio/file/attribute/FileTime;->MICROS_PER_SECOND:J
-Ljava/nio/file/attribute/FileTime;->MILLIS_PER_SECOND:J
-Ljava/nio/file/attribute/FileTime;->MINUTES_PER_HOUR:J
-Ljava/nio/file/attribute/FileTime;->MIN_SECOND:J
-Ljava/nio/file/attribute/FileTime;->NANOS_PER_MICRO:I
-Ljava/nio/file/attribute/FileTime;->NANOS_PER_MILLI:I
-Ljava/nio/file/attribute/FileTime;->NANOS_PER_SECOND:J
-Ljava/nio/file/attribute/FileTime;->scale(JJJ)J
-Ljava/nio/file/attribute/FileTime;->SECONDS_0000_TO_1970:J
-Ljava/nio/file/attribute/FileTime;->SECONDS_PER_10000_YEARS:J
-Ljava/nio/file/attribute/FileTime;->SECONDS_PER_DAY:J
-Ljava/nio/file/attribute/FileTime;->SECONDS_PER_HOUR:J
-Ljava/nio/file/attribute/FileTime;->SECONDS_PER_MINUTE:J
-Ljava/nio/file/attribute/FileTime;->toDays()J
-Ljava/nio/file/attribute/FileTime;->toExcessNanos(J)J
-Ljava/nio/file/attribute/FileTime;->unit:Ljava/util/concurrent/TimeUnit;
-Ljava/nio/file/attribute/FileTime;->value:J
-Ljava/nio/file/attribute/FileTime;->valueAsString:Ljava/lang/String;
-Ljava/nio/file/attribute/PosixFilePermissions;-><init>()V
-Ljava/nio/file/attribute/PosixFilePermissions;->isR(C)Z
-Ljava/nio/file/attribute/PosixFilePermissions;->isSet(CC)Z
-Ljava/nio/file/attribute/PosixFilePermissions;->isW(C)Z
-Ljava/nio/file/attribute/PosixFilePermissions;->isX(C)Z
-Ljava/nio/file/attribute/PosixFilePermissions;->writeBits(Ljava/lang/StringBuilder;ZZZ)V
-Ljava/nio/file/attribute/UserPrincipalNotFoundException;->name:Ljava/lang/String;
-Ljava/nio/file/Files$AcceptAllFilter;-><init>()V
-Ljava/nio/file/Files$AcceptAllFilter;->accept(Ljava/nio/file/Path;)Z
-Ljava/nio/file/Files$AcceptAllFilter;->FILTER:Ljava/nio/file/Files$AcceptAllFilter;
-Ljava/nio/file/Files$FileTypeDetectors;-><init>()V
-Ljava/nio/file/Files$FileTypeDetectors;->createDefaultFileTypeDetector()Ljava/nio/file/spi/FileTypeDetector;
-Ljava/nio/file/Files$FileTypeDetectors;->defaultFileTypeDetector:Ljava/nio/file/spi/FileTypeDetector;
-Ljava/nio/file/Files$FileTypeDetectors;->installeDetectors:Ljava/util/List;
-Ljava/nio/file/Files$FileTypeDetectors;->loadInstalledDetectors()Ljava/util/List;
-Ljava/nio/file/Files;-><init>()V
-Ljava/nio/file/Files;->asUncheckedRunnable(Ljava/io/Closeable;)Ljava/lang/Runnable;
-Ljava/nio/file/Files;->BUFFER_SIZE:I
-Ljava/nio/file/Files;->copy(Ljava/io/InputStream;Ljava/io/OutputStream;)J
-Ljava/nio/file/Files;->MAX_BUFFER_SIZE:I
-Ljava/nio/file/Files;->provider(Ljava/nio/file/Path;)Ljava/nio/file/spi/FileSystemProvider;
-Ljava/nio/file/Files;->read(Ljava/io/InputStream;I)[B
-Ljava/nio/file/FileSystemException;->file:Ljava/lang/String;
-Ljava/nio/file/FileSystemException;->other:Ljava/lang/String;
-Ljava/nio/file/FileSystems$DefaultFileSystemHolder;-><init>()V
-Ljava/nio/file/FileSystems$DefaultFileSystemHolder;->defaultFileSystem()Ljava/nio/file/FileSystem;
-Ljava/nio/file/FileSystems$DefaultFileSystemHolder;->defaultFileSystem:Ljava/nio/file/FileSystem;
-Ljava/nio/file/FileSystems$DefaultFileSystemHolder;->getDefaultProvider()Ljava/nio/file/spi/FileSystemProvider;
-Ljava/nio/file/FileSystems;-><init>()V
-Ljava/nio/file/InvalidPathException;->index:I
-Ljava/nio/file/InvalidPathException;->input:Ljava/lang/String;
-Ljava/nio/file/LinkPermission;->checkName(Ljava/lang/String;)V
-Ljava/nio/file/Paths;-><init>()V
-Ljava/nio/file/spi/FileSystemProvider;-><init>(Ljava/lang/Void;)V
-Ljava/nio/file/spi/FileSystemProvider;->checkPermission()Ljava/lang/Void;
-Ljava/nio/file/spi/FileSystemProvider;->installedProviders:Ljava/util/List;
-Ljava/nio/file/spi/FileSystemProvider;->loadingProviders:Z
-Ljava/nio/file/spi/FileSystemProvider;->loadInstalledProviders()Ljava/util/List;
-Ljava/nio/file/spi/FileSystemProvider;->lock:Ljava/lang/Object;
-Ljava/nio/file/spi/FileTypeDetector;-><init>(Ljava/lang/Void;)V
-Ljava/nio/file/spi/FileTypeDetector;->checkPermission()Ljava/lang/Void;
-Ljava/nio/file/StandardWatchEventKinds$StdWatchEventKind;-><init>(Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/nio/file/StandardWatchEventKinds$StdWatchEventKind;->name:Ljava/lang/String;
-Ljava/nio/file/StandardWatchEventKinds$StdWatchEventKind;->type:Ljava/lang/Class;
-Ljava/nio/file/StandardWatchEventKinds;-><init>()V
-Ljava/nio/FloatBuffer;-><init>(IIII)V
-Ljava/nio/FloatBuffer;-><init>(IIII[FI)V
-Ljava/nio/FloatBuffer;->compare(FF)I
-Ljava/nio/FloatBuffer;->equals(FF)Z
-Ljava/nio/FloatBuffer;->hb:[F
-Ljava/nio/FloatBuffer;->isReadOnly:Z
-Ljava/nio/FloatBuffer;->offset:I
-Ljava/nio/IntBuffer;-><init>(IIII)V
-Ljava/nio/IntBuffer;-><init>(IIII[II)V
-Ljava/nio/IntBuffer;->compare(II)I
-Ljava/nio/IntBuffer;->equals(II)Z
-Ljava/nio/IntBuffer;->hb:[I
-Ljava/nio/IntBuffer;->isReadOnly:Z
-Ljava/nio/IntBuffer;->offset:I
-Ljava/nio/LongBuffer;-><init>(IIII)V
-Ljava/nio/LongBuffer;-><init>(IIII[JI)V
-Ljava/nio/LongBuffer;->compare(JJ)I
-Ljava/nio/LongBuffer;->equals(JJ)Z
-Ljava/nio/LongBuffer;->hb:[J
-Ljava/nio/LongBuffer;->isReadOnly:Z
-Ljava/nio/LongBuffer;->offset:I
-Ljava/nio/MappedByteBuffer;-><init>(IIII)V
-Ljava/nio/MappedByteBuffer;-><init>(IIIILjava/io/FileDescriptor;)V
-Ljava/nio/MappedByteBuffer;-><init>(IIII[BI)V
-Ljava/nio/MappedByteBuffer;->checkMapped()V
-Ljava/nio/MappedByteBuffer;->fd:Ljava/io/FileDescriptor;
-Ljava/nio/MappedByteBuffer;->force0(Ljava/io/FileDescriptor;JJ)V
-Ljava/nio/MappedByteBuffer;->isLoaded0(JJI)Z
-Ljava/nio/MappedByteBuffer;->load0(JJ)V
-Ljava/nio/MappedByteBuffer;->mappingAddress(J)J
-Ljava/nio/MappedByteBuffer;->mappingLength(J)J
-Ljava/nio/MappedByteBuffer;->mappingOffset()J
-Ljava/nio/MappedByteBuffer;->unused:B
-Ljava/nio/NIOAccess;-><init>()V
-Ljava/nio/NioUtils;-><init>()V
-Ljava/nio/NioUtils;->getFD(Ljava/nio/channels/FileChannel;)Ljava/io/FileDescriptor;
-Ljava/nio/NioUtils;->newFileChannel(Ljava/io/Closeable;Ljava/io/FileDescriptor;I)Ljava/nio/channels/FileChannel;
-Ljava/nio/ShortBuffer;-><init>(IIII)V
-Ljava/nio/ShortBuffer;-><init>(IIII[SI)V
-Ljava/nio/ShortBuffer;->compare(SS)I
-Ljava/nio/ShortBuffer;->equals(SS)Z
-Ljava/nio/ShortBuffer;->hb:[S
-Ljava/nio/ShortBuffer;->isReadOnly:Z
-Ljava/nio/ShortBuffer;->offset:I
-Ljava/security/AccessControlException;->perm:Ljava/security/Permission;
-Ljava/security/AccessController;-><init>()V
-Ljava/security/AlgorithmParameterGenerator;->algorithm:Ljava/lang/String;
-Ljava/security/AlgorithmParameterGenerator;->paramGenSpi:Ljava/security/AlgorithmParameterGeneratorSpi;
-Ljava/security/AlgorithmParameterGenerator;->provider:Ljava/security/Provider;
-Ljava/security/AlgorithmParameters;->algorithm:Ljava/lang/String;
-Ljava/security/AlgorithmParameters;->initialized:Z
-Ljava/security/AlgorithmParameters;->paramSpi:Ljava/security/AlgorithmParametersSpi;
-Ljava/security/AlgorithmParameters;->provider:Ljava/security/Provider;
-Ljava/security/cert/Certificate$CertificateRep;->data:[B
-Ljava/security/cert/Certificate$CertificateRep;->type:Ljava/lang/String;
-Ljava/security/cert/Certificate;->hash:I
-Ljava/security/cert/Certificate;->type:Ljava/lang/String;
-Ljava/security/cert/CertificateFactory;->certFacSpi:Ljava/security/cert/CertificateFactorySpi;
-Ljava/security/cert/CertificateFactory;->provider:Ljava/security/Provider;
-Ljava/security/cert/CertificateFactory;->type:Ljava/lang/String;
-Ljava/security/cert/CertificateRevokedException;->authority:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/CertificateRevokedException;->extensions:Ljava/util/Map;
-Ljava/security/cert/CertificateRevokedException;->reason:Ljava/security/cert/CRLReason;
-Ljava/security/cert/CertificateRevokedException;->revocationDate:Ljava/util/Date;
-Ljava/security/cert/CertPath$CertPathRep;->data:[B
-Ljava/security/cert/CertPath$CertPathRep;->type:Ljava/lang/String;
-Ljava/security/cert/CertPath;->type:Ljava/lang/String;
-Ljava/security/cert/CertPathBuilder;->algorithm:Ljava/lang/String;
-Ljava/security/cert/CertPathBuilder;->builderSpi:Ljava/security/cert/CertPathBuilderSpi;
-Ljava/security/cert/CertPathBuilder;->CPB_TYPE:Ljava/lang/String;
-Ljava/security/cert/CertPathBuilder;->provider:Ljava/security/Provider;
-Ljava/security/cert/CertPathValidator;->algorithm:Ljava/lang/String;
-Ljava/security/cert/CertPathValidator;->CPV_TYPE:Ljava/lang/String;
-Ljava/security/cert/CertPathValidator;->provider:Ljava/security/Provider;
-Ljava/security/cert/CertPathValidator;->validatorSpi:Ljava/security/cert/CertPathValidatorSpi;
-Ljava/security/cert/CertPathValidatorException;->certPath:Ljava/security/cert/CertPath;
-Ljava/security/cert/CertPathValidatorException;->index:I
-Ljava/security/cert/CertPathValidatorException;->reason:Ljava/security/cert/CertPathValidatorException$Reason;
-Ljava/security/cert/CertStore;->CERTSTORE_TYPE:Ljava/lang/String;
-Ljava/security/cert/CertStore;->handleException(Ljava/security/NoSuchAlgorithmException;)Ljava/security/cert/CertStore;
-Ljava/security/cert/CertStore;->params:Ljava/security/cert/CertStoreParameters;
-Ljava/security/cert/CertStore;->provider:Ljava/security/Provider;
-Ljava/security/cert/CertStore;->storeSpi:Ljava/security/cert/CertStoreSpi;
-Ljava/security/cert/CertStore;->type:Ljava/lang/String;
-Ljava/security/cert/CollectionCertStoreParameters;->coll:Ljava/util/Collection;
-Ljava/security/cert/CRL;->type:Ljava/lang/String;
-Ljava/security/cert/LDAPCertStoreParameters;->LDAP_DEFAULT_PORT:I
-Ljava/security/cert/LDAPCertStoreParameters;->port:I
-Ljava/security/cert/LDAPCertStoreParameters;->serverName:Ljava/lang/String;
-Ljava/security/cert/PKIXBuilderParameters;->maxPathLength:I
-Ljava/security/cert/PKIXCertPathBuilderResult;->certPath:Ljava/security/cert/CertPath;
-Ljava/security/cert/PKIXCertPathValidatorResult;->policyTree:Ljava/security/cert/PolicyNode;
-Ljava/security/cert/PKIXCertPathValidatorResult;->subjectPublicKey:Ljava/security/PublicKey;
-Ljava/security/cert/PKIXCertPathValidatorResult;->trustAnchor:Ljava/security/cert/TrustAnchor;
-Ljava/security/cert/PKIXParameters;->anyPolicyInhibited:Z
-Ljava/security/cert/PKIXParameters;->certPathCheckers:Ljava/util/List;
-Ljava/security/cert/PKIXParameters;->certSelector:Ljava/security/cert/CertSelector;
-Ljava/security/cert/PKIXParameters;->certStores:Ljava/util/List;
-Ljava/security/cert/PKIXParameters;->date:Ljava/util/Date;
-Ljava/security/cert/PKIXParameters;->explicitPolicyRequired:Z
-Ljava/security/cert/PKIXParameters;->policyMappingInhibited:Z
-Ljava/security/cert/PKIXParameters;->policyQualifiersRejected:Z
-Ljava/security/cert/PKIXParameters;->revocationEnabled:Z
-Ljava/security/cert/PKIXParameters;->sigProvider:Ljava/lang/String;
-Ljava/security/cert/PKIXParameters;->unmodInitialPolicies:Ljava/util/Set;
-Ljava/security/cert/PKIXParameters;->unmodTrustAnchors:Ljava/util/Set;
-Ljava/security/cert/PKIXRevocationChecker;->ocspExtensions:Ljava/util/List;
-Ljava/security/cert/PKIXRevocationChecker;->ocspResponder:Ljava/net/URI;
-Ljava/security/cert/PKIXRevocationChecker;->ocspResponderCert:Ljava/security/cert/X509Certificate;
-Ljava/security/cert/PKIXRevocationChecker;->ocspResponses:Ljava/util/Map;
-Ljava/security/cert/PKIXRevocationChecker;->options:Ljava/util/Set;
-Ljava/security/cert/PolicyQualifierInfo;->mData:[B
-Ljava/security/cert/PolicyQualifierInfo;->mEncoded:[B
-Ljava/security/cert/PolicyQualifierInfo;->mId:Ljava/lang/String;
-Ljava/security/cert/PolicyQualifierInfo;->pqiString:Ljava/lang/String;
-Ljava/security/cert/TrustAnchor;->caName:Ljava/lang/String;
-Ljava/security/cert/TrustAnchor;->caPrincipal:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/TrustAnchor;->nc:Lsun/security/x509/NameConstraintsExtension;
-Ljava/security/cert/TrustAnchor;->ncBytes:[B
-Ljava/security/cert/TrustAnchor;->pubKey:Ljava/security/PublicKey;
-Ljava/security/cert/TrustAnchor;->setNameConstraints([B)V
-Ljava/security/cert/TrustAnchor;->trustedCert:Ljava/security/cert/X509Certificate;
-Ljava/security/cert/X509Certificate;->issuerX500Principal:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/X509Certificate;->subjectX500Principal:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/X509CertSelector;->addPathToNameInternal(ILjava/lang/Object;)V
-Ljava/security/cert/X509CertSelector;->addSubjectAlternativeNameInternal(ILjava/lang/Object;)V
-Ljava/security/cert/X509CertSelector;->ANY_EXTENDED_KEY_USAGE:Lsun/security/util/ObjectIdentifier;
-Ljava/security/cert/X509CertSelector;->authorityKeyID:[B
-Ljava/security/cert/X509CertSelector;->basicConstraints:I
-Ljava/security/cert/X509CertSelector;->certificateValid:Ljava/util/Date;
-Ljava/security/cert/X509CertSelector;->CERT_POLICIES_ID:I
-Ljava/security/cert/X509CertSelector;->cloneAndCheckNames(Ljava/util/Collection;)Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->cloneNames(Ljava/util/Collection;)Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->cloneSet(Ljava/util/Set;)Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->debug:Lsun/security/util/Debug;
-Ljava/security/cert/X509CertSelector;->equalNames(Ljava/util/Collection;Ljava/util/Collection;)Z
-Ljava/security/cert/X509CertSelector;->EXTENDED_KEY_USAGE_ID:I
-Ljava/security/cert/X509CertSelector;->EXTENSION_OIDS:[Ljava/lang/String;
-Ljava/security/cert/X509CertSelector;->FALSE:Ljava/lang/Boolean;
-Ljava/security/cert/X509CertSelector;->getExtensionObject(Ljava/security/cert/X509Certificate;I)Ljava/security/cert/Extension;
-Ljava/security/cert/X509CertSelector;->issuer:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/X509CertSelector;->keyPurposeOIDSet:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->keyPurposeSet:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->keyUsage:[Z
-Ljava/security/cert/X509CertSelector;->keyUsageToString([Z)Ljava/lang/String;
-Ljava/security/cert/X509CertSelector;->makeGeneralNameInterface(ILjava/lang/Object;)Lsun/security/x509/GeneralNameInterface;
-Ljava/security/cert/X509CertSelector;->matchAllSubjectAltNames:Z
-Ljava/security/cert/X509CertSelector;->matchAuthorityKeyID(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchBasicConstraints(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchExcluded(Lsun/security/x509/GeneralSubtrees;)Z
-Ljava/security/cert/X509CertSelector;->matchExtendedKeyUsage(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchKeyUsage(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchNameConstraints(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchPathToNames(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchPermitted(Lsun/security/x509/GeneralSubtrees;)Z
-Ljava/security/cert/X509CertSelector;->matchPolicy(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchPrivateKeyValid(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchSubjectAlternativeNames(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchSubjectKeyID(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->matchSubjectPublicKeyAlgID(Ljava/security/cert/X509Certificate;)Z
-Ljava/security/cert/X509CertSelector;->NAME_ANY:I
-Ljava/security/cert/X509CertSelector;->NAME_CONSTRAINTS_ID:I
-Ljava/security/cert/X509CertSelector;->NAME_DIRECTORY:I
-Ljava/security/cert/X509CertSelector;->NAME_DNS:I
-Ljava/security/cert/X509CertSelector;->NAME_EDI:I
-Ljava/security/cert/X509CertSelector;->NAME_IP:I
-Ljava/security/cert/X509CertSelector;->NAME_OID:I
-Ljava/security/cert/X509CertSelector;->NAME_RFC822:I
-Ljava/security/cert/X509CertSelector;->NAME_URI:I
-Ljava/security/cert/X509CertSelector;->NAME_X400:I
-Ljava/security/cert/X509CertSelector;->nc:Lsun/security/x509/NameConstraintsExtension;
-Ljava/security/cert/X509CertSelector;->ncBytes:[B
-Ljava/security/cert/X509CertSelector;->NUM_OF_EXTENSIONS:I
-Ljava/security/cert/X509CertSelector;->parseNames(Ljava/util/Collection;)Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->pathToGeneralNames:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->pathToNames:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->policy:Lsun/security/x509/CertificatePolicySet;
-Ljava/security/cert/X509CertSelector;->policySet:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->privateKeyValid:Ljava/util/Date;
-Ljava/security/cert/X509CertSelector;->PRIVATE_KEY_USAGE_ID:I
-Ljava/security/cert/X509CertSelector;->serialNumber:Ljava/math/BigInteger;
-Ljava/security/cert/X509CertSelector;->setPathToNamesInternal(Ljava/util/Set;)V
-Ljava/security/cert/X509CertSelector;->subject:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/X509CertSelector;->subjectAlternativeGeneralNames:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->subjectAlternativeNames:Ljava/util/Set;
-Ljava/security/cert/X509CertSelector;->subjectKeyID:[B
-Ljava/security/cert/X509CertSelector;->subjectPublicKey:Ljava/security/PublicKey;
-Ljava/security/cert/X509CertSelector;->subjectPublicKeyAlgID:Lsun/security/util/ObjectIdentifier;
-Ljava/security/cert/X509CertSelector;->subjectPublicKeyBytes:[B
-Ljava/security/cert/X509CertSelector;->SUBJECT_ALT_NAME_ID:I
-Ljava/security/cert/X509CertSelector;->x509Cert:Ljava/security/cert/X509Certificate;
-Ljava/security/cert/X509CRL;->issuerPrincipal:Ljavax/security/auth/x500/X500Principal;
-Ljava/security/cert/X509CRLSelector;->addIssuerNameInternal(Ljava/lang/Object;Ljavax/security/auth/x500/X500Principal;)V
-Ljava/security/cert/X509CRLSelector;->certChecking:Ljava/security/cert/X509Certificate;
-Ljava/security/cert/X509CRLSelector;->cloneAndCheckIssuerNames(Ljava/util/Collection;)Ljava/util/HashSet;
-Ljava/security/cert/X509CRLSelector;->cloneIssuerNames(Ljava/util/Collection;)Ljava/util/HashSet;
-Ljava/security/cert/X509CRLSelector;->dateAndTime:Ljava/util/Date;
-Ljava/security/cert/X509CRLSelector;->debug:Lsun/security/util/Debug;
-Ljava/security/cert/X509CRLSelector;->issuerNames:Ljava/util/HashSet;
-Ljava/security/cert/X509CRLSelector;->issuerX500Principals:Ljava/util/HashSet;
-Ljava/security/cert/X509CRLSelector;->maxCRL:Ljava/math/BigInteger;
-Ljava/security/cert/X509CRLSelector;->minCRL:Ljava/math/BigInteger;
-Ljava/security/cert/X509CRLSelector;->parseIssuerNames(Ljava/util/Collection;)Ljava/util/HashSet;
-Ljava/security/cert/X509CRLSelector;->setDateAndTime(Ljava/util/Date;J)V
-Ljava/security/cert/X509CRLSelector;->skew:J
-Ljava/security/CodeSigner;->myhash:I
-Ljava/security/CodeSigner;->signerCertPath:Ljava/security/cert/CertPath;
-Ljava/security/CodeSigner;->timestamp:Ljava/security/Timestamp;
-Ljava/security/CodeSource;->location:Ljava/net/URL;
-Ljava/security/DigestInputStream;->on:Z
-Ljava/security/DigestOutputStream;->on:Z
-Ljava/security/DomainLoadStoreParameter;->configuration:Ljava/net/URI;
-Ljava/security/DomainLoadStoreParameter;->protectionParams:Ljava/util/Map;
-Ljava/security/GuardedObject;->guard:Ljava/security/Guard;
-Ljava/security/GuardedObject;->object:Ljava/lang/Object;
-Ljava/security/Identity;->certificates:Ljava/util/Vector;
-Ljava/security/Identity;->check(Ljava/lang/String;)V
-Ljava/security/Identity;->fullName()Ljava/lang/String;
-Ljava/security/Identity;->info:Ljava/lang/String;
-Ljava/security/Identity;->keyEquals(Ljava/security/PublicKey;Ljava/security/PublicKey;)Z
-Ljava/security/Identity;->name:Ljava/lang/String;
-Ljava/security/Identity;->printCertificates()Ljava/lang/String;
-Ljava/security/Identity;->printKeys()Ljava/lang/String;
-Ljava/security/Identity;->publicKey:Ljava/security/PublicKey;
-Ljava/security/Identity;->scope:Ljava/security/IdentityScope;
-Ljava/security/IdentityScope;->check(Ljava/lang/String;)V
-Ljava/security/IdentityScope;->initializeSystemScope()V
-Ljava/security/IdentityScope;->scope:Ljava/security/IdentityScope;
-Ljava/security/KeyFactory;-><init>(Ljava/lang/String;)V
-Ljava/security/KeyFactory;->algorithm:Ljava/lang/String;
-Ljava/security/KeyFactory;->debug:Lsun/security/util/Debug;
-Ljava/security/KeyFactory;->lock:Ljava/lang/Object;
-Ljava/security/KeyFactory;->nextSpi(Ljava/security/KeyFactorySpi;)Ljava/security/KeyFactorySpi;
-Ljava/security/KeyFactory;->provider:Ljava/security/Provider;
-Ljava/security/KeyFactory;->serviceIterator:Ljava/util/Iterator;
-Ljava/security/KeyFactory;->spi:Ljava/security/KeyFactorySpi;
-Ljava/security/KeyPair;->privateKey:Ljava/security/PrivateKey;
-Ljava/security/KeyPair;->publicKey:Ljava/security/PublicKey;
-Ljava/security/KeyPairGenerator$Delegate;-><init>(Ljava/security/KeyPairGeneratorSpi;Ljava/lang/String;)V
-Ljava/security/KeyPairGenerator$Delegate;-><init>(Lsun/security/jca/GetInstance$Instance;Ljava/util/Iterator;Ljava/lang/String;)V
-Ljava/security/KeyPairGenerator$Delegate;->disableFailover()V
-Ljava/security/KeyPairGenerator$Delegate;->initKeySize:I
-Ljava/security/KeyPairGenerator$Delegate;->initParams:Ljava/security/spec/AlgorithmParameterSpec;
-Ljava/security/KeyPairGenerator$Delegate;->initRandom:Ljava/security/SecureRandom;
-Ljava/security/KeyPairGenerator$Delegate;->initType:I
-Ljava/security/KeyPairGenerator$Delegate;->I_NONE:I
-Ljava/security/KeyPairGenerator$Delegate;->I_PARAMS:I
-Ljava/security/KeyPairGenerator$Delegate;->I_SIZE:I
-Ljava/security/KeyPairGenerator$Delegate;->lock:Ljava/lang/Object;
-Ljava/security/KeyPairGenerator$Delegate;->nextSpi(Ljava/security/KeyPairGeneratorSpi;Z)Ljava/security/KeyPairGeneratorSpi;
-Ljava/security/KeyPairGenerator$Delegate;->serviceIterator:Ljava/util/Iterator;
-Ljava/security/KeyPairGenerator$Delegate;->spi:Ljava/security/KeyPairGeneratorSpi;
-Ljava/security/KeyPairGenerator;->algorithm:Ljava/lang/String;
-Ljava/security/KeyPairGenerator;->disableFailover()V
-Ljava/security/KeyPairGenerator;->provider:Ljava/security/Provider;
-Ljava/security/KeyRep;->algorithm:Ljava/lang/String;
-Ljava/security/KeyRep;->encoded:[B
-Ljava/security/KeyRep;->format:Ljava/lang/String;
-Ljava/security/KeyRep;->PKCS8:Ljava/lang/String;
-Ljava/security/KeyRep;->RAW:Ljava/lang/String;
-Ljava/security/KeyRep;->type:Ljava/security/KeyRep$Type;
-Ljava/security/KeyRep;->X509:Ljava/lang/String;
-Ljava/security/KeyStore$Builder$FileBuilder;-><init>(Ljava/lang/String;Ljava/security/Provider;Ljava/io/File;Ljava/security/KeyStore$ProtectionParameter;Ljava/security/AccessControlContext;)V
-Ljava/security/KeyStore$Builder$FileBuilder;->context:Ljava/security/AccessControlContext;
-Ljava/security/KeyStore$Builder$FileBuilder;->file:Ljava/io/File;
-Ljava/security/KeyStore$Builder$FileBuilder;->keyProtection:Ljava/security/KeyStore$ProtectionParameter;
-Ljava/security/KeyStore$Builder$FileBuilder;->keyStore:Ljava/security/KeyStore;
-Ljava/security/KeyStore$Builder$FileBuilder;->oldException:Ljava/lang/Throwable;
-Ljava/security/KeyStore$Builder$FileBuilder;->protection:Ljava/security/KeyStore$ProtectionParameter;
-Ljava/security/KeyStore$Builder$FileBuilder;->provider:Ljava/security/Provider;
-Ljava/security/KeyStore$Builder$FileBuilder;->type:Ljava/lang/String;
-Ljava/security/KeyStore$Builder;->MAX_CALLBACK_TRIES:I
-Ljava/security/KeyStore$CallbackHandlerProtection;->handler:Ljavax/security/auth/callback/CallbackHandler;
-Ljava/security/KeyStore$PasswordProtection;->destroyed:Z
-Ljava/security/KeyStore$PasswordProtection;->password:[C
-Ljava/security/KeyStore$PasswordProtection;->protectionAlgorithm:Ljava/lang/String;
-Ljava/security/KeyStore$PasswordProtection;->protectionParameters:Ljava/security/spec/AlgorithmParameterSpec;
-Ljava/security/KeyStore$PrivateKeyEntry;->attributes:Ljava/util/Set;
-Ljava/security/KeyStore$PrivateKeyEntry;->chain:[Ljava/security/cert/Certificate;
-Ljava/security/KeyStore$PrivateKeyEntry;->privKey:Ljava/security/PrivateKey;
-Ljava/security/KeyStore$SecretKeyEntry;->attributes:Ljava/util/Set;
-Ljava/security/KeyStore$SecretKeyEntry;->sKey:Ljavax/crypto/SecretKey;
-Ljava/security/KeyStore$SimpleLoadStoreParameter;-><init>(Ljava/security/KeyStore$ProtectionParameter;)V
-Ljava/security/KeyStore$SimpleLoadStoreParameter;->protection:Ljava/security/KeyStore$ProtectionParameter;
-Ljava/security/KeyStore$TrustedCertificateEntry;->attributes:Ljava/util/Set;
-Ljava/security/KeyStore$TrustedCertificateEntry;->cert:Ljava/security/cert/Certificate;
-Ljava/security/KeyStore;->initialized:Z
-Ljava/security/KeyStore;->KEYSTORE_TYPE:Ljava/lang/String;
-Ljava/security/KeyStore;->provider:Ljava/security/Provider;
-Ljava/security/KeyStore;->type:Ljava/lang/String;
-Ljava/security/MessageDigest$Delegate;-><init>(Ljava/security/MessageDigestSpi;Ljava/lang/String;)V
-Ljava/security/MessageDigest$Delegate;->digestSpi:Ljava/security/MessageDigestSpi;
-Ljava/security/MessageDigest;->algorithm:Ljava/lang/String;
-Ljava/security/MessageDigest;->INITIAL:I
-Ljava/security/MessageDigest;->IN_PROGRESS:I
-Ljava/security/MessageDigest;->provider:Ljava/security/Provider;
-Ljava/security/MessageDigest;->state:I
-Ljava/security/MessageDigestSpi;->tempArray:[B
-Ljava/security/Permission;->name:Ljava/lang/String;
-Ljava/security/PKCS12Attribute;->COLON_SEPARATED_HEX_PAIRS:Ljava/util/regex/Pattern;
-Ljava/security/PKCS12Attribute;->encode(Lsun/security/util/ObjectIdentifier;[Ljava/lang/String;)[B
-Ljava/security/PKCS12Attribute;->encoded:[B
-Ljava/security/PKCS12Attribute;->hashValue:I
-Ljava/security/PKCS12Attribute;->name:Ljava/lang/String;
-Ljava/security/PKCS12Attribute;->parse([B)V
-Ljava/security/PKCS12Attribute;->value:Ljava/lang/String;
-Ljava/security/Policy$UnsupportedEmptyCollection;-><init>()V
-Ljava/security/PrivilegedActionException;->exception:Ljava/lang/Exception;
-Ljava/security/Provider$EngineDescription;-><init>(Ljava/lang/String;ZLjava/lang/String;)V
-Ljava/security/Provider$EngineDescription;->constructorParameterClass:Ljava/lang/Class;
-Ljava/security/Provider$EngineDescription;->constructorParameterClassName:Ljava/lang/String;
-Ljava/security/Provider$EngineDescription;->getConstructorParameterClass()Ljava/lang/Class;
-Ljava/security/Provider$EngineDescription;->name:Ljava/lang/String;
-Ljava/security/Provider$EngineDescription;->supportsParameter:Z
-Ljava/security/Provider$Service;-><init>(Ljava/security/Provider;)V
-Ljava/security/Provider$Service;->addAlias(Ljava/lang/String;)V
-Ljava/security/Provider$Service;->addAttribute(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/security/Provider$Service;->algorithm:Ljava/lang/String;
-Ljava/security/Provider$Service;->aliases:Ljava/util/List;
-Ljava/security/Provider$Service;->attributes:Ljava/util/Map;
-Ljava/security/Provider$Service;->CLASS0:[Ljava/lang/Class;
-Ljava/security/Provider$Service;->className:Ljava/lang/String;
-Ljava/security/Provider$Service;->classRef:Ljava/lang/ref/Reference;
-Ljava/security/Provider$Service;->getAliases()Ljava/util/List;
-Ljava/security/Provider$Service;->getImplClass()Ljava/lang/Class;
-Ljava/security/Provider$Service;->getKeyClass(Ljava/lang/String;)Ljava/lang/Class;
-Ljava/security/Provider$Service;->hasKeyAttributes()Z
-Ljava/security/Provider$Service;->hasKeyAttributes:Ljava/lang/Boolean;
-Ljava/security/Provider$Service;->isValid()Z
-Ljava/security/Provider$Service;->newInstanceGeneric(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/security/Provider$Service;->provider:Ljava/security/Provider;
-Ljava/security/Provider$Service;->registered:Z
-Ljava/security/Provider$Service;->supportedClasses:[Ljava/lang/Class;
-Ljava/security/Provider$Service;->supportedFormats:[Ljava/lang/String;
-Ljava/security/Provider$Service;->supportsKeyClass(Ljava/security/Key;)Z
-Ljava/security/Provider$Service;->supportsKeyFormat(Ljava/security/Key;)Z
-Ljava/security/Provider$Service;->type:Ljava/lang/String;
-Ljava/security/Provider$ServiceKey;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
-Ljava/security/Provider$ServiceKey;->algorithm:Ljava/lang/String;
-Ljava/security/Provider$ServiceKey;->matches(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/security/Provider$ServiceKey;->originalAlgorithm:Ljava/lang/String;
-Ljava/security/Provider$ServiceKey;->type:Ljava/lang/String;
-Ljava/security/Provider$UString;-><init>(Ljava/lang/String;)V
-Ljava/security/Provider$UString;->lowerString:Ljava/lang/String;
-Ljava/security/Provider$UString;->string:Ljava/lang/String;
-Ljava/security/Provider;->addEngine(Ljava/lang/String;ZLjava/lang/String;)V
-Ljava/security/Provider;->ALIAS_LENGTH:I
-Ljava/security/Provider;->ALIAS_PREFIX:Ljava/lang/String;
-Ljava/security/Provider;->ALIAS_PREFIX_LOWER:Ljava/lang/String;
-Ljava/security/Provider;->check(Ljava/lang/String;)V
-Ljava/security/Provider;->checkInitialized()V
-Ljava/security/Provider;->checkLegacy(Ljava/lang/Object;)Z
-Ljava/security/Provider;->debug:Lsun/security/util/Debug;
-Ljava/security/Provider;->ensureLegacyParsed()V
-Ljava/security/Provider;->entrySet:Ljava/util/Set;
-Ljava/security/Provider;->entrySetCallCount:I
-Ljava/security/Provider;->getEngineName(Ljava/lang/String;)Ljava/lang/String;
-Ljava/security/Provider;->getTypeAndAlgorithm(Ljava/lang/String;)[Ljava/lang/String;
-Ljava/security/Provider;->implClear()V
-Ljava/security/Provider;->implCompute(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
-Ljava/security/Provider;->implComputeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
-Ljava/security/Provider;->implComputeIfPresent(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
-Ljava/security/Provider;->implMerge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
-Ljava/security/Provider;->implPut(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/security/Provider;->implPutAll(Ljava/util/Map;)V
-Ljava/security/Provider;->implPutIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/security/Provider;->implRemove(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/security/Provider;->implRemove(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/security/Provider;->implRemoveService(Ljava/security/Provider$Service;)V
-Ljava/security/Provider;->implReplace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/security/Provider;->implReplace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/security/Provider;->implReplaceAll(Ljava/util/function/BiFunction;)V
-Ljava/security/Provider;->info:Ljava/lang/String;
-Ljava/security/Provider;->initialized:Z
-Ljava/security/Provider;->isRegistered()Z
-Ljava/security/Provider;->knownEngines:Ljava/util/Map;
-Ljava/security/Provider;->legacyChanged:Z
-Ljava/security/Provider;->legacyMap:Ljava/util/Map;
-Ljava/security/Provider;->legacyStrings:Ljava/util/Map;
-Ljava/security/Provider;->name:Ljava/lang/String;
-Ljava/security/Provider;->parseLegacyPut(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/security/Provider;->previousKey:Ljava/security/Provider$ServiceKey;
-Ljava/security/Provider;->putId()V
-Ljava/security/Provider;->putPropertyStrings(Ljava/security/Provider$Service;)V
-Ljava/security/Provider;->registered:Z
-Ljava/security/Provider;->removeInvalidServices(Ljava/util/Map;)V
-Ljava/security/Provider;->removePropertyStrings(Ljava/security/Provider$Service;)V
-Ljava/security/Provider;->serviceMap:Ljava/util/Map;
-Ljava/security/Provider;->servicesChanged:Z
-Ljava/security/Provider;->serviceSet:Ljava/util/Set;
-Ljava/security/Provider;->setRegistered()V
-Ljava/security/Provider;->setUnregistered()V
-Ljava/security/Provider;->version:D
-Ljava/security/Provider;->warmUpServiceProvision()V
-Ljava/security/SecureClassLoader;->check()V
-Ljava/security/SecureClassLoader;->debug:Lsun/security/util/Debug;
-Ljava/security/SecureClassLoader;->getProtectionDomain(Ljava/security/CodeSource;)Ljava/security/ProtectionDomain;
-Ljava/security/SecureClassLoader;->initialized:Z
-Ljava/security/SecureClassLoader;->pdcache:Ljava/util/HashMap;
-Ljava/security/SecureRandom$StrongPatternHolder;-><init>()V
-Ljava/security/SecureRandom$StrongPatternHolder;->pattern:Ljava/util/regex/Pattern;
-Ljava/security/SecureRandom;-><init>(Ljava/security/SecureRandomSpi;Ljava/security/Provider;Ljava/lang/String;)V
-Ljava/security/SecureRandom;->algorithm:Ljava/lang/String;
-Ljava/security/SecureRandom;->counter:J
-Ljava/security/SecureRandom;->digest:Ljava/security/MessageDigest;
-Ljava/security/SecureRandom;->getDefaultPRNG(Z[B)V
-Ljava/security/SecureRandom;->getPrngAlgorithm()Ljava/lang/String;
-Ljava/security/SecureRandom;->getSecureRandomSpi()Ljava/security/SecureRandomSpi;
-Ljava/security/SecureRandom;->longToByteArray(J)[B
-Ljava/security/SecureRandom;->provider:Ljava/security/Provider;
-Ljava/security/SecureRandom;->randomBytes:[B
-Ljava/security/SecureRandom;->randomBytesUsed:I
-Ljava/security/SecureRandom;->secureRandomSpi:Ljava/security/SecureRandomSpi;
-Ljava/security/SecureRandom;->seedGenerator:Ljava/security/SecureRandom;
-Ljava/security/SecureRandom;->state:[B
-Ljava/security/Security$ProviderProperty;-><init>()V
-Ljava/security/Security$ProviderProperty;->className:Ljava/lang/String;
-Ljava/security/Security$ProviderProperty;->provider:Ljava/security/Provider;
-Ljava/security/Security;-><init>()V
-Ljava/security/Security;->getAllQualifyingCandidates(Ljava/lang/String;Ljava/lang/String;[Ljava/security/Provider;)Ljava/util/LinkedHashSet;
-Ljava/security/Security;->getFilterComponents(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-Ljava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Object;
-Ljava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)[Ljava/lang/Object;
-Ljava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;)[Ljava/lang/Object;
-Ljava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;Ljava/lang/Object;)[Ljava/lang/Object;
-Ljava/security/Security;->getProviderProperty(Ljava/lang/String;)Ljava/security/Security$ProviderProperty;
-Ljava/security/Security;->getProviderProperty(Ljava/lang/String;Ljava/security/Provider;)Ljava/lang/String;
-Ljava/security/Security;->getProvidersNotUsingCache(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/security/Provider;)Ljava/util/LinkedHashSet;
-Ljava/security/Security;->getSpiClass(Ljava/lang/String;)Ljava/lang/Class;
-Ljava/security/Security;->getVersion()I
-Ljava/security/Security;->increaseVersion()V
-Ljava/security/Security;->initializeStatic()V
-Ljava/security/Security;->invalidateSMCache(Ljava/lang/String;)V
-Ljava/security/Security;->isConstraintSatisfied(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/security/Security;->isCriterionSatisfied(Ljava/security/Provider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/security/Security;->isStandardAttr(Ljava/lang/String;)Z
-Ljava/security/Security;->props:Ljava/util/Properties;
-Ljava/security/Security;->spiMap:Ljava/util/Map;
-Ljava/security/Security;->version:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/security/Signature$CipherAdapter;-><init>(Ljavax/crypto/Cipher;)V
-Ljava/security/Signature$CipherAdapter;->cipher:Ljavax/crypto/Cipher;
-Ljava/security/Signature$CipherAdapter;->data:Ljava/io/ByteArrayOutputStream;
-Ljava/security/Signature$Delegate;-><init>(Ljava/lang/String;)V
-Ljava/security/Signature$Delegate;-><init>(Ljava/security/SignatureSpi;Ljava/lang/String;)V
-Ljava/security/Signature$Delegate;->chooseFirstProvider()V
-Ljava/security/Signature$Delegate;->chooseProvider(ILjava/security/Key;Ljava/security/SecureRandom;)V
-Ljava/security/Signature$Delegate;->getCurrentSpi()Ljava/security/SignatureSpi;
-Ljava/security/Signature$Delegate;->init(Ljava/security/SignatureSpi;ILjava/security/Key;Ljava/security/SecureRandom;)V
-Ljava/security/Signature$Delegate;->I_PRIV:I
-Ljava/security/Signature$Delegate;->I_PRIV_SR:I
-Ljava/security/Signature$Delegate;->I_PUB:I
-Ljava/security/Signature$Delegate;->lock:Ljava/lang/Object;
-Ljava/security/Signature$Delegate;->newInstance(Ljava/security/Provider$Service;)Ljava/security/SignatureSpi;
-Ljava/security/Signature$Delegate;->sigSpi:Ljava/security/SignatureSpi;
-Ljava/security/Signature$Delegate;->warnCount:I
-Ljava/security/Signature;->algorithm:Ljava/lang/String;
-Ljava/security/Signature;->chooseFirstProvider()V
-Ljava/security/Signature;->getCurrentSpi()Ljava/security/SignatureSpi;
-Ljava/security/Signature;->getInstanceRSA(Ljava/security/Provider;)Ljava/security/Signature;
-Ljava/security/Signature;->isSpi(Ljava/security/Provider$Service;)Z
-Ljava/security/Signature;->provider:Ljava/security/Provider;
-Ljava/security/Signature;->rsaIds:Ljava/util/List;
-Ljava/security/Signature;->RSA_CIPHER:Ljava/lang/String;
-Ljava/security/Signature;->RSA_SIGNATURE:Ljava/lang/String;
-Ljava/security/Signature;->signatureInfo:Ljava/util/Map;
-Ljava/security/SignedObject;->content:[B
-Ljava/security/SignedObject;->sign(Ljava/security/PrivateKey;Ljava/security/Signature;)V
-Ljava/security/SignedObject;->signature:[B
-Ljava/security/SignedObject;->thealgorithm:Ljava/lang/String;
-Ljava/security/Signer;->check(Ljava/lang/String;)V
-Ljava/security/Signer;->printKeys()Ljava/lang/String;
-Ljava/security/Signer;->privateKey:Ljava/security/PrivateKey;
-Ljava/security/spec/DSAParameterSpec;->g:Ljava/math/BigInteger;
-Ljava/security/spec/DSAParameterSpec;->p:Ljava/math/BigInteger;
-Ljava/security/spec/DSAParameterSpec;->q:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPrivateKeySpec;->g:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPrivateKeySpec;->p:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPrivateKeySpec;->q:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPrivateKeySpec;->x:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPublicKeySpec;->g:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPublicKeySpec;->p:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPublicKeySpec;->q:Ljava/math/BigInteger;
-Ljava/security/spec/DSAPublicKeySpec;->y:Ljava/math/BigInteger;
-Ljava/security/spec/ECFieldF2m;->ks:[I
-Ljava/security/spec/ECFieldF2m;->m:I
-Ljava/security/spec/ECFieldF2m;->rp:Ljava/math/BigInteger;
-Ljava/security/spec/ECFieldFp;->p:Ljava/math/BigInteger;
-Ljava/security/spec/ECGenParameterSpec;->name:Ljava/lang/String;
-Ljava/security/spec/ECParameterSpec;->curve:Ljava/security/spec/EllipticCurve;
-Ljava/security/spec/ECParameterSpec;->curveName:Ljava/lang/String;
-Ljava/security/spec/ECParameterSpec;->g:Ljava/security/spec/ECPoint;
-Ljava/security/spec/ECParameterSpec;->h:I
-Ljava/security/spec/ECParameterSpec;->n:Ljava/math/BigInteger;
-Ljava/security/spec/ECPoint;-><init>()V
-Ljava/security/spec/ECPoint;->x:Ljava/math/BigInteger;
-Ljava/security/spec/ECPoint;->y:Ljava/math/BigInteger;
-Ljava/security/spec/ECPrivateKeySpec;->params:Ljava/security/spec/ECParameterSpec;
-Ljava/security/spec/ECPrivateKeySpec;->s:Ljava/math/BigInteger;
-Ljava/security/spec/ECPublicKeySpec;->params:Ljava/security/spec/ECParameterSpec;
-Ljava/security/spec/ECPublicKeySpec;->w:Ljava/security/spec/ECPoint;
-Ljava/security/spec/EllipticCurve;->a:Ljava/math/BigInteger;
-Ljava/security/spec/EllipticCurve;->b:Ljava/math/BigInteger;
-Ljava/security/spec/EllipticCurve;->checkValidity(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/lang/String;)V
-Ljava/security/spec/EllipticCurve;->field:Ljava/security/spec/ECField;
-Ljava/security/spec/EllipticCurve;->seed:[B
-Ljava/security/spec/EncodedKeySpec;->encodedKey:[B
-Ljava/security/spec/MGF1ParameterSpec;->mdName:Ljava/lang/String;
-Ljava/security/spec/PSSParameterSpec;-><init>()V
-Ljava/security/spec/PSSParameterSpec;->mdName:Ljava/lang/String;
-Ljava/security/spec/PSSParameterSpec;->mgfName:Ljava/lang/String;
-Ljava/security/spec/PSSParameterSpec;->mgfSpec:Ljava/security/spec/AlgorithmParameterSpec;
-Ljava/security/spec/PSSParameterSpec;->saltLen:I
-Ljava/security/spec/PSSParameterSpec;->trailerField:I
-Ljava/security/spec/RSAKeyGenParameterSpec;->keysize:I
-Ljava/security/spec/RSAKeyGenParameterSpec;->publicExponent:Ljava/math/BigInteger;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->crtCoefficient:Ljava/math/BigInteger;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->otherPrimeInfo:[Ljava/security/spec/RSAOtherPrimeInfo;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->primeExponentP:Ljava/math/BigInteger;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->primeExponentQ:Ljava/math/BigInteger;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->primeP:Ljava/math/BigInteger;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->primeQ:Ljava/math/BigInteger;
-Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->publicExponent:Ljava/math/BigInteger;
-Ljava/security/spec/RSAOtherPrimeInfo;->crtCoefficient:Ljava/math/BigInteger;
-Ljava/security/spec/RSAOtherPrimeInfo;->prime:Ljava/math/BigInteger;
-Ljava/security/spec/RSAOtherPrimeInfo;->primeExponent:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateCrtKeySpec;->crtCoefficient:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateCrtKeySpec;->primeExponentP:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateCrtKeySpec;->primeExponentQ:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateCrtKeySpec;->primeP:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateCrtKeySpec;->primeQ:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateCrtKeySpec;->publicExponent:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateKeySpec;->modulus:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPrivateKeySpec;->privateExponent:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPublicKeySpec;->modulus:Ljava/math/BigInteger;
-Ljava/security/spec/RSAPublicKeySpec;->publicExponent:Ljava/math/BigInteger;
-Ljava/security/Timestamp;->myhash:I
-Ljava/security/Timestamp;->signerCertPath:Ljava/security/cert/CertPath;
-Ljava/security/Timestamp;->timestamp:Ljava/util/Date;
-Ljava/sql/BatchUpdateException;->updateCounts:[I
-Ljava/sql/DataTruncation;->dataSize:I
-Ljava/sql/DataTruncation;->index:I
-Ljava/sql/DataTruncation;->parameter:Z
-Ljava/sql/DataTruncation;->read:Z
-Ljava/sql/DataTruncation;->transferSize:I
-Ljava/sql/DriverInfo;-><init>(Ljava/sql/Driver;)V
-Ljava/sql/DriverInfo;->driver:Ljava/sql/Driver;
-Ljava/sql/DriverManager;-><init>()V
-Ljava/sql/DriverManager;->getConnection(Ljava/lang/String;Ljava/util/Properties;Ljava/lang/ClassLoader;)Ljava/sql/Connection;
-Ljava/sql/DriverManager;->isDriverAllowed(Ljava/sql/Driver;Ljava/lang/ClassLoader;)Z
-Ljava/sql/DriverManager;->loadInitialDrivers()V
-Ljava/sql/DriverManager;->loginTimeout:I
-Ljava/sql/DriverManager;->logStream:Ljava/io/PrintStream;
-Ljava/sql/DriverManager;->logSync:Ljava/lang/Object;
-Ljava/sql/DriverManager;->logWriter:Ljava/io/PrintWriter;
-Ljava/sql/DriverManager;->registeredDrivers:Ljava/util/concurrent/CopyOnWriteArrayList;
-Ljava/sql/DriverManager;->SET_LOG_PERMISSION:Ljava/sql/SQLPermission;
-Ljava/sql/SQLClientInfoException;->failedProperties:Ljava/util/Map;
-Ljava/sql/SQLException;->next:Ljava/sql/SQLException;
-Ljava/sql/SQLException;->nextUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
-Ljava/sql/SQLException;->SQLState:Ljava/lang/String;
-Ljava/sql/SQLException;->vendorCode:I
-Ljava/sql/Timestamp;->nanos:I
-Ljava/sql/Types;-><init>()V
-Ljava/text/Annotation;->value:Ljava/lang/Object;
-Ljava/text/AttributedCharacterIterator$Attribute;->instanceMap:Ljava/util/Map;
-Ljava/text/AttributedCharacterIterator$Attribute;->name:Ljava/lang/String;
-Ljava/text/AttributedString$AttributedStringIterator;->beginIndex:I
-Ljava/text/AttributedString$AttributedStringIterator;->currentIndex:I
-Ljava/text/AttributedString$AttributedStringIterator;->currentRunIndex:I
-Ljava/text/AttributedString$AttributedStringIterator;->currentRunLimit:I
-Ljava/text/AttributedString$AttributedStringIterator;->currentRunStart:I
-Ljava/text/AttributedString$AttributedStringIterator;->endIndex:I
-Ljava/text/AttributedString$AttributedStringIterator;->getString()Ljava/text/AttributedString;
-Ljava/text/AttributedString$AttributedStringIterator;->internalSetIndex(I)C
-Ljava/text/AttributedString$AttributedStringIterator;->relevantAttributes:[Ljava/text/AttributedCharacterIterator$Attribute;
-Ljava/text/AttributedString$AttributedStringIterator;->updateRunInfo()V
-Ljava/text/AttributedString$AttributeMap;->beginIndex:I
-Ljava/text/AttributedString$AttributeMap;->endIndex:I
-Ljava/text/AttributedString$AttributeMap;->runIndex:I
-Ljava/text/AttributedString;-><init>([Ljava/text/AttributedCharacterIterator;)V
-Ljava/text/AttributedString;->addAttributeImpl(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V
-Ljava/text/AttributedString;->addAttributeRunData(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V
-Ljava/text/AttributedString;->appendContents(Ljava/lang/StringBuffer;Ljava/text/CharacterIterator;)V
-Ljava/text/AttributedString;->ARRAY_SIZE_INCREMENT:I
-Ljava/text/AttributedString;->attributeValuesMatch(Ljava/util/Set;II)Z
-Ljava/text/AttributedString;->charAt(I)C
-Ljava/text/AttributedString;->createRunAttributeDataVectors()V
-Ljava/text/AttributedString;->ensureRunBreak(I)I
-Ljava/text/AttributedString;->ensureRunBreak(IZ)I
-Ljava/text/AttributedString;->getAttribute(Ljava/text/AttributedCharacterIterator$Attribute;I)Ljava/lang/Object;
-Ljava/text/AttributedString;->getAttributeCheckRange(Ljava/text/AttributedCharacterIterator$Attribute;III)Ljava/lang/Object;
-Ljava/text/AttributedString;->length()I
-Ljava/text/AttributedString;->mapsDiffer(Ljava/util/Map;Ljava/util/Map;)Z
-Ljava/text/AttributedString;->runArraySize:I
-Ljava/text/AttributedString;->runAttributes:[Ljava/util/Vector;
-Ljava/text/AttributedString;->runAttributeValues:[Ljava/util/Vector;
-Ljava/text/AttributedString;->runCount:I
-Ljava/text/AttributedString;->runStarts:[I
-Ljava/text/AttributedString;->setAttributes(Ljava/util/Map;I)V
-Ljava/text/AttributedString;->text:Ljava/lang/String;
-Ljava/text/AttributedString;->valuesMatch(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/text/Bidi;-><init>(Landroid/icu/text/Bidi;)V
-Ljava/text/Bidi;->bidiBase:Landroid/icu/text/Bidi;
-Ljava/text/Bidi;->translateConstToIcu(I)I
-Ljava/text/CalendarBuilder;-><init>()V
-Ljava/text/CalendarBuilder;->addYear(I)Ljava/text/CalendarBuilder;
-Ljava/text/CalendarBuilder;->clear(I)Ljava/text/CalendarBuilder;
-Ljava/text/CalendarBuilder;->COMPUTED:I
-Ljava/text/CalendarBuilder;->establish(Ljava/util/Calendar;)Ljava/util/Calendar;
-Ljava/text/CalendarBuilder;->field:[I
-Ljava/text/CalendarBuilder;->ISO_DAY_OF_WEEK:I
-Ljava/text/CalendarBuilder;->isSet(I)Z
-Ljava/text/CalendarBuilder;->isValidDayOfWeek(I)Z
-Ljava/text/CalendarBuilder;->maxFieldIndex:I
-Ljava/text/CalendarBuilder;->MAX_FIELD:I
-Ljava/text/CalendarBuilder;->MINIMUM_USER_STAMP:I
-Ljava/text/CalendarBuilder;->nextStamp:I
-Ljava/text/CalendarBuilder;->set(II)Ljava/text/CalendarBuilder;
-Ljava/text/CalendarBuilder;->toCalendarDayOfWeek(I)I
-Ljava/text/CalendarBuilder;->toISODayOfWeek(I)I
-Ljava/text/CalendarBuilder;->UNSET:I
-Ljava/text/CalendarBuilder;->WEEK_YEAR:I
-Ljava/text/ChoiceFormat;->choiceFormats:[Ljava/lang/String;
-Ljava/text/ChoiceFormat;->choiceLimits:[D
-Ljava/text/ChoiceFormat;->doubleArraySize([D)[D
-Ljava/text/ChoiceFormat;->doubleArraySize([Ljava/lang/String;)[Ljava/lang/String;
-Ljava/text/ChoiceFormat;->EXPONENT:J
-Ljava/text/ChoiceFormat;->POSITIVEINFINITY:J
-Ljava/text/ChoiceFormat;->SIGN:J
-Ljava/text/CollationElementIterator;-><init>(Landroid/icu/text/CollationElementIterator;)V
-Ljava/text/CollationElementIterator;->icuIterator:Landroid/icu/text/CollationElementIterator;
-Ljava/text/CollationKey;->source:Ljava/lang/String;
-Ljava/text/Collator;-><init>(Landroid/icu/text/Collator;)V
-Ljava/text/Collator;->decompositionMode_ICU_Java(I)I
-Ljava/text/Collator;->decompositionMode_Java_ICU(I)I
-Ljava/text/DateFormat$Field;->calendarField:I
-Ljava/text/DateFormat$Field;->calendarToFieldMapping:[Ljava/text/DateFormat$Field;
-Ljava/text/DateFormat$Field;->instanceMap:Ljava/util/Map;
-Ljava/text/DateFormat;->get(IIILjava/util/Locale;)Ljava/text/DateFormat;
-Ljava/text/DateFormat;->set24HourTimePref(Ljava/lang/Boolean;)V
-Ljava/text/DateFormatSymbols;->ampms:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->cachedHashCode:I
-Ljava/text/DateFormatSymbols;->cachedInstances:Ljava/util/concurrent/ConcurrentMap;
-Ljava/text/DateFormatSymbols;->copyMembers(Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols;)V
-Ljava/text/DateFormatSymbols;->currentSerialVersion:I
-Ljava/text/DateFormatSymbols;->eras:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getCachedInstance(Ljava/util/Locale;)Ljava/text/DateFormatSymbols;
-Ljava/text/DateFormatSymbols;->getInstanceRef(Ljava/util/Locale;)Ljava/text/DateFormatSymbols;
-Ljava/text/DateFormatSymbols;->getShortStandAloneMonths()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getShortStandAloneWeekdays()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getStandAloneMonths()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getStandAloneWeekdays()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getTinyMonths()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getTinyStandAloneMonths()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getTinyStandAloneWeekdays()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getTinyWeekdays()[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getZoneIndex(Ljava/lang/String;)I
-Ljava/text/DateFormatSymbols;->getZoneStringsImpl(Z)[[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->getZoneStringsWrapper()[[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->initializeData(Ljava/util/Locale;)V
-Ljava/text/DateFormatSymbols;->initializeSupplementaryData(Llibcore/icu/LocaleData;)V
-Ljava/text/DateFormatSymbols;->internalZoneStrings()[[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->isSubclassObject()Z
-Ljava/text/DateFormatSymbols;->isZoneStringsSet:Z
-Ljava/text/DateFormatSymbols;->lastZoneIndex:I
-Ljava/text/DateFormatSymbols;->locale:Ljava/util/Locale;
-Ljava/text/DateFormatSymbols;->localPatternChars:Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->millisPerHour:I
-Ljava/text/DateFormatSymbols;->months:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->patternChars:Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->PATTERN_AM_PM:I
-Ljava/text/DateFormatSymbols;->PATTERN_DAY_OF_MONTH:I
-Ljava/text/DateFormatSymbols;->PATTERN_DAY_OF_WEEK:I
-Ljava/text/DateFormatSymbols;->PATTERN_DAY_OF_WEEK_IN_MONTH:I
-Ljava/text/DateFormatSymbols;->PATTERN_DAY_OF_YEAR:I
-Ljava/text/DateFormatSymbols;->PATTERN_DAY_PERIOD:I
-Ljava/text/DateFormatSymbols;->PATTERN_ERA:I
-Ljava/text/DateFormatSymbols;->PATTERN_FLEXIBLE_DAY_PERIOD:I
-Ljava/text/DateFormatSymbols;->PATTERN_HOUR0:I
-Ljava/text/DateFormatSymbols;->PATTERN_HOUR1:I
-Ljava/text/DateFormatSymbols;->PATTERN_HOUR_OF_DAY0:I
-Ljava/text/DateFormatSymbols;->PATTERN_HOUR_OF_DAY1:I
-Ljava/text/DateFormatSymbols;->PATTERN_ISO_DAY_OF_WEEK:I
-Ljava/text/DateFormatSymbols;->PATTERN_ISO_ZONE:I
-Ljava/text/DateFormatSymbols;->PATTERN_MILLISECOND:I
-Ljava/text/DateFormatSymbols;->PATTERN_MINUTE:I
-Ljava/text/DateFormatSymbols;->PATTERN_MONTH:I
-Ljava/text/DateFormatSymbols;->PATTERN_MONTH_STANDALONE:I
-Ljava/text/DateFormatSymbols;->PATTERN_SECOND:I
-Ljava/text/DateFormatSymbols;->PATTERN_STANDALONE_DAY_OF_WEEK:I
-Ljava/text/DateFormatSymbols;->PATTERN_WEEK_OF_MONTH:I
-Ljava/text/DateFormatSymbols;->PATTERN_WEEK_OF_YEAR:I
-Ljava/text/DateFormatSymbols;->PATTERN_WEEK_YEAR:I
-Ljava/text/DateFormatSymbols;->PATTERN_YEAR:I
-Ljava/text/DateFormatSymbols;->PATTERN_ZONE_NAME:I
-Ljava/text/DateFormatSymbols;->PATTERN_ZONE_VALUE:I
-Ljava/text/DateFormatSymbols;->serialVersionOnStream:I
-Ljava/text/DateFormatSymbols;->shortMonths:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->shortStandAloneMonths:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->shortStandAloneWeekdays:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->shortWeekdays:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->standAloneMonths:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->standAloneWeekdays:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->tinyMonths:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->tinyStandAloneMonths:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->tinyStandAloneWeekdays:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->tinyWeekdays:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->weekdays:[Ljava/lang/String;
-Ljava/text/DateFormatSymbols;->zoneStrings:[[Ljava/lang/String;
-Ljava/text/DecimalFormat;->adjustForCurrencyDefaultFractionDigits()V
-Ljava/text/DecimalFormat;->compareIcuRoundingIncrement(Landroid/icu/text/DecimalFormat_ICU58_Android;)Z
-Ljava/text/DecimalFormat;->convertRoundingMode(Ljava/math/RoundingMode;)I
-Ljava/text/DecimalFormat;->currentSerialVersion:I
-Ljava/text/DecimalFormat;->DOUBLE_FRACTION_DIGITS:I
-Ljava/text/DecimalFormat;->DOUBLE_INTEGER_DIGITS:I
-Ljava/text/DecimalFormat;->format(Ljava/math/BigDecimal;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-Ljava/text/DecimalFormat;->format(Ljava/math/BigInteger;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-Ljava/text/DecimalFormat;->getIcuFieldPosition(Ljava/text/FieldPosition;)Ljava/text/FieldPosition;
-Ljava/text/DecimalFormat;->icuDecimalFormat:Landroid/icu/text/DecimalFormat_ICU58_Android;
-Ljava/text/DecimalFormat;->initPattern(Ljava/lang/String;)V
-Ljava/text/DecimalFormat;->maximumFractionDigits:I
-Ljava/text/DecimalFormat;->maximumIntegerDigits:I
-Ljava/text/DecimalFormat;->MAXIMUM_FRACTION_DIGITS:I
-Ljava/text/DecimalFormat;->MAXIMUM_INTEGER_DIGITS:I
-Ljava/text/DecimalFormat;->minimumFractionDigits:I
-Ljava/text/DecimalFormat;->minimumIntegerDigits:I
-Ljava/text/DecimalFormat;->roundingMode:Ljava/math/RoundingMode;
-Ljava/text/DecimalFormat;->symbols:Ljava/text/DecimalFormatSymbols;
-Ljava/text/DecimalFormat;->toJavaFieldAttribute(Ljava/text/AttributedCharacterIterator$Attribute;)Ljava/text/NumberFormat$Field;
-Ljava/text/DecimalFormat;->updateFieldsFromIcu()V
-Ljava/text/DecimalFormatSymbols;->cachedIcuDFS:Landroid/icu/text/DecimalFormatSymbols;
-Ljava/text/DecimalFormatSymbols;->currency:Ljava/util/Currency;
-Ljava/text/DecimalFormatSymbols;->currencySymbol:Ljava/lang/String;
-Ljava/text/DecimalFormatSymbols;->currentSerialVersion:I
-Ljava/text/DecimalFormatSymbols;->decimalSeparator:C
-Ljava/text/DecimalFormatSymbols;->digit:C
-Ljava/text/DecimalFormatSymbols;->exponential:C
-Ljava/text/DecimalFormatSymbols;->exponentialSeparator:Ljava/lang/String;
-Ljava/text/DecimalFormatSymbols;->fromIcuInstance(Landroid/icu/text/DecimalFormatSymbols;)Ljava/text/DecimalFormatSymbols;
-Ljava/text/DecimalFormatSymbols;->getExponentialSymbol()C
-Ljava/text/DecimalFormatSymbols;->getIcuDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols;
-Ljava/text/DecimalFormatSymbols;->getMinusSignString()Ljava/lang/String;
-Ljava/text/DecimalFormatSymbols;->groupingSeparator:C
-Ljava/text/DecimalFormatSymbols;->infinity:Ljava/lang/String;
-Ljava/text/DecimalFormatSymbols;->initialize(Ljava/util/Locale;)V
-Ljava/text/DecimalFormatSymbols;->intlCurrencySymbol:Ljava/lang/String;
-Ljava/text/DecimalFormatSymbols;->locale:Ljava/util/Locale;
-Ljava/text/DecimalFormatSymbols;->maybeStripMarkers(Ljava/lang/String;C)C
-Ljava/text/DecimalFormatSymbols;->minusSign:C
-Ljava/text/DecimalFormatSymbols;->monetarySeparator:C
-Ljava/text/DecimalFormatSymbols;->NaN:Ljava/lang/String;
-Ljava/text/DecimalFormatSymbols;->patternSeparator:C
-Ljava/text/DecimalFormatSymbols;->percent:C
-Ljava/text/DecimalFormatSymbols;->perMill:C
-Ljava/text/DecimalFormatSymbols;->serialVersionOnStream:I
-Ljava/text/DecimalFormatSymbols;->setExponentialSymbol(C)V
-Ljava/text/DecimalFormatSymbols;->zeroDigit:C
-Ljava/text/FieldPosition$Delegate;->encounteredField:Z
-Ljava/text/FieldPosition$Delegate;->formatted(ILjava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
-Ljava/text/FieldPosition$Delegate;->formatted(Ljava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
-Ljava/text/FieldPosition;->attribute:Ljava/text/Format$Field;
-Ljava/text/FieldPosition;->beginIndex:I
-Ljava/text/FieldPosition;->endIndex:I
-Ljava/text/FieldPosition;->field:I
-Ljava/text/FieldPosition;->getFieldDelegate()Ljava/text/Format$FieldDelegate;
-Ljava/text/FieldPosition;->matchesField(Ljava/text/Format$Field;)Z
-Ljava/text/FieldPosition;->matchesField(Ljava/text/Format$Field;I)Z
-Ljava/text/Format$FieldDelegate;->formatted(ILjava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
-Ljava/text/Format$FieldDelegate;->formatted(Ljava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
-Ljava/text/Format;->createAttributedCharacterIterator(Ljava/lang/String;)Ljava/text/AttributedCharacterIterator;
-Ljava/text/Format;->createAttributedCharacterIterator(Ljava/lang/String;Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;)Ljava/text/AttributedCharacterIterator;
-Ljava/text/Format;->createAttributedCharacterIterator(Ljava/text/AttributedCharacterIterator;Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;)Ljava/text/AttributedCharacterIterator;
-Ljava/text/Format;->createAttributedCharacterIterator([Ljava/text/AttributedCharacterIterator;)Ljava/text/AttributedCharacterIterator;
-Ljava/text/MessageFormat;->append(Ljava/lang/StringBuffer;Ljava/text/CharacterIterator;)V
-Ljava/text/MessageFormat;->argumentNumbers:[I
-Ljava/text/MessageFormat;->copyAndFixQuotes(Ljava/lang/String;IILjava/lang/StringBuilder;)V
-Ljava/text/MessageFormat;->DATE_TIME_MODIFIERS:[I
-Ljava/text/MessageFormat;->DATE_TIME_MODIFIER_KEYWORDS:[Ljava/lang/String;
-Ljava/text/MessageFormat;->findKeyword(Ljava/lang/String;[Ljava/lang/String;)I
-Ljava/text/MessageFormat;->formats:[Ljava/text/Format;
-Ljava/text/MessageFormat;->INITIAL_FORMATS:I
-Ljava/text/MessageFormat;->locale:Ljava/util/Locale;
-Ljava/text/MessageFormat;->makeFormat(II[Ljava/lang/StringBuilder;)V
-Ljava/text/MessageFormat;->maxOffset:I
-Ljava/text/MessageFormat;->MODIFIER_CURRENCY:I
-Ljava/text/MessageFormat;->MODIFIER_DEFAULT:I
-Ljava/text/MessageFormat;->MODIFIER_FULL:I
-Ljava/text/MessageFormat;->MODIFIER_INTEGER:I
-Ljava/text/MessageFormat;->MODIFIER_LONG:I
-Ljava/text/MessageFormat;->MODIFIER_MEDIUM:I
-Ljava/text/MessageFormat;->MODIFIER_PERCENT:I
-Ljava/text/MessageFormat;->MODIFIER_SHORT:I
-Ljava/text/MessageFormat;->NUMBER_MODIFIER_KEYWORDS:[Ljava/lang/String;
-Ljava/text/MessageFormat;->offsets:[I
-Ljava/text/MessageFormat;->pattern:Ljava/lang/String;
-Ljava/text/MessageFormat;->SEG_INDEX:I
-Ljava/text/MessageFormat;->SEG_MODIFIER:I
-Ljava/text/MessageFormat;->SEG_RAW:I
-Ljava/text/MessageFormat;->SEG_TYPE:I
-Ljava/text/MessageFormat;->subformat([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;
-Ljava/text/MessageFormat;->TYPE_CHOICE:I
-Ljava/text/MessageFormat;->TYPE_DATE:I
-Ljava/text/MessageFormat;->TYPE_KEYWORDS:[Ljava/lang/String;
-Ljava/text/MessageFormat;->TYPE_NULL:I
-Ljava/text/MessageFormat;->TYPE_NUMBER:I
-Ljava/text/MessageFormat;->TYPE_TIME:I
-Ljava/text/Normalizer$Form;->icuMode:Landroid/icu/text/Normalizer$Mode;
-Ljava/text/Normalizer;-><init>()V
-Ljava/text/NumberFormat$Field;->instanceMap:Ljava/util/Map;
-Ljava/text/NumberFormat;->CURRENCYSTYLE:I
-Ljava/text/NumberFormat;->currentSerialVersion:I
-Ljava/text/NumberFormat;->groupingUsed:Z
-Ljava/text/NumberFormat;->INTEGERSTYLE:I
-Ljava/text/NumberFormat;->maxFractionDigits:B
-Ljava/text/NumberFormat;->maximumFractionDigits:I
-Ljava/text/NumberFormat;->maximumIntegerDigits:I
-Ljava/text/NumberFormat;->maxIntegerDigits:B
-Ljava/text/NumberFormat;->minFractionDigits:B
-Ljava/text/NumberFormat;->minimumFractionDigits:I
-Ljava/text/NumberFormat;->minimumIntegerDigits:I
-Ljava/text/NumberFormat;->minIntegerDigits:B
-Ljava/text/NumberFormat;->NUMBERSTYLE:I
-Ljava/text/NumberFormat;->parseIntegerOnly:Z
-Ljava/text/NumberFormat;->PERCENTSTYLE:I
-Ljava/text/NumberFormat;->serialVersionOnStream:I
-Ljava/text/ParseException;->errorOffset:I
-Ljava/text/ParsePosition;->errorIndex:I
-Ljava/text/ParsePosition;->index:I
-Ljava/text/RuleBasedCollator;-><init>(Landroid/icu/text/RuleBasedCollator;)V
-Ljava/text/RuleBasedCollator;->collAsICU()Landroid/icu/text/RuleBasedCollator;
-Ljava/text/SimpleDateFormat;-><init>(IILjava/util/Locale;)V
-Ljava/text/SimpleDateFormat;->cachedNumberFormatData:Ljava/util/concurrent/ConcurrentMap;
-Ljava/text/SimpleDateFormat;->checkNegativeNumberExpression()V
-Ljava/text/SimpleDateFormat;->compile(Ljava/lang/String;)[C
-Ljava/text/SimpleDateFormat;->compiledPattern:[C
-Ljava/text/SimpleDateFormat;->currentSerialVersion:I
-Ljava/text/SimpleDateFormat;->defaultCenturyStart:Ljava/util/Date;
-Ljava/text/SimpleDateFormat;->defaultCenturyStartYear:I
-Ljava/text/SimpleDateFormat;->DST_NAME_TYPES:Ljava/util/Set;
-Ljava/text/SimpleDateFormat;->encode(IILjava/lang/StringBuilder;)V
-Ljava/text/SimpleDateFormat;->format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/Format$FieldDelegate;)Ljava/lang/StringBuffer;
-Ljava/text/SimpleDateFormat;->formatData:Ljava/text/DateFormatSymbols;
-Ljava/text/SimpleDateFormat;->formatMonth(IIILjava/lang/StringBuffer;ZZ)Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->formatWeekday(IIZZ)Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->getCalendarName()Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->getDateTimeFormat(IILjava/util/Locale;)Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->getTimeZoneNames()Landroid/icu/text/TimeZoneNames;
-Ljava/text/SimpleDateFormat;->GMT:Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->hasFollowingMinusSign:Z
-Ljava/text/SimpleDateFormat;->initialize(Ljava/util/Locale;)V
-Ljava/text/SimpleDateFormat;->initializeCalendar(Ljava/util/Locale;)V
-Ljava/text/SimpleDateFormat;->initializeDefaultCentury()V
-Ljava/text/SimpleDateFormat;->isDigit(C)Z
-Ljava/text/SimpleDateFormat;->isGregorianCalendar()Z
-Ljava/text/SimpleDateFormat;->locale:Ljava/util/Locale;
-Ljava/text/SimpleDateFormat;->matchString(Ljava/lang/String;IILjava/util/Map;Ljava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->matchString(Ljava/lang/String;II[Ljava/lang/String;Ljava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->matchZoneString(Ljava/lang/String;I[Ljava/lang/String;)I
-Ljava/text/SimpleDateFormat;->MILLIS_PER_MINUTE:I
-Ljava/text/SimpleDateFormat;->minusSign:C
-Ljava/text/SimpleDateFormat;->NAME_TYPES:Ljava/util/EnumSet;
-Ljava/text/SimpleDateFormat;->originalNumberFormat:Ljava/text/NumberFormat;
-Ljava/text/SimpleDateFormat;->originalNumberPattern:Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->parseAmbiguousDatesAsAfter(Ljava/util/Date;)V
-Ljava/text/SimpleDateFormat;->parseInternal(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;
-Ljava/text/SimpleDateFormat;->parseMonth(Ljava/lang/String;IIIILjava/text/ParsePosition;ZZLjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->parseWeekday(Ljava/lang/String;IIZZLjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->pattern:Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->PATTERN_INDEX_TO_CALENDAR_FIELD:[I
-Ljava/text/SimpleDateFormat;->PATTERN_INDEX_TO_DATE_FORMAT_FIELD:[I
-Ljava/text/SimpleDateFormat;->PATTERN_INDEX_TO_DATE_FORMAT_FIELD_ID:[Ljava/text/DateFormat$Field;
-Ljava/text/SimpleDateFormat;->serialVersionOnStream:I
-Ljava/text/SimpleDateFormat;->subFormat(IILjava/text/Format$FieldDelegate;Ljava/lang/StringBuffer;Z)V
-Ljava/text/SimpleDateFormat;->subParse(Ljava/lang/String;IIIZ[ZLjava/text/ParsePosition;ZLjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->subParseNumericZone(Ljava/lang/String;IIIZLjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->subParseZoneString(Ljava/lang/String;ILjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->subParseZoneStringFromICU(Ljava/lang/String;ILjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->subParseZoneStringFromSymbols(Ljava/lang/String;ILjava/text/CalendarBuilder;)I
-Ljava/text/SimpleDateFormat;->TAG_QUOTE_ASCII_CHAR:I
-Ljava/text/SimpleDateFormat;->TAG_QUOTE_CHARS:I
-Ljava/text/SimpleDateFormat;->timeZoneNames:Landroid/icu/text/TimeZoneNames;
-Ljava/text/SimpleDateFormat;->translatePattern(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ljava/text/SimpleDateFormat;->useDateFormatSymbols()Z
-Ljava/text/SimpleDateFormat;->useDateFormatSymbols:Z
-Ljava/text/SimpleDateFormat;->zeroDigit:C
-Ljava/text/SimpleDateFormat;->zeroPaddingNumber(IIILjava/lang/StringBuffer;)V
-Ljava/text/StringCharacterIterator;->begin:I
-Ljava/text/StringCharacterIterator;->end:I
-Ljava/text/StringCharacterIterator;->pos:I
-Ljava/text/StringCharacterIterator;->text:Ljava/lang/String;
-Ljava/time/chrono/AbstractChronology;->addFieldValue(Ljava/util/Map;Ljava/time/temporal/ChronoField;J)V
-Ljava/time/chrono/AbstractChronology;->CHRONOS_BY_ID:Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/time/chrono/AbstractChronology;->CHRONOS_BY_TYPE:Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/time/chrono/AbstractChronology;->DATE_ORDER:Ljava/util/Comparator;
-Ljava/time/chrono/AbstractChronology;->DATE_TIME_ORDER:Ljava/util/Comparator;
-Ljava/time/chrono/AbstractChronology;->getAvailableChronologies()Ljava/util/Set;
-Ljava/time/chrono/AbstractChronology;->initCache()Z
-Ljava/time/chrono/AbstractChronology;->INSTANT_ORDER:Ljava/util/Comparator;
-Ljava/time/chrono/AbstractChronology;->of(Ljava/lang/String;)Ljava/time/chrono/Chronology;
-Ljava/time/chrono/AbstractChronology;->of0(Ljava/lang/String;)Ljava/time/chrono/Chronology;
-Ljava/time/chrono/AbstractChronology;->ofLocale(Ljava/util/Locale;)Ljava/time/chrono/Chronology;
-Ljava/time/chrono/AbstractChronology;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/Chronology;
-Ljava/time/chrono/AbstractChronology;->registerChrono(Ljava/time/chrono/Chronology;)Ljava/time/chrono/Chronology;
-Ljava/time/chrono/AbstractChronology;->registerChrono(Ljava/time/chrono/Chronology;Ljava/lang/String;)Ljava/time/chrono/Chronology;
-Ljava/time/chrono/AbstractChronology;->resolveAligned(Ljava/time/chrono/ChronoLocalDate;JJJ)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveProlepticMonth(Ljava/util/Map;Ljava/time/format/ResolverStyle;)V
-Ljava/time/chrono/AbstractChronology;->resolveYAA(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveYAD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveYD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveYearOfEra(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveYMAA(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveYMAD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->resolveYMD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/AbstractChronology;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/chrono/ChronoLocalDateImpl;-><init>()V
-Ljava/time/chrono/ChronoLocalDateImpl;->daysUntil(Ljava/time/chrono/ChronoLocalDate;)J
-Ljava/time/chrono/ChronoLocalDateImpl;->ensureValid(Ljava/time/chrono/Chronology;Ljava/time/temporal/Temporal;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->minusDays(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->minusMonths(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->minusWeeks(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->minusYears(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->monthsUntil(Ljava/time/chrono/ChronoLocalDate;)J
-Ljava/time/chrono/ChronoLocalDateImpl;->plusDays(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->plusMonths(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->plusWeeks(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/ChronoLocalDateImpl;->plusYears(J)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/HijrahChronology;-><init>(Ljava/lang/String;)V
-Ljava/time/chrono/HijrahChronology;->calendarProperties:Ljava/util/Properties;
-Ljava/time/chrono/HijrahChronology;->calendarType:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->checkCalendarInit()V
-Ljava/time/chrono/HijrahChronology;->checkValidDayOfYear(I)V
-Ljava/time/chrono/HijrahChronology;->checkValidMonth(I)V
-Ljava/time/chrono/HijrahChronology;->checkValidYear(J)I
-Ljava/time/chrono/HijrahChronology;->createEpochMonths(IIILjava/util/Map;)[I
-Ljava/time/chrono/HijrahChronology;->epochDayToEpochMonth(I)I
-Ljava/time/chrono/HijrahChronology;->epochMonthLength(I)I
-Ljava/time/chrono/HijrahChronology;->epochMonthToEpochDay(I)I
-Ljava/time/chrono/HijrahChronology;->epochMonthToMonth(I)I
-Ljava/time/chrono/HijrahChronology;->epochMonthToYear(I)I
-Ljava/time/chrono/HijrahChronology;->getDayOfYear(II)I
-Ljava/time/chrono/HijrahChronology;->getEpochDay(III)J
-Ljava/time/chrono/HijrahChronology;->getHijrahDateInfo(I)[I
-Ljava/time/chrono/HijrahChronology;->getMaximumDayOfYear()I
-Ljava/time/chrono/HijrahChronology;->getMaximumMonthLength()I
-Ljava/time/chrono/HijrahChronology;->getMaximumYear()I
-Ljava/time/chrono/HijrahChronology;->getMinimumMonthLength()I
-Ljava/time/chrono/HijrahChronology;->getMinimumYear()I
-Ljava/time/chrono/HijrahChronology;->getMonthLength(II)I
-Ljava/time/chrono/HijrahChronology;->getSmallestMaximumDayOfYear()I
-Ljava/time/chrono/HijrahChronology;->getYearLength(I)I
-Ljava/time/chrono/HijrahChronology;->hijrahEpochMonthStartDays:[I
-Ljava/time/chrono/HijrahChronology;->hijrahStartEpochMonth:I
-Ljava/time/chrono/HijrahChronology;->initComplete:Z
-Ljava/time/chrono/HijrahChronology;->KEY_ID:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->KEY_ISO_START:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->KEY_TYPE:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->KEY_VERSION:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->loadCalendarData()V
-Ljava/time/chrono/HijrahChronology;->maxEpochDay:I
-Ljava/time/chrono/HijrahChronology;->maxMonthLength:I
-Ljava/time/chrono/HijrahChronology;->maxYearLength:I
-Ljava/time/chrono/HijrahChronology;->minEpochDay:I
-Ljava/time/chrono/HijrahChronology;->minMonthLength:I
-Ljava/time/chrono/HijrahChronology;->minYearLength:I
-Ljava/time/chrono/HijrahChronology;->parseMonths(Ljava/lang/String;)[I
-Ljava/time/chrono/HijrahChronology;->parseYMD(Ljava/lang/String;)[I
-Ljava/time/chrono/HijrahChronology;->PROP_PREFIX:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->PROP_TYPE_SUFFIX:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->readConfigProperties(Ljava/lang/String;)Ljava/util/Properties;
-Ljava/time/chrono/HijrahChronology;->registerVariants()V
-Ljava/time/chrono/HijrahChronology;->typeId:Ljava/lang/String;
-Ljava/time/chrono/HijrahChronology;->yearMonthToDayOfYear(II)I
-Ljava/time/chrono/HijrahChronology;->yearToEpochMonth(I)I
-Ljava/time/chrono/HijrahDate;-><init>(Ljava/time/chrono/HijrahChronology;III)V
-Ljava/time/chrono/HijrahDate;-><init>(Ljava/time/chrono/HijrahChronology;J)V
-Ljava/time/chrono/HijrahDate;->chrono:Ljava/time/chrono/HijrahChronology;
-Ljava/time/chrono/HijrahDate;->dayOfMonth:I
-Ljava/time/chrono/HijrahDate;->getDayOfWeek()I
-Ljava/time/chrono/HijrahDate;->getDayOfYear()I
-Ljava/time/chrono/HijrahDate;->getEraValue()I
-Ljava/time/chrono/HijrahDate;->getProlepticMonth()J
-Ljava/time/chrono/HijrahDate;->minusDays(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->minusMonths(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->minusWeeks(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->minusYears(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->monthOfYear:I
-Ljava/time/chrono/HijrahDate;->of(Ljava/time/chrono/HijrahChronology;III)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->ofEpochDay(Ljava/time/chrono/HijrahChronology;J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->plusDays(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->plusMonths(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->plusWeeks(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->plusYears(J)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->prolepticYear:I
-Ljava/time/chrono/HijrahDate;->readExternal(Ljava/io/ObjectInput;)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->resolvePreviousValid(III)Ljava/time/chrono/HijrahDate;
-Ljava/time/chrono/HijrahDate;->writeExternal(Ljava/io/ObjectOutput;)V
-Ljava/time/chrono/IsoChronology;-><init>()V
-Ljava/time/chrono/IsoChronology;->resolveProlepticMonth(Ljava/util/Map;Ljava/time/format/ResolverStyle;)V
-Ljava/time/chrono/IsoChronology;->resolveYearOfEra(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/LocalDate;
-Ljava/time/chrono/IsoChronology;->resolveYMD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/LocalDate;
-Ljava/time/chrono/JapaneseChronology;-><init>()V
-Ljava/time/chrono/JapaneseChronology;->createCalendar()Ljava/util/Calendar;
-Ljava/time/chrono/JapaneseChronology;->getCurrentEra()Ljava/time/chrono/JapaneseEra;
-Ljava/time/chrono/JapaneseChronology;->JCAL:Lsun/util/calendar/LocalGregorianCalendar;
-Ljava/time/chrono/JapaneseChronology;->LOCALE:Ljava/util/Locale;
-Ljava/time/chrono/JapaneseChronology;->prolepticYearLenient(Ljava/time/chrono/JapaneseEra;I)I
-Ljava/time/chrono/JapaneseChronology;->resolveYD(Ljava/time/chrono/JapaneseEra;ILjava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/JapaneseChronology;->resolveYearOfEra(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/JapaneseChronology;->resolveYMD(Ljava/time/chrono/JapaneseEra;ILjava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/chrono/JapaneseDate;-><init>(Ljava/time/chrono/JapaneseEra;ILjava/time/LocalDate;)V
-Ljava/time/chrono/JapaneseDate;-><init>(Ljava/time/LocalDate;)V
-Ljava/time/chrono/JapaneseDate;->era:Ljava/time/chrono/JapaneseEra;
-Ljava/time/chrono/JapaneseDate;->isoDate:Ljava/time/LocalDate;
-Ljava/time/chrono/JapaneseDate;->MEIJI_6_ISODATE:Ljava/time/LocalDate;
-Ljava/time/chrono/JapaneseDate;->minusDays(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->minusMonths(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->minusWeeks(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->minusYears(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->ofYearDay(Ljava/time/chrono/JapaneseEra;II)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->plusDays(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->plusMonths(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->plusWeeks(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->plusYears(J)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->toPrivateJapaneseDate(Ljava/time/LocalDate;)Lsun/util/calendar/LocalGregorianCalendar$Date;
-Ljava/time/chrono/JapaneseDate;->with(Ljava/time/LocalDate;)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->withYear(I)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->withYear(Ljava/time/chrono/JapaneseEra;I)Ljava/time/chrono/JapaneseDate;
-Ljava/time/chrono/JapaneseDate;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/chrono/JapaneseDate;->yearOfEra:I
-Ljava/time/chrono/JapaneseEra;-><init>(ILjava/time/LocalDate;)V
-Ljava/time/chrono/JapaneseEra;->eraValue:I
-Ljava/time/chrono/JapaneseEra;->ERA_CONFIG:[Lsun/util/calendar/Era;
-Ljava/time/chrono/JapaneseEra;->ERA_OFFSET:I
-Ljava/time/chrono/JapaneseEra;->from(Ljava/time/LocalDate;)Ljava/time/chrono/JapaneseEra;
-Ljava/time/chrono/JapaneseEra;->getAbbreviation()Ljava/lang/String;
-Ljava/time/chrono/JapaneseEra;->getName()Ljava/lang/String;
-Ljava/time/chrono/JapaneseEra;->getPrivateEra()Lsun/util/calendar/Era;
-Ljava/time/chrono/JapaneseEra;->KNOWN_ERAS:[Ljava/time/chrono/JapaneseEra;
-Ljava/time/chrono/JapaneseEra;->N_ERA_CONSTANTS:I
-Ljava/time/chrono/JapaneseEra;->ordinal(I)I
-Ljava/time/chrono/JapaneseEra;->privateEraFrom(Ljava/time/LocalDate;)Lsun/util/calendar/Era;
-Ljava/time/chrono/JapaneseEra;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/JapaneseEra;
-Ljava/time/chrono/JapaneseEra;->since:Ljava/time/LocalDate;
-Ljava/time/chrono/JapaneseEra;->toJapaneseEra(Lsun/util/calendar/Era;)Ljava/time/chrono/JapaneseEra;
-Ljava/time/chrono/JapaneseEra;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/chrono/MinguoChronology;-><init>()V
-Ljava/time/chrono/MinguoChronology;->YEARS_DIFFERENCE:I
-Ljava/time/chrono/MinguoDate;-><init>(Ljava/time/LocalDate;)V
-Ljava/time/chrono/MinguoDate;->getProlepticMonth()J
-Ljava/time/chrono/MinguoDate;->getProlepticYear()I
-Ljava/time/chrono/MinguoDate;->isoDate:Ljava/time/LocalDate;
-Ljava/time/chrono/MinguoDate;->minusDays(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->minusMonths(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->minusWeeks(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->minusYears(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->plusDays(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->plusMonths(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->plusWeeks(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->plusYears(J)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->with(Ljava/time/LocalDate;)Ljava/time/chrono/MinguoDate;
-Ljava/time/chrono/MinguoDate;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/chrono/ThaiBuddhistChronology;-><init>()V
-Ljava/time/chrono/ThaiBuddhistChronology;->ERA_FULL_NAMES:Ljava/util/HashMap;
-Ljava/time/chrono/ThaiBuddhistChronology;->ERA_NARROW_NAMES:Ljava/util/HashMap;
-Ljava/time/chrono/ThaiBuddhistChronology;->ERA_SHORT_NAMES:Ljava/util/HashMap;
-Ljava/time/chrono/ThaiBuddhistChronology;->FALLBACK_LANGUAGE:Ljava/lang/String;
-Ljava/time/chrono/ThaiBuddhistChronology;->TARGET_LANGUAGE:Ljava/lang/String;
-Ljava/time/chrono/ThaiBuddhistChronology;->YEARS_DIFFERENCE:I
-Ljava/time/chrono/ThaiBuddhistDate;-><init>(Ljava/time/LocalDate;)V
-Ljava/time/chrono/ThaiBuddhistDate;->getProlepticMonth()J
-Ljava/time/chrono/ThaiBuddhistDate;->getProlepticYear()I
-Ljava/time/chrono/ThaiBuddhistDate;->isoDate:Ljava/time/LocalDate;
-Ljava/time/chrono/ThaiBuddhistDate;->minusDays(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->minusMonths(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->minusWeeks(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->minusYears(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->plusDays(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->plusMonths(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->plusWeeks(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->plusYears(J)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->with(Ljava/time/LocalDate;)Ljava/time/chrono/ThaiBuddhistDate;
-Ljava/time/chrono/ThaiBuddhistDate;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/Clock$FixedClock;-><init>(Ljava/time/Instant;Ljava/time/ZoneId;)V
-Ljava/time/Clock$FixedClock;->instant:Ljava/time/Instant;
-Ljava/time/Clock$FixedClock;->zone:Ljava/time/ZoneId;
-Ljava/time/Clock$OffsetClock;-><init>(Ljava/time/Clock;Ljava/time/Duration;)V
-Ljava/time/Clock$OffsetClock;->baseClock:Ljava/time/Clock;
-Ljava/time/Clock$OffsetClock;->offset:Ljava/time/Duration;
-Ljava/time/Clock$SystemClock;-><init>(Ljava/time/ZoneId;)V
-Ljava/time/Clock$SystemClock;->zone:Ljava/time/ZoneId;
-Ljava/time/Clock$TickClock;-><init>(Ljava/time/Clock;J)V
-Ljava/time/Clock$TickClock;->baseClock:Ljava/time/Clock;
-Ljava/time/Clock$TickClock;->tickNanos:J
-Ljava/time/DayOfWeek;->ENUMS:[Ljava/time/DayOfWeek;
-Ljava/time/Duration$DurationUnits;-><init>()V
-Ljava/time/Duration$DurationUnits;->UNITS:Ljava/util/List;
-Ljava/time/Duration;-><init>(JI)V
-Ljava/time/Duration;->BI_NANOS_PER_SECOND:Ljava/math/BigInteger;
-Ljava/time/Duration;->create(JI)Ljava/time/Duration;
-Ljava/time/Duration;->create(Ljava/math/BigDecimal;)Ljava/time/Duration;
-Ljava/time/Duration;->create(ZJJJJI)Ljava/time/Duration;
-Ljava/time/Duration;->nanos:I
-Ljava/time/Duration;->parseFraction(Ljava/lang/CharSequence;Ljava/lang/String;I)I
-Ljava/time/Duration;->parseNumber(Ljava/lang/CharSequence;Ljava/lang/String;ILjava/lang/String;)J
-Ljava/time/Duration;->PATTERN:Ljava/util/regex/Pattern;
-Ljava/time/Duration;->plus(JJ)Ljava/time/Duration;
-Ljava/time/Duration;->readExternal(Ljava/io/DataInput;)Ljava/time/Duration;
-Ljava/time/Duration;->seconds:J
-Ljava/time/Duration;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/format/DateTimeFormatter$ClassicFormat;-><init>(Ljava/time/format/DateTimeFormatter;Ljava/time/temporal/TemporalQuery;)V
-Ljava/time/format/DateTimeFormatter$ClassicFormat;->formatter:Ljava/time/format/DateTimeFormatter;
-Ljava/time/format/DateTimeFormatter$ClassicFormat;->parseType:Ljava/time/temporal/TemporalQuery;
-Ljava/time/format/DateTimeFormatter;-><init>(Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;Ljava/util/Locale;Ljava/time/format/DecimalStyle;Ljava/time/format/ResolverStyle;Ljava/util/Set;Ljava/time/chrono/Chronology;Ljava/time/ZoneId;)V
-Ljava/time/format/DateTimeFormatter;->chrono:Ljava/time/chrono/Chronology;
-Ljava/time/format/DateTimeFormatter;->createError(Ljava/lang/CharSequence;Ljava/lang/RuntimeException;)Ljava/time/format/DateTimeParseException;
-Ljava/time/format/DateTimeFormatter;->decimalStyle:Ljava/time/format/DecimalStyle;
-Ljava/time/format/DateTimeFormatter;->locale:Ljava/util/Locale;
-Ljava/time/format/DateTimeFormatter;->PARSED_EXCESS_DAYS:Ljava/time/temporal/TemporalQuery;
-Ljava/time/format/DateTimeFormatter;->PARSED_LEAP_SECOND:Ljava/time/temporal/TemporalQuery;
-Ljava/time/format/DateTimeFormatter;->parseResolved0(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/time/temporal/TemporalAccessor;
-Ljava/time/format/DateTimeFormatter;->parseUnresolved0(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/time/format/DateTimeParseContext;
-Ljava/time/format/DateTimeFormatter;->printerParser:Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;
-Ljava/time/format/DateTimeFormatter;->resolverFields:Ljava/util/Set;
-Ljava/time/format/DateTimeFormatter;->resolverStyle:Ljava/time/format/ResolverStyle;
-Ljava/time/format/DateTimeFormatter;->toPrinterParser(Z)Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;
-Ljava/time/format/DateTimeFormatter;->zone:Ljava/time/ZoneId;
-Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;-><init>(C)V
-Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->literal:C
-Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;-><init>(Ljava/time/format/TextStyle;)V
-Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->getChronologyName(Ljava/time/chrono/Chronology;Ljava/util/Locale;)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->textStyle:Ljava/time/format/TextStyle;
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;-><init>(Ljava/util/List;Z)V
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;-><init>([Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;Z)V
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->optional:Z
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->printerParsers:[Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->withOptional(Z)Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;-><init>(Ljava/time/temporal/TemporalField;J)V
-Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->field:Ljava/time/temporal/TemporalField;
-Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->value:J
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIZ)V
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->convertFromFraction(Ljava/math/BigDecimal;)J
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->convertToFraction(J)Ljava/math/BigDecimal;
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->decimalPoint:Z
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->field:Ljava/time/temporal/TemporalField;
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->maxWidth:I
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->minWidth:I
-Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;-><init>(I)V
-Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->fractionalDigits:I
-Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->SECONDS_0000_TO_1970:J
-Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->SECONDS_PER_10000_YEARS:J
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;-><init>(Ljava/time/format/TextStyle;)V
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->appendHMS(Ljava/lang/StringBuilder;I)Ljava/lang/StringBuilder;
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->getDigit(Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->style:Ljava/time/format/TextStyle;
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;-><init>(Ljava/time/format/FormatStyle;Ljava/time/format/FormatStyle;)V
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->dateStyle:Ljava/time/format/FormatStyle;
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->formatter(Ljava/util/Locale;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter;
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->FORMATTER_CACHE:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->timeStyle:Ljava/time/format/FormatStyle;
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IILjava/time/format/SignStyle;)V
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IILjava/time/format/SignStyle;I)V
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->EXCEED_POINTS:[J
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->field:Ljava/time/temporal/TemporalField;
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->getValue(Ljava/time/format/DateTimePrintContext;J)J
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->isFixedWidth(Ljava/time/format/DateTimeParseContext;)Z
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->maxWidth:I
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->minWidth:I
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->setValue(Ljava/time/format/DateTimeParseContext;JII)I
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->signStyle:Ljava/time/format/SignStyle;
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->subsequentWidth:I
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->withFixedWidth()Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->withSubsequentWidth(I)Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->checkPattern(Ljava/lang/String;)I
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->INSTANCE_ID_Z:Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->INSTANCE_ID_ZERO:Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->noOffsetText:Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->parseNumber([IILjava/lang/CharSequence;Z)Z
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->PATTERNS:[Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->type:I
-Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;-><init>(Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;IC)V
-Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->padChar:C
-Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->padWidth:I
-Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->printerParser:Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)V
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;->isEqual(CC)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;->newNode(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;->prefixOf(Ljava/lang/CharSequence;II)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)V
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->isLenientChar(C)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->match(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->newNode(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->toKey(Ljava/lang/String;)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)V
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->add(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->add0(Ljava/lang/String;Ljava/lang/String;)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->c0:C
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->child:Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->copyTree()Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->isEqual(CC)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->key:Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->match(Ljava/lang/CharSequence;II)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->match(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->newNode(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->newTree(Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->newTree(Ljava/util/Set;Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->prefixLength(Ljava/lang/String;)I
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->prefixOf(Ljava/lang/CharSequence;II)Z
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->sibling:Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->toKey(Ljava/lang/String;)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->value:Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIILjava/time/chrono/ChronoLocalDate;)V
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIILjava/time/chrono/ChronoLocalDate;I)V
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->baseDate:Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->baseValue:I
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->BASE_DATE:Ljava/time/LocalDate;
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->getValue(Ljava/time/format/DateTimePrintContext;J)J
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->isFixedWidth(Ljava/time/format/DateTimeParseContext;)Z
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->setValue(Ljava/time/format/DateTimeParseContext;JII)I
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->withFixedWidth()Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->withSubsequentWidth(I)Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->INSENSITIVE:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->LENIENT:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->SENSITIVE:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->STRICT:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->valueOf(Ljava/lang/String;)Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->values()[Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;
-Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;-><init>(Ljava/lang/String;)V
-Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;->literal:Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;-><init>(Ljava/time/temporal/TemporalField;Ljava/time/format/TextStyle;Ljava/time/format/DateTimeTextProvider;)V
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->field:Ljava/time/temporal/TemporalField;
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->numberPrinterParser()Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->numberPrinterParser:Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->provider:Ljava/time/format/DateTimeTextProvider;
-Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->textStyle:Ljava/time/format/TextStyle;
-Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;-><init>(CI)V
-Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->chr:C
-Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->count:I
-Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->printerParser(Ljava/util/Locale;)Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;-><init>(Ljava/time/temporal/TemporalQuery;Ljava/lang/String;)V
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->cachedPrefixTree:Ljava/util/Map$Entry;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->cachedPrefixTreeCI:Ljava/util/Map$Entry;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->description:Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->getTree(Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->parseOffsetBased(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;IILjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;)I
-Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->query:Ljava/time/temporal/TemporalQuery;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;-><init>(Ljava/time/format/TextStyle;Ljava/util/Set;)V
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->cache:Ljava/util/Map;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->cachedTree:Ljava/util/Map;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->cachedTreeCI:Ljava/util/Map;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->DST:I
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->FULL_TYPES:[Landroid/icu/text/TimeZoneNames$NameType;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->GENERIC:I
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->getDisplayName(Ljava/lang/String;ILjava/util/Locale;)Ljava/lang/String;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->getTree(Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->preferredZones:Ljava/util/Set;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->SHORT_TYPES:[Landroid/icu/text/TimeZoneNames$NameType;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->STD:I
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->textStyle:Ljava/time/format/TextStyle;
-Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->TYPES:[Landroid/icu/text/TimeZoneNames$NameType;
-Ljava/time/format/DateTimeFormatterBuilder;-><init>(Ljava/time/format/DateTimeFormatterBuilder;Z)V
-Ljava/time/format/DateTimeFormatterBuilder;->active:Ljava/time/format/DateTimeFormatterBuilder;
-Ljava/time/format/DateTimeFormatterBuilder;->appendInternal(Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;)I
-Ljava/time/format/DateTimeFormatterBuilder;->appendValue(Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;)Ljava/time/format/DateTimeFormatterBuilder;
-Ljava/time/format/DateTimeFormatterBuilder;->convertStyle(Ljava/time/format/FormatStyle;)I
-Ljava/time/format/DateTimeFormatterBuilder;->FIELD_MAP:Ljava/util/Map;
-Ljava/time/format/DateTimeFormatterBuilder;->LENGTH_SORT:Ljava/util/Comparator;
-Ljava/time/format/DateTimeFormatterBuilder;->optional:Z
-Ljava/time/format/DateTimeFormatterBuilder;->padNextChar:C
-Ljava/time/format/DateTimeFormatterBuilder;->padNextWidth:I
-Ljava/time/format/DateTimeFormatterBuilder;->parent:Ljava/time/format/DateTimeFormatterBuilder;
-Ljava/time/format/DateTimeFormatterBuilder;->parseField(CILjava/time/temporal/TemporalField;)V
-Ljava/time/format/DateTimeFormatterBuilder;->parsePattern(Ljava/lang/String;)V
-Ljava/time/format/DateTimeFormatterBuilder;->printerParsers:Ljava/util/List;
-Ljava/time/format/DateTimeFormatterBuilder;->QUERY_REGION_ONLY:Ljava/time/temporal/TemporalQuery;
-Ljava/time/format/DateTimeFormatterBuilder;->toFormatter(Ljava/time/format/ResolverStyle;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter;
-Ljava/time/format/DateTimeFormatterBuilder;->toFormatter(Ljava/util/Locale;Ljava/time/format/ResolverStyle;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter;
-Ljava/time/format/DateTimeFormatterBuilder;->valueParserIndex:I
-Ljava/time/format/DateTimeParseContext;-><init>(Ljava/time/format/DateTimeFormatter;)V
-Ljava/time/format/DateTimeParseContext;->addChronoChangedListener(Ljava/util/function/Consumer;)V
-Ljava/time/format/DateTimeParseContext;->caseSensitive:Z
-Ljava/time/format/DateTimeParseContext;->charEquals(CC)Z
-Ljava/time/format/DateTimeParseContext;->charEqualsIgnoreCase(CC)Z
-Ljava/time/format/DateTimeParseContext;->chronoListeners:Ljava/util/ArrayList;
-Ljava/time/format/DateTimeParseContext;->copy()Ljava/time/format/DateTimeParseContext;
-Ljava/time/format/DateTimeParseContext;->currentParsed()Ljava/time/format/Parsed;
-Ljava/time/format/DateTimeParseContext;->endOptional(Z)V
-Ljava/time/format/DateTimeParseContext;->formatter:Ljava/time/format/DateTimeFormatter;
-Ljava/time/format/DateTimeParseContext;->getDecimalStyle()Ljava/time/format/DecimalStyle;
-Ljava/time/format/DateTimeParseContext;->getEffectiveChronology()Ljava/time/chrono/Chronology;
-Ljava/time/format/DateTimeParseContext;->getLocale()Ljava/util/Locale;
-Ljava/time/format/DateTimeParseContext;->getParsed(Ljava/time/temporal/TemporalField;)Ljava/lang/Long;
-Ljava/time/format/DateTimeParseContext;->isCaseSensitive()Z
-Ljava/time/format/DateTimeParseContext;->isStrict()Z
-Ljava/time/format/DateTimeParseContext;->parsed:Ljava/util/ArrayList;
-Ljava/time/format/DateTimeParseContext;->setCaseSensitive(Z)V
-Ljava/time/format/DateTimeParseContext;->setParsed(Ljava/time/chrono/Chronology;)V
-Ljava/time/format/DateTimeParseContext;->setParsed(Ljava/time/ZoneId;)V
-Ljava/time/format/DateTimeParseContext;->setParsedField(Ljava/time/temporal/TemporalField;JII)I
-Ljava/time/format/DateTimeParseContext;->setParsedLeapSecond()V
-Ljava/time/format/DateTimeParseContext;->setStrict(Z)V
-Ljava/time/format/DateTimeParseContext;->startOptional()V
-Ljava/time/format/DateTimeParseContext;->strict:Z
-Ljava/time/format/DateTimeParseContext;->subSequenceEquals(Ljava/lang/CharSequence;ILjava/lang/CharSequence;II)Z
-Ljava/time/format/DateTimeParseContext;->toResolved(Ljava/time/format/ResolverStyle;Ljava/util/Set;)Ljava/time/temporal/TemporalAccessor;
-Ljava/time/format/DateTimeParseContext;->toUnresolved()Ljava/time/format/Parsed;
-Ljava/time/format/DateTimeParseException;->errorIndex:I
-Ljava/time/format/DateTimeParseException;->parsedString:Ljava/lang/String;
-Ljava/time/format/DateTimePrintContext;-><init>(Ljava/time/temporal/TemporalAccessor;Ljava/time/format/DateTimeFormatter;)V
-Ljava/time/format/DateTimePrintContext;->adjust(Ljava/time/temporal/TemporalAccessor;Ljava/time/format/DateTimeFormatter;)Ljava/time/temporal/TemporalAccessor;
-Ljava/time/format/DateTimePrintContext;->endOptional()V
-Ljava/time/format/DateTimePrintContext;->formatter:Ljava/time/format/DateTimeFormatter;
-Ljava/time/format/DateTimePrintContext;->getDecimalStyle()Ljava/time/format/DecimalStyle;
-Ljava/time/format/DateTimePrintContext;->getLocale()Ljava/util/Locale;
-Ljava/time/format/DateTimePrintContext;->getTemporal()Ljava/time/temporal/TemporalAccessor;
-Ljava/time/format/DateTimePrintContext;->getValue(Ljava/time/temporal/TemporalField;)Ljava/lang/Long;
-Ljava/time/format/DateTimePrintContext;->getValue(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object;
-Ljava/time/format/DateTimePrintContext;->optional:I
-Ljava/time/format/DateTimePrintContext;->startOptional()V
-Ljava/time/format/DateTimePrintContext;->temporal:Ljava/time/temporal/TemporalAccessor;
-Ljava/time/format/DateTimeTextProvider$LocaleStore;-><init>(Ljava/util/Map;)V
-Ljava/time/format/DateTimeTextProvider$LocaleStore;->getText(JLjava/time/format/TextStyle;)Ljava/lang/String;
-Ljava/time/format/DateTimeTextProvider$LocaleStore;->getTextIterator(Ljava/time/format/TextStyle;)Ljava/util/Iterator;
-Ljava/time/format/DateTimeTextProvider$LocaleStore;->parsable:Ljava/util/Map;
-Ljava/time/format/DateTimeTextProvider$LocaleStore;->valueTextMap:Ljava/util/Map;
-Ljava/time/format/DateTimeTextProvider;-><init>()V
-Ljava/time/format/DateTimeTextProvider;->CACHE:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/format/DateTimeTextProvider;->COMPARATOR:Ljava/util/Comparator;
-Ljava/time/format/DateTimeTextProvider;->createEntry(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map$Entry;
-Ljava/time/format/DateTimeTextProvider;->createStore(Ljava/time/temporal/TemporalField;Ljava/util/Locale;)Ljava/lang/Object;
-Ljava/time/format/DateTimeTextProvider;->extractQuarters(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)Ljava/util/Map;
-Ljava/time/format/DateTimeTextProvider;->findStore(Ljava/time/temporal/TemporalField;Ljava/util/Locale;)Ljava/lang/Object;
-Ljava/time/format/DateTimeTextProvider;->getInstance()Ljava/time/format/DateTimeTextProvider;
-Ljava/time/format/DateTimeTextProvider;->getText(Ljava/time/chrono/Chronology;Ljava/time/temporal/TemporalField;JLjava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String;
-Ljava/time/format/DateTimeTextProvider;->getText(Ljava/time/temporal/TemporalField;JLjava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String;
-Ljava/time/format/DateTimeTextProvider;->getTextIterator(Ljava/time/chrono/Chronology;Ljava/time/temporal/TemporalField;Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/util/Iterator;
-Ljava/time/format/DateTimeTextProvider;->getTextIterator(Ljava/time/temporal/TemporalField;Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/util/Iterator;
-Ljava/time/format/DateTimeTextProvider;->toWeekDay(I)I
-Ljava/time/format/DecimalStyle;-><init>(CCCC)V
-Ljava/time/format/DecimalStyle;->CACHE:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/format/DecimalStyle;->convertNumberToI18N(Ljava/lang/String;)Ljava/lang/String;
-Ljava/time/format/DecimalStyle;->convertToDigit(C)I
-Ljava/time/format/DecimalStyle;->create(Ljava/util/Locale;)Ljava/time/format/DecimalStyle;
-Ljava/time/format/DecimalStyle;->decimalSeparator:C
-Ljava/time/format/DecimalStyle;->negativeSign:C
-Ljava/time/format/DecimalStyle;->positiveSign:C
-Ljava/time/format/DecimalStyle;->zeroDigit:C
-Ljava/time/format/Parsed;-><init>()V
-Ljava/time/format/Parsed;->chrono:Ljava/time/chrono/Chronology;
-Ljava/time/format/Parsed;->copy()Ljava/time/format/Parsed;
-Ljava/time/format/Parsed;->crossCheck()V
-Ljava/time/format/Parsed;->crossCheck(Ljava/time/temporal/TemporalAccessor;)V
-Ljava/time/format/Parsed;->date:Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/format/Parsed;->excessDays:Ljava/time/Period;
-Ljava/time/format/Parsed;->fieldValues:Ljava/util/Map;
-Ljava/time/format/Parsed;->leapSecond:Z
-Ljava/time/format/Parsed;->resolve(Ljava/time/format/ResolverStyle;Ljava/util/Set;)Ljava/time/temporal/TemporalAccessor;
-Ljava/time/format/Parsed;->resolveDateFields()V
-Ljava/time/format/Parsed;->resolveFields()V
-Ljava/time/format/Parsed;->resolveFractional()V
-Ljava/time/format/Parsed;->resolveInstant()V
-Ljava/time/format/Parsed;->resolveInstantFields()V
-Ljava/time/format/Parsed;->resolveInstantFields0(Ljava/time/ZoneId;)V
-Ljava/time/format/Parsed;->resolvePeriod()V
-Ljava/time/format/Parsed;->resolverStyle:Ljava/time/format/ResolverStyle;
-Ljava/time/format/Parsed;->resolveTime(JJJJ)V
-Ljava/time/format/Parsed;->resolveTimeFields()V
-Ljava/time/format/Parsed;->resolveTimeLenient()V
-Ljava/time/format/Parsed;->time:Ljava/time/LocalTime;
-Ljava/time/format/Parsed;->updateCheckConflict(Ljava/time/chrono/ChronoLocalDate;)V
-Ljava/time/format/Parsed;->updateCheckConflict(Ljava/time/LocalTime;Ljava/time/Period;)V
-Ljava/time/format/Parsed;->updateCheckConflict(Ljava/time/temporal/TemporalField;Ljava/time/temporal/TemporalField;Ljava/lang/Long;)V
-Ljava/time/format/Parsed;->zone:Ljava/time/ZoneId;
-Ljava/time/format/SignStyle;->parse(ZZZ)Z
-Ljava/time/format/TextStyle;->calendarStyle:I
-Ljava/time/format/TextStyle;->toCalendarStyle()I
-Ljava/time/format/TextStyle;->zoneNameStyleIndex()I
-Ljava/time/format/TextStyle;->zoneNameStyleIndex:I
-Ljava/time/Instant;-><init>(JI)V
-Ljava/time/Instant;->create(JI)Ljava/time/Instant;
-Ljava/time/Instant;->MAX_SECOND:J
-Ljava/time/Instant;->MIN_SECOND:J
-Ljava/time/Instant;->nanos:I
-Ljava/time/Instant;->nanosUntil(Ljava/time/Instant;)J
-Ljava/time/Instant;->plus(JJ)Ljava/time/Instant;
-Ljava/time/Instant;->readExternal(Ljava/io/DataInput;)Ljava/time/Instant;
-Ljava/time/Instant;->seconds:J
-Ljava/time/Instant;->secondsUntil(Ljava/time/Instant;)J
-Ljava/time/Instant;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/LocalDate;-><init>(III)V
-Ljava/time/LocalDate;->compareTo0(Ljava/time/LocalDate;)I
-Ljava/time/LocalDate;->create(III)Ljava/time/LocalDate;
-Ljava/time/LocalDate;->day:S
-Ljava/time/LocalDate;->daysUntil(Ljava/time/LocalDate;)J
-Ljava/time/LocalDate;->DAYS_0000_TO_1970:J
-Ljava/time/LocalDate;->DAYS_PER_CYCLE:I
-Ljava/time/LocalDate;->get0(Ljava/time/temporal/TemporalField;)I
-Ljava/time/LocalDate;->getProlepticMonth()J
-Ljava/time/LocalDate;->month:S
-Ljava/time/LocalDate;->monthsUntil(Ljava/time/LocalDate;)J
-Ljava/time/LocalDate;->readExternal(Ljava/io/DataInput;)Ljava/time/LocalDate;
-Ljava/time/LocalDate;->resolvePreviousValid(III)Ljava/time/LocalDate;
-Ljava/time/LocalDate;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/LocalDate;->year:I
-Ljava/time/LocalDateTime;-><init>(Ljava/time/LocalDate;Ljava/time/LocalTime;)V
-Ljava/time/LocalDateTime;->compareTo0(Ljava/time/LocalDateTime;)I
-Ljava/time/LocalDateTime;->date:Ljava/time/LocalDate;
-Ljava/time/LocalDateTime;->plusWithOverflow(Ljava/time/LocalDate;JJJJI)Ljava/time/LocalDateTime;
-Ljava/time/LocalDateTime;->readExternal(Ljava/io/DataInput;)Ljava/time/LocalDateTime;
-Ljava/time/LocalDateTime;->time:Ljava/time/LocalTime;
-Ljava/time/LocalDateTime;->with(Ljava/time/LocalDate;Ljava/time/LocalTime;)Ljava/time/LocalDateTime;
-Ljava/time/LocalDateTime;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/LocalTime;-><init>(IIII)V
-Ljava/time/LocalTime;->create(IIII)Ljava/time/LocalTime;
-Ljava/time/LocalTime;->get0(Ljava/time/temporal/TemporalField;)I
-Ljava/time/LocalTime;->hour:B
-Ljava/time/LocalTime;->HOURS:[Ljava/time/LocalTime;
-Ljava/time/LocalTime;->HOURS_PER_DAY:I
-Ljava/time/LocalTime;->MICROS_PER_DAY:J
-Ljava/time/LocalTime;->MILLIS_PER_DAY:J
-Ljava/time/LocalTime;->minute:B
-Ljava/time/LocalTime;->MINUTES_PER_DAY:I
-Ljava/time/LocalTime;->MINUTES_PER_HOUR:I
-Ljava/time/LocalTime;->nano:I
-Ljava/time/LocalTime;->NANOS_PER_DAY:J
-Ljava/time/LocalTime;->NANOS_PER_HOUR:J
-Ljava/time/LocalTime;->NANOS_PER_MINUTE:J
-Ljava/time/LocalTime;->NANOS_PER_SECOND:J
-Ljava/time/LocalTime;->readExternal(Ljava/io/DataInput;)Ljava/time/LocalTime;
-Ljava/time/LocalTime;->second:B
-Ljava/time/LocalTime;->SECONDS_PER_DAY:I
-Ljava/time/LocalTime;->SECONDS_PER_HOUR:I
-Ljava/time/LocalTime;->SECONDS_PER_MINUTE:I
-Ljava/time/LocalTime;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/Month;->ENUMS:[Ljava/time/Month;
-Ljava/time/MonthDay;-><init>(II)V
-Ljava/time/MonthDay;->day:I
-Ljava/time/MonthDay;->month:I
-Ljava/time/MonthDay;->PARSER:Ljava/time/format/DateTimeFormatter;
-Ljava/time/MonthDay;->readExternal(Ljava/io/DataInput;)Ljava/time/MonthDay;
-Ljava/time/MonthDay;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/OffsetDateTime;->compareInstant(Ljava/time/OffsetDateTime;Ljava/time/OffsetDateTime;)I
-Ljava/time/OffsetDateTime;->dateTime:Ljava/time/LocalDateTime;
-Ljava/time/OffsetDateTime;->offset:Ljava/time/ZoneOffset;
-Ljava/time/OffsetDateTime;->readExternal(Ljava/io/ObjectInput;)Ljava/time/OffsetDateTime;
-Ljava/time/OffsetDateTime;->with(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;)Ljava/time/OffsetDateTime;
-Ljava/time/OffsetDateTime;->writeExternal(Ljava/io/ObjectOutput;)V
-Ljava/time/OffsetTime;-><init>(Ljava/time/LocalTime;Ljava/time/ZoneOffset;)V
-Ljava/time/OffsetTime;->offset:Ljava/time/ZoneOffset;
-Ljava/time/OffsetTime;->readExternal(Ljava/io/ObjectInput;)Ljava/time/OffsetTime;
-Ljava/time/OffsetTime;->time:Ljava/time/LocalTime;
-Ljava/time/OffsetTime;->toEpochNano()J
-Ljava/time/OffsetTime;->with(Ljava/time/LocalTime;Ljava/time/ZoneOffset;)Ljava/time/OffsetTime;
-Ljava/time/OffsetTime;->writeExternal(Ljava/io/ObjectOutput;)V
-Ljava/time/Period;-><init>(III)V
-Ljava/time/Period;->create(III)Ljava/time/Period;
-Ljava/time/Period;->days:I
-Ljava/time/Period;->months:I
-Ljava/time/Period;->parseNumber(Ljava/lang/CharSequence;Ljava/lang/String;I)I
-Ljava/time/Period;->PATTERN:Ljava/util/regex/Pattern;
-Ljava/time/Period;->readExternal(Ljava/io/DataInput;)Ljava/time/Period;
-Ljava/time/Period;->SUPPORTED_UNITS:Ljava/util/List;
-Ljava/time/Period;->validateChrono(Ljava/time/temporal/TemporalAccessor;)V
-Ljava/time/Period;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/Period;->years:I
-Ljava/time/temporal/ChronoField;->baseUnit:Ljava/time/temporal/TemporalUnit;
-Ljava/time/temporal/ChronoField;->displayNameKey:Ljava/lang/String;
-Ljava/time/temporal/ChronoField;->getIcuFieldNumber(Ljava/time/temporal/ChronoField;)I
-Ljava/time/temporal/ChronoField;->name:Ljava/lang/String;
-Ljava/time/temporal/ChronoField;->range:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/ChronoField;->rangeUnit:Ljava/time/temporal/TemporalUnit;
-Ljava/time/temporal/ChronoUnit;->duration:Ljava/time/Duration;
-Ljava/time/temporal/ChronoUnit;->name:Ljava/lang/String;
-Ljava/time/temporal/IsoFields$Field;->DAY_OF_QUARTER:Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Field;->ensureIso(Ljava/time/temporal/TemporalAccessor;)V
-Ljava/time/temporal/IsoFields$Field;->getWeek(Ljava/time/LocalDate;)I
-Ljava/time/temporal/IsoFields$Field;->getWeekBasedYear(Ljava/time/LocalDate;)I
-Ljava/time/temporal/IsoFields$Field;->getWeekRange(I)I
-Ljava/time/temporal/IsoFields$Field;->getWeekRange(Ljava/time/LocalDate;)Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/IsoFields$Field;->isIso(Ljava/time/temporal/TemporalAccessor;)Z
-Ljava/time/temporal/IsoFields$Field;->QUARTER_DAYS:[I
-Ljava/time/temporal/IsoFields$Field;->QUARTER_OF_YEAR:Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Field;->valueOf(Ljava/lang/String;)Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Field;->values()[Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Field;->WEEK_BASED_YEAR:Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Field;->WEEK_OF_WEEK_BASED_YEAR:Ljava/time/temporal/IsoFields$Field;
-Ljava/time/temporal/IsoFields$Unit;->duration:Ljava/time/Duration;
-Ljava/time/temporal/IsoFields$Unit;->name:Ljava/lang/String;
-Ljava/time/temporal/IsoFields$Unit;->QUARTER_YEARS:Ljava/time/temporal/IsoFields$Unit;
-Ljava/time/temporal/IsoFields$Unit;->valueOf(Ljava/lang/String;)Ljava/time/temporal/IsoFields$Unit;
-Ljava/time/temporal/IsoFields$Unit;->values()[Ljava/time/temporal/IsoFields$Unit;
-Ljava/time/temporal/IsoFields$Unit;->WEEK_BASED_YEARS:Ljava/time/temporal/IsoFields$Unit;
-Ljava/time/temporal/IsoFields;-><init>()V
-Ljava/time/temporal/JulianFields$Field;->baseUnit:Ljava/time/temporal/TemporalUnit;
-Ljava/time/temporal/JulianFields$Field;->JULIAN_DAY:Ljava/time/temporal/JulianFields$Field;
-Ljava/time/temporal/JulianFields$Field;->MODIFIED_JULIAN_DAY:Ljava/time/temporal/JulianFields$Field;
-Ljava/time/temporal/JulianFields$Field;->name:Ljava/lang/String;
-Ljava/time/temporal/JulianFields$Field;->offset:J
-Ljava/time/temporal/JulianFields$Field;->range:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/JulianFields$Field;->rangeUnit:Ljava/time/temporal/TemporalUnit;
-Ljava/time/temporal/JulianFields$Field;->RATA_DIE:Ljava/time/temporal/JulianFields$Field;
-Ljava/time/temporal/JulianFields$Field;->valueOf(Ljava/lang/String;)Ljava/time/temporal/JulianFields$Field;
-Ljava/time/temporal/JulianFields$Field;->values()[Ljava/time/temporal/JulianFields$Field;
-Ljava/time/temporal/JulianFields;-><init>()V
-Ljava/time/temporal/JulianFields;->JULIAN_DAY_OFFSET:J
-Ljava/time/temporal/TemporalAdjusters;-><init>()V
-Ljava/time/temporal/TemporalQueries;-><init>()V
-Ljava/time/temporal/TemporalQueries;->CHRONO:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/TemporalQueries;->LOCAL_DATE:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/TemporalQueries;->LOCAL_TIME:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/TemporalQueries;->OFFSET:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/TemporalQueries;->PRECISION:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/TemporalQueries;->ZONE:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/TemporalQueries;->ZONE_ID:Ljava/time/temporal/TemporalQuery;
-Ljava/time/temporal/ValueRange;-><init>(JJJJ)V
-Ljava/time/temporal/ValueRange;->genInvalidFieldMessage(Ljava/time/temporal/TemporalField;J)Ljava/lang/String;
-Ljava/time/temporal/ValueRange;->maxLargest:J
-Ljava/time/temporal/ValueRange;->maxSmallest:J
-Ljava/time/temporal/ValueRange;->minLargest:J
-Ljava/time/temporal/ValueRange;->minSmallest:J
-Ljava/time/temporal/WeekFields$ComputedDayOfField;-><init>(Ljava/lang/String;Ljava/time/temporal/WeekFields;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/ValueRange;)V
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->baseUnit:Ljava/time/temporal/TemporalUnit;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->computeWeek(II)I
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->DAY_OF_WEEK_RANGE:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedDayOfWeek(I)I
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedDayOfWeek(Ljava/time/temporal/TemporalAccessor;)I
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedWeekBasedYear(Ljava/time/temporal/TemporalAccessor;)I
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedWeekOfMonth(Ljava/time/temporal/TemporalAccessor;)J
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedWeekOfWeekBasedYear(Ljava/time/temporal/TemporalAccessor;)I
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedWeekOfYear(Ljava/time/temporal/TemporalAccessor;)J
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->name:Ljava/lang/String;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofDayOfWeekField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekBasedYear(Ljava/time/chrono/Chronology;III)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekBasedYearField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekOfMonthField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekOfWeekBasedYearField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekOfYearField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->range:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->rangeByWeek(Ljava/time/temporal/TemporalAccessor;Ljava/time/temporal/TemporalField;)Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->rangeUnit:Ljava/time/temporal/TemporalUnit;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->rangeWeekOfWeekBasedYear(Ljava/time/temporal/TemporalAccessor;)Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->resolveWBY(Ljava/util/Map;Ljava/time/chrono/Chronology;ILjava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->resolveWoM(Ljava/util/Map;Ljava/time/chrono/Chronology;IJJILjava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->resolveWoY(Ljava/util/Map;Ljava/time/chrono/Chronology;IJILjava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->startOfWeekOffset(II)I
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->weekDef:Ljava/time/temporal/WeekFields;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->WEEK_OF_MONTH_RANGE:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->WEEK_OF_WEEK_BASED_YEAR_RANGE:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields$ComputedDayOfField;->WEEK_OF_YEAR_RANGE:Ljava/time/temporal/ValueRange;
-Ljava/time/temporal/WeekFields;-><init>(Ljava/time/DayOfWeek;I)V
-Ljava/time/temporal/WeekFields;->CACHE:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/temporal/WeekFields;->dayOfWeek:Ljava/time/temporal/TemporalField;
-Ljava/time/temporal/WeekFields;->firstDayOfWeek:Ljava/time/DayOfWeek;
-Ljava/time/temporal/WeekFields;->minimalDays:I
-Ljava/time/temporal/WeekFields;->weekBasedYear:Ljava/time/temporal/TemporalField;
-Ljava/time/temporal/WeekFields;->weekOfMonth:Ljava/time/temporal/TemporalField;
-Ljava/time/temporal/WeekFields;->weekOfWeekBasedYear:Ljava/time/temporal/TemporalField;
-Ljava/time/temporal/WeekFields;->weekOfYear:Ljava/time/temporal/TemporalField;
-Ljava/time/Year;-><init>(I)V
-Ljava/time/Year;->PARSER:Ljava/time/format/DateTimeFormatter;
-Ljava/time/Year;->readExternal(Ljava/io/DataInput;)Ljava/time/Year;
-Ljava/time/Year;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/Year;->year:I
-Ljava/time/YearMonth;-><init>(II)V
-Ljava/time/YearMonth;->getProlepticMonth()J
-Ljava/time/YearMonth;->month:I
-Ljava/time/YearMonth;->PARSER:Ljava/time/format/DateTimeFormatter;
-Ljava/time/YearMonth;->readExternal(Ljava/io/DataInput;)Ljava/time/YearMonth;
-Ljava/time/YearMonth;->with(II)Ljava/time/YearMonth;
-Ljava/time/YearMonth;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/YearMonth;->year:I
-Ljava/time/zone/ZoneOffsetTransition;-><init>(JLjava/time/ZoneOffset;Ljava/time/ZoneOffset;)V
-Ljava/time/zone/ZoneOffsetTransition;-><init>(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)V
-Ljava/time/zone/ZoneOffsetTransition;->getDurationSeconds()I
-Ljava/time/zone/ZoneOffsetTransition;->getValidOffsets()Ljava/util/List;
-Ljava/time/zone/ZoneOffsetTransition;->offsetAfter:Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneOffsetTransition;->offsetBefore:Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneOffsetTransition;->readExternal(Ljava/io/DataInput;)Ljava/time/zone/ZoneOffsetTransition;
-Ljava/time/zone/ZoneOffsetTransition;->transition:Ljava/time/LocalDateTime;
-Ljava/time/zone/ZoneOffsetTransition;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/zone/ZoneOffsetTransitionRule;-><init>(Ljava/time/Month;ILjava/time/DayOfWeek;Ljava/time/LocalTime;ZLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)V
-Ljava/time/zone/ZoneOffsetTransitionRule;->dom:B
-Ljava/time/zone/ZoneOffsetTransitionRule;->dow:Ljava/time/DayOfWeek;
-Ljava/time/zone/ZoneOffsetTransitionRule;->month:Ljava/time/Month;
-Ljava/time/zone/ZoneOffsetTransitionRule;->offsetAfter:Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneOffsetTransitionRule;->offsetBefore:Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneOffsetTransitionRule;->readExternal(Ljava/io/DataInput;)Ljava/time/zone/ZoneOffsetTransitionRule;
-Ljava/time/zone/ZoneOffsetTransitionRule;->standardOffset:Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneOffsetTransitionRule;->time:Ljava/time/LocalTime;
-Ljava/time/zone/ZoneOffsetTransitionRule;->timeDefinition:Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;
-Ljava/time/zone/ZoneOffsetTransitionRule;->timeEndOfDay:Z
-Ljava/time/zone/ZoneOffsetTransitionRule;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/zone/ZoneRules;-><init>(Ljava/time/ZoneOffset;)V
-Ljava/time/zone/ZoneRules;-><init>(Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V
-Ljava/time/zone/ZoneRules;-><init>([J[Ljava/time/ZoneOffset;[J[Ljava/time/ZoneOffset;[Ljava/time/zone/ZoneOffsetTransitionRule;)V
-Ljava/time/zone/ZoneRules;->EMPTY_LASTRULES:[Ljava/time/zone/ZoneOffsetTransitionRule;
-Ljava/time/zone/ZoneRules;->EMPTY_LDT_ARRAY:[Ljava/time/LocalDateTime;
-Ljava/time/zone/ZoneRules;->EMPTY_LONG_ARRAY:[J
-Ljava/time/zone/ZoneRules;->findOffsetInfo(Ljava/time/LocalDateTime;Ljava/time/zone/ZoneOffsetTransition;)Ljava/lang/Object;
-Ljava/time/zone/ZoneRules;->findTransitionArray(I)[Ljava/time/zone/ZoneOffsetTransition;
-Ljava/time/zone/ZoneRules;->findYear(JLjava/time/ZoneOffset;)I
-Ljava/time/zone/ZoneRules;->getOffsetInfo(Ljava/time/LocalDateTime;)Ljava/lang/Object;
-Ljava/time/zone/ZoneRules;->lastRules:[Ljava/time/zone/ZoneOffsetTransitionRule;
-Ljava/time/zone/ZoneRules;->lastRulesCache:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/zone/ZoneRules;->LAST_CACHED_YEAR:I
-Ljava/time/zone/ZoneRules;->readExternal(Ljava/io/DataInput;)Ljava/time/zone/ZoneRules;
-Ljava/time/zone/ZoneRules;->savingsInstantTransitions:[J
-Ljava/time/zone/ZoneRules;->savingsLocalTransitions:[Ljava/time/LocalDateTime;
-Ljava/time/zone/ZoneRules;->standardOffsets:[Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneRules;->standardTransitions:[J
-Ljava/time/zone/ZoneRules;->wallOffsets:[Ljava/time/ZoneOffset;
-Ljava/time/zone/ZoneRules;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/ZonedDateTime;-><init>(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneId;)V
-Ljava/time/ZonedDateTime;->create(JILjava/time/ZoneId;)Ljava/time/ZonedDateTime;
-Ljava/time/ZonedDateTime;->dateTime:Ljava/time/LocalDateTime;
-Ljava/time/ZonedDateTime;->offset:Ljava/time/ZoneOffset;
-Ljava/time/ZonedDateTime;->ofLenient(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;
-Ljava/time/ZonedDateTime;->readExternal(Ljava/io/ObjectInput;)Ljava/time/ZonedDateTime;
-Ljava/time/ZonedDateTime;->resolveInstant(Ljava/time/LocalDateTime;)Ljava/time/ZonedDateTime;
-Ljava/time/ZonedDateTime;->resolveLocal(Ljava/time/LocalDateTime;)Ljava/time/ZonedDateTime;
-Ljava/time/ZonedDateTime;->resolveOffset(Ljava/time/ZoneOffset;)Ljava/time/ZonedDateTime;
-Ljava/time/ZonedDateTime;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/time/ZonedDateTime;->zone:Ljava/time/ZoneId;
-Ljava/time/ZoneId;-><init>()V
-Ljava/time/ZoneId;->ofWithPrefix(Ljava/lang/String;IZ)Ljava/time/ZoneId;
-Ljava/time/ZoneId;->toTemporal()Ljava/time/temporal/TemporalAccessor;
-Ljava/time/ZoneId;->write(Ljava/io/DataOutput;)V
-Ljava/time/ZoneOffset;-><init>(I)V
-Ljava/time/ZoneOffset;->buildId(I)Ljava/lang/String;
-Ljava/time/ZoneOffset;->id:Ljava/lang/String;
-Ljava/time/ZoneOffset;->ID_CACHE:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/ZoneOffset;->MAX_SECONDS:I
-Ljava/time/ZoneOffset;->parseNumber(Ljava/lang/CharSequence;IZ)I
-Ljava/time/ZoneOffset;->readExternal(Ljava/io/DataInput;)Ljava/time/ZoneOffset;
-Ljava/time/ZoneOffset;->SECONDS_CACHE:Ljava/util/concurrent/ConcurrentMap;
-Ljava/time/ZoneOffset;->totalSeconds(III)I
-Ljava/time/ZoneOffset;->totalSeconds:I
-Ljava/time/ZoneOffset;->validate(III)V
-Ljava/time/ZoneOffset;->write(Ljava/io/DataOutput;)V
-Ljava/time/ZoneOffset;->writeExternal(Ljava/io/DataOutput;)V
-Ljava/util/AbstractCollection;->finishToArray([Ljava/lang/Object;Ljava/util/Iterator;)[Ljava/lang/Object;
-Ljava/util/AbstractCollection;->hugeCapacity(I)I
-Ljava/util/AbstractCollection;->MAX_ARRAY_SIZE:I
-Ljava/util/AbstractList$Itr;->checkForComodification()V
-Ljava/util/AbstractList$Itr;->cursor:I
-Ljava/util/AbstractList$Itr;->expectedModCount:I
-Ljava/util/AbstractList$Itr;->lastRet:I
-Ljava/util/AbstractList;->outOfBoundsMsg(I)Ljava/lang/String;
-Ljava/util/AbstractList;->rangeCheckForAdd(I)V
-Ljava/util/AbstractMap$SimpleEntry;->key:Ljava/lang/Object;
-Ljava/util/AbstractMap$SimpleEntry;->value:Ljava/lang/Object;
-Ljava/util/AbstractMap$SimpleImmutableEntry;->key:Ljava/lang/Object;
-Ljava/util/AbstractMap$SimpleImmutableEntry;->value:Ljava/lang/Object;
-Ljava/util/AbstractMap;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/AbstractMap;->keySet:Ljava/util/Set;
-Ljava/util/AbstractMap;->values:Ljava/util/Collection;
-Ljava/util/ArrayDeque$DeqIterator;->cursor:I
-Ljava/util/ArrayDeque$DeqIterator;->fence:I
-Ljava/util/ArrayDeque$DeqIterator;->lastRet:I
-Ljava/util/ArrayDeque$DeqSpliterator;-><init>(Ljava/util/ArrayDeque;II)V
-Ljava/util/ArrayDeque$DeqSpliterator;->deq:Ljava/util/ArrayDeque;
-Ljava/util/ArrayDeque$DeqSpliterator;->fence:I
-Ljava/util/ArrayDeque$DeqSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/ArrayDeque$DeqSpliterator;->getFence()I
-Ljava/util/ArrayDeque$DeqSpliterator;->index:I
-Ljava/util/ArrayDeque$DeqSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/ArrayDeque$DescendingIterator;->cursor:I
-Ljava/util/ArrayDeque$DescendingIterator;->fence:I
-Ljava/util/ArrayDeque$DescendingIterator;->lastRet:I
-Ljava/util/ArrayDeque;->allocateElements(I)V
-Ljava/util/ArrayDeque;->checkInvariants()V
-Ljava/util/ArrayDeque;->delete(I)Z
-Ljava/util/ArrayDeque;->doubleCapacity()V
-Ljava/util/ArrayDeque;->MIN_INITIAL_CAPACITY:I
-Ljava/util/ArrayList$ArrayListSpliterator;-><init>(Ljava/util/ArrayList;III)V
-Ljava/util/ArrayList$ArrayListSpliterator;->expectedModCount:I
-Ljava/util/ArrayList$ArrayListSpliterator;->fence:I
-Ljava/util/ArrayList$ArrayListSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/ArrayList$ArrayListSpliterator;->getFence()I
-Ljava/util/ArrayList$ArrayListSpliterator;->index:I
-Ljava/util/ArrayList$ArrayListSpliterator;->list:Ljava/util/ArrayList;
-Ljava/util/ArrayList$ArrayListSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/ArrayList$Itr;->cursor:I
-Ljava/util/ArrayList$Itr;->expectedModCount:I
-Ljava/util/ArrayList$Itr;->lastRet:I
-Ljava/util/ArrayList$Itr;->limit:I
-Ljava/util/ArrayList$SubList;->outOfBoundsMsg(I)Ljava/lang/String;
-Ljava/util/ArrayList;->batchRemove(Ljava/util/Collection;Z)Z
-Ljava/util/ArrayList;->DEFAULTCAPACITY_EMPTY_ELEMENTDATA:[Ljava/lang/Object;
-Ljava/util/ArrayList;->DEFAULT_CAPACITY:I
-Ljava/util/ArrayList;->EMPTY_ELEMENTDATA:[Ljava/lang/Object;
-Ljava/util/ArrayList;->ensureCapacityInternal(I)V
-Ljava/util/ArrayList;->ensureExplicitCapacity(I)V
-Ljava/util/ArrayList;->fastRemove(I)V
-Ljava/util/ArrayList;->grow(I)V
-Ljava/util/ArrayList;->hugeCapacity(I)I
-Ljava/util/ArrayList;->MAX_ARRAY_SIZE:I
-Ljava/util/ArrayList;->outOfBoundsMsg(I)Ljava/lang/String;
-Ljava/util/ArrayList;->subListRangeCheck(III)V
-Ljava/util/Arrays$ArrayList;-><init>([Ljava/lang/Object;)V
-Ljava/util/Arrays$ArrayList;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Arrays$NaturalOrder;-><init>()V
-Ljava/util/Arrays$NaturalOrder;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/Arrays$NaturalOrder;->INSTANCE:Ljava/util/Arrays$NaturalOrder;
-Ljava/util/Arrays;-><init>()V
-Ljava/util/Arrays;->binarySearch0([BIIB)I
-Ljava/util/Arrays;->binarySearch0([CIIC)I
-Ljava/util/Arrays;->binarySearch0([DIID)I
-Ljava/util/Arrays;->binarySearch0([FIIF)I
-Ljava/util/Arrays;->binarySearch0([IIII)I
-Ljava/util/Arrays;->binarySearch0([JIIJ)I
-Ljava/util/Arrays;->binarySearch0([Ljava/lang/Object;IILjava/lang/Object;)I
-Ljava/util/Arrays;->binarySearch0([Ljava/lang/Object;IILjava/lang/Object;Ljava/util/Comparator;)I
-Ljava/util/Arrays;->binarySearch0([SIIS)I
-Ljava/util/Arrays;->deepEquals0(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/Arrays;->INSERTIONSORT_THRESHOLD:I
-Ljava/util/Arrays;->mergeSort([Ljava/lang/Object;[Ljava/lang/Object;III)V
-Ljava/util/Arrays;->MIN_ARRAY_SORT_GRAN:I
-Ljava/util/Arrays;->rangeCheck(III)V
-Ljava/util/Arrays;->swap([Ljava/lang/Object;II)V
-Ljava/util/Base64$DecInputStream;-><init>(Ljava/io/InputStream;[IZ)V
-Ljava/util/Base64$DecInputStream;->base64:[I
-Ljava/util/Base64$DecInputStream;->bits:I
-Ljava/util/Base64$DecInputStream;->closed:Z
-Ljava/util/Base64$DecInputStream;->eof:Z
-Ljava/util/Base64$DecInputStream;->is:Ljava/io/InputStream;
-Ljava/util/Base64$DecInputStream;->isMIME:Z
-Ljava/util/Base64$DecInputStream;->nextin:I
-Ljava/util/Base64$DecInputStream;->nextout:I
-Ljava/util/Base64$DecInputStream;->sbBuf:[B
-Ljava/util/Base64$Decoder;-><init>(ZZ)V
-Ljava/util/Base64$Decoder;->decode0([BII[B)I
-Ljava/util/Base64$Decoder;->fromBase64:[I
-Ljava/util/Base64$Decoder;->fromBase64URL:[I
-Ljava/util/Base64$Decoder;->isMIME:Z
-Ljava/util/Base64$Decoder;->isURL:Z
-Ljava/util/Base64$Decoder;->outLength([BII)I
-Ljava/util/Base64$Decoder;->RFC2045:Ljava/util/Base64$Decoder;
-Ljava/util/Base64$Decoder;->RFC4648:Ljava/util/Base64$Decoder;
-Ljava/util/Base64$Decoder;->RFC4648_URLSAFE:Ljava/util/Base64$Decoder;
-Ljava/util/Base64$Encoder;-><init>(Z[BIZ)V
-Ljava/util/Base64$Encoder;->CRLF:[B
-Ljava/util/Base64$Encoder;->doPadding:Z
-Ljava/util/Base64$Encoder;->encode0([BII[B)I
-Ljava/util/Base64$Encoder;->isURL:Z
-Ljava/util/Base64$Encoder;->linemax:I
-Ljava/util/Base64$Encoder;->MIMELINEMAX:I
-Ljava/util/Base64$Encoder;->newline:[B
-Ljava/util/Base64$Encoder;->outLength(I)I
-Ljava/util/Base64$Encoder;->RFC2045:Ljava/util/Base64$Encoder;
-Ljava/util/Base64$Encoder;->RFC4648:Ljava/util/Base64$Encoder;
-Ljava/util/Base64$Encoder;->RFC4648_URLSAFE:Ljava/util/Base64$Encoder;
-Ljava/util/Base64$Encoder;->toBase64:[C
-Ljava/util/Base64$Encoder;->toBase64URL:[C
-Ljava/util/Base64$EncOutputStream;-><init>(Ljava/io/OutputStream;[C[BIZ)V
-Ljava/util/Base64$EncOutputStream;->b0:I
-Ljava/util/Base64$EncOutputStream;->b1:I
-Ljava/util/Base64$EncOutputStream;->b2:I
-Ljava/util/Base64$EncOutputStream;->base64:[C
-Ljava/util/Base64$EncOutputStream;->checkNewline()V
-Ljava/util/Base64$EncOutputStream;->closed:Z
-Ljava/util/Base64$EncOutputStream;->doPadding:Z
-Ljava/util/Base64$EncOutputStream;->leftover:I
-Ljava/util/Base64$EncOutputStream;->linemax:I
-Ljava/util/Base64$EncOutputStream;->linepos:I
-Ljava/util/Base64$EncOutputStream;->newline:[B
-Ljava/util/Base64;-><init>()V
-Ljava/util/BitSet;-><init>([J)V
-Ljava/util/BitSet;->ADDRESS_BITS_PER_WORD:I
-Ljava/util/BitSet;->BITS_PER_WORD:I
-Ljava/util/BitSet;->BIT_INDEX_MASK:I
-Ljava/util/BitSet;->checkInvariants()V
-Ljava/util/BitSet;->checkRange(II)V
-Ljava/util/BitSet;->ensureCapacity(I)V
-Ljava/util/BitSet;->expandTo(I)V
-Ljava/util/BitSet;->initWords(I)V
-Ljava/util/BitSet;->recalculateWordsInUse()V
-Ljava/util/BitSet;->sizeIsSticky:Z
-Ljava/util/BitSet;->trimToSize()V
-Ljava/util/BitSet;->wordIndex(I)I
-Ljava/util/BitSet;->words:[J
-Ljava/util/BitSet;->wordsInUse:I
-Ljava/util/BitSet;->WORD_MASK:J
-Ljava/util/Calendar$AvailableCalendarTypes;-><init>()V
-Ljava/util/Calendar$AvailableCalendarTypes;->SET:Ljava/util/Set;
-Ljava/util/Calendar$Builder;->allocateFields()V
-Ljava/util/Calendar$Builder;->fields:[I
-Ljava/util/Calendar$Builder;->firstDayOfWeek:I
-Ljava/util/Calendar$Builder;->instant:J
-Ljava/util/Calendar$Builder;->internalSet(II)V
-Ljava/util/Calendar$Builder;->isInstantSet()Z
-Ljava/util/Calendar$Builder;->isSet(I)Z
-Ljava/util/Calendar$Builder;->isValidWeekParameter(I)Z
-Ljava/util/Calendar$Builder;->lenient:Z
-Ljava/util/Calendar$Builder;->locale:Ljava/util/Locale;
-Ljava/util/Calendar$Builder;->maxFieldIndex:I
-Ljava/util/Calendar$Builder;->minimalDaysInFirstWeek:I
-Ljava/util/Calendar$Builder;->nextStamp:I
-Ljava/util/Calendar$Builder;->NFIELDS:I
-Ljava/util/Calendar$Builder;->type:Ljava/lang/String;
-Ljava/util/Calendar$Builder;->WEEK_YEAR:I
-Ljava/util/Calendar$Builder;->zone:Ljava/util/TimeZone;
-Ljava/util/Calendar$CalendarAccessControlContext;-><init>()V
-Ljava/util/Calendar$CalendarAccessControlContext;->INSTANCE:Ljava/security/AccessControlContext;
-Ljava/util/Calendar;->adjustStamp()V
-Ljava/util/Calendar;->aggregateStamp(II)I
-Ljava/util/Calendar;->ALL_FIELDS:I
-Ljava/util/Calendar;->AM_PM_MASK:I
-Ljava/util/Calendar;->appendValue(Ljava/lang/StringBuilder;Ljava/lang/String;ZJ)V
-Ljava/util/Calendar;->areAllFieldsSet:Z
-Ljava/util/Calendar;->cachedLocaleData:Ljava/util/concurrent/ConcurrentMap;
-Ljava/util/Calendar;->checkDisplayNameParams(IIIILjava/util/Locale;I)Z
-Ljava/util/Calendar;->compareTo(J)I
-Ljava/util/Calendar;->COMPUTED:I
-Ljava/util/Calendar;->createCalendar(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;
-Ljava/util/Calendar;->currentSerialVersion:I
-Ljava/util/Calendar;->DATE_MASK:I
-Ljava/util/Calendar;->DAY_OF_MONTH_MASK:I
-Ljava/util/Calendar;->DAY_OF_WEEK_IN_MONTH_MASK:I
-Ljava/util/Calendar;->DAY_OF_WEEK_MASK:I
-Ljava/util/Calendar;->DAY_OF_YEAR_MASK:I
-Ljava/util/Calendar;->DST_OFFSET_MASK:I
-Ljava/util/Calendar;->ERA_MASK:I
-Ljava/util/Calendar;->FIELD_NAME:[Ljava/lang/String;
-Ljava/util/Calendar;->firstDayOfWeek:I
-Ljava/util/Calendar;->getBaseStyle(I)I
-Ljava/util/Calendar;->getDisplayNamesImpl(IILjava/util/Locale;)Ljava/util/Map;
-Ljava/util/Calendar;->getFieldName(I)Ljava/lang/String;
-Ljava/util/Calendar;->getFieldStrings(IILjava/text/DateFormatSymbols;)[Ljava/lang/String;
-Ljava/util/Calendar;->getJapaneseImperialInstance(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;
-Ljava/util/Calendar;->getMillisOf(Ljava/util/Calendar;)J
-Ljava/util/Calendar;->getSetStateFields()I
-Ljava/util/Calendar;->getZone()Ljava/util/TimeZone;
-Ljava/util/Calendar;->HOUR_MASK:I
-Ljava/util/Calendar;->HOUR_OF_DAY_MASK:I
-Ljava/util/Calendar;->internalSet(II)V
-Ljava/util/Calendar;->invalidateWeekFields()V
-Ljava/util/Calendar;->isExternallySet(I)Z
-Ljava/util/Calendar;->isFieldSet(II)Z
-Ljava/util/Calendar;->isFullyNormalized()Z
-Ljava/util/Calendar;->isNarrowFormatStyle(I)Z
-Ljava/util/Calendar;->isNarrowStyle(I)Z
-Ljava/util/Calendar;->isPartiallyNormalized()Z
-Ljava/util/Calendar;->isStandaloneStyle(I)Z
-Ljava/util/Calendar;->lenient:Z
-Ljava/util/Calendar;->MILLISECOND_MASK:I
-Ljava/util/Calendar;->minimalDaysInFirstWeek:I
-Ljava/util/Calendar;->MINIMUM_USER_STAMP:I
-Ljava/util/Calendar;->MINUTE_MASK:I
-Ljava/util/Calendar;->MONTH_MASK:I
-Ljava/util/Calendar;->nextStamp:I
-Ljava/util/Calendar;->SECOND_MASK:I
-Ljava/util/Calendar;->selectFields()I
-Ljava/util/Calendar;->serialVersionOnStream:I
-Ljava/util/Calendar;->setFieldsComputed(I)V
-Ljava/util/Calendar;->setFieldsNormalized(I)V
-Ljava/util/Calendar;->setUnnormalized()V
-Ljava/util/Calendar;->setWeekCountData(Ljava/util/Locale;)V
-Ljava/util/Calendar;->setZoneShared(Z)V
-Ljava/util/Calendar;->sharedZone:Z
-Ljava/util/Calendar;->stamp:[I
-Ljava/util/Calendar;->STANDALONE_MASK:I
-Ljava/util/Calendar;->toStandaloneStyle(I)I
-Ljava/util/Calendar;->UNSET:I
-Ljava/util/Calendar;->updateTime()V
-Ljava/util/Calendar;->WEEK_OF_MONTH_MASK:I
-Ljava/util/Calendar;->WEEK_OF_YEAR_MASK:I
-Ljava/util/Calendar;->YEAR_MASK:I
-Ljava/util/Calendar;->ZONE_OFFSET_MASK:I
-Ljava/util/Collections$AsLIFOQueue;-><init>(Ljava/util/Deque;)V
-Ljava/util/Collections$AsLIFOQueue;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$AsLIFOQueue;->q:Ljava/util/Deque;
-Ljava/util/Collections$CheckedCollection;-><init>(Ljava/util/Collection;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedCollection;->badElementMsg(Ljava/lang/Object;)Ljava/lang/String;
-Ljava/util/Collections$CheckedCollection;->c:Ljava/util/Collection;
-Ljava/util/Collections$CheckedCollection;->checkedCopyOf(Ljava/util/Collection;)Ljava/util/Collection;
-Ljava/util/Collections$CheckedCollection;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$CheckedCollection;->type:Ljava/lang/Class;
-Ljava/util/Collections$CheckedCollection;->typeCheck(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/Collections$CheckedCollection;->zeroLengthElementArray()[Ljava/lang/Object;
-Ljava/util/Collections$CheckedCollection;->zeroLengthElementArray:[Ljava/lang/Object;
-Ljava/util/Collections$CheckedList;-><init>(Ljava/util/List;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedList;->list:Ljava/util/List;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;-><init>(Ljava/util/Map$Entry;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;->badValueMsg(Ljava/lang/Object;)Ljava/lang/String;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;->e:Ljava/util/Map$Entry;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;->valueType:Ljava/lang/Class;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;-><init>(Ljava/util/Set;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;->add(Ljava/util/Map$Entry;)Z
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;->addAll(Ljava/util/Collection;)Z
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;->batchRemove(Ljava/util/Collection;Z)Z
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;->checkedEntry(Ljava/util/Map$Entry;Ljava/lang/Class;)Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;->s:Ljava/util/Set;
-Ljava/util/Collections$CheckedMap$CheckedEntrySet;->valueType:Ljava/lang/Class;
-Ljava/util/Collections$CheckedMap;-><init>(Ljava/util/Map;Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedMap;->badKeyMsg(Ljava/lang/Object;)Ljava/lang/String;
-Ljava/util/Collections$CheckedMap;->badValueMsg(Ljava/lang/Object;)Ljava/lang/String;
-Ljava/util/Collections$CheckedMap;->entrySet:Ljava/util/Set;
-Ljava/util/Collections$CheckedMap;->keyType:Ljava/lang/Class;
-Ljava/util/Collections$CheckedMap;->m:Ljava/util/Map;
-Ljava/util/Collections$CheckedMap;->typeCheck(Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/util/Collections$CheckedMap;->typeCheck(Ljava/util/function/BiFunction;)Ljava/util/function/BiFunction;
-Ljava/util/Collections$CheckedMap;->valueType:Ljava/lang/Class;
-Ljava/util/Collections$CheckedNavigableMap;-><init>(Ljava/util/NavigableMap;Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedNavigableMap;->nm:Ljava/util/NavigableMap;
-Ljava/util/Collections$CheckedNavigableSet;-><init>(Ljava/util/NavigableSet;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedNavigableSet;->ns:Ljava/util/NavigableSet;
-Ljava/util/Collections$CheckedQueue;-><init>(Ljava/util/Queue;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedQueue;->queue:Ljava/util/Queue;
-Ljava/util/Collections$CheckedRandomAccessList;-><init>(Ljava/util/List;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedSet;-><init>(Ljava/util/Set;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedSortedMap;-><init>(Ljava/util/SortedMap;Ljava/lang/Class;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedSortedMap;->sm:Ljava/util/SortedMap;
-Ljava/util/Collections$CheckedSortedSet;-><init>(Ljava/util/SortedSet;Ljava/lang/Class;)V
-Ljava/util/Collections$CheckedSortedSet;->ss:Ljava/util/SortedSet;
-Ljava/util/Collections$CopiesList;-><init>(ILjava/lang/Object;)V
-Ljava/util/Collections$CopiesList;->element:Ljava/lang/Object;
-Ljava/util/Collections$CopiesList;->n:I
-Ljava/util/Collections$EmptyEnumeration;-><init>()V
-Ljava/util/Collections$EmptyEnumeration;->EMPTY_ENUMERATION:Ljava/util/Collections$EmptyEnumeration;
-Ljava/util/Collections$EmptyIterator;-><init>()V
-Ljava/util/Collections$EmptyIterator;->EMPTY_ITERATOR:Ljava/util/Collections$EmptyIterator;
-Ljava/util/Collections$EmptyList;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$EmptyListIterator;-><init>()V
-Ljava/util/Collections$EmptyListIterator;->EMPTY_ITERATOR:Ljava/util/Collections$EmptyListIterator;
-Ljava/util/Collections$EmptySet;-><init>()V
-Ljava/util/Collections$EmptySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$ReverseComparator2;-><init>(Ljava/util/Comparator;)V
-Ljava/util/Collections$ReverseComparator2;->cmp:Ljava/util/Comparator;
-Ljava/util/Collections$ReverseComparator;-><init>()V
-Ljava/util/Collections$ReverseComparator;->compare(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
-Ljava/util/Collections$ReverseComparator;->REVERSE_ORDER:Ljava/util/Collections$ReverseComparator;
-Ljava/util/Collections$SetFromMap;-><init>(Ljava/util/Map;)V
-Ljava/util/Collections$SetFromMap;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$SetFromMap;->m:Ljava/util/Map;
-Ljava/util/Collections$SetFromMap;->s:Ljava/util/Set;
-Ljava/util/Collections$SingletonList;-><init>(Ljava/lang/Object;)V
-Ljava/util/Collections$SingletonList;->element:Ljava/lang/Object;
-Ljava/util/Collections$SingletonList;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$SingletonMap;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/util/Collections$SingletonMap;->entrySet:Ljava/util/Set;
-Ljava/util/Collections$SingletonMap;->k:Ljava/lang/Object;
-Ljava/util/Collections$SingletonMap;->keySet:Ljava/util/Set;
-Ljava/util/Collections$SingletonMap;->v:Ljava/lang/Object;
-Ljava/util/Collections$SingletonMap;->values:Ljava/util/Collection;
-Ljava/util/Collections$SingletonSet;-><init>(Ljava/lang/Object;)V
-Ljava/util/Collections$SingletonSet;->element:Ljava/lang/Object;
-Ljava/util/Collections$SingletonSet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$SynchronizedCollection;-><init>(Ljava/util/Collection;)V
-Ljava/util/Collections$SynchronizedCollection;-><init>(Ljava/util/Collection;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedCollection;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$SynchronizedCollection;->mutex:Ljava/lang/Object;
-Ljava/util/Collections$SynchronizedList;-><init>(Ljava/util/List;)V
-Ljava/util/Collections$SynchronizedList;-><init>(Ljava/util/List;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedMap;-><init>(Ljava/util/Map;)V
-Ljava/util/Collections$SynchronizedMap;-><init>(Ljava/util/Map;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedMap;->entrySet:Ljava/util/Set;
-Ljava/util/Collections$SynchronizedMap;->keySet:Ljava/util/Set;
-Ljava/util/Collections$SynchronizedMap;->mutex:Ljava/lang/Object;
-Ljava/util/Collections$SynchronizedMap;->values:Ljava/util/Collection;
-Ljava/util/Collections$SynchronizedNavigableMap;-><init>(Ljava/util/NavigableMap;)V
-Ljava/util/Collections$SynchronizedNavigableMap;-><init>(Ljava/util/NavigableMap;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedNavigableMap;->nm:Ljava/util/NavigableMap;
-Ljava/util/Collections$SynchronizedNavigableSet;-><init>(Ljava/util/NavigableSet;)V
-Ljava/util/Collections$SynchronizedNavigableSet;-><init>(Ljava/util/NavigableSet;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedNavigableSet;->ns:Ljava/util/NavigableSet;
-Ljava/util/Collections$SynchronizedRandomAccessList;-><init>(Ljava/util/List;)V
-Ljava/util/Collections$SynchronizedRandomAccessList;-><init>(Ljava/util/List;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedSet;-><init>(Ljava/util/Set;)V
-Ljava/util/Collections$SynchronizedSet;-><init>(Ljava/util/Set;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedSortedMap;-><init>(Ljava/util/SortedMap;)V
-Ljava/util/Collections$SynchronizedSortedMap;-><init>(Ljava/util/SortedMap;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedSortedMap;->sm:Ljava/util/SortedMap;
-Ljava/util/Collections$SynchronizedSortedSet;-><init>(Ljava/util/SortedSet;)V
-Ljava/util/Collections$SynchronizedSortedSet;-><init>(Ljava/util/SortedSet;Ljava/lang/Object;)V
-Ljava/util/Collections$SynchronizedSortedSet;->ss:Ljava/util/SortedSet;
-Ljava/util/Collections$UnmodifiableCollection;-><init>(Ljava/util/Collection;)V
-Ljava/util/Collections$UnmodifiableCollection;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$UnmodifiableList;-><init>(Ljava/util/List;)V
-Ljava/util/Collections$UnmodifiableList;->list:Ljava/util/List;
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;-><init>(Ljava/util/Map$Entry;)V
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;->e:Ljava/util/Map$Entry;
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;-><init>(Ljava/util/Spliterator;)V
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;->s:Ljava/util/Spliterator;
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;-><init>(Ljava/util/Set;)V
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;->entryConsumer(Ljava/util/function/Consumer;)Ljava/util/function/Consumer;
-Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/Collections$UnmodifiableMap;-><init>(Ljava/util/Map;)V
-Ljava/util/Collections$UnmodifiableMap;->entrySet:Ljava/util/Set;
-Ljava/util/Collections$UnmodifiableMap;->keySet:Ljava/util/Set;
-Ljava/util/Collections$UnmodifiableMap;->values:Ljava/util/Collection;
-Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap;-><init>()V
-Ljava/util/Collections$UnmodifiableNavigableMap;-><init>(Ljava/util/NavigableMap;)V
-Ljava/util/Collections$UnmodifiableNavigableMap;->EMPTY_NAVIGABLE_MAP:Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap;
-Ljava/util/Collections$UnmodifiableNavigableMap;->nm:Ljava/util/NavigableMap;
-Ljava/util/Collections$UnmodifiableNavigableSet$EmptyNavigableSet;-><init>()V
-Ljava/util/Collections$UnmodifiableNavigableSet;-><init>(Ljava/util/NavigableSet;)V
-Ljava/util/Collections$UnmodifiableNavigableSet;->EMPTY_NAVIGABLE_SET:Ljava/util/NavigableSet;
-Ljava/util/Collections$UnmodifiableNavigableSet;->ns:Ljava/util/NavigableSet;
-Ljava/util/Collections$UnmodifiableRandomAccessList;-><init>(Ljava/util/List;)V
-Ljava/util/Collections$UnmodifiableSet;-><init>(Ljava/util/Set;)V
-Ljava/util/Collections$UnmodifiableSortedMap;-><init>(Ljava/util/SortedMap;)V
-Ljava/util/Collections$UnmodifiableSortedMap;->sm:Ljava/util/SortedMap;
-Ljava/util/Collections$UnmodifiableSortedSet;-><init>(Ljava/util/SortedSet;)V
-Ljava/util/Collections$UnmodifiableSortedSet;->ss:Ljava/util/SortedSet;
-Ljava/util/Collections;-><init>()V
-Ljava/util/Collections;->BINARYSEARCH_THRESHOLD:I
-Ljava/util/Collections;->COPY_THRESHOLD:I
-Ljava/util/Collections;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/Collections;->FILL_THRESHOLD:I
-Ljava/util/Collections;->get(Ljava/util/ListIterator;I)Ljava/lang/Object;
-Ljava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;)I
-Ljava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I
-Ljava/util/Collections;->INDEXOFSUBLIST_THRESHOLD:I
-Ljava/util/Collections;->iteratorBinarySearch(Ljava/util/List;Ljava/lang/Object;)I
-Ljava/util/Collections;->iteratorBinarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I
-Ljava/util/Collections;->r:Ljava/util/Random;
-Ljava/util/Collections;->REPLACEALL_THRESHOLD:I
-Ljava/util/Collections;->REVERSE_THRESHOLD:I
-Ljava/util/Collections;->rotate1(Ljava/util/List;I)V
-Ljava/util/Collections;->rotate2(Ljava/util/List;I)V
-Ljava/util/Collections;->ROTATE_THRESHOLD:I
-Ljava/util/Collections;->SHUFFLE_THRESHOLD:I
-Ljava/util/Collections;->singletonIterator(Ljava/lang/Object;)Ljava/util/Iterator;
-Ljava/util/Collections;->singletonSpliterator(Ljava/lang/Object;)Ljava/util/Spliterator;
-Ljava/util/Collections;->swap([Ljava/lang/Object;II)V
-Ljava/util/Collections;->synchronizedCollection(Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/Collection;
-Ljava/util/Collections;->synchronizedList(Ljava/util/List;Ljava/lang/Object;)Ljava/util/List;
-Ljava/util/Collections;->synchronizedSet(Ljava/util/Set;Ljava/lang/Object;)Ljava/util/Set;
-Ljava/util/Collections;->zeroLengthArray(Ljava/lang/Class;)[Ljava/lang/Object;
-Ljava/util/concurrent/AbstractExecutorService;->cancelAll(Ljava/util/ArrayList;)V
-Ljava/util/concurrent/AbstractExecutorService;->cancelAll(Ljava/util/ArrayList;I)V
-Ljava/util/concurrent/AbstractExecutorService;->doInvokeAny(Ljava/util/Collection;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->cursor:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->detach()V
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->DETACHED:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->distance(III)I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->incCursor(I)I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->incorporateDequeues()V
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->invalidated(IIJI)Z
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->isDetached()Z
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->lastItem:Ljava/lang/Object;
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->lastRet:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->nextIndex:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->nextItem:Ljava/lang/Object;
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->NONE:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->noNext()V
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->prevCycles:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->prevTakeIndex:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->REMOVED:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->removedAt(I)Z
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->shutdown()V
-Ljava/util/concurrent/ArrayBlockingQueue$Itr;->takeIndexWrapped()Z
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;->next:Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->cycles:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->doSomeSweeping(Z)V
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->elementDequeued()V
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->head:Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->LONG_SWEEP_PROBES:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->queueIsEmpty()V
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->register(Ljava/util/concurrent/ArrayBlockingQueue$Itr;)V
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->removedAt(I)V
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->SHORT_SWEEP_PROBES:I
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->sweeper:Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;
-Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->takeIndexWrapped()V
-Ljava/util/concurrent/ArrayBlockingQueue;->count:I
-Ljava/util/concurrent/ArrayBlockingQueue;->dec(I)I
-Ljava/util/concurrent/ArrayBlockingQueue;->dequeue()Ljava/lang/Object;
-Ljava/util/concurrent/ArrayBlockingQueue;->enqueue(Ljava/lang/Object;)V
-Ljava/util/concurrent/ArrayBlockingQueue;->itemAt(I)Ljava/lang/Object;
-Ljava/util/concurrent/ArrayBlockingQueue;->items:[Ljava/lang/Object;
-Ljava/util/concurrent/ArrayBlockingQueue;->itrs:Ljava/util/concurrent/ArrayBlockingQueue$Itrs;
-Ljava/util/concurrent/ArrayBlockingQueue;->lock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/util/concurrent/ArrayBlockingQueue;->notEmpty:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/ArrayBlockingQueue;->notFull:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/ArrayBlockingQueue;->putIndex:I
-Ljava/util/concurrent/ArrayBlockingQueue;->removeAt(I)V
-Ljava/util/concurrent/ArrayBlockingQueue;->takeIndex:I
-Ljava/util/concurrent/atomic/AtomicBoolean;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicBoolean;->value:I
-Ljava/util/concurrent/atomic/AtomicBoolean;->VALUE:J
-Ljava/util/concurrent/atomic/AtomicInteger;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicInteger;->VALUE:J
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->ABASE:I
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->array:[I
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->ASHIFT:I
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->byteOffset(I)J
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->checkedByteOffset(I)J
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->compareAndSetRaw(JII)Z
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->getRaw(J)I
-Ljava/util/concurrent/atomic/AtomicIntegerArray;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->cclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->offset:J
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->tclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->throwAccessCheckException(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicLong;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicLong;->VALUE:J
-Ljava/util/concurrent/atomic/AtomicLong;->value:J
-Ljava/util/concurrent/atomic/AtomicLong;->VMSupportsCS8()Z
-Ljava/util/concurrent/atomic/AtomicLong;->VM_SUPPORTS_LONG_CAS:Z
-Ljava/util/concurrent/atomic/AtomicLongArray;->ABASE:I
-Ljava/util/concurrent/atomic/AtomicLongArray;->array:[J
-Ljava/util/concurrent/atomic/AtomicLongArray;->ASHIFT:I
-Ljava/util/concurrent/atomic/AtomicLongArray;->byteOffset(I)J
-Ljava/util/concurrent/atomic/AtomicLongArray;->checkedByteOffset(I)J
-Ljava/util/concurrent/atomic/AtomicLongArray;->compareAndSetRaw(JJJ)Z
-Ljava/util/concurrent/atomic/AtomicLongArray;->getRaw(J)J
-Ljava/util/concurrent/atomic/AtomicLongArray;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->accessCheck(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->cclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->offset:J
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->tclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->throwAccessCheckException(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->accessCheck(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->accessCheckException(Ljava/lang/Object;)Ljava/lang/RuntimeException;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->cclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->offset:J
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->tclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;-><init>(Ljava/lang/Object;Z)V
-Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;->mark:Z
-Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;->of(Ljava/lang/Object;Z)Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;
-Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;->reference:Ljava/lang/Object;
-Ljava/util/concurrent/atomic/AtomicMarkableReference;->casPair(Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;)Z
-Ljava/util/concurrent/atomic/AtomicMarkableReference;->PAIR:J
-Ljava/util/concurrent/atomic/AtomicMarkableReference;->pair:Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;
-Ljava/util/concurrent/atomic/AtomicMarkableReference;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicReference;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicReference;->VALUE:J
-Ljava/util/concurrent/atomic/AtomicReference;->value:Ljava/lang/Object;
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->ABASE:I
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->ARRAY:J
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->array:[Ljava/lang/Object;
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->ASHIFT:I
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->byteOffset(I)J
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->checkedByteOffset(I)J
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->compareAndSetRaw(JLjava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->getRaw(J)Ljava/lang/Object;
-Ljava/util/concurrent/atomic/AtomicReferenceArray;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;-><init>(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->cclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->offset:J
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->tclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->throwAccessCheckException(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->throwCCE()V
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->valueCheck(Ljava/lang/Object;)V
-Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->vclass:Ljava/lang/Class;
-Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;-><init>(Ljava/lang/Object;I)V
-Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;->of(Ljava/lang/Object;I)Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;
-Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;->reference:Ljava/lang/Object;
-Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;->stamp:I
-Ljava/util/concurrent/atomic/AtomicStampedReference;->casPair(Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;)Z
-Ljava/util/concurrent/atomic/AtomicStampedReference;->PAIR:J
-Ljava/util/concurrent/atomic/AtomicStampedReference;->pair:Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;
-Ljava/util/concurrent/atomic/AtomicStampedReference;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;-><init>(DLjava/util/function/DoubleBinaryOperator;J)V
-Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->function:Ljava/util/function/DoubleBinaryOperator;
-Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->identity:J
-Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->value:D
-Ljava/util/concurrent/atomic/DoubleAccumulator;->function:Ljava/util/function/DoubleBinaryOperator;
-Ljava/util/concurrent/atomic/DoubleAccumulator;->identity:J
-Ljava/util/concurrent/atomic/DoubleAdder$SerializationProxy;-><init>(Ljava/util/concurrent/atomic/DoubleAdder;)V
-Ljava/util/concurrent/atomic/DoubleAdder$SerializationProxy;->value:D
-Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;-><init>(JLjava/util/function/LongBinaryOperator;J)V
-Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->function:Ljava/util/function/LongBinaryOperator;
-Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->identity:J
-Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->value:J
-Ljava/util/concurrent/atomic/LongAccumulator;->function:Ljava/util/function/LongBinaryOperator;
-Ljava/util/concurrent/atomic/LongAccumulator;->identity:J
-Ljava/util/concurrent/atomic/LongAdder$SerializationProxy;-><init>(Ljava/util/concurrent/atomic/LongAdder;)V
-Ljava/util/concurrent/atomic/LongAdder$SerializationProxy;->value:J
-Ljava/util/concurrent/atomic/Striped64$Cell;-><init>(J)V
-Ljava/util/concurrent/atomic/Striped64$Cell;->cas(JJ)Z
-Ljava/util/concurrent/atomic/Striped64$Cell;->reset()V
-Ljava/util/concurrent/atomic/Striped64$Cell;->reset(J)V
-Ljava/util/concurrent/atomic/Striped64$Cell;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/atomic/Striped64$Cell;->VALUE:J
-Ljava/util/concurrent/atomic/Striped64$Cell;->value:J
-Ljava/util/concurrent/atomic/Striped64;-><init>()V
-Ljava/util/concurrent/atomic/Striped64;->advanceProbe(I)I
-Ljava/util/concurrent/atomic/Striped64;->apply(Ljava/util/function/DoubleBinaryOperator;JD)J
-Ljava/util/concurrent/atomic/Striped64;->BASE:J
-Ljava/util/concurrent/atomic/Striped64;->base:J
-Ljava/util/concurrent/atomic/Striped64;->casBase(JJ)Z
-Ljava/util/concurrent/atomic/Striped64;->casCellsBusy()Z
-Ljava/util/concurrent/atomic/Striped64;->cells:[Ljava/util/concurrent/atomic/Striped64$Cell;
-Ljava/util/concurrent/atomic/Striped64;->cellsBusy:I
-Ljava/util/concurrent/atomic/Striped64;->CELLSBUSY:J
-Ljava/util/concurrent/atomic/Striped64;->doubleAccumulate(DLjava/util/function/DoubleBinaryOperator;Z)V
-Ljava/util/concurrent/atomic/Striped64;->getProbe()I
-Ljava/util/concurrent/atomic/Striped64;->longAccumulate(JLjava/util/function/LongBinaryOperator;Z)V
-Ljava/util/concurrent/atomic/Striped64;->NCPU:I
-Ljava/util/concurrent/atomic/Striped64;->PROBE:J
-Ljava/util/concurrent/atomic/Striped64;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/CompletableFuture$AltResult;-><init>(Ljava/lang/Throwable;)V
-Ljava/util/concurrent/CompletableFuture$AltResult;->ex:Ljava/lang/Throwable;
-Ljava/util/concurrent/CompletableFuture$AsyncRun;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V
-Ljava/util/concurrent/CompletableFuture$AsyncRun;->dep:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$AsyncRun;->fn:Ljava/lang/Runnable;
-Ljava/util/concurrent/CompletableFuture$AsyncRun;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/CompletableFuture$AsyncSupply;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Supplier;)V
-Ljava/util/concurrent/CompletableFuture$AsyncSupply;->dep:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$AsyncSupply;->fn:Ljava/util/function/Supplier;
-Ljava/util/concurrent/CompletableFuture$AsyncSupply;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/CompletableFuture$BiAccept;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;)V
-Ljava/util/concurrent/CompletableFuture$BiAccept;->fn:Ljava/util/function/BiConsumer;
-Ljava/util/concurrent/CompletableFuture$BiAccept;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$BiApply;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/CompletableFuture$BiApply;->fn:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/CompletableFuture$BiApply;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$BiCompletion;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
-Ljava/util/concurrent/CompletableFuture$BiCompletion;->snd:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$BiRelay;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
-Ljava/util/concurrent/CompletableFuture$BiRelay;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$BiRun;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V
-Ljava/util/concurrent/CompletableFuture$BiRun;->fn:Ljava/lang/Runnable;
-Ljava/util/concurrent/CompletableFuture$BiRun;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$Canceller;-><init>(Ljava/util/concurrent/Future;)V
-Ljava/util/concurrent/CompletableFuture$Canceller;->accept(Ljava/lang/Object;Ljava/lang/Throwable;)V
-Ljava/util/concurrent/CompletableFuture$Canceller;->f:Ljava/util/concurrent/Future;
-Ljava/util/concurrent/CompletableFuture$CoCompletion;-><init>(Ljava/util/concurrent/CompletableFuture$BiCompletion;)V
-Ljava/util/concurrent/CompletableFuture$CoCompletion;->base:Ljava/util/concurrent/CompletableFuture$BiCompletion;
-Ljava/util/concurrent/CompletableFuture$CoCompletion;->isLive()Z
-Ljava/util/concurrent/CompletableFuture$CoCompletion;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$Completion;-><init>()V
-Ljava/util/concurrent/CompletableFuture$Completion;->isLive()Z
-Ljava/util/concurrent/CompletableFuture$Completion;->next:Ljava/util/concurrent/CompletableFuture$Completion;
-Ljava/util/concurrent/CompletableFuture$Completion;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/CompletableFuture$Completion;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$DelayedCompleter;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/lang/Object;)V
-Ljava/util/concurrent/CompletableFuture$DelayedCompleter;->f:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$DelayedCompleter;->u:Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture$DelayedExecutor;-><init>(JLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/Executor;)V
-Ljava/util/concurrent/CompletableFuture$DelayedExecutor;->delay:J
-Ljava/util/concurrent/CompletableFuture$DelayedExecutor;->executor:Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture$DelayedExecutor;->unit:Ljava/util/concurrent/TimeUnit;
-Ljava/util/concurrent/CompletableFuture$Delayer$DaemonThreadFactory;-><init>()V
-Ljava/util/concurrent/CompletableFuture$Delayer;-><init>()V
-Ljava/util/concurrent/CompletableFuture$Delayer;->delay(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
-Ljava/util/concurrent/CompletableFuture$Delayer;->delayer:Ljava/util/concurrent/ScheduledThreadPoolExecutor;
-Ljava/util/concurrent/CompletableFuture$MinimalStage;-><init>()V
-Ljava/util/concurrent/CompletableFuture$MinimalStage;-><init>(Ljava/lang/Object;)V
-Ljava/util/concurrent/CompletableFuture$MinimalStage;->completeAsync(Ljava/util/function/Supplier;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$MinimalStage;->completeAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$MinimalStage;->completeOnTimeout(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$MinimalStage;->newIncompleteFuture()Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$MinimalStage;->orTimeout(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$OrAccept;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/CompletableFuture$OrAccept;->fn:Ljava/util/function/Consumer;
-Ljava/util/concurrent/CompletableFuture$OrAccept;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$OrApply;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V
-Ljava/util/concurrent/CompletableFuture$OrApply;->fn:Ljava/util/function/Function;
-Ljava/util/concurrent/CompletableFuture$OrApply;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$OrRelay;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
-Ljava/util/concurrent/CompletableFuture$OrRelay;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$OrRun;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V
-Ljava/util/concurrent/CompletableFuture$OrRun;->fn:Ljava/lang/Runnable;
-Ljava/util/concurrent/CompletableFuture$OrRun;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$Signaller;-><init>(ZJJ)V
-Ljava/util/concurrent/CompletableFuture$Signaller;->deadline:J
-Ljava/util/concurrent/CompletableFuture$Signaller;->interrupted:Z
-Ljava/util/concurrent/CompletableFuture$Signaller;->interruptible:Z
-Ljava/util/concurrent/CompletableFuture$Signaller;->isLive()Z
-Ljava/util/concurrent/CompletableFuture$Signaller;->nanos:J
-Ljava/util/concurrent/CompletableFuture$Signaller;->thread:Ljava/lang/Thread;
-Ljava/util/concurrent/CompletableFuture$Signaller;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$TaskSubmitter;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
-Ljava/util/concurrent/CompletableFuture$TaskSubmitter;->action:Ljava/lang/Runnable;
-Ljava/util/concurrent/CompletableFuture$TaskSubmitter;->executor:Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture$ThreadPerTaskExecutor;-><init>()V
-Ljava/util/concurrent/CompletableFuture$Timeout;-><init>(Ljava/util/concurrent/CompletableFuture;)V
-Ljava/util/concurrent/CompletableFuture$Timeout;->f:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniAccept;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/CompletableFuture$UniAccept;->fn:Ljava/util/function/Consumer;
-Ljava/util/concurrent/CompletableFuture$UniAccept;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniApply;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V
-Ljava/util/concurrent/CompletableFuture$UniApply;->fn:Ljava/util/function/Function;
-Ljava/util/concurrent/CompletableFuture$UniApply;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniCompletion;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
-Ljava/util/concurrent/CompletableFuture$UniCompletion;->claim()Z
-Ljava/util/concurrent/CompletableFuture$UniCompletion;->dep:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniCompletion;->executor:Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture$UniCompletion;->isLive()Z
-Ljava/util/concurrent/CompletableFuture$UniCompletion;->src:Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniCompose;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V
-Ljava/util/concurrent/CompletableFuture$UniCompose;->fn:Ljava/util/function/Function;
-Ljava/util/concurrent/CompletableFuture$UniCompose;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniExceptionally;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V
-Ljava/util/concurrent/CompletableFuture$UniExceptionally;->fn:Ljava/util/function/Function;
-Ljava/util/concurrent/CompletableFuture$UniExceptionally;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniHandle;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/CompletableFuture$UniHandle;->fn:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/CompletableFuture$UniHandle;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniRelay;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V
-Ljava/util/concurrent/CompletableFuture$UniRelay;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniRun;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V
-Ljava/util/concurrent/CompletableFuture$UniRun;->fn:Ljava/lang/Runnable;
-Ljava/util/concurrent/CompletableFuture$UniRun;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture$UniWhenComplete;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;)V
-Ljava/util/concurrent/CompletableFuture$UniWhenComplete;->fn:Ljava/util/function/BiConsumer;
-Ljava/util/concurrent/CompletableFuture$UniWhenComplete;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;-><init>(Ljava/lang/Object;)V
-Ljava/util/concurrent/CompletableFuture;->andTree([Ljava/util/concurrent/CompletableFuture;II)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->ASYNC:I
-Ljava/util/concurrent/CompletableFuture;->asyncRunStage(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->asyncSupplyStage(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->ASYNC_POOL:Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture;->biAccept(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture$BiAccept;)Z
-Ljava/util/concurrent/CompletableFuture;->biAcceptStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->biApply(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;Ljava/util/concurrent/CompletableFuture$BiApply;)Z
-Ljava/util/concurrent/CompletableFuture;->biApplyStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->bipush(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture$BiCompletion;)V
-Ljava/util/concurrent/CompletableFuture;->biRelay(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)Z
-Ljava/util/concurrent/CompletableFuture;->biRun(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;Ljava/util/concurrent/CompletableFuture$BiRun;)Z
-Ljava/util/concurrent/CompletableFuture;->biRunStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->casStack(Ljava/util/concurrent/CompletableFuture$Completion;Ljava/util/concurrent/CompletableFuture$Completion;)Z
-Ljava/util/concurrent/CompletableFuture;->cleanStack()V
-Ljava/util/concurrent/CompletableFuture;->completeAsync(Ljava/util/function/Supplier;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->completeAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->completedStage(Ljava/lang/Object;)Ljava/util/concurrent/CompletionStage;
-Ljava/util/concurrent/CompletableFuture;->completeNull()Z
-Ljava/util/concurrent/CompletableFuture;->completeOnTimeout(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->completeRelay(Ljava/lang/Object;)Z
-Ljava/util/concurrent/CompletableFuture;->completeThrowable(Ljava/lang/Throwable;)Z
-Ljava/util/concurrent/CompletableFuture;->completeThrowable(Ljava/lang/Throwable;Ljava/lang/Object;)Z
-Ljava/util/concurrent/CompletableFuture;->completeValue(Ljava/lang/Object;)Z
-Ljava/util/concurrent/CompletableFuture;->copy()Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->defaultExecutor()Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture;->delayedExecutor(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture;->delayedExecutor(JLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture;->encodeOutcome(Ljava/lang/Object;Ljava/lang/Throwable;)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->encodeRelay(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->encodeThrowable(Ljava/lang/Throwable;)Ljava/util/concurrent/CompletableFuture$AltResult;
-Ljava/util/concurrent/CompletableFuture;->encodeThrowable(Ljava/lang/Throwable;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->encodeValue(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->failedFuture(Ljava/lang/Throwable;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->failedStage(Ljava/lang/Throwable;)Ljava/util/concurrent/CompletionStage;
-Ljava/util/concurrent/CompletableFuture;->internalComplete(Ljava/lang/Object;)Z
-Ljava/util/concurrent/CompletableFuture;->lazySetNext(Ljava/util/concurrent/CompletableFuture$Completion;Ljava/util/concurrent/CompletableFuture$Completion;)V
-Ljava/util/concurrent/CompletableFuture;->minimalCompletionStage()Ljava/util/concurrent/CompletionStage;
-Ljava/util/concurrent/CompletableFuture;->NESTED:I
-Ljava/util/concurrent/CompletableFuture;->newIncompleteFuture()Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->NEXT:J
-Ljava/util/concurrent/CompletableFuture;->NIL:Ljava/util/concurrent/CompletableFuture$AltResult;
-Ljava/util/concurrent/CompletableFuture;->orAccept(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;Ljava/util/concurrent/CompletableFuture$OrAccept;)Z
-Ljava/util/concurrent/CompletableFuture;->orAcceptStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->orApply(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;Ljava/util/concurrent/CompletableFuture$OrApply;)Z
-Ljava/util/concurrent/CompletableFuture;->orApplyStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->orpush(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture$BiCompletion;)V
-Ljava/util/concurrent/CompletableFuture;->orRelay(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)Z
-Ljava/util/concurrent/CompletableFuture;->orRun(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;Ljava/util/concurrent/CompletableFuture$OrRun;)Z
-Ljava/util/concurrent/CompletableFuture;->orRunStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->orTimeout(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->orTree([Ljava/util/concurrent/CompletableFuture;II)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->postComplete()V
-Ljava/util/concurrent/CompletableFuture;->postFire(Ljava/util/concurrent/CompletableFuture;I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->postFire(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;I)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->push(Ljava/util/concurrent/CompletableFuture$UniCompletion;)V
-Ljava/util/concurrent/CompletableFuture;->pushStack(Ljava/util/concurrent/CompletableFuture$Completion;)V
-Ljava/util/concurrent/CompletableFuture;->reportGet(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->reportJoin(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->RESULT:J
-Ljava/util/concurrent/CompletableFuture;->result:Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->screenExecutor(Ljava/util/concurrent/Executor;)Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/CompletableFuture;->SPINS:I
-Ljava/util/concurrent/CompletableFuture;->STACK:J
-Ljava/util/concurrent/CompletableFuture;->stack:Ljava/util/concurrent/CompletableFuture$Completion;
-Ljava/util/concurrent/CompletableFuture;->SYNC:I
-Ljava/util/concurrent/CompletableFuture;->timedGet(J)Ljava/lang/Object;
-Ljava/util/concurrent/CompletableFuture;->tryPushStack(Ljava/util/concurrent/CompletableFuture$Completion;)Z
-Ljava/util/concurrent/CompletableFuture;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/CompletableFuture;->uniAccept(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;Ljava/util/concurrent/CompletableFuture$UniAccept;)Z
-Ljava/util/concurrent/CompletableFuture;->uniAcceptStage(Ljava/util/concurrent/Executor;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniApply(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;Ljava/util/concurrent/CompletableFuture$UniApply;)Z
-Ljava/util/concurrent/CompletableFuture;->uniApplyStage(Ljava/util/concurrent/Executor;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniAsMinimalStage()Ljava/util/concurrent/CompletableFuture$MinimalStage;
-Ljava/util/concurrent/CompletableFuture;->uniCompose(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;Ljava/util/concurrent/CompletableFuture$UniCompose;)Z
-Ljava/util/concurrent/CompletableFuture;->uniComposeStage(Ljava/util/concurrent/Executor;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniCopyStage()Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniExceptionally(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;Ljava/util/concurrent/CompletableFuture$UniExceptionally;)Z
-Ljava/util/concurrent/CompletableFuture;->uniExceptionallyStage(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniHandle(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;Ljava/util/concurrent/CompletableFuture$UniHandle;)Z
-Ljava/util/concurrent/CompletableFuture;->uniHandleStage(Ljava/util/concurrent/Executor;Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniRelay(Ljava/util/concurrent/CompletableFuture;)Z
-Ljava/util/concurrent/CompletableFuture;->uniRun(Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;Ljava/util/concurrent/CompletableFuture$UniRun;)Z
-Ljava/util/concurrent/CompletableFuture;->uniRunStage(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->uniWhenComplete(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture$UniWhenComplete;)Z
-Ljava/util/concurrent/CompletableFuture;->uniWhenCompleteStage(Ljava/util/concurrent/Executor;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
-Ljava/util/concurrent/CompletableFuture;->USE_COMMON_POOL:Z
-Ljava/util/concurrent/CompletableFuture;->waitingGet(Z)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->hasNext()Z
-Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->lastReturned:Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->map:Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->remove()V
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->advance()Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->baseIndex:I
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->baseLimit:I
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->baseSize:I
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->batch:I
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->index:I
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->next:Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->pushState([Ljava/util/concurrent/ConcurrentHashMap$Node;II)V
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->recoverState(I)V
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->spare:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->stack:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
-Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->tab:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$CollectionView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$CollectionView;->getMap()Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/util/concurrent/ConcurrentHashMap$CollectionView;->map:Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/util/concurrent/ConcurrentHashMap$CollectionView;->OOME_MSG:Ljava/lang/String;
-Ljava/util/concurrent/ConcurrentHashMap$CounterCell;-><init>(J)V
-Ljava/util/concurrent/ConcurrentHashMap$CounterCell;->value:J
-Ljava/util/concurrent/ConcurrentHashMap$EntryIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->add(Ljava/util/Map$Entry;)Z
-Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->addAll(Ljava/util/Collection;)Z
-Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->removeIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJLjava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->est:J
-Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->map:Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentHashMap$ForEachEntryTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachEntryTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachKeyTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachKeyTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachMappingTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiConsumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachMappingTask;->action:Ljava/util/function/BiConsumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiFunction;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask;->transformer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$ForEachValueTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForEachValueTask;->action:Ljava/util/function/Consumer;
-Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;)V
-Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;->nextTable:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$KeyIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$KeySetView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;Ljava/lang/Object;)V
-Ljava/util/concurrent/ConcurrentHashMap$KeySetView;->value:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJ)V
-Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;->est:J
-Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentHashMap$MapEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapEntry;->key:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$MapEntry;->map:Ljava/util/concurrent/ConcurrentHashMap;
-Ljava/util/concurrent/ConcurrentHashMap$MapEntry;->val:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->basis:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->reducer:Ljava/util/function/DoubleBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->result:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->transformer:Ljava/util/function/ToDoubleFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->basis:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->reducer:Ljava/util/function/IntBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->result:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->transformer:Ljava/util/function/ToIntFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->basis:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->reducer:Ljava/util/function/LongBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->result:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->transformer:Ljava/util/function/ToLongFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->basis:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->reducer:Ljava/util/function/DoubleBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->result:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->transformer:Ljava/util/function/ToDoubleFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->basis:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->reducer:Ljava/util/function/IntBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->result:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->transformer:Ljava/util/function/ToIntFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->basis:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->reducer:Ljava/util/function/LongBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->result:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->transformer:Ljava/util/function/ToLongFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->transformer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;Ljava/util/function/ToDoubleBiFunction;DLjava/util/function/DoubleBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->basis:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->reducer:Ljava/util/function/DoubleBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->result:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->transformer:Ljava/util/function/ToDoubleBiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;Ljava/util/function/ToIntBiFunction;ILjava/util/function/IntBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->basis:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->reducer:Ljava/util/function/IntBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->result:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->transformer:Ljava/util/function/ToIntBiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;Ljava/util/function/ToLongBiFunction;JLjava/util/function/LongBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->basis:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->reducer:Ljava/util/function/LongBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->result:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->transformer:Ljava/util/function/ToLongBiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->transformer:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->basis:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->reducer:Ljava/util/function/DoubleBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->result:D
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->transformer:Ljava/util/function/ToDoubleFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->basis:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->reducer:Ljava/util/function/IntBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->result:I
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->transformer:Ljava/util/function/ToIntFunction;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->basis:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->reducer:Ljava/util/function/LongBinaryOperator;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->result:J
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;
-Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->transformer:Ljava/util/function/ToLongFunction;
-Ljava/util/concurrent/ConcurrentHashMap$Node;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;)V
-Ljava/util/concurrent/ConcurrentHashMap$Node;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$Node;->hash:I
-Ljava/util/concurrent/ConcurrentHashMap$Node;->key:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$Node;->next:Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$Node;->val:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->result:Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;Ljava/util/function/BiFunction;)V
-Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->reducer:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;
-Ljava/util/concurrent/ConcurrentHashMap$ReservationNode;-><init>()V
-Ljava/util/concurrent/ConcurrentHashMap$ReservationNode;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V
-Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask;->result:Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask;->searchFunction:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V
-Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask;->result:Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask;->searchFunction:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiFunction;Ljava/util/concurrent/atomic/AtomicReference;)V
-Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask;->result:Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask;->searchFunction:Ljava/util/function/BiFunction;
-Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V
-Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask;->result:Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask;->searchFunction:Ljava/util/function/Function;
-Ljava/util/concurrent/ConcurrentHashMap$Segment;-><init>(F)V
-Ljava/util/concurrent/ConcurrentHashMap$Segment;->loadFactor:F
-Ljava/util/concurrent/ConcurrentHashMap$TableStack;-><init>()V
-Ljava/util/concurrent/ConcurrentHashMap$TableStack;->index:I
-Ljava/util/concurrent/ConcurrentHashMap$TableStack;->length:I
-Ljava/util/concurrent/ConcurrentHashMap$TableStack;->next:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
-Ljava/util/concurrent/ConcurrentHashMap$TableStack;->tab:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;III)V
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->advance()Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->baseIndex:I
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->baseLimit:I
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->baseSize:I
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->index:I
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->next:Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->pushState([Ljava/util/concurrent/ConcurrentHashMap$Node;II)V
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->recoverState(I)V
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->spare:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->stack:Ljava/util/concurrent/ConcurrentHashMap$TableStack;
-Ljava/util/concurrent/ConcurrentHashMap$Traverser;->tab:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;-><init>(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->balanceDeletion(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->balanceInsertion(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->checkInvariants(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Z
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->contendedLock()V
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->first:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->lockRoot()V
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->lockState:I
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->LOCKSTATE:J
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->putTreeVal(ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->READER:I
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->removeTreeNode(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Z
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->root:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->rotateLeft(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->rotateRight(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->tieBreakOrder(Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->unlockRoot()V
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->WAITER:I
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->waiter:Ljava/lang/Thread;
-Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->WRITER:I
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->findTreeNode(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->left:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->parent:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->prev:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->red:Z
-Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->right:Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJ)V
-Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;->est:J
-Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentHashMap$ValuesView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
-Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->add(Ljava/lang/Object;)Z
-Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->addAll(Ljava/util/Collection;)Z
-Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->removeIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentHashMap;->ABASE:I
-Ljava/util/concurrent/ConcurrentHashMap;->addCount(JI)V
-Ljava/util/concurrent/ConcurrentHashMap;->ASHIFT:I
-Ljava/util/concurrent/ConcurrentHashMap;->BASECOUNT:J
-Ljava/util/concurrent/ConcurrentHashMap;->baseCount:J
-Ljava/util/concurrent/ConcurrentHashMap;->batchFor(J)I
-Ljava/util/concurrent/ConcurrentHashMap;->casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
-Ljava/util/concurrent/ConcurrentHashMap;->cellsBusy:I
-Ljava/util/concurrent/ConcurrentHashMap;->CELLSBUSY:J
-Ljava/util/concurrent/ConcurrentHashMap;->CELLVALUE:J
-Ljava/util/concurrent/ConcurrentHashMap;->comparableClassFor(Ljava/lang/Object;)Ljava/lang/Class;
-Ljava/util/concurrent/ConcurrentHashMap;->compareComparables(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/concurrent/ConcurrentHashMap;->counterCells:[Ljava/util/concurrent/ConcurrentHashMap$CounterCell;
-Ljava/util/concurrent/ConcurrentHashMap;->DEFAULT_CAPACITY:I
-Ljava/util/concurrent/ConcurrentHashMap;->DEFAULT_CONCURRENCY_LEVEL:I
-Ljava/util/concurrent/ConcurrentHashMap;->entrySet:Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;
-Ljava/util/concurrent/ConcurrentHashMap;->fullAddCount(JZ)V
-Ljava/util/concurrent/ConcurrentHashMap;->HASH_BITS:I
-Ljava/util/concurrent/ConcurrentHashMap;->helpTransfer([Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap;->initTable()[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap;->keySet:Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
-Ljava/util/concurrent/ConcurrentHashMap;->LOAD_FACTOR:F
-Ljava/util/concurrent/ConcurrentHashMap;->MAXIMUM_CAPACITY:I
-Ljava/util/concurrent/ConcurrentHashMap;->MAX_ARRAY_SIZE:I
-Ljava/util/concurrent/ConcurrentHashMap;->MAX_RESIZERS:I
-Ljava/util/concurrent/ConcurrentHashMap;->MIN_TRANSFER_STRIDE:I
-Ljava/util/concurrent/ConcurrentHashMap;->MIN_TREEIFY_CAPACITY:I
-Ljava/util/concurrent/ConcurrentHashMap;->MOVED:I
-Ljava/util/concurrent/ConcurrentHashMap;->NCPU:I
-Ljava/util/concurrent/ConcurrentHashMap;->nextTable:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap;->putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap;->removeEntryIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentHashMap;->removeValueIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentHashMap;->replaceNode(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentHashMap;->RESERVED:I
-Ljava/util/concurrent/ConcurrentHashMap;->resizeStamp(I)I
-Ljava/util/concurrent/ConcurrentHashMap;->RESIZE_STAMP_BITS:I
-Ljava/util/concurrent/ConcurrentHashMap;->RESIZE_STAMP_SHIFT:I
-Ljava/util/concurrent/ConcurrentHashMap;->setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
-Ljava/util/concurrent/ConcurrentHashMap;->sizeCtl:I
-Ljava/util/concurrent/ConcurrentHashMap;->SIZECTL:J
-Ljava/util/concurrent/ConcurrentHashMap;->spread(I)I
-Ljava/util/concurrent/ConcurrentHashMap;->sumCount()J
-Ljava/util/concurrent/ConcurrentHashMap;->tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap;->table:[Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap;->tableSizeFor(I)I
-Ljava/util/concurrent/ConcurrentHashMap;->transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
-Ljava/util/concurrent/ConcurrentHashMap;->transferIndex:I
-Ljava/util/concurrent/ConcurrentHashMap;->TRANSFERINDEX:J
-Ljava/util/concurrent/ConcurrentHashMap;->TREEBIN:I
-Ljava/util/concurrent/ConcurrentHashMap;->treeifyBin([Ljava/util/concurrent/ConcurrentHashMap$Node;I)V
-Ljava/util/concurrent/ConcurrentHashMap;->TREEIFY_THRESHOLD:I
-Ljava/util/concurrent/ConcurrentHashMap;->tryPresize(I)V
-Ljava/util/concurrent/ConcurrentHashMap;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentHashMap;->untreeify(Ljava/util/concurrent/ConcurrentHashMap$Node;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-Ljava/util/concurrent/ConcurrentHashMap;->UNTREEIFY_THRESHOLD:I
-Ljava/util/concurrent/ConcurrentHashMap;->values:Ljava/util/concurrent/ConcurrentHashMap$ValuesView;
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->advance()V
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->lastRet:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->nextItem:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->nextNode(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->nextNode:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->startNode()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;-><init>(Ljava/util/concurrent/ConcurrentLinkedDeque;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->batch:I
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->current:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->exhausted:Z
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->MAX_BATCH:I
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->queue:Ljava/util/concurrent/ConcurrentLinkedDeque;
-Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentLinkedDeque$DescendingItr;->nextNode(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$DescendingItr;->startNode()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Itr;->nextNode(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Itr;->startNode()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;-><init>()V
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;-><init>(Ljava/lang/Object;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->casNext(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->casPrev(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->ITEM:J
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->item:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->lazySetNext(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->lazySetPrev(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->NEXT:J
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->next:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->PREV:J
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->prev:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->casHead(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedDeque;->casTail(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedDeque;->first()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->HEAD:J
-Ljava/util/concurrent/ConcurrentLinkedDeque;->head:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->HOPS:I
-Ljava/util/concurrent/ConcurrentLinkedDeque;->initHeadTail(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->last()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->linkFirst(Ljava/lang/Object;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->linkLast(Ljava/lang/Object;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->nextTerminator()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->NEXT_TERMINATOR:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->pred(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->prevTerminator()Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->PREV_TERMINATOR:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->screenNullResult(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->skipDeletedPredecessors(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->skipDeletedSuccessors(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->succ(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->TAIL:J
-Ljava/util/concurrent/ConcurrentLinkedDeque;->tail:Ljava/util/concurrent/ConcurrentLinkedDeque$Node;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->toArrayInternal([Ljava/lang/Object;)[Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentLinkedDeque;->unlink(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->unlinkFirst(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->unlinkLast(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->updateHead()V
-Ljava/util/concurrent/ConcurrentLinkedDeque;->updateTail()V
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;-><init>(Ljava/util/concurrent/ConcurrentLinkedQueue;)V
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->batch:I
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->current:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->exhausted:Z
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->MAX_BATCH:I
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
-Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;->lastRet:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;->nextItem:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;->nextNode:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue$Node;-><init>()V
-Ljava/util/concurrent/ConcurrentLinkedQueue$Node;->item:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedQueue$Node;->next:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->casHead(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedQueue;->casItem(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/concurrent/ConcurrentLinkedQueue;->casNext(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedQueue;->casTail(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z
-Ljava/util/concurrent/ConcurrentLinkedQueue;->first()Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->HEAD:J
-Ljava/util/concurrent/ConcurrentLinkedQueue;->head:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->ITEM:J
-Ljava/util/concurrent/ConcurrentLinkedQueue;->lazySetNext(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V
-Ljava/util/concurrent/ConcurrentLinkedQueue;->newNode(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->NEXT:J
-Ljava/util/concurrent/ConcurrentLinkedQueue;->succ(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->TAIL:J
-Ljava/util/concurrent/ConcurrentLinkedQueue;->tail:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->toArrayInternal([Ljava/lang/Object;)[Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentLinkedQueue;->updateHead(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->comparator:Ljava/util/Comparator;
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->current:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->est:I
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->estimateSize()J
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->fence:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->row:Ljava/util/concurrent/ConcurrentSkipListMap$Index;
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;->m:Ljava/util/concurrent/ConcurrentNavigableMap;
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;->removeIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;I)V
-Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;->level:I
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->casRight(Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->down:Ljava/util/concurrent/ConcurrentSkipListMap$Index;
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->indexesDeletedNode()Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->link(Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->node:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->RIGHT:J
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->right:Ljava/util/concurrent/ConcurrentSkipListMap$Index;
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentSkipListMap$Index;->unlink(Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->advance()V
-Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->lastReturned:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->next:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->nextValue:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->ceiling(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->floor(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->headSet(Ljava/lang/Object;)Ljava/util/NavigableSet;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->headSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->higher(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->lower(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->m:Ljava/util/concurrent/ConcurrentNavigableMap;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->subSet(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/NavigableSet;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->subSet(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableSet;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->tailSet(Ljava/lang/Object;)Ljava/util/NavigableSet;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->tailSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet;
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->appendMarker(Ljava/util/concurrent/ConcurrentSkipListMap$Node;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->casNext(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->casValue(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->createSnapshot()Ljava/util/AbstractMap$SimpleImmutableEntry;
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->getValidValue()Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->helpDelete(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->isBaseHeader()Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->isMarker()Z
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->key:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->NEXT:J
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->next:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->VALUE:J
-Ljava/util/concurrent/ConcurrentSkipListMap$Node;->value:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->advance()V
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->ascend()V
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->descend()V
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->lastReturned:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->next:Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->nextValue:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap;Ljava/lang/Object;ZLjava/lang/Object;ZZ)V
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->checkKeyBounds(Ljava/lang/Object;Ljava/util/Comparator;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->entrySetView:Ljava/util/Set;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->getNearEntry(Ljava/lang/Object;I)Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->getNearKey(Ljava/lang/Object;I)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->hi:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->highestEntry()Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->highestKey()Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->hiInclusive:Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->hiNode(Ljava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->inBounds(Ljava/lang/Object;Ljava/util/Comparator;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->isBeforeEnd(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/Comparator;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->isDescending:Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->keySetView:Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->lo:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->loInclusive:Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->loNode(Ljava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->lowestEntry()Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->lowestKey()Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->m:Ljava/util/concurrent/ConcurrentSkipListMap;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->newSubMap(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->removeHighest()Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->removeLowest()Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->tooHigh(Ljava/lang/Object;Ljava/util/Comparator;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->tooLow(Ljava/lang/Object;Ljava/util/Comparator;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->valuesView:Ljava/util/Collection;
-Ljava/util/concurrent/ConcurrentSkipListMap$Values;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$Values;->m:Ljava/util/concurrent/ConcurrentNavigableMap;
-Ljava/util/concurrent/ConcurrentSkipListMap$Values;->removeIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V
-Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap;->BASE_HEADER:Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap;->buildFromSorted(Ljava/util/SortedMap;)V
-Ljava/util/concurrent/ConcurrentSkipListMap;->casHead(Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap;->clearIndexToFirst()V
-Ljava/util/concurrent/ConcurrentSkipListMap;->comparator:Ljava/util/Comparator;
-Ljava/util/concurrent/ConcurrentSkipListMap;->cpr(Ljava/util/Comparator;Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/concurrent/ConcurrentSkipListMap;->descendingMap:Ljava/util/concurrent/ConcurrentNavigableMap;
-Ljava/util/concurrent/ConcurrentSkipListMap;->doGet(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap;->doPut(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap;->doRemove(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/concurrent/ConcurrentSkipListMap;->doRemoveFirstEntry()Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap;->doRemoveLastEntry()Ljava/util/Map$Entry;
-Ljava/util/concurrent/ConcurrentSkipListMap;->entrySet:Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;
-Ljava/util/concurrent/ConcurrentSkipListMap;->entrySpliterator()Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;
-Ljava/util/concurrent/ConcurrentSkipListMap;->EQ:I
-Ljava/util/concurrent/ConcurrentSkipListMap;->findFirst()Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap;->findLast()Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap;->findNear(Ljava/lang/Object;ILjava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap;->findNode(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap;->findPredecessor(Ljava/lang/Object;Ljava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap;->findPredecessorOfLast()Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-Ljava/util/concurrent/ConcurrentSkipListMap;->getNear(Ljava/lang/Object;I)Ljava/util/AbstractMap$SimpleImmutableEntry;
-Ljava/util/concurrent/ConcurrentSkipListMap;->GT:I
-Ljava/util/concurrent/ConcurrentSkipListMap;->HEAD:J
-Ljava/util/concurrent/ConcurrentSkipListMap;->head:Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;
-Ljava/util/concurrent/ConcurrentSkipListMap;->initialize()V
-Ljava/util/concurrent/ConcurrentSkipListMap;->keySet:Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;
-Ljava/util/concurrent/ConcurrentSkipListMap;->keySpliterator()Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;
-Ljava/util/concurrent/ConcurrentSkipListMap;->LT:I
-Ljava/util/concurrent/ConcurrentSkipListMap;->removeEntryIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap;->removeValueIf(Ljava/util/function/Predicate;)Z
-Ljava/util/concurrent/ConcurrentSkipListMap;->toList(Ljava/util/Collection;)Ljava/util/List;
-Ljava/util/concurrent/ConcurrentSkipListMap;->tryReduceLevel()V
-Ljava/util/concurrent/ConcurrentSkipListMap;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ConcurrentSkipListMap;->values:Ljava/util/concurrent/ConcurrentSkipListMap$Values;
-Ljava/util/concurrent/ConcurrentSkipListMap;->valueSpliterator()Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;
-Ljava/util/concurrent/ConcurrentSkipListSet;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V
-Ljava/util/concurrent/ConcurrentSkipListSet;->m:Ljava/util/concurrent/ConcurrentNavigableMap;
-Ljava/util/concurrent/ConcurrentSkipListSet;->MAP:J
-Ljava/util/concurrent/ConcurrentSkipListSet;->setMap(Ljava/util/concurrent/ConcurrentNavigableMap;)V
-Ljava/util/concurrent/ConcurrentSkipListSet;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;-><init>([Ljava/lang/Object;I)V
-Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;->cursor:I
-Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;->snapshot:[Ljava/lang/Object;
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;-><init>(Ljava/util/concurrent/CopyOnWriteArrayList;II)V
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->checkForComodification()V
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->expectedArray:[Ljava/lang/Object;
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->l:Ljava/util/concurrent/CopyOnWriteArrayList;
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->offset:I
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->rangeCheck(I)V
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->size:I
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;-><init>(Ljava/util/List;III)V
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;->it:Ljava/util/ListIterator;
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;->offset:I
-Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;->size:I
-Ljava/util/concurrent/CopyOnWriteArrayList;->addIfAbsent(Ljava/lang/Object;[Ljava/lang/Object;)Z
-Ljava/util/concurrent/CopyOnWriteArrayList;->get([Ljava/lang/Object;I)Ljava/lang/Object;
-Ljava/util/concurrent/CopyOnWriteArrayList;->getArray()[Ljava/lang/Object;
-Ljava/util/concurrent/CopyOnWriteArrayList;->indexOf(Ljava/lang/Object;[Ljava/lang/Object;II)I
-Ljava/util/concurrent/CopyOnWriteArrayList;->lastIndexOf(Ljava/lang/Object;[Ljava/lang/Object;I)I
-Ljava/util/concurrent/CopyOnWriteArrayList;->LOCK:J
-Ljava/util/concurrent/CopyOnWriteArrayList;->lock:Ljava/lang/Object;
-Ljava/util/concurrent/CopyOnWriteArrayList;->outOfBounds(II)Ljava/lang/String;
-Ljava/util/concurrent/CopyOnWriteArrayList;->remove(Ljava/lang/Object;[Ljava/lang/Object;I)Z
-Ljava/util/concurrent/CopyOnWriteArrayList;->removeRange(II)V
-Ljava/util/concurrent/CopyOnWriteArrayList;->resetLock()V
-Ljava/util/concurrent/CopyOnWriteArrayList;->setArray([Ljava/lang/Object;)V
-Ljava/util/concurrent/CopyOnWriteArrayList;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/CopyOnWriteArraySet;->compareSets([Ljava/lang/Object;Ljava/util/Set;)I
-Ljava/util/concurrent/CountDownLatch$Sync;-><init>(I)V
-Ljava/util/concurrent/CountDownLatch$Sync;->getCount()I
-Ljava/util/concurrent/CountDownLatch;->sync:Ljava/util/concurrent/CountDownLatch$Sync;
-Ljava/util/concurrent/CountedCompleter;->completer:Ljava/util/concurrent/CountedCompleter;
-Ljava/util/concurrent/CountedCompleter;->internalPropagateException(Ljava/lang/Throwable;)V
-Ljava/util/concurrent/CountedCompleter;->pending:I
-Ljava/util/concurrent/CountedCompleter;->PENDING:J
-Ljava/util/concurrent/CountedCompleter;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/CyclicBarrier$Generation;-><init>()V
-Ljava/util/concurrent/CyclicBarrier$Generation;->broken:Z
-Ljava/util/concurrent/CyclicBarrier;->barrierCommand:Ljava/lang/Runnable;
-Ljava/util/concurrent/CyclicBarrier;->breakBarrier()V
-Ljava/util/concurrent/CyclicBarrier;->count:I
-Ljava/util/concurrent/CyclicBarrier;->dowait(ZJ)I
-Ljava/util/concurrent/CyclicBarrier;->generation:Ljava/util/concurrent/CyclicBarrier$Generation;
-Ljava/util/concurrent/CyclicBarrier;->lock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/util/concurrent/CyclicBarrier;->nextGeneration()V
-Ljava/util/concurrent/CyclicBarrier;->parties:I
-Ljava/util/concurrent/CyclicBarrier;->trip:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/DelayQueue$Itr;->array:[Ljava/lang/Object;
-Ljava/util/concurrent/DelayQueue$Itr;->cursor:I
-Ljava/util/concurrent/DelayQueue$Itr;->lastRet:I
-Ljava/util/concurrent/DelayQueue;->available:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/DelayQueue;->leader:Ljava/lang/Thread;
-Ljava/util/concurrent/DelayQueue;->lock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/util/concurrent/DelayQueue;->peekExpired()Ljava/util/concurrent/Delayed;
-Ljava/util/concurrent/DelayQueue;->q:Ljava/util/PriorityQueue;
-Ljava/util/concurrent/DelayQueue;->removeEQ(Ljava/lang/Object;)V
-Ljava/util/concurrent/Exchanger$Node;-><init>()V
-Ljava/util/concurrent/Exchanger$Node;->bound:I
-Ljava/util/concurrent/Exchanger$Node;->collides:I
-Ljava/util/concurrent/Exchanger$Node;->hash:I
-Ljava/util/concurrent/Exchanger$Node;->index:I
-Ljava/util/concurrent/Exchanger$Node;->item:Ljava/lang/Object;
-Ljava/util/concurrent/Exchanger$Node;->match:Ljava/lang/Object;
-Ljava/util/concurrent/Exchanger$Node;->parked:Ljava/lang/Thread;
-Ljava/util/concurrent/Exchanger$Participant;-><init>()V
-Ljava/util/concurrent/Exchanger;->ABASE:I
-Ljava/util/concurrent/Exchanger;->arena:[Ljava/util/concurrent/Exchanger$Node;
-Ljava/util/concurrent/Exchanger;->arenaExchange(Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/Exchanger;->ASHIFT:I
-Ljava/util/concurrent/Exchanger;->BLOCKER:J
-Ljava/util/concurrent/Exchanger;->bound:I
-Ljava/util/concurrent/Exchanger;->BOUND:J
-Ljava/util/concurrent/Exchanger;->FULL:I
-Ljava/util/concurrent/Exchanger;->MATCH:J
-Ljava/util/concurrent/Exchanger;->MMASK:I
-Ljava/util/concurrent/Exchanger;->NCPU:I
-Ljava/util/concurrent/Exchanger;->NULL_ITEM:Ljava/lang/Object;
-Ljava/util/concurrent/Exchanger;->participant:Ljava/util/concurrent/Exchanger$Participant;
-Ljava/util/concurrent/Exchanger;->SEQ:I
-Ljava/util/concurrent/Exchanger;->SLOT:J
-Ljava/util/concurrent/Exchanger;->slot:Ljava/util/concurrent/Exchanger$Node;
-Ljava/util/concurrent/Exchanger;->slotExchange(Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/Exchanger;->SPINS:I
-Ljava/util/concurrent/Exchanger;->TIMED_OUT:Ljava/lang/Object;
-Ljava/util/concurrent/Exchanger;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture;-><init>(Ljava/util/concurrent/RunnableFuture;Ljava/util/concurrent/BlockingQueue;)V
-Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture;->completionQueue:Ljava/util/concurrent/BlockingQueue;
-Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture;->task:Ljava/util/concurrent/Future;
-Ljava/util/concurrent/ExecutorCompletionService;->aes:Ljava/util/concurrent/AbstractExecutorService;
-Ljava/util/concurrent/ExecutorCompletionService;->completionQueue:Ljava/util/concurrent/BlockingQueue;
-Ljava/util/concurrent/ExecutorCompletionService;->executor:Ljava/util/concurrent/Executor;
-Ljava/util/concurrent/ExecutorCompletionService;->newTaskFor(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/RunnableFuture;
-Ljava/util/concurrent/ExecutorCompletionService;->newTaskFor(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/RunnableFuture;
-Ljava/util/concurrent/Executors$DefaultThreadFactory;-><init>()V
-Ljava/util/concurrent/Executors$DefaultThreadFactory;->group:Ljava/lang/ThreadGroup;
-Ljava/util/concurrent/Executors$DefaultThreadFactory;->namePrefix:Ljava/lang/String;
-Ljava/util/concurrent/Executors$DefaultThreadFactory;->poolNumber:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/util/concurrent/Executors$DefaultThreadFactory;->threadNumber:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/util/concurrent/Executors$DelegatedExecutorService;-><init>(Ljava/util/concurrent/ExecutorService;)V
-Ljava/util/concurrent/Executors$DelegatedExecutorService;->e:Ljava/util/concurrent/ExecutorService;
-Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;-><init>(Ljava/util/concurrent/ScheduledExecutorService;)V
-Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;->e:Ljava/util/concurrent/ScheduledExecutorService;
-Ljava/util/concurrent/Executors$FinalizableDelegatedExecutorService;-><init>(Ljava/util/concurrent/ExecutorService;)V
-Ljava/util/concurrent/Executors$PrivilegedCallable;-><init>(Ljava/util/concurrent/Callable;)V
-Ljava/util/concurrent/Executors$PrivilegedCallable;->acc:Ljava/security/AccessControlContext;
-Ljava/util/concurrent/Executors$PrivilegedCallable;->task:Ljava/util/concurrent/Callable;
-Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;-><init>(Ljava/util/concurrent/Callable;)V
-Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;->acc:Ljava/security/AccessControlContext;
-Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;->ccl:Ljava/lang/ClassLoader;
-Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;->task:Ljava/util/concurrent/Callable;
-Ljava/util/concurrent/Executors$PrivilegedThreadFactory;-><init>()V
-Ljava/util/concurrent/Executors$PrivilegedThreadFactory;->acc:Ljava/security/AccessControlContext;
-Ljava/util/concurrent/Executors$PrivilegedThreadFactory;->ccl:Ljava/lang/ClassLoader;
-Ljava/util/concurrent/Executors$RunnableAdapter;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V
-Ljava/util/concurrent/Executors$RunnableAdapter;->result:Ljava/lang/Object;
-Ljava/util/concurrent/Executors;-><init>()V
-Ljava/util/concurrent/ForkJoinPool$AuxState;-><init>()V
-Ljava/util/concurrent/ForkJoinPool$AuxState;->indexSeed:J
-Ljava/util/concurrent/ForkJoinPool$AuxState;->stealCount:J
-Ljava/util/concurrent/ForkJoinPool$DefaultForkJoinWorkerThreadFactory;-><init>()V
-Ljava/util/concurrent/ForkJoinPool$EmptyTask;-><init>()V
-Ljava/util/concurrent/ForkJoinPool$EmptyTask;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/ForkJoinPool$InnocuousForkJoinWorkerThreadFactory;-><init>()V
-Ljava/util/concurrent/ForkJoinPool$InnocuousForkJoinWorkerThreadFactory;->innocuousAcc:Ljava/security/AccessControlContext;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;-><init>(Ljava/util/concurrent/ForkJoinPool;Ljava/util/concurrent/ForkJoinWorkerThread;)V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->ABASE:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->array:[Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->ASHIFT:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->base:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->cancelAll()V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->config:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->currentJoin:Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->currentSteal:Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->getPoolIndex()I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->growAndSharedPush(Ljava/util/concurrent/ForkJoinTask;)V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->growArray()[Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->hint:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->INITIAL_QUEUE_CAPACITY:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->isApparentlyUnblocked()Z
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->isEmpty()Z
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->localPollAndExec()V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->localPopAndExec()V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->MAXIMUM_QUEUE_CAPACITY:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->nextLocalTask()Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->nsteals:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->owner:Ljava/util/concurrent/ForkJoinWorkerThread;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->parker:Ljava/lang/Thread;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->peek()Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->poll()Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->pollAndExecCC(Ljava/util/concurrent/CountedCompleter;)I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->pollAt(I)Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->pool:Ljava/util/concurrent/ForkJoinPool;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->pop()Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->popCC(Ljava/util/concurrent/CountedCompleter;I)Ljava/util/concurrent/CountedCompleter;
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->push(Ljava/util/concurrent/ForkJoinTask;)V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->qlock:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->QLOCK:J
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->queueSize()I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->runTask(Ljava/util/concurrent/ForkJoinTask;)V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->scanState:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->sharedPush(Ljava/util/concurrent/ForkJoinTask;)I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->stackPred:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->top:I
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->transferStealCount(Ljava/util/concurrent/ForkJoinPool;)V
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->tryRemoveAndExec(Ljava/util/concurrent/ForkJoinTask;)Z
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->trySharedUnpush(Ljava/util/concurrent/ForkJoinTask;)Z
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->tryUnpush(Ljava/util/concurrent/ForkJoinTask;)Z
-Ljava/util/concurrent/ForkJoinPool$WorkQueue;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ForkJoinPool;-><init>(ILjava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;Ljava/lang/Thread$UncaughtExceptionHandler;ILjava/lang/String;)V
-Ljava/util/concurrent/ForkJoinPool;->ABASE:I
-Ljava/util/concurrent/ForkJoinPool;->AC_MASK:J
-Ljava/util/concurrent/ForkJoinPool;->AC_SHIFT:I
-Ljava/util/concurrent/ForkJoinPool;->AC_UNIT:J
-Ljava/util/concurrent/ForkJoinPool;->ADD_WORKER:J
-Ljava/util/concurrent/ForkJoinPool;->ASHIFT:I
-Ljava/util/concurrent/ForkJoinPool;->auxState:Ljava/util/concurrent/ForkJoinPool$AuxState;
-Ljava/util/concurrent/ForkJoinPool;->awaitJoin(Ljava/util/concurrent/ForkJoinPool$WorkQueue;Ljava/util/concurrent/ForkJoinTask;J)I
-Ljava/util/concurrent/ForkJoinPool;->awaitWork(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)I
-Ljava/util/concurrent/ForkJoinPool;->checkFactory(Ljava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;)Ljava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;
-Ljava/util/concurrent/ForkJoinPool;->checkParallelism(I)I
-Ljava/util/concurrent/ForkJoinPool;->checkPermission()V
-Ljava/util/concurrent/ForkJoinPool;->common:Ljava/util/concurrent/ForkJoinPool;
-Ljava/util/concurrent/ForkJoinPool;->commonSubmitterQueue()Ljava/util/concurrent/ForkJoinPool$WorkQueue;
-Ljava/util/concurrent/ForkJoinPool;->COMMON_MAX_SPARES:I
-Ljava/util/concurrent/ForkJoinPool;->COMMON_PARALLELISM:I
-Ljava/util/concurrent/ForkJoinPool;->config:I
-Ljava/util/concurrent/ForkJoinPool;->createWorker(Z)Z
-Ljava/util/concurrent/ForkJoinPool;->CTL:J
-Ljava/util/concurrent/ForkJoinPool;->ctl:J
-Ljava/util/concurrent/ForkJoinPool;->DEFAULT_COMMON_MAX_SPARES:I
-Ljava/util/concurrent/ForkJoinPool;->deregisterWorker(Ljava/util/concurrent/ForkJoinWorkerThread;Ljava/lang/Throwable;)V
-Ljava/util/concurrent/ForkJoinPool;->EVENMASK:I
-Ljava/util/concurrent/ForkJoinPool;->externalHelpComplete(Ljava/util/concurrent/CountedCompleter;I)I
-Ljava/util/concurrent/ForkJoinPool;->externalPush(Ljava/util/concurrent/ForkJoinTask;)V
-Ljava/util/concurrent/ForkJoinPool;->externalSubmit(Ljava/util/concurrent/ForkJoinTask;)Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool;->factory:Ljava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;
-Ljava/util/concurrent/ForkJoinPool;->FIFO_QUEUE:I
-Ljava/util/concurrent/ForkJoinPool;->findNonEmptyStealQueue()Ljava/util/concurrent/ForkJoinPool$WorkQueue;
-Ljava/util/concurrent/ForkJoinPool;->getSurplusQueuedTaskCount()I
-Ljava/util/concurrent/ForkJoinPool;->helpComplete(Ljava/util/concurrent/ForkJoinPool$WorkQueue;Ljava/util/concurrent/CountedCompleter;I)I
-Ljava/util/concurrent/ForkJoinPool;->helpQuiescePool(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)V
-Ljava/util/concurrent/ForkJoinPool;->helpStealer(Ljava/util/concurrent/ForkJoinPool$WorkQueue;Ljava/util/concurrent/ForkJoinTask;)V
-Ljava/util/concurrent/ForkJoinPool;->IDLE_TIMEOUT_MS:J
-Ljava/util/concurrent/ForkJoinPool;->inactivate(Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V
-Ljava/util/concurrent/ForkJoinPool;->IS_OWNED:I
-Ljava/util/concurrent/ForkJoinPool;->LIFO_QUEUE:I
-Ljava/util/concurrent/ForkJoinPool;->makeCommonPool()Ljava/util/concurrent/ForkJoinPool;
-Ljava/util/concurrent/ForkJoinPool;->MAX_CAP:I
-Ljava/util/concurrent/ForkJoinPool;->MODE_MASK:I
-Ljava/util/concurrent/ForkJoinPool;->modifyThreadPermission:Ljava/lang/RuntimePermission;
-Ljava/util/concurrent/ForkJoinPool;->nextPoolId()I
-Ljava/util/concurrent/ForkJoinPool;->nextTaskFor(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinPool;->POLL_LIMIT:I
-Ljava/util/concurrent/ForkJoinPool;->poolNumberSequence:I
-Ljava/util/concurrent/ForkJoinPool;->quiesceCommonPool()V
-Ljava/util/concurrent/ForkJoinPool;->registerWorker(Ljava/util/concurrent/ForkJoinWorkerThread;)Ljava/util/concurrent/ForkJoinPool$WorkQueue;
-Ljava/util/concurrent/ForkJoinPool;->runState:I
-Ljava/util/concurrent/ForkJoinPool;->RUNSTATE:J
-Ljava/util/concurrent/ForkJoinPool;->runWorker(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)V
-Ljava/util/concurrent/ForkJoinPool;->scan(Ljava/util/concurrent/ForkJoinPool$WorkQueue;III)I
-Ljava/util/concurrent/ForkJoinPool;->SEED_INCREMENT:I
-Ljava/util/concurrent/ForkJoinPool;->SHUTDOWN:I
-Ljava/util/concurrent/ForkJoinPool;->signalWork()V
-Ljava/util/concurrent/ForkJoinPool;->SMASK:I
-Ljava/util/concurrent/ForkJoinPool;->SPARE_WORKER:I
-Ljava/util/concurrent/ForkJoinPool;->SP_MASK:J
-Ljava/util/concurrent/ForkJoinPool;->SQMASK:I
-Ljava/util/concurrent/ForkJoinPool;->SS_SEQ:I
-Ljava/util/concurrent/ForkJoinPool;->STARTED:I
-Ljava/util/concurrent/ForkJoinPool;->STOP:I
-Ljava/util/concurrent/ForkJoinPool;->TC_MASK:J
-Ljava/util/concurrent/ForkJoinPool;->TC_SHIFT:I
-Ljava/util/concurrent/ForkJoinPool;->TC_UNIT:J
-Ljava/util/concurrent/ForkJoinPool;->TERMINATED:I
-Ljava/util/concurrent/ForkJoinPool;->timedAwaitWork(Ljava/util/concurrent/ForkJoinPool$WorkQueue;J)I
-Ljava/util/concurrent/ForkJoinPool;->TIMEOUT_SLOP_MS:J
-Ljava/util/concurrent/ForkJoinPool;->tryAddWorker(J)V
-Ljava/util/concurrent/ForkJoinPool;->tryCompensate(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)Z
-Ljava/util/concurrent/ForkJoinPool;->tryCreateExternalQueue(I)V
-Ljava/util/concurrent/ForkJoinPool;->tryDropSpare(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)Z
-Ljava/util/concurrent/ForkJoinPool;->tryExternalUnpush(Ljava/util/concurrent/ForkJoinTask;)Z
-Ljava/util/concurrent/ForkJoinPool;->tryInitialize(Z)V
-Ljava/util/concurrent/ForkJoinPool;->tryReactivate(Ljava/util/concurrent/ForkJoinPool$WorkQueue;[Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V
-Ljava/util/concurrent/ForkJoinPool;->tryRelease(JLjava/util/concurrent/ForkJoinPool$WorkQueue;J)Z
-Ljava/util/concurrent/ForkJoinPool;->tryTerminate(ZZ)I
-Ljava/util/concurrent/ForkJoinPool;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ForkJoinPool;->UC_MASK:J
-Ljava/util/concurrent/ForkJoinPool;->ueh:Ljava/lang/Thread$UncaughtExceptionHandler;
-Ljava/util/concurrent/ForkJoinPool;->UNREGISTERED:I
-Ljava/util/concurrent/ForkJoinPool;->UNSIGNALLED:I
-Ljava/util/concurrent/ForkJoinPool;->workerNamePrefix:Ljava/lang/String;
-Ljava/util/concurrent/ForkJoinPool;->workQueues:[Ljava/util/concurrent/ForkJoinPool$WorkQueue;
-Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;-><init>(Ljava/util/concurrent/Callable;)V
-Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;->callable:Ljava/util/concurrent/Callable;
-Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;->setRawResult(Ljava/lang/Object;)V
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;->runnable:Ljava/lang/Runnable;
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;->setRawResult(Ljava/lang/Object;)V
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;-><init>(Ljava/lang/Runnable;)V
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;->runnable:Ljava/lang/Runnable;
-Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/ForkJoinTask$ExceptionNode;-><init>(Ljava/util/concurrent/ForkJoinTask;Ljava/lang/Throwable;Ljava/util/concurrent/ForkJoinTask$ExceptionNode;Ljava/lang/ref/ReferenceQueue;)V
-Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->ex:Ljava/lang/Throwable;
-Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->hashCode:I
-Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->next:Ljava/util/concurrent/ForkJoinTask$ExceptionNode;
-Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->thrower:J
-Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;-><init>(Ljava/lang/Runnable;)V
-Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;->internalPropagateException(Ljava/lang/Throwable;)V
-Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;->runnable:Ljava/lang/Runnable;
-Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;->setRawResult(Ljava/lang/Void;)V
-Ljava/util/concurrent/ForkJoinTask;->cancelIgnoringExceptions(Ljava/util/concurrent/ForkJoinTask;)V
-Ljava/util/concurrent/ForkJoinTask;->CANCELLED:I
-Ljava/util/concurrent/ForkJoinTask;->clearExceptionalCompletion()V
-Ljava/util/concurrent/ForkJoinTask;->doExec()I
-Ljava/util/concurrent/ForkJoinTask;->doInvoke()I
-Ljava/util/concurrent/ForkJoinTask;->doJoin()I
-Ljava/util/concurrent/ForkJoinTask;->DONE_MASK:I
-Ljava/util/concurrent/ForkJoinTask;->EXCEPTIONAL:I
-Ljava/util/concurrent/ForkJoinTask;->exceptionTable:[Ljava/util/concurrent/ForkJoinTask$ExceptionNode;
-Ljava/util/concurrent/ForkJoinTask;->exceptionTableLock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/util/concurrent/ForkJoinTask;->exceptionTableRefQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/util/concurrent/ForkJoinTask;->EXCEPTION_MAP_CAPACITY:I
-Ljava/util/concurrent/ForkJoinTask;->expungeStaleExceptions()V
-Ljava/util/concurrent/ForkJoinTask;->externalAwaitDone()I
-Ljava/util/concurrent/ForkJoinTask;->externalInterruptibleAwaitDone()I
-Ljava/util/concurrent/ForkJoinTask;->getThrowableException()Ljava/lang/Throwable;
-Ljava/util/concurrent/ForkJoinTask;->helpExpungeStaleExceptions()V
-Ljava/util/concurrent/ForkJoinTask;->internalPropagateException(Ljava/lang/Throwable;)V
-Ljava/util/concurrent/ForkJoinTask;->internalWait(J)V
-Ljava/util/concurrent/ForkJoinTask;->NORMAL:I
-Ljava/util/concurrent/ForkJoinTask;->pollSubmission()Ljava/util/concurrent/ForkJoinTask;
-Ljava/util/concurrent/ForkJoinTask;->recordExceptionalCompletion(Ljava/lang/Throwable;)I
-Ljava/util/concurrent/ForkJoinTask;->reportException(I)V
-Ljava/util/concurrent/ForkJoinTask;->rethrow(Ljava/lang/Throwable;)V
-Ljava/util/concurrent/ForkJoinTask;->setCompletion(I)I
-Ljava/util/concurrent/ForkJoinTask;->setExceptionalCompletion(Ljava/lang/Throwable;)I
-Ljava/util/concurrent/ForkJoinTask;->SIGNAL:I
-Ljava/util/concurrent/ForkJoinTask;->SMASK:I
-Ljava/util/concurrent/ForkJoinTask;->status:I
-Ljava/util/concurrent/ForkJoinTask;->STATUS:J
-Ljava/util/concurrent/ForkJoinTask;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ForkJoinTask;->uncheckedThrow(Ljava/lang/Throwable;)V
-Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;-><init>(Ljava/util/concurrent/ForkJoinPool;)V
-Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->afterTopLevelExec()V
-Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->createThreadGroup()Ljava/lang/ThreadGroup;
-Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->innocuousThreadGroup:Ljava/lang/ThreadGroup;
-Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->INNOCUOUS_ACC:Ljava/security/AccessControlContext;
-Ljava/util/concurrent/ForkJoinWorkerThread;-><init>(Ljava/util/concurrent/ForkJoinPool;Ljava/lang/ThreadGroup;Ljava/security/AccessControlContext;)V
-Ljava/util/concurrent/ForkJoinWorkerThread;->afterTopLevelExec()V
-Ljava/util/concurrent/ForkJoinWorkerThread;->eraseThreadLocals()V
-Ljava/util/concurrent/ForkJoinWorkerThread;->INHERITABLETHREADLOCALS:J
-Ljava/util/concurrent/ForkJoinWorkerThread;->INHERITEDACCESSCONTROLCONTEXT:J
-Ljava/util/concurrent/ForkJoinWorkerThread;->pool:Ljava/util/concurrent/ForkJoinPool;
-Ljava/util/concurrent/ForkJoinWorkerThread;->THREADLOCALS:J
-Ljava/util/concurrent/ForkJoinWorkerThread;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ForkJoinWorkerThread;->workQueue:Ljava/util/concurrent/ForkJoinPool$WorkQueue;
-Ljava/util/concurrent/FutureTask$WaitNode;-><init>()V
-Ljava/util/concurrent/FutureTask$WaitNode;->next:Ljava/util/concurrent/FutureTask$WaitNode;
-Ljava/util/concurrent/FutureTask$WaitNode;->thread:Ljava/lang/Thread;
-Ljava/util/concurrent/FutureTask;->awaitDone(ZJ)I
-Ljava/util/concurrent/FutureTask;->CANCELLED:I
-Ljava/util/concurrent/FutureTask;->COMPLETING:I
-Ljava/util/concurrent/FutureTask;->finishCompletion()V
-Ljava/util/concurrent/FutureTask;->handlePossibleCancellationInterrupt(I)V
-Ljava/util/concurrent/FutureTask;->INTERRUPTED:I
-Ljava/util/concurrent/FutureTask;->INTERRUPTING:I
-Ljava/util/concurrent/FutureTask;->NEW:I
-Ljava/util/concurrent/FutureTask;->NORMAL:I
-Ljava/util/concurrent/FutureTask;->removeWaiter(Ljava/util/concurrent/FutureTask$WaitNode;)V
-Ljava/util/concurrent/FutureTask;->report(I)Ljava/lang/Object;
-Ljava/util/concurrent/FutureTask;->RUNNER:J
-Ljava/util/concurrent/FutureTask;->runner:Ljava/lang/Thread;
-Ljava/util/concurrent/FutureTask;->STATE:J
-Ljava/util/concurrent/FutureTask;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/FutureTask;->WAITERS:J
-Ljava/util/concurrent/FutureTask;->waiters:Ljava/util/concurrent/FutureTask$WaitNode;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->advance()V
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->firstNode()Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->lastRet:Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->next:Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->nextItem:Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->nextNode(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->succ(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$DescendingItr;->firstNode()Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$DescendingItr;->nextNode(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$Itr;->firstNode()Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$Itr;->nextNode(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;-><init>(Ljava/util/concurrent/LinkedBlockingDeque;)V
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->batch:I
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->current:Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->est:J
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->exhausted:Z
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->MAX_BATCH:I
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->queue:Ljava/util/concurrent/LinkedBlockingDeque;
-Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/LinkedBlockingDeque$Node;-><init>(Ljava/lang/Object;)V
-Ljava/util/concurrent/LinkedBlockingDeque$Node;->item:Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingDeque$Node;->next:Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque$Node;->prev:Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque;->capacity:I
-Ljava/util/concurrent/LinkedBlockingDeque;->count:I
-Ljava/util/concurrent/LinkedBlockingDeque;->last:Ljava/util/concurrent/LinkedBlockingDeque$Node;
-Ljava/util/concurrent/LinkedBlockingDeque;->linkFirst(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Z
-Ljava/util/concurrent/LinkedBlockingDeque;->linkLast(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Z
-Ljava/util/concurrent/LinkedBlockingDeque;->notEmpty:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/LinkedBlockingDeque;->notFull:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/LinkedBlockingDeque;->unlink(Ljava/util/concurrent/LinkedBlockingDeque$Node;)V
-Ljava/util/concurrent/LinkedBlockingDeque;->unlinkFirst()Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingDeque;->unlinkLast()Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingQueue$Itr;->current:Ljava/util/concurrent/LinkedBlockingQueue$Node;
-Ljava/util/concurrent/LinkedBlockingQueue$Itr;->currentElement:Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingQueue$Itr;->lastRet:Ljava/util/concurrent/LinkedBlockingQueue$Node;
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;-><init>(Ljava/util/concurrent/LinkedBlockingQueue;)V
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->batch:I
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->current:Ljava/util/concurrent/LinkedBlockingQueue$Node;
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->est:J
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->exhausted:Z
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->MAX_BATCH:I
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->queue:Ljava/util/concurrent/LinkedBlockingQueue;
-Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/LinkedBlockingQueue$Node;-><init>(Ljava/lang/Object;)V
-Ljava/util/concurrent/LinkedBlockingQueue$Node;->item:Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingQueue$Node;->next:Ljava/util/concurrent/LinkedBlockingQueue$Node;
-Ljava/util/concurrent/LinkedBlockingQueue;->count:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/util/concurrent/LinkedBlockingQueue;->dequeue()Ljava/lang/Object;
-Ljava/util/concurrent/LinkedBlockingQueue;->enqueue(Ljava/util/concurrent/LinkedBlockingQueue$Node;)V
-Ljava/util/concurrent/LinkedBlockingQueue;->fullyLock()V
-Ljava/util/concurrent/LinkedBlockingQueue;->fullyUnlock()V
-Ljava/util/concurrent/LinkedBlockingQueue;->last:Ljava/util/concurrent/LinkedBlockingQueue$Node;
-Ljava/util/concurrent/LinkedBlockingQueue;->notEmpty:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/LinkedBlockingQueue;->notFull:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/LinkedBlockingQueue;->signalNotEmpty()V
-Ljava/util/concurrent/LinkedBlockingQueue;->signalNotFull()V
-Ljava/util/concurrent/LinkedBlockingQueue;->unlink(Ljava/util/concurrent/LinkedBlockingQueue$Node;Ljava/util/concurrent/LinkedBlockingQueue$Node;)V
-Ljava/util/concurrent/LinkedTransferQueue$Itr;->advance(Ljava/util/concurrent/LinkedTransferQueue$Node;)V
-Ljava/util/concurrent/LinkedTransferQueue$Itr;->lastPred:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue$Itr;->lastRet:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue$Itr;->nextItem:Ljava/lang/Object;
-Ljava/util/concurrent/LinkedTransferQueue$Itr;->nextNode:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->batch:I
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->current:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->exhausted:Z
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->MAX_BATCH:I
-Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;-><init>(Ljava/lang/Object;Z)V
-Ljava/util/concurrent/LinkedTransferQueue$Node;->cannotPrecede(Z)Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->casNext(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;)Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->forgetContents()V
-Ljava/util/concurrent/LinkedTransferQueue$Node;->forgetNext()V
-Ljava/util/concurrent/LinkedTransferQueue$Node;->isData:Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->isMatched()Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->isUnmatchedRequest()Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->ITEM:J
-Ljava/util/concurrent/LinkedTransferQueue$Node;->item:Ljava/lang/Object;
-Ljava/util/concurrent/LinkedTransferQueue$Node;->NEXT:J
-Ljava/util/concurrent/LinkedTransferQueue$Node;->next:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue$Node;->tryMatchData()Z
-Ljava/util/concurrent/LinkedTransferQueue$Node;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/LinkedTransferQueue$Node;->WAITER:J
-Ljava/util/concurrent/LinkedTransferQueue$Node;->waiter:Ljava/lang/Thread;
-Ljava/util/concurrent/LinkedTransferQueue;->ASYNC:I
-Ljava/util/concurrent/LinkedTransferQueue;->awaitMatch(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/LinkedTransferQueue;->casHead(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;)Z
-Ljava/util/concurrent/LinkedTransferQueue;->casSweepVotes(II)Z
-Ljava/util/concurrent/LinkedTransferQueue;->casTail(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;)Z
-Ljava/util/concurrent/LinkedTransferQueue;->CHAINED_SPINS:I
-Ljava/util/concurrent/LinkedTransferQueue;->countOfMode(Z)I
-Ljava/util/concurrent/LinkedTransferQueue;->findAndRemove(Ljava/lang/Object;)Z
-Ljava/util/concurrent/LinkedTransferQueue;->firstDataNode()Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue;->FRONT_SPINS:I
-Ljava/util/concurrent/LinkedTransferQueue;->HEAD:J
-Ljava/util/concurrent/LinkedTransferQueue;->head:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue;->MP:Z
-Ljava/util/concurrent/LinkedTransferQueue;->NOW:I
-Ljava/util/concurrent/LinkedTransferQueue;->spinsFor(Ljava/util/concurrent/LinkedTransferQueue$Node;Z)I
-Ljava/util/concurrent/LinkedTransferQueue;->succ(Ljava/util/concurrent/LinkedTransferQueue$Node;)Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue;->sweep()V
-Ljava/util/concurrent/LinkedTransferQueue;->sweepVotes:I
-Ljava/util/concurrent/LinkedTransferQueue;->SWEEPVOTES:J
-Ljava/util/concurrent/LinkedTransferQueue;->SWEEP_THRESHOLD:I
-Ljava/util/concurrent/LinkedTransferQueue;->SYNC:I
-Ljava/util/concurrent/LinkedTransferQueue;->TAIL:J
-Ljava/util/concurrent/LinkedTransferQueue;->tail:Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue;->TIMED:I
-Ljava/util/concurrent/LinkedTransferQueue;->toArrayInternal([Ljava/lang/Object;)[Ljava/lang/Object;
-Ljava/util/concurrent/LinkedTransferQueue;->tryAppend(Ljava/util/concurrent/LinkedTransferQueue$Node;Z)Ljava/util/concurrent/LinkedTransferQueue$Node;
-Ljava/util/concurrent/LinkedTransferQueue;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/LinkedTransferQueue;->unsplice(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;)V
-Ljava/util/concurrent/LinkedTransferQueue;->xfer(Ljava/lang/Object;ZIJ)Ljava/lang/Object;
-Ljava/util/concurrent/locks/AbstractOwnableSynchronizer;->exclusiveOwnerThread:Ljava/lang/Thread;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->addConditionWaiter()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->checkInterruptWhileWaiting(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->doSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->doSignalAll(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->isOwnedBy(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->REINTERRUPT:I
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->reportInterruptAfterWait(I)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->THROW_IE:I
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->unlinkCancelledWaiters()V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->acquireQueued(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;J)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->addWaiter(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->apparentlyFirstQueuedIsExclusive()Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->cancelAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->compareAndSetTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireInterruptibly(J)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireNanos(JJ)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireShared(J)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireSharedInterruptibly(J)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireSharedNanos(JJ)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doReleaseShared()V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->enq(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->findNodeFromTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->fullGetFirstQueuedThread()Ljava/lang/Thread;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->fullyRelease(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)J
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->HEAD:J
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->initializeSyncQueue()V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->isOnSyncQueue(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->parkAndCheckInterrupt()Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->selfInterrupt()V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->setHead(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->setHeadAndPropagate(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;J)V
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->shouldParkAfterFailedAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->SPIN_FOR_TIMEOUT_THRESHOLD:J
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->STATE:J
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->state:J
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->TAIL:J
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->transferAfterCancelledWait(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->transferForSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->unparkSuccessor(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->addConditionWaiter()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->checkInterruptWhileWaiting(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->doSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->doSignalAll(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->isOwnedBy(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->REINTERRUPT:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->reportInterruptAfterWait(I)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->THROW_IE:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->unlinkCancelledWaiters()V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>()V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>(I)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->CANCELLED:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->compareAndSetNext(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->compareAndSetWaitStatus(II)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->CONDITION:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->EXCLUSIVE:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->isShared()Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->NEXT:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->predecessor()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->PREV:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->PROPAGATE:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->SHARED:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->SIGNAL:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->THREAD:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->thread:Ljava/lang/Thread;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->waitStatus:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->WAITSTATUS:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireQueued(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->addWaiter(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->apparentlyFirstQueuedIsExclusive()Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->cancelAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->compareAndSetTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireInterruptibly(I)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireNanos(IJ)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireShared(I)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireSharedInterruptibly(I)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireSharedNanos(IJ)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doReleaseShared()V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->enq(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->findNodeFromTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->fullGetFirstQueuedThread()Ljava/lang/Thread;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->fullyRelease(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->HEAD:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->initializeSyncQueue()V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->isOnSyncQueue(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->parkAndCheckInterrupt()Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->selfInterrupt()V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->setHead(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->setHeadAndPropagate(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)V
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->shouldParkAfterFailedAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->SPIN_FOR_TIMEOUT_THRESHOLD:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->state:I
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->STATE:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->TAIL:J
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->transferAfterCancelledWait(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->transferForSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->unparkSuccessor(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
-Ljava/util/concurrent/locks/LockSupport;-><init>()V
-Ljava/util/concurrent/locks/LockSupport;->nextSecondarySeed()I
-Ljava/util/concurrent/locks/LockSupport;->PARKBLOCKER:J
-Ljava/util/concurrent/locks/LockSupport;->SECONDARY:J
-Ljava/util/concurrent/locks/LockSupport;->setBlocker(Ljava/lang/Thread;Ljava/lang/Object;)V
-Ljava/util/concurrent/locks/LockSupport;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/locks/ReentrantLock$FairSync;-><init>()V
-Ljava/util/concurrent/locks/ReentrantLock$FairSync;->lock()V
-Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;-><init>()V
-Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;->lock()V
-Ljava/util/concurrent/locks/ReentrantLock$Sync;-><init>()V
-Ljava/util/concurrent/locks/ReentrantLock$Sync;->getHoldCount()I
-Ljava/util/concurrent/locks/ReentrantLock$Sync;->getOwner()Ljava/lang/Thread;
-Ljava/util/concurrent/locks/ReentrantLock$Sync;->isLocked()Z
-Ljava/util/concurrent/locks/ReentrantLock$Sync;->lock()V
-Ljava/util/concurrent/locks/ReentrantLock$Sync;->newCondition()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
-Ljava/util/concurrent/locks/ReentrantLock$Sync;->nonfairTryAcquire(I)Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;-><init>()V
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->readerShouldBlock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->writerShouldBlock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;-><init>()V
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->readerShouldBlock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->writerShouldBlock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->sync:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;-><init>()V
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;->count:I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;->tid:J
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;-><init>()V
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;-><init>()V
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->cachedHoldCounter:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->exclusiveCount(I)I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->EXCLUSIVE_MASK:I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->firstReader:Ljava/lang/Thread;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->firstReaderHoldCount:I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->fullTryAcquireShared(Ljava/lang/Thread;)I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getCount()I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getOwner()Ljava/lang/Thread;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getReadHoldCount()I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getReadLockCount()I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getWriteHoldCount()I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->isWriteLocked()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->MAX_COUNT:I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->newCondition()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->readerShouldBlock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->readHolds:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->sharedCount(I)I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->SHARED_SHIFT:I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->SHARED_UNIT:I
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryReadLock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryWriteLock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->unmatchedUnlockException()Ljava/lang/IllegalMonitorStateException;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->writerShouldBlock()Z
-Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->sync:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock;->getThreadId(Ljava/lang/Thread;)J
-Ljava/util/concurrent/locks/ReentrantReadWriteLock;->readerLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock;->sync:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock;->TID:J
-Ljava/util/concurrent/locks/ReentrantReadWriteLock;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writerLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
-Ljava/util/concurrent/locks/StampedLock$WNode;-><init>(ILjava/util/concurrent/locks/StampedLock$WNode;)V
-Ljava/util/concurrent/locks/StampedLock$WNode;->cowait:Ljava/util/concurrent/locks/StampedLock$WNode;
-Ljava/util/concurrent/locks/StampedLock$WNode;->mode:I
-Ljava/util/concurrent/locks/StampedLock$WNode;->next:Ljava/util/concurrent/locks/StampedLock$WNode;
-Ljava/util/concurrent/locks/StampedLock$WNode;->prev:Ljava/util/concurrent/locks/StampedLock$WNode;
-Ljava/util/concurrent/locks/StampedLock$WNode;->status:I
-Ljava/util/concurrent/locks/StampedLock$WNode;->thread:Ljava/lang/Thread;
-Ljava/util/concurrent/locks/StampedLock;->ABITS:J
-Ljava/util/concurrent/locks/StampedLock;->acquireRead(ZJ)J
-Ljava/util/concurrent/locks/StampedLock;->acquireWrite(ZJ)J
-Ljava/util/concurrent/locks/StampedLock;->CANCELLED:I
-Ljava/util/concurrent/locks/StampedLock;->cancelWaiter(Ljava/util/concurrent/locks/StampedLock$WNode;Ljava/util/concurrent/locks/StampedLock$WNode;Z)J
-Ljava/util/concurrent/locks/StampedLock;->getReadLockCount(J)I
-Ljava/util/concurrent/locks/StampedLock;->HEAD_SPINS:I
-Ljava/util/concurrent/locks/StampedLock;->INTERRUPTED:J
-Ljava/util/concurrent/locks/StampedLock;->LG_READERS:I
-Ljava/util/concurrent/locks/StampedLock;->MAX_HEAD_SPINS:I
-Ljava/util/concurrent/locks/StampedLock;->NCPU:I
-Ljava/util/concurrent/locks/StampedLock;->ORIGIN:J
-Ljava/util/concurrent/locks/StampedLock;->OVERFLOW_YIELD_RATE:I
-Ljava/util/concurrent/locks/StampedLock;->PARKBLOCKER:J
-Ljava/util/concurrent/locks/StampedLock;->RBITS:J
-Ljava/util/concurrent/locks/StampedLock;->readerOverflow:I
-Ljava/util/concurrent/locks/StampedLock;->readLockView:Ljava/util/concurrent/locks/StampedLock$ReadLockView;
-Ljava/util/concurrent/locks/StampedLock;->readWriteLockView:Ljava/util/concurrent/locks/StampedLock$ReadWriteLockView;
-Ljava/util/concurrent/locks/StampedLock;->release(Ljava/util/concurrent/locks/StampedLock$WNode;)V
-Ljava/util/concurrent/locks/StampedLock;->RFULL:J
-Ljava/util/concurrent/locks/StampedLock;->RMODE:I
-Ljava/util/concurrent/locks/StampedLock;->RUNIT:J
-Ljava/util/concurrent/locks/StampedLock;->SBITS:J
-Ljava/util/concurrent/locks/StampedLock;->SPINS:I
-Ljava/util/concurrent/locks/StampedLock;->STATE:J
-Ljava/util/concurrent/locks/StampedLock;->state:J
-Ljava/util/concurrent/locks/StampedLock;->tryDecReaderOverflow(J)J
-Ljava/util/concurrent/locks/StampedLock;->tryIncReaderOverflow(J)J
-Ljava/util/concurrent/locks/StampedLock;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/locks/StampedLock;->unstampedUnlockRead()V
-Ljava/util/concurrent/locks/StampedLock;->unstampedUnlockWrite()V
-Ljava/util/concurrent/locks/StampedLock;->WAITING:I
-Ljava/util/concurrent/locks/StampedLock;->WBIT:J
-Ljava/util/concurrent/locks/StampedLock;->WCOWAIT:J
-Ljava/util/concurrent/locks/StampedLock;->WHEAD:J
-Ljava/util/concurrent/locks/StampedLock;->whead:Ljava/util/concurrent/locks/StampedLock$WNode;
-Ljava/util/concurrent/locks/StampedLock;->WMODE:I
-Ljava/util/concurrent/locks/StampedLock;->WNEXT:J
-Ljava/util/concurrent/locks/StampedLock;->writeLockView:Ljava/util/concurrent/locks/StampedLock$WriteLockView;
-Ljava/util/concurrent/locks/StampedLock;->WSTATUS:J
-Ljava/util/concurrent/locks/StampedLock;->WTAIL:J
-Ljava/util/concurrent/locks/StampedLock;->wtail:Ljava/util/concurrent/locks/StampedLock$WNode;
-Ljava/util/concurrent/Phaser$QNode;-><init>(Ljava/util/concurrent/Phaser;IZZJ)V
-Ljava/util/concurrent/Phaser$QNode;->deadline:J
-Ljava/util/concurrent/Phaser$QNode;->interruptible:Z
-Ljava/util/concurrent/Phaser$QNode;->nanos:J
-Ljava/util/concurrent/Phaser$QNode;->next:Ljava/util/concurrent/Phaser$QNode;
-Ljava/util/concurrent/Phaser$QNode;->phase:I
-Ljava/util/concurrent/Phaser$QNode;->phaser:Ljava/util/concurrent/Phaser;
-Ljava/util/concurrent/Phaser$QNode;->thread:Ljava/lang/Thread;
-Ljava/util/concurrent/Phaser$QNode;->timed:Z
-Ljava/util/concurrent/Phaser$QNode;->wasInterrupted:Z
-Ljava/util/concurrent/Phaser;->abortWait(I)I
-Ljava/util/concurrent/Phaser;->arrivedOf(J)I
-Ljava/util/concurrent/Phaser;->badArrive(J)Ljava/lang/String;
-Ljava/util/concurrent/Phaser;->badRegister(J)Ljava/lang/String;
-Ljava/util/concurrent/Phaser;->COUNTS_MASK:J
-Ljava/util/concurrent/Phaser;->doArrive(I)I
-Ljava/util/concurrent/Phaser;->doRegister(I)I
-Ljava/util/concurrent/Phaser;->EMPTY:I
-Ljava/util/concurrent/Phaser;->evenQ:Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/Phaser;->internalAwaitAdvance(ILjava/util/concurrent/Phaser$QNode;)I
-Ljava/util/concurrent/Phaser;->MAX_PARTIES:I
-Ljava/util/concurrent/Phaser;->MAX_PHASE:I
-Ljava/util/concurrent/Phaser;->NCPU:I
-Ljava/util/concurrent/Phaser;->oddQ:Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/Phaser;->ONE_ARRIVAL:I
-Ljava/util/concurrent/Phaser;->ONE_DEREGISTER:I
-Ljava/util/concurrent/Phaser;->ONE_PARTY:I
-Ljava/util/concurrent/Phaser;->parent:Ljava/util/concurrent/Phaser;
-Ljava/util/concurrent/Phaser;->partiesOf(J)I
-Ljava/util/concurrent/Phaser;->PARTIES_MASK:J
-Ljava/util/concurrent/Phaser;->PARTIES_SHIFT:I
-Ljava/util/concurrent/Phaser;->phaseOf(J)I
-Ljava/util/concurrent/Phaser;->PHASE_SHIFT:I
-Ljava/util/concurrent/Phaser;->queueFor(I)Ljava/util/concurrent/atomic/AtomicReference;
-Ljava/util/concurrent/Phaser;->reconcileState()J
-Ljava/util/concurrent/Phaser;->releaseWaiters(I)V
-Ljava/util/concurrent/Phaser;->root:Ljava/util/concurrent/Phaser;
-Ljava/util/concurrent/Phaser;->SPINS_PER_ARRIVAL:I
-Ljava/util/concurrent/Phaser;->STATE:J
-Ljava/util/concurrent/Phaser;->state:J
-Ljava/util/concurrent/Phaser;->stateToString(J)Ljava/lang/String;
-Ljava/util/concurrent/Phaser;->TERMINATION_BIT:J
-Ljava/util/concurrent/Phaser;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/Phaser;->unarrivedOf(J)I
-Ljava/util/concurrent/Phaser;->UNARRIVED_MASK:I
-Ljava/util/concurrent/PriorityBlockingQueue$Itr;->array:[Ljava/lang/Object;
-Ljava/util/concurrent/PriorityBlockingQueue$Itr;->cursor:I
-Ljava/util/concurrent/PriorityBlockingQueue$Itr;->lastRet:I
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;-><init>(Ljava/util/concurrent/PriorityBlockingQueue;[Ljava/lang/Object;II)V
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->array:[Ljava/lang/Object;
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->fence:I
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->getFence()I
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->index:I
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->queue:Ljava/util/concurrent/PriorityBlockingQueue;
-Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/concurrent/PriorityBlockingQueue;->allocationSpinLock:I
-Ljava/util/concurrent/PriorityBlockingQueue;->ALLOCATIONSPINLOCK:J
-Ljava/util/concurrent/PriorityBlockingQueue;->comparator:Ljava/util/Comparator;
-Ljava/util/concurrent/PriorityBlockingQueue;->DEFAULT_INITIAL_CAPACITY:I
-Ljava/util/concurrent/PriorityBlockingQueue;->heapify()V
-Ljava/util/concurrent/PriorityBlockingQueue;->indexOf(Ljava/lang/Object;)I
-Ljava/util/concurrent/PriorityBlockingQueue;->MAX_ARRAY_SIZE:I
-Ljava/util/concurrent/PriorityBlockingQueue;->q:Ljava/util/PriorityQueue;
-Ljava/util/concurrent/PriorityBlockingQueue;->queue:[Ljava/lang/Object;
-Ljava/util/concurrent/PriorityBlockingQueue;->removeAt(I)V
-Ljava/util/concurrent/PriorityBlockingQueue;->removeEQ(Ljava/lang/Object;)V
-Ljava/util/concurrent/PriorityBlockingQueue;->siftDownComparable(ILjava/lang/Object;[Ljava/lang/Object;I)V
-Ljava/util/concurrent/PriorityBlockingQueue;->siftDownUsingComparator(ILjava/lang/Object;[Ljava/lang/Object;ILjava/util/Comparator;)V
-Ljava/util/concurrent/PriorityBlockingQueue;->siftUpComparable(ILjava/lang/Object;[Ljava/lang/Object;)V
-Ljava/util/concurrent/PriorityBlockingQueue;->siftUpUsingComparator(ILjava/lang/Object;[Ljava/lang/Object;Ljava/util/Comparator;)V
-Ljava/util/concurrent/PriorityBlockingQueue;->size:I
-Ljava/util/concurrent/PriorityBlockingQueue;->tryGrow([Ljava/lang/Object;I)V
-Ljava/util/concurrent/PriorityBlockingQueue;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/RecursiveTask;->result:Ljava/lang/Object;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->array:[Ljava/util/concurrent/RunnableScheduledFuture;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->cursor:I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->lastRet:I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;-><init>()V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->add(Ljava/lang/Runnable;)Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->available:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->drainTo(Ljava/util/Collection;)I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->drainTo(Ljava/util/Collection;I)I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->finishPoll(Ljava/util/concurrent/RunnableScheduledFuture;)Ljava/util/concurrent/RunnableScheduledFuture;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->grow()V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->indexOf(Ljava/lang/Object;)I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->INITIAL_CAPACITY:I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->leader:Ljava/lang/Thread;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->lock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->offer(Ljava/lang/Runnable;)Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->offer(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->peekExpired()Ljava/util/concurrent/RunnableScheduledFuture;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->put(Ljava/lang/Runnable;)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->queue:[Ljava/util/concurrent/RunnableScheduledFuture;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->setIndex(Ljava/util/concurrent/RunnableScheduledFuture;I)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftDown(ILjava/util/concurrent/RunnableScheduledFuture;)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftUp(ILjava/util/concurrent/RunnableScheduledFuture;)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->size:I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->compareTo(Ljava/util/concurrent/Delayed;)I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->heapIndex:I
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->outerTask:Ljava/util/concurrent/RunnableScheduledFuture;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->period:J
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->sequenceNumber:J
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->setNextRunTime()V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->time:J
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->canRunInCurrentRunState(Z)Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->continueExistingPeriodicTasksAfterShutdown:Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->DEFAULT_KEEPALIVE_MILLIS:J
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->delayedExecute(Ljava/util/concurrent/RunnableScheduledFuture;)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->executeExistingDelayedTasksAfterShutdown:Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->onShutdown()V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->overflowFree(J)J
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->reExecutePeriodic(Ljava/util/concurrent/RunnableScheduledFuture;)V
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->removeOnCancel:Z
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->sequencer:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(J)J
-Ljava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(JLjava/util/concurrent/TimeUnit;)J
-Ljava/util/concurrent/Semaphore$FairSync;-><init>(I)V
-Ljava/util/concurrent/Semaphore$NonfairSync;-><init>(I)V
-Ljava/util/concurrent/Semaphore$Sync;-><init>(I)V
-Ljava/util/concurrent/Semaphore$Sync;->drainPermits()I
-Ljava/util/concurrent/Semaphore$Sync;->getPermits()I
-Ljava/util/concurrent/Semaphore$Sync;->nonfairTryAcquireShared(I)I
-Ljava/util/concurrent/Semaphore$Sync;->reducePermits(I)V
-Ljava/util/concurrent/Semaphore;->sync:Ljava/util/concurrent/Semaphore$Sync;
-Ljava/util/concurrent/SynchronousQueue$FifoWaitQueue;-><init>()V
-Ljava/util/concurrent/SynchronousQueue$LifoWaitQueue;-><init>()V
-Ljava/util/concurrent/SynchronousQueue$Transferer;-><init>()V
-Ljava/util/concurrent/SynchronousQueue$Transferer;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;-><init>(Ljava/lang/Object;Z)V
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->casNext(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->isCancelled()Z
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->isData:Z
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->isOffList()Z
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->ITEM:J
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->item:Ljava/lang/Object;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->NEXT:J
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->next:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->tryCancel(Ljava/lang/Object;)V
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->waiter:Ljava/lang/Thread;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;-><init>()V
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->advanceHead(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->advanceTail(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->awaitFulfill(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->casCleanMe(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->clean(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->CLEANME:J
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->cleanMe:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->HEAD:J
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->head:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->TAIL:J
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->tail:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/SynchronousQueue$TransferQueue;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;-><init>(Ljava/lang/Object;)V
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->casNext(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->isCancelled()Z
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->item:Ljava/lang/Object;
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->MATCH:J
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->match:Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->mode:I
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->NEXT:J
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->next:Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryCancel()V
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryMatch(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->waiter:Ljava/lang/Thread;
-Ljava/util/concurrent/SynchronousQueue$TransferStack;-><init>()V
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->awaitFulfill(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;ZJ)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->casHead(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->clean(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)V
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->DATA:I
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->FULFILLING:I
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->HEAD:J
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->head:Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->isFulfilling(I)Z
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->REQUEST:I
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->shouldSpin(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->snode(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/lang/Object;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;I)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object;
-Ljava/util/concurrent/SynchronousQueue$TransferStack;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/SynchronousQueue$WaitQueue;-><init>()V
-Ljava/util/concurrent/SynchronousQueue;->MAX_TIMED_SPINS:I
-Ljava/util/concurrent/SynchronousQueue;->MAX_UNTIMED_SPINS:I
-Ljava/util/concurrent/SynchronousQueue;->qlock:Ljava/util/concurrent/locks/ReentrantLock;
-Ljava/util/concurrent/SynchronousQueue;->SPIN_FOR_TIMEOUT_THRESHOLD:J
-Ljava/util/concurrent/SynchronousQueue;->transferer:Ljava/util/concurrent/SynchronousQueue$Transferer;
-Ljava/util/concurrent/SynchronousQueue;->waitingConsumers:Ljava/util/concurrent/SynchronousQueue$WaitQueue;
-Ljava/util/concurrent/SynchronousQueue;->waitingProducers:Ljava/util/concurrent/SynchronousQueue$WaitQueue;
-Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;-><init>(JJDD)V
-Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->bound:D
-Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->fence:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->index:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->origin:D
-Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;-><init>(JJII)V
-Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->bound:I
-Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->fence:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->index:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->origin:I
-Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;-><init>(JJJJ)V
-Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->bound:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->fence:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->index:J
-Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->origin:J
-Ljava/util/concurrent/ThreadLocalRandom;-><init>()V
-Ljava/util/concurrent/ThreadLocalRandom;->advanceProbe(I)I
-Ljava/util/concurrent/ThreadLocalRandom;->BAD_BOUND:Ljava/lang/String;
-Ljava/util/concurrent/ThreadLocalRandom;->BAD_RANGE:Ljava/lang/String;
-Ljava/util/concurrent/ThreadLocalRandom;->BAD_SIZE:Ljava/lang/String;
-Ljava/util/concurrent/ThreadLocalRandom;->DOUBLE_UNIT:D
-Ljava/util/concurrent/ThreadLocalRandom;->FLOAT_UNIT:F
-Ljava/util/concurrent/ThreadLocalRandom;->GAMMA:J
-Ljava/util/concurrent/ThreadLocalRandom;->getProbe()I
-Ljava/util/concurrent/ThreadLocalRandom;->initialized:Z
-Ljava/util/concurrent/ThreadLocalRandom;->instance:Ljava/util/concurrent/ThreadLocalRandom;
-Ljava/util/concurrent/ThreadLocalRandom;->internalNextDouble(DD)D
-Ljava/util/concurrent/ThreadLocalRandom;->internalNextInt(II)I
-Ljava/util/concurrent/ThreadLocalRandom;->internalNextLong(JJ)J
-Ljava/util/concurrent/ThreadLocalRandom;->localInit()V
-Ljava/util/concurrent/ThreadLocalRandom;->mix32(J)I
-Ljava/util/concurrent/ThreadLocalRandom;->mix64(J)J
-Ljava/util/concurrent/ThreadLocalRandom;->nextLocalGaussian:Ljava/lang/ThreadLocal;
-Ljava/util/concurrent/ThreadLocalRandom;->nextSecondarySeed()I
-Ljava/util/concurrent/ThreadLocalRandom;->nextSeed()J
-Ljava/util/concurrent/ThreadLocalRandom;->PROBE:J
-Ljava/util/concurrent/ThreadLocalRandom;->probeGenerator:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/util/concurrent/ThreadLocalRandom;->PROBE_INCREMENT:I
-Ljava/util/concurrent/ThreadLocalRandom;->SECONDARY:J
-Ljava/util/concurrent/ThreadLocalRandom;->SEED:J
-Ljava/util/concurrent/ThreadLocalRandom;->seeder:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/util/concurrent/ThreadLocalRandom;->SEEDER_INCREMENT:J
-Ljava/util/concurrent/ThreadLocalRandom;->U:Lsun/misc/Unsafe;
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->completedTasks:J
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->firstTask:Ljava/lang/Runnable;
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->interruptIfStarted()V
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->isLocked()Z
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->lock()V
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->thread:Ljava/lang/Thread;
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->tryLock()Z
-Ljava/util/concurrent/ThreadPoolExecutor$Worker;->unlock()V
-Ljava/util/concurrent/ThreadPoolExecutor;->addWorker(Ljava/lang/Runnable;Z)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->addWorkerFailed(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V
-Ljava/util/concurrent/ThreadPoolExecutor;->advanceRunState(I)V
-Ljava/util/concurrent/ThreadPoolExecutor;->CAPACITY:I
-Ljava/util/concurrent/ThreadPoolExecutor;->checkShutdownAccess()V
-Ljava/util/concurrent/ThreadPoolExecutor;->compareAndDecrementWorkerCount(I)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->compareAndIncrementWorkerCount(I)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->completedTaskCount:J
-Ljava/util/concurrent/ThreadPoolExecutor;->corePoolSize:I
-Ljava/util/concurrent/ThreadPoolExecutor;->COUNT_BITS:I
-Ljava/util/concurrent/ThreadPoolExecutor;->ctlOf(II)I
-Ljava/util/concurrent/ThreadPoolExecutor;->decrementWorkerCount()V
-Ljava/util/concurrent/ThreadPoolExecutor;->drainQueue()Ljava/util/List;
-Ljava/util/concurrent/ThreadPoolExecutor;->ensurePrestart()V
-Ljava/util/concurrent/ThreadPoolExecutor;->getTask()Ljava/lang/Runnable;
-Ljava/util/concurrent/ThreadPoolExecutor;->handler:Ljava/util/concurrent/RejectedExecutionHandler;
-Ljava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers()V
-Ljava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers(Z)V
-Ljava/util/concurrent/ThreadPoolExecutor;->interruptWorkers()V
-Ljava/util/concurrent/ThreadPoolExecutor;->isRunning(I)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->isRunningOrShutdown(Z)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->keepAliveTime:J
-Ljava/util/concurrent/ThreadPoolExecutor;->largestPoolSize:I
-Ljava/util/concurrent/ThreadPoolExecutor;->maximumPoolSize:I
-Ljava/util/concurrent/ThreadPoolExecutor;->ONLY_ONE:Z
-Ljava/util/concurrent/ThreadPoolExecutor;->onShutdown()V
-Ljava/util/concurrent/ThreadPoolExecutor;->processWorkerExit(Ljava/util/concurrent/ThreadPoolExecutor$Worker;Z)V
-Ljava/util/concurrent/ThreadPoolExecutor;->reject(Ljava/lang/Runnable;)V
-Ljava/util/concurrent/ThreadPoolExecutor;->RUNNING:I
-Ljava/util/concurrent/ThreadPoolExecutor;->runStateAtLeast(II)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->runStateLessThan(II)Z
-Ljava/util/concurrent/ThreadPoolExecutor;->runStateOf(I)I
-Ljava/util/concurrent/ThreadPoolExecutor;->runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V
-Ljava/util/concurrent/ThreadPoolExecutor;->SHUTDOWN:I
-Ljava/util/concurrent/ThreadPoolExecutor;->shutdownPerm:Ljava/lang/RuntimePermission;
-Ljava/util/concurrent/ThreadPoolExecutor;->STOP:I
-Ljava/util/concurrent/ThreadPoolExecutor;->TERMINATED:I
-Ljava/util/concurrent/ThreadPoolExecutor;->termination:Ljava/util/concurrent/locks/Condition;
-Ljava/util/concurrent/ThreadPoolExecutor;->threadFactory:Ljava/util/concurrent/ThreadFactory;
-Ljava/util/concurrent/ThreadPoolExecutor;->TIDYING:I
-Ljava/util/concurrent/ThreadPoolExecutor;->tryTerminate()V
-Ljava/util/concurrent/ThreadPoolExecutor;->workerCountOf(I)I
-Ljava/util/concurrent/ThreadPoolExecutor;->workers:Ljava/util/HashSet;
-Ljava/util/concurrent/ThreadPoolExecutor;->workQueue:Ljava/util/concurrent/BlockingQueue;
-Ljava/util/concurrent/TimeUnit;->C0:J
-Ljava/util/concurrent/TimeUnit;->C1:J
-Ljava/util/concurrent/TimeUnit;->C2:J
-Ljava/util/concurrent/TimeUnit;->C3:J
-Ljava/util/concurrent/TimeUnit;->C4:J
-Ljava/util/concurrent/TimeUnit;->C5:J
-Ljava/util/concurrent/TimeUnit;->C6:J
-Ljava/util/concurrent/TimeUnit;->excessNanos(JJ)I
-Ljava/util/concurrent/TimeUnit;->MAX:J
-Ljava/util/concurrent/TimeUnit;->x(JJJ)J
-Ljava/util/Currency;-><init>(Landroid/icu/util/Currency;)V
-Ljava/util/Currency;->available:Ljava/util/HashSet;
-Ljava/util/Currency;->currencyCode:Ljava/lang/String;
-Ljava/util/Currency;->icuCurrency:Landroid/icu/util/Currency;
-Ljava/util/Currency;->instances:Ljava/util/concurrent/ConcurrentMap;
-Ljava/util/Date;->cdate:Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/Date;->convertToAbbr(Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/lang/StringBuilder;
-Ljava/util/Date;->defaultCenturyStart:I
-Ljava/util/Date;->fastTime:J
-Ljava/util/Date;->gcal:Lsun/util/calendar/BaseCalendar;
-Ljava/util/Date;->getCalendarDate()Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/Date;->getCalendarSystem(I)Lsun/util/calendar/BaseCalendar;
-Ljava/util/Date;->getCalendarSystem(J)Lsun/util/calendar/BaseCalendar;
-Ljava/util/Date;->getCalendarSystem(Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar;
-Ljava/util/Date;->getJulianCalendar()Lsun/util/calendar/BaseCalendar;
-Ljava/util/Date;->getMillisOf(Ljava/util/Date;)J
-Ljava/util/Date;->getTimeImpl()J
-Ljava/util/Date;->jcal:Lsun/util/calendar/BaseCalendar;
-Ljava/util/Date;->normalize()Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/Date;->normalize(Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/Date;->ttb:[I
-Ljava/util/Date;->wtb:[Ljava/lang/String;
-Ljava/util/DoubleSummaryStatistics;->count:J
-Ljava/util/DoubleSummaryStatistics;->max:D
-Ljava/util/DoubleSummaryStatistics;->min:D
-Ljava/util/DoubleSummaryStatistics;->simpleSum:D
-Ljava/util/DoubleSummaryStatistics;->sum:D
-Ljava/util/DoubleSummaryStatistics;->sumCompensation:D
-Ljava/util/DoubleSummaryStatistics;->sumWithCompensation(D)V
-Ljava/util/DuplicateFormatFlagsException;->flags:Ljava/lang/String;
-Ljava/util/EnumMap$EntryIterator$Entry;->checkIndexForEntryUse()V
-Ljava/util/EnumMap$EntryIterator$Entry;->index:I
-Ljava/util/EnumMap$EntryIterator;->lastReturnedEntry:Ljava/util/EnumMap$EntryIterator$Entry;
-Ljava/util/EnumMap$EntrySet;->fillEntryArray([Ljava/lang/Object;)[Ljava/lang/Object;
-Ljava/util/EnumMap$EnumMapIterator;->checkLastReturnedIndex()V
-Ljava/util/EnumMap$EnumMapIterator;->index:I
-Ljava/util/EnumMap$EnumMapIterator;->lastReturnedIndex:I
-Ljava/util/EnumMap;->containsMapping(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/EnumMap;->entryHashCode(I)I
-Ljava/util/EnumMap;->entrySet:Ljava/util/Set;
-Ljava/util/EnumMap;->equals(Ljava/util/EnumMap;)Z
-Ljava/util/EnumMap;->getKeyUniverse(Ljava/lang/Class;)[Ljava/lang/Enum;
-Ljava/util/EnumMap;->isValidKey(Ljava/lang/Object;)Z
-Ljava/util/EnumMap;->keyUniverse:[Ljava/lang/Enum;
-Ljava/util/EnumMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/EnumMap;->NULL:Ljava/lang/Object;
-Ljava/util/EnumMap;->removeMapping(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/EnumMap;->size:I
-Ljava/util/EnumMap;->typeCheck(Ljava/lang/Enum;)V
-Ljava/util/EnumMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/EnumMap;->vals:[Ljava/lang/Object;
-Ljava/util/EnumMap;->ZERO_LENGTH_ENUM_ARRAY:[Ljava/lang/Enum;
-Ljava/util/EnumSet$SerializationProxy;-><init>(Ljava/util/EnumSet;)V
-Ljava/util/EnumSet$SerializationProxy;->elements:[Ljava/lang/Enum;
-Ljava/util/EnumSet$SerializationProxy;->elementType:Ljava/lang/Class;
-Ljava/util/EnumSet;-><init>(Ljava/lang/Class;[Ljava/lang/Enum;)V
-Ljava/util/EnumSet;->addAll()V
-Ljava/util/EnumSet;->addRange(Ljava/lang/Enum;Ljava/lang/Enum;)V
-Ljava/util/EnumSet;->complement()V
-Ljava/util/EnumSet;->getUniverse(Ljava/lang/Class;)[Ljava/lang/Enum;
-Ljava/util/EnumSet;->typeCheck(Ljava/lang/Enum;)V
-Ljava/util/EnumSet;->universe:[Ljava/lang/Enum;
-Ljava/util/EnumSet;->ZERO_LENGTH_ENUM_ARRAY:[Ljava/lang/Enum;
-Ljava/util/EventListenerProxy;->listener:Ljava/util/EventListener;
-Ljava/util/FormatFlagsConversionMismatchException;->c:C
-Ljava/util/FormatFlagsConversionMismatchException;->f:Ljava/lang/String;
-Ljava/util/FormattableFlags;-><init>()V
-Ljava/util/Formatter$Conversion;-><init>()V
-Ljava/util/Formatter$Conversion;->BOOLEAN:C
-Ljava/util/Formatter$Conversion;->BOOLEAN_UPPER:C
-Ljava/util/Formatter$Conversion;->CHARACTER:C
-Ljava/util/Formatter$Conversion;->CHARACTER_UPPER:C
-Ljava/util/Formatter$Conversion;->DATE_TIME:C
-Ljava/util/Formatter$Conversion;->DATE_TIME_UPPER:C
-Ljava/util/Formatter$Conversion;->DECIMAL_FLOAT:C
-Ljava/util/Formatter$Conversion;->DECIMAL_INTEGER:C
-Ljava/util/Formatter$Conversion;->GENERAL:C
-Ljava/util/Formatter$Conversion;->GENERAL_UPPER:C
-Ljava/util/Formatter$Conversion;->HASHCODE:C
-Ljava/util/Formatter$Conversion;->HASHCODE_UPPER:C
-Ljava/util/Formatter$Conversion;->HEXADECIMAL_FLOAT:C
-Ljava/util/Formatter$Conversion;->HEXADECIMAL_FLOAT_UPPER:C
-Ljava/util/Formatter$Conversion;->HEXADECIMAL_INTEGER:C
-Ljava/util/Formatter$Conversion;->HEXADECIMAL_INTEGER_UPPER:C
-Ljava/util/Formatter$Conversion;->isCharacter(C)Z
-Ljava/util/Formatter$Conversion;->isFloat(C)Z
-Ljava/util/Formatter$Conversion;->isGeneral(C)Z
-Ljava/util/Formatter$Conversion;->isInteger(C)Z
-Ljava/util/Formatter$Conversion;->isText(C)Z
-Ljava/util/Formatter$Conversion;->isValid(C)Z
-Ljava/util/Formatter$Conversion;->LINE_SEPARATOR:C
-Ljava/util/Formatter$Conversion;->OCTAL_INTEGER:C
-Ljava/util/Formatter$Conversion;->PERCENT_SIGN:C
-Ljava/util/Formatter$Conversion;->SCIENTIFIC:C
-Ljava/util/Formatter$Conversion;->SCIENTIFIC_UPPER:C
-Ljava/util/Formatter$Conversion;->STRING:C
-Ljava/util/Formatter$Conversion;->STRING_UPPER:C
-Ljava/util/Formatter$DateTime;-><init>()V
-Ljava/util/Formatter$DateTime;->AM_PM:C
-Ljava/util/Formatter$DateTime;->CENTURY:C
-Ljava/util/Formatter$DateTime;->DATE:C
-Ljava/util/Formatter$DateTime;->DATE_TIME:C
-Ljava/util/Formatter$DateTime;->DAY_OF_MONTH:C
-Ljava/util/Formatter$DateTime;->DAY_OF_MONTH_0:C
-Ljava/util/Formatter$DateTime;->DAY_OF_YEAR:C
-Ljava/util/Formatter$DateTime;->HOUR:C
-Ljava/util/Formatter$DateTime;->HOUR_0:C
-Ljava/util/Formatter$DateTime;->HOUR_OF_DAY:C
-Ljava/util/Formatter$DateTime;->HOUR_OF_DAY_0:C
-Ljava/util/Formatter$DateTime;->ISO_STANDARD_DATE:C
-Ljava/util/Formatter$DateTime;->isValid(C)Z
-Ljava/util/Formatter$DateTime;->MILLISECOND:C
-Ljava/util/Formatter$DateTime;->MILLISECOND_SINCE_EPOCH:C
-Ljava/util/Formatter$DateTime;->MINUTE:C
-Ljava/util/Formatter$DateTime;->MONTH:C
-Ljava/util/Formatter$DateTime;->NAME_OF_DAY:C
-Ljava/util/Formatter$DateTime;->NAME_OF_DAY_ABBREV:C
-Ljava/util/Formatter$DateTime;->NAME_OF_MONTH:C
-Ljava/util/Formatter$DateTime;->NAME_OF_MONTH_ABBREV:C
-Ljava/util/Formatter$DateTime;->NAME_OF_MONTH_ABBREV_X:C
-Ljava/util/Formatter$DateTime;->NANOSECOND:C
-Ljava/util/Formatter$DateTime;->SECOND:C
-Ljava/util/Formatter$DateTime;->SECONDS_SINCE_EPOCH:C
-Ljava/util/Formatter$DateTime;->TIME:C
-Ljava/util/Formatter$DateTime;->TIME_12_HOUR:C
-Ljava/util/Formatter$DateTime;->TIME_24_HOUR:C
-Ljava/util/Formatter$DateTime;->YEAR_2:C
-Ljava/util/Formatter$DateTime;->YEAR_4:C
-Ljava/util/Formatter$DateTime;->ZONE:C
-Ljava/util/Formatter$DateTime;->ZONE_NUMERIC:C
-Ljava/util/Formatter$FixedString;->index()I
-Ljava/util/Formatter$FixedString;->print(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter$FixedString;->s:Ljava/lang/String;
-Ljava/util/Formatter$Flags;-><init>(I)V
-Ljava/util/Formatter$Flags;->add(Ljava/util/Formatter$Flags;)Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->ALTERNATE:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->contains(Ljava/util/Formatter$Flags;)Z
-Ljava/util/Formatter$Flags;->dup()Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->flags:I
-Ljava/util/Formatter$Flags;->GROUP:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->LEADING_SPACE:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->LEFT_JUSTIFY:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->NONE:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->PARENTHESES:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->parse(C)Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->parse(Ljava/lang/String;)Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->PLUS:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->PREVIOUS:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->remove(Ljava/util/Formatter$Flags;)Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->toString(Ljava/util/Formatter$Flags;)Ljava/lang/String;
-Ljava/util/Formatter$Flags;->UPPERCASE:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$Flags;->valueOf()I
-Ljava/util/Formatter$Flags;->ZERO_PAD:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->dot:Z
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->exp:Ljava/lang/StringBuilder;
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->exponent()[C
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->hasDot()Z
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->layout(Ljava/math/BigInteger;ILjava/util/Formatter$BigDecimalLayoutForm;)V
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->layoutChars()[C
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->mant:Ljava/lang/StringBuilder;
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->mantissa()[C
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->scale()I
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->scale:I
-Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->toCharArray(Ljava/lang/StringBuilder;)[C
-Ljava/util/Formatter$FormatSpecifier;->addDot([C)[C
-Ljava/util/Formatter$FormatSpecifier;->addZeros([CI)[C
-Ljava/util/Formatter$FormatSpecifier;->adjustWidth(ILjava/util/Formatter$Flags;Z)I
-Ljava/util/Formatter$FormatSpecifier;->c:C
-Ljava/util/Formatter$FormatSpecifier;->checkCharacter()V
-Ljava/util/Formatter$FormatSpecifier;->checkDateTime()V
-Ljava/util/Formatter$FormatSpecifier;->checkFloat()V
-Ljava/util/Formatter$FormatSpecifier;->checkGeneral()V
-Ljava/util/Formatter$FormatSpecifier;->checkInteger()V
-Ljava/util/Formatter$FormatSpecifier;->checkNumeric()V
-Ljava/util/Formatter$FormatSpecifier;->checkText()V
-Ljava/util/Formatter$FormatSpecifier;->conversion()C
-Ljava/util/Formatter$FormatSpecifier;->conversion(Ljava/lang/String;)C
-Ljava/util/Formatter$FormatSpecifier;->dt:Z
-Ljava/util/Formatter$FormatSpecifier;->f:Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$FormatSpecifier;->failConversion(CLjava/lang/Object;)V
-Ljava/util/Formatter$FormatSpecifier;->failMismatch(Ljava/util/Formatter$Flags;C)V
-Ljava/util/Formatter$FormatSpecifier;->flags()Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$FormatSpecifier;->flags(Ljava/lang/String;)Ljava/util/Formatter$Flags;
-Ljava/util/Formatter$FormatSpecifier;->getZero(Ljava/util/Locale;)C
-Ljava/util/Formatter$FormatSpecifier;->hexDouble(DI)Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifier;->index()I
-Ljava/util/Formatter$FormatSpecifier;->index(Ljava/lang/String;)I
-Ljava/util/Formatter$FormatSpecifier;->index:I
-Ljava/util/Formatter$FormatSpecifier;->justify(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifier;->leadingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
-Ljava/util/Formatter$FormatSpecifier;->localizedMagnitude(Ljava/lang/StringBuilder;JLjava/util/Formatter$Flags;ILjava/util/Locale;)Ljava/lang/StringBuilder;
-Ljava/util/Formatter$FormatSpecifier;->localizedMagnitude(Ljava/lang/StringBuilder;[CLjava/util/Formatter$Flags;ILjava/util/Locale;)Ljava/lang/StringBuilder;
-Ljava/util/Formatter$FormatSpecifier;->precision()I
-Ljava/util/Formatter$FormatSpecifier;->precision(Ljava/lang/String;)I
-Ljava/util/Formatter$FormatSpecifier;->precision:I
-Ljava/util/Formatter$FormatSpecifier;->print(BLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(DLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(FLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(ILjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(JLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/String;)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;DLjava/util/Locale;Ljava/util/Formatter$Flags;CIZ)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/math/BigDecimal;Ljava/util/Locale;Ljava/util/Formatter$Flags;CIZ)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/time/temporal/TemporalAccessor;CLjava/util/Locale;)Ljava/lang/Appendable;
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/util/Calendar;CLjava/util/Locale;)Ljava/lang/Appendable;
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/math/BigDecimal;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/math/BigInteger;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/time/temporal/TemporalAccessor;CLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(Ljava/util/Calendar;CLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->print(SLjava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->printBoolean(Ljava/lang/Object;)V
-Ljava/util/Formatter$FormatSpecifier;->printCharacter(Ljava/lang/Object;)V
-Ljava/util/Formatter$FormatSpecifier;->printDateTime(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->printFloat(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->printHashCode(Ljava/lang/Object;)V
-Ljava/util/Formatter$FormatSpecifier;->printInteger(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->printString(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter$FormatSpecifier;->trailingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
-Ljava/util/Formatter$FormatSpecifier;->trailingZeros([CI)[C
-Ljava/util/Formatter$FormatSpecifier;->width()I
-Ljava/util/Formatter$FormatSpecifier;->width(Ljava/lang/String;)I
-Ljava/util/Formatter$FormatSpecifier;->width:I
-Ljava/util/Formatter$FormatSpecifierParser;->advance()C
-Ljava/util/Formatter$FormatSpecifierParser;->back(I)V
-Ljava/util/Formatter$FormatSpecifierParser;->conv:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->cursor:I
-Ljava/util/Formatter$FormatSpecifierParser;->FLAGS:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->flags:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->format:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->fs:Ljava/util/Formatter$FormatSpecifier;
-Ljava/util/Formatter$FormatSpecifierParser;->getEndIdx()I
-Ljava/util/Formatter$FormatSpecifierParser;->getFormatSpecifier()Ljava/util/Formatter$FormatSpecifier;
-Ljava/util/Formatter$FormatSpecifierParser;->index:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->isEnd()Z
-Ljava/util/Formatter$FormatSpecifierParser;->nextInt()Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->nextIsInt()Z
-Ljava/util/Formatter$FormatSpecifierParser;->peek()C
-Ljava/util/Formatter$FormatSpecifierParser;->precision:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->tT:Ljava/lang/String;
-Ljava/util/Formatter$FormatSpecifierParser;->width:Ljava/lang/String;
-Ljava/util/Formatter$FormatString;->index()I
-Ljava/util/Formatter$FormatString;->print(Ljava/lang/Object;Ljava/util/Locale;)V
-Ljava/util/Formatter;-><init>(Ljava/nio/charset/Charset;Ljava/util/Locale;Ljava/io/File;)V
-Ljava/util/Formatter;-><init>(Ljava/util/Locale;Ljava/lang/Appendable;)V
-Ljava/util/Formatter;->a:Ljava/lang/Appendable;
-Ljava/util/Formatter;->ensureOpen()V
-Ljava/util/Formatter;->getZero(Ljava/util/Locale;)C
-Ljava/util/Formatter;->l:Ljava/util/Locale;
-Ljava/util/Formatter;->lastException:Ljava/io/IOException;
-Ljava/util/Formatter;->MAX_FD_CHARS:I
-Ljava/util/Formatter;->nonNullAppendable(Ljava/lang/Appendable;)Ljava/lang/Appendable;
-Ljava/util/Formatter;->parse(Ljava/lang/String;)[Ljava/util/Formatter$FormatString;
-Ljava/util/Formatter;->scaleUp:D
-Ljava/util/Formatter;->toCharset(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/util/Formatter;->zero:C
-Ljava/util/GregorianCalendar;-><init>(IIIIIII)V
-Ljava/util/GregorianCalendar;-><init>(J)V
-Ljava/util/GregorianCalendar;-><init>(Ljava/util/TimeZone;Ljava/util/Locale;Z)V
-Ljava/util/GregorianCalendar;->actualMonthLength()I
-Ljava/util/GregorianCalendar;->adjustDstOffsetForInvalidWallClock(JLjava/util/TimeZone;I)I
-Ljava/util/GregorianCalendar;->adjustForZoneAndDaylightSavingsTime(IJLjava/util/TimeZone;)J
-Ljava/util/GregorianCalendar;->BCE:I
-Ljava/util/GregorianCalendar;->cachedFixedDate:J
-Ljava/util/GregorianCalendar;->calsys:Lsun/util/calendar/BaseCalendar;
-Ljava/util/GregorianCalendar;->cdate:Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/GregorianCalendar;->CE:I
-Ljava/util/GregorianCalendar;->computeFields(II)I
-Ljava/util/GregorianCalendar;->DEFAULT_GREGORIAN_CUTOVER:J
-Ljava/util/GregorianCalendar;->EPOCH_OFFSET:I
-Ljava/util/GregorianCalendar;->EPOCH_YEAR:I
-Ljava/util/GregorianCalendar;->gcal:Lsun/util/calendar/Gregorian;
-Ljava/util/GregorianCalendar;->gdate:Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/GregorianCalendar;->getCalendarDate(J)Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/GregorianCalendar;->getCurrentFixedDate()J
-Ljava/util/GregorianCalendar;->getCutoverCalendarSystem()Lsun/util/calendar/BaseCalendar;
-Ljava/util/GregorianCalendar;->getFixedDate(Lsun/util/calendar/BaseCalendar;II)J
-Ljava/util/GregorianCalendar;->getFixedDateJan1(Lsun/util/calendar/BaseCalendar$Date;J)J
-Ljava/util/GregorianCalendar;->getFixedDateMonth1(Lsun/util/calendar/BaseCalendar$Date;J)J
-Ljava/util/GregorianCalendar;->getGregorianCutoverDate()Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/GregorianCalendar;->getJulianCalendarSystem()Lsun/util/calendar/BaseCalendar;
-Ljava/util/GregorianCalendar;->getLastJulianDate()Lsun/util/calendar/BaseCalendar$Date;
-Ljava/util/GregorianCalendar;->getNormalizedCalendar()Ljava/util/GregorianCalendar;
-Ljava/util/GregorianCalendar;->getRolledValue(IIII)I
-Ljava/util/GregorianCalendar;->getWeekNumber(JJ)I
-Ljava/util/GregorianCalendar;->getYearOffsetInMillis()J
-Ljava/util/GregorianCalendar;->gregorianCutover:J
-Ljava/util/GregorianCalendar;->gregorianCutoverDate:J
-Ljava/util/GregorianCalendar;->gregorianCutoverYear:I
-Ljava/util/GregorianCalendar;->gregorianCutoverYearJulian:I
-Ljava/util/GregorianCalendar;->internalGetEra()I
-Ljava/util/GregorianCalendar;->isCutoverYear(I)Z
-Ljava/util/GregorianCalendar;->jcal:Lsun/util/calendar/JulianCalendar;
-Ljava/util/GregorianCalendar;->jeras:[Lsun/util/calendar/Era;
-Ljava/util/GregorianCalendar;->LEAP_MONTH_LENGTH:[I
-Ljava/util/GregorianCalendar;->LEAST_MAX_VALUES:[I
-Ljava/util/GregorianCalendar;->MAX_VALUES:[I
-Ljava/util/GregorianCalendar;->MIN_VALUES:[I
-Ljava/util/GregorianCalendar;->monthLength(I)I
-Ljava/util/GregorianCalendar;->monthLength(II)I
-Ljava/util/GregorianCalendar;->MONTH_LENGTH:[I
-Ljava/util/GregorianCalendar;->ONE_DAY:J
-Ljava/util/GregorianCalendar;->ONE_HOUR:I
-Ljava/util/GregorianCalendar;->ONE_MINUTE:I
-Ljava/util/GregorianCalendar;->ONE_SECOND:I
-Ljava/util/GregorianCalendar;->ONE_WEEK:J
-Ljava/util/GregorianCalendar;->originalFields:[I
-Ljava/util/GregorianCalendar;->pinDayOfMonth()V
-Ljava/util/GregorianCalendar;->setGregorianChange(J)V
-Ljava/util/GregorianCalendar;->yearLength()I
-Ljava/util/GregorianCalendar;->yearLength(I)I
-Ljava/util/GregorianCalendar;->zoneOffsets:[I
-Ljava/util/HashMap$EntrySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$EntrySpliterator;-><init>(Ljava/util/HashMap;IIII)V
-Ljava/util/HashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/HashMap$HashIterator;->current:Ljava/util/HashMap$Node;
-Ljava/util/HashMap$HashIterator;->expectedModCount:I
-Ljava/util/HashMap$HashIterator;->index:I
-Ljava/util/HashMap$HashIterator;->next:Ljava/util/HashMap$Node;
-Ljava/util/HashMap$HashIterator;->nextNode()Ljava/util/HashMap$Node;
-Ljava/util/HashMap$HashMapSpliterator;-><init>(Ljava/util/HashMap;IIII)V
-Ljava/util/HashMap$HashMapSpliterator;->current:Ljava/util/HashMap$Node;
-Ljava/util/HashMap$HashMapSpliterator;->est:I
-Ljava/util/HashMap$HashMapSpliterator;->estimateSize()J
-Ljava/util/HashMap$HashMapSpliterator;->expectedModCount:I
-Ljava/util/HashMap$HashMapSpliterator;->fence:I
-Ljava/util/HashMap$HashMapSpliterator;->getFence()I
-Ljava/util/HashMap$HashMapSpliterator;->index:I
-Ljava/util/HashMap$HashMapSpliterator;->map:Ljava/util/HashMap;
-Ljava/util/HashMap$KeySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$KeySpliterator;-><init>(Ljava/util/HashMap;IIII)V
-Ljava/util/HashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/HashMap$Node;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
-Ljava/util/HashMap$Node;->hash:I
-Ljava/util/HashMap$TreeNode;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
-Ljava/util/HashMap$TreeNode;->balanceDeletion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->balanceInsertion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->checkInvariants(Ljava/util/HashMap$TreeNode;)Z
-Ljava/util/HashMap$TreeNode;->find(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->getTreeNode(ILjava/lang/Object;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->left:Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->moveRootToFront([Ljava/util/HashMap$Node;Ljava/util/HashMap$TreeNode;)V
-Ljava/util/HashMap$TreeNode;->parent:Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->prev:Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->putTreeVal(Ljava/util/HashMap;[Ljava/util/HashMap$Node;ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->red:Z
-Ljava/util/HashMap$TreeNode;->removeTreeNode(Ljava/util/HashMap;[Ljava/util/HashMap$Node;Z)V
-Ljava/util/HashMap$TreeNode;->right:Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->root()Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->rotateLeft(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->rotateRight(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap$TreeNode;->split(Ljava/util/HashMap;[Ljava/util/HashMap$Node;II)V
-Ljava/util/HashMap$TreeNode;->tieBreakOrder(Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/HashMap$TreeNode;->treeify([Ljava/util/HashMap$Node;)V
-Ljava/util/HashMap$TreeNode;->untreeify(Ljava/util/HashMap;)Ljava/util/HashMap$Node;
-Ljava/util/HashMap$Values;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$ValueSpliterator;-><init>(Ljava/util/HashMap;IIII)V
-Ljava/util/HashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/HashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/HashMap;->afterNodeAccess(Ljava/util/HashMap$Node;)V
-Ljava/util/HashMap;->afterNodeInsertion(Z)V
-Ljava/util/HashMap;->afterNodeRemoval(Ljava/util/HashMap$Node;)V
-Ljava/util/HashMap;->capacity()I
-Ljava/util/HashMap;->comparableClassFor(Ljava/lang/Object;)Ljava/lang/Class;
-Ljava/util/HashMap;->compareComparables(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/HashMap;->DEFAULT_INITIAL_CAPACITY:I
-Ljava/util/HashMap;->DEFAULT_LOAD_FACTOR:F
-Ljava/util/HashMap;->entrySet:Ljava/util/Set;
-Ljava/util/HashMap;->getNode(ILjava/lang/Object;)Ljava/util/HashMap$Node;
-Ljava/util/HashMap;->hash(Ljava/lang/Object;)I
-Ljava/util/HashMap;->internalWriteEntries(Ljava/io/ObjectOutputStream;)V
-Ljava/util/HashMap;->loadFactor()F
-Ljava/util/HashMap;->loadFactor:F
-Ljava/util/HashMap;->MAXIMUM_CAPACITY:I
-Ljava/util/HashMap;->MIN_TREEIFY_CAPACITY:I
-Ljava/util/HashMap;->newNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
-Ljava/util/HashMap;->newTreeNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap;->putMapEntries(Ljava/util/Map;Z)V
-Ljava/util/HashMap;->putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;
-Ljava/util/HashMap;->reinitialize()V
-Ljava/util/HashMap;->removeNode(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node;
-Ljava/util/HashMap;->replacementNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
-Ljava/util/HashMap;->replacementTreeNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
-Ljava/util/HashMap;->resize()[Ljava/util/HashMap$Node;
-Ljava/util/HashMap;->size:I
-Ljava/util/HashMap;->tableSizeFor(I)I
-Ljava/util/HashMap;->threshold:I
-Ljava/util/HashMap;->treeifyBin([Ljava/util/HashMap$Node;I)V
-Ljava/util/HashMap;->TREEIFY_THRESHOLD:I
-Ljava/util/HashMap;->UNTREEIFY_THRESHOLD:I
-Ljava/util/HashSet;-><init>(IFZ)V
-Ljava/util/HashSet;->PRESENT:Ljava/lang/Object;
-Ljava/util/Hashtable$EntrySet;->add(Ljava/util/Map$Entry;)Z
-Ljava/util/Hashtable$Enumerator;->entry:Ljava/util/Hashtable$HashtableEntry;
-Ljava/util/Hashtable$Enumerator;->expectedModCount:I
-Ljava/util/Hashtable$Enumerator;->index:I
-Ljava/util/Hashtable$Enumerator;->iterator:Z
-Ljava/util/Hashtable$Enumerator;->lastReturned:Ljava/util/Hashtable$HashtableEntry;
-Ljava/util/Hashtable$Enumerator;->table:[Ljava/util/Hashtable$HashtableEntry;
-Ljava/util/Hashtable$Enumerator;->type:I
-Ljava/util/Hashtable$HashtableEntry;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/Hashtable$HashtableEntry;)V
-Ljava/util/Hashtable$HashtableEntry;->hash:I
-Ljava/util/Hashtable$HashtableEntry;->key:Ljava/lang/Object;
-Ljava/util/Hashtable$HashtableEntry;->next:Ljava/util/Hashtable$HashtableEntry;
-Ljava/util/Hashtable$HashtableEntry;->value:Ljava/lang/Object;
-Ljava/util/Hashtable;->addEntry(ILjava/lang/Object;Ljava/lang/Object;I)V
-Ljava/util/Hashtable;->count:I
-Ljava/util/Hashtable;->ENTRIES:I
-Ljava/util/Hashtable;->entrySet:Ljava/util/Set;
-Ljava/util/Hashtable;->getEnumeration(I)Ljava/util/Enumeration;
-Ljava/util/Hashtable;->getIterator(I)Ljava/util/Iterator;
-Ljava/util/Hashtable;->KEYS:I
-Ljava/util/Hashtable;->keySet:Ljava/util/Set;
-Ljava/util/Hashtable;->loadFactor:F
-Ljava/util/Hashtable;->MAX_ARRAY_SIZE:I
-Ljava/util/Hashtable;->modCount:I
-Ljava/util/Hashtable;->reconstitutionPut([Ljava/util/Hashtable$HashtableEntry;Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/util/Hashtable;->table:[Ljava/util/Hashtable$HashtableEntry;
-Ljava/util/Hashtable;->threshold:I
-Ljava/util/Hashtable;->VALUES:I
-Ljava/util/Hashtable;->values:Ljava/util/Collection;
-Ljava/util/IdentityHashMap$EntryIterator$Entry;->checkIndexForEntryUse()V
-Ljava/util/IdentityHashMap$EntryIterator$Entry;->index:I
-Ljava/util/IdentityHashMap$EntryIterator;->lastReturnedEntry:Ljava/util/IdentityHashMap$EntryIterator$Entry;
-Ljava/util/IdentityHashMap$EntrySpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V
-Ljava/util/IdentityHashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/IdentityHashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;->expectedModCount:I
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;->index:I
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;->indexValid:Z
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;->lastReturnedIndex:I
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;->nextIndex()I
-Ljava/util/IdentityHashMap$IdentityHashMapIterator;->traversalTable:[Ljava/lang/Object;
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->est:I
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->estimateSize()J
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->expectedModCount:I
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->fence:I
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->getFence()I
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->index:I
-Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->map:Ljava/util/IdentityHashMap;
-Ljava/util/IdentityHashMap$KeySpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V
-Ljava/util/IdentityHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/IdentityHashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/IdentityHashMap$ValueSpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V
-Ljava/util/IdentityHashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/IdentityHashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/IdentityHashMap;->capacity(I)I
-Ljava/util/IdentityHashMap;->closeDeletion(I)V
-Ljava/util/IdentityHashMap;->containsMapping(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/IdentityHashMap;->DEFAULT_CAPACITY:I
-Ljava/util/IdentityHashMap;->entrySet:Ljava/util/Set;
-Ljava/util/IdentityHashMap;->hash(Ljava/lang/Object;I)I
-Ljava/util/IdentityHashMap;->init(I)V
-Ljava/util/IdentityHashMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/IdentityHashMap;->MAXIMUM_CAPACITY:I
-Ljava/util/IdentityHashMap;->MINIMUM_CAPACITY:I
-Ljava/util/IdentityHashMap;->modCount:I
-Ljava/util/IdentityHashMap;->nextKeyIndex(II)I
-Ljava/util/IdentityHashMap;->NULL_KEY:Ljava/lang/Object;
-Ljava/util/IdentityHashMap;->putForCreate(Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/util/IdentityHashMap;->removeMapping(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/IdentityHashMap;->resize(I)Z
-Ljava/util/IdentityHashMap;->size:I
-Ljava/util/IdentityHashMap;->table:[Ljava/lang/Object;
-Ljava/util/IdentityHashMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/IllegalFormatCodePointException;->c:I
-Ljava/util/IllegalFormatConversionException;->arg:Ljava/lang/Class;
-Ljava/util/IllegalFormatConversionException;->c:C
-Ljava/util/IllegalFormatException;-><init>()V
-Ljava/util/IllegalFormatFlagsException;->flags:Ljava/lang/String;
-Ljava/util/IllegalFormatPrecisionException;->p:I
-Ljava/util/IllegalFormatWidthException;->w:I
-Ljava/util/IllformedLocaleException;->_errIdx:I
-Ljava/util/IntSummaryStatistics;->count:J
-Ljava/util/IntSummaryStatistics;->max:I
-Ljava/util/IntSummaryStatistics;->min:I
-Ljava/util/IntSummaryStatistics;->sum:J
-Ljava/util/jar/Attributes$Name;->hashCode:I
-Ljava/util/jar/Attributes$Name;->isAlpha(C)Z
-Ljava/util/jar/Attributes$Name;->isDigit(C)Z
-Ljava/util/jar/Attributes$Name;->isValid(C)Z
-Ljava/util/jar/Attributes$Name;->isValid(Ljava/lang/String;)Z
-Ljava/util/jar/Attributes$Name;->name:Ljava/lang/String;
-Ljava/util/jar/Attributes$Name;->NAME:Ljava/util/jar/Attributes$Name;
-Ljava/util/jar/Attributes;->read(Ljava/util/jar/Manifest$FastInputStream;[B)V
-Ljava/util/jar/Attributes;->write(Ljava/io/DataOutputStream;)V
-Ljava/util/jar/Attributes;->writeMain(Ljava/io/DataOutputStream;)V
-Ljava/util/jar/JarEntry;->attr:Ljava/util/jar/Attributes;
-Ljava/util/jar/JarEntry;->certs:[Ljava/security/cert/Certificate;
-Ljava/util/jar/JarEntry;->signers:[Ljava/security/CodeSigner;
-Ljava/util/jar/JarFile$JarEntryIterator;->e:Ljava/util/Enumeration;
-Ljava/util/jar/JarFile;->checkForSpecialAttributes()V
-Ljava/util/jar/JarFile;->CLASSPATH_CHARS:[C
-Ljava/util/jar/JarFile;->CLASSPATH_LASTOCC:[I
-Ljava/util/jar/JarFile;->CLASSPATH_OPTOSFT:[I
-Ljava/util/jar/JarFile;->getBytes(Ljava/util/zip/ZipEntry;)[B
-Ljava/util/jar/JarFile;->getManEntry()Ljava/util/jar/JarEntry;
-Ljava/util/jar/JarFile;->getManifestFromReference()Ljava/util/jar/Manifest;
-Ljava/util/jar/JarFile;->getMetaInfEntryNames()[Ljava/lang/String;
-Ljava/util/jar/JarFile;->hasCheckedSpecialAttributes:Z
-Ljava/util/jar/JarFile;->hasClassPathAttribute()Z
-Ljava/util/jar/JarFile;->hasClassPathAttribute:Z
-Ljava/util/jar/JarFile;->initializeVerifier()V
-Ljava/util/jar/JarFile;->jv:Ljava/util/jar/JarVerifier;
-Ljava/util/jar/JarFile;->jvInitialized:Z
-Ljava/util/jar/JarFile;->manEntry:Ljava/util/jar/JarEntry;
-Ljava/util/jar/JarFile;->match([C[B[I[I)Z
-Ljava/util/jar/JarFile;->maybeInstantiateVerifier()V
-Ljava/util/jar/JarFile;->META_DIR:Ljava/lang/String;
-Ljava/util/jar/JarFile;->newEntry(Ljava/util/zip/ZipEntry;)Ljava/util/jar/JarEntry;
-Ljava/util/jar/JarFile;->verify:Z
-Ljava/util/jar/JarInputStream;->checkManifest(Ljava/util/jar/JarEntry;)Ljava/util/jar/JarEntry;
-Ljava/util/jar/JarInputStream;->doVerify:Z
-Ljava/util/jar/JarInputStream;->first:Ljava/util/jar/JarEntry;
-Ljava/util/jar/JarInputStream;->getBytes(Ljava/io/InputStream;)[B
-Ljava/util/jar/JarInputStream;->jv:Ljava/util/jar/JarVerifier;
-Ljava/util/jar/JarInputStream;->man:Ljava/util/jar/Manifest;
-Ljava/util/jar/JarInputStream;->mev:Lsun/security/util/ManifestEntryVerifier;
-Ljava/util/jar/JarInputStream;->tryManifest:Z
-Ljava/util/jar/JarOutputStream;->firstEntry:Z
-Ljava/util/jar/JarOutputStream;->get16([BI)I
-Ljava/util/jar/JarOutputStream;->hasMagic([B)Z
-Ljava/util/jar/JarOutputStream;->JAR_MAGIC:I
-Ljava/util/jar/JarOutputStream;->set16([BII)V
-Ljava/util/jar/JarVerifier$VerifierCodeSource;-><init>(Ljava/lang/Object;Ljava/net/URL;[Ljava/security/cert/Certificate;)V
-Ljava/util/jar/JarVerifier$VerifierCodeSource;-><init>(Ljava/lang/Object;Ljava/net/URL;[Ljava/security/CodeSigner;)V
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->csdomain:Ljava/lang/Object;
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->getPrivateCertificates()[Ljava/security/cert/Certificate;
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->getPrivateSigners()[Ljava/security/CodeSigner;
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->isSameDomain(Ljava/lang/Object;)Z
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->vcerts:[Ljava/security/cert/Certificate;
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->vlocation:Ljava/net/URL;
-Ljava/util/jar/JarVerifier$VerifierCodeSource;->vsigners:[Ljava/security/CodeSigner;
-Ljava/util/jar/JarVerifier$VerifierStream;-><init>(Ljava/util/jar/Manifest;Ljava/util/jar/JarEntry;Ljava/io/InputStream;Ljava/util/jar/JarVerifier;)V
-Ljava/util/jar/JarVerifier$VerifierStream;->is:Ljava/io/InputStream;
-Ljava/util/jar/JarVerifier$VerifierStream;->jv:Ljava/util/jar/JarVerifier;
-Ljava/util/jar/JarVerifier$VerifierStream;->mev:Lsun/security/util/ManifestEntryVerifier;
-Ljava/util/jar/JarVerifier$VerifierStream;->numLeft:J
-Ljava/util/jar/JarVerifier;-><init>([B)V
-Ljava/util/jar/JarVerifier;->anyToVerify:Z
-Ljava/util/jar/JarVerifier;->baos:Ljava/io/ByteArrayOutputStream;
-Ljava/util/jar/JarVerifier;->beginEntry(Ljava/util/jar/JarEntry;Lsun/security/util/ManifestEntryVerifier;)V
-Ljava/util/jar/JarVerifier;->csdomain:Ljava/lang/Object;
-Ljava/util/jar/JarVerifier;->debug:Lsun/security/util/Debug;
-Ljava/util/jar/JarVerifier;->doneWithMeta()V
-Ljava/util/jar/JarVerifier;->eagerValidation:Z
-Ljava/util/jar/JarVerifier;->emptyEnumeration:Ljava/util/Enumeration;
-Ljava/util/jar/JarVerifier;->emptySigner:[Ljava/security/CodeSigner;
-Ljava/util/jar/JarVerifier;->entries2(Ljava/util/jar/JarFile;Ljava/util/Enumeration;)Ljava/util/Enumeration;
-Ljava/util/jar/JarVerifier;->entryNames(Ljava/util/jar/JarFile;[Ljava/security/CodeSource;)Ljava/util/Enumeration;
-Ljava/util/jar/JarVerifier;->findMatchingSigners(Ljava/security/CodeSource;)[Ljava/security/CodeSigner;
-Ljava/util/jar/JarVerifier;->getCerts(Ljava/lang/String;)[Ljava/security/cert/Certificate;
-Ljava/util/jar/JarVerifier;->getCerts(Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)[Ljava/security/cert/Certificate;
-Ljava/util/jar/JarVerifier;->getCodeSigners(Ljava/lang/String;)[Ljava/security/CodeSigner;
-Ljava/util/jar/JarVerifier;->getCodeSigners(Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)[Ljava/security/CodeSigner;
-Ljava/util/jar/JarVerifier;->getCodeSource(Ljava/net/URL;Ljava/lang/String;)Ljava/security/CodeSource;
-Ljava/util/jar/JarVerifier;->getCodeSource(Ljava/net/URL;Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)Ljava/security/CodeSource;
-Ljava/util/jar/JarVerifier;->getCodeSources(Ljava/util/jar/JarFile;Ljava/net/URL;)[Ljava/security/CodeSource;
-Ljava/util/jar/JarVerifier;->getJarCodeSigners()Ljava/util/List;
-Ljava/util/jar/JarVerifier;->getManifestDigests()Ljava/util/List;
-Ljava/util/jar/JarVerifier;->getUnsignedCS(Ljava/net/URL;)Ljava/security/CodeSource;
-Ljava/util/jar/JarVerifier;->isSigningRelated(Ljava/lang/String;)Z
-Ljava/util/jar/JarVerifier;->jarCodeSigners:Ljava/util/List;
-Ljava/util/jar/JarVerifier;->lastURL:Ljava/net/URL;
-Ljava/util/jar/JarVerifier;->lastURLMap:Ljava/util/Map;
-Ljava/util/jar/JarVerifier;->manDig:Lsun/security/util/ManifestDigester;
-Ljava/util/jar/JarVerifier;->manifestDigests:Ljava/util/List;
-Ljava/util/jar/JarVerifier;->manifestRawBytes:[B
-Ljava/util/jar/JarVerifier;->mapSignersToCertArray([Ljava/security/CodeSigner;)[Ljava/security/cert/Certificate;
-Ljava/util/jar/JarVerifier;->mapSignersToCodeSource(Ljava/net/URL;[Ljava/security/CodeSigner;)Ljava/security/CodeSource;
-Ljava/util/jar/JarVerifier;->mapSignersToCodeSources(Ljava/net/URL;Ljava/util/List;Z)[Ljava/security/CodeSource;
-Ljava/util/jar/JarVerifier;->nothingToVerify()Z
-Ljava/util/jar/JarVerifier;->parsingBlockOrSF:Z
-Ljava/util/jar/JarVerifier;->parsingMeta:Z
-Ljava/util/jar/JarVerifier;->pendingBlocks:Ljava/util/ArrayList;
-Ljava/util/jar/JarVerifier;->processEntry(Lsun/security/util/ManifestEntryVerifier;)V
-Ljava/util/jar/JarVerifier;->setEagerValidation(Z)V
-Ljava/util/jar/JarVerifier;->sigFileData:Ljava/util/Hashtable;
-Ljava/util/jar/JarVerifier;->sigFileSigners:Ljava/util/Hashtable;
-Ljava/util/jar/JarVerifier;->signerCache:Ljava/util/ArrayList;
-Ljava/util/jar/JarVerifier;->signerMap()Ljava/util/Map;
-Ljava/util/jar/JarVerifier;->signerMap:Ljava/util/Map;
-Ljava/util/jar/JarVerifier;->signerToCodeSource:Ljava/util/Map;
-Ljava/util/jar/JarVerifier;->unsignedEntryNames(Ljava/util/jar/JarFile;)Ljava/util/Enumeration;
-Ljava/util/jar/JarVerifier;->update(ILsun/security/util/ManifestEntryVerifier;)V
-Ljava/util/jar/JarVerifier;->update(I[BIILsun/security/util/ManifestEntryVerifier;)V
-Ljava/util/jar/JarVerifier;->urlToCodeSourceMap:Ljava/util/Map;
-Ljava/util/jar/JarVerifier;->verifiedSigners:Ljava/util/Hashtable;
-Ljava/util/jar/Manifest$FastInputStream;-><init>(Ljava/io/InputStream;)V
-Ljava/util/jar/Manifest$FastInputStream;-><init>(Ljava/io/InputStream;I)V
-Ljava/util/jar/Manifest$FastInputStream;->buf:[B
-Ljava/util/jar/Manifest$FastInputStream;->count:I
-Ljava/util/jar/Manifest$FastInputStream;->fill()V
-Ljava/util/jar/Manifest$FastInputStream;->peek()B
-Ljava/util/jar/Manifest$FastInputStream;->pos:I
-Ljava/util/jar/Manifest$FastInputStream;->readLine([B)I
-Ljava/util/jar/Manifest$FastInputStream;->readLine([BII)I
-Ljava/util/jar/Manifest;->attr:Ljava/util/jar/Attributes;
-Ljava/util/jar/Manifest;->entries:Ljava/util/Map;
-Ljava/util/jar/Manifest;->make72Safe(Ljava/lang/StringBuffer;)V
-Ljava/util/jar/Manifest;->parseName([BI)Ljava/lang/String;
-Ljava/util/jar/Manifest;->toLower(I)I
-Ljava/util/jar/Pack200;-><init>()V
-Ljava/util/jar/Pack200;->newInstance(Ljava/lang/String;)Ljava/lang/Object;
-Ljava/util/jar/Pack200;->packerImpl:Ljava/lang/Class;
-Ljava/util/jar/Pack200;->PACK_PROVIDER:Ljava/lang/String;
-Ljava/util/jar/Pack200;->unpackerImpl:Ljava/lang/Class;
-Ljava/util/jar/Pack200;->UNPACK_PROVIDER:Ljava/lang/String;
-Ljava/util/LinkedHashMap$LinkedEntrySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/LinkedHashMap$LinkedHashIterator;->current:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap$LinkedHashIterator;->expectedModCount:I
-Ljava/util/LinkedHashMap$LinkedHashIterator;->next:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap$LinkedHashIterator;->nextNode()Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap$LinkedHashIterator;->remove()V
-Ljava/util/LinkedHashMap$LinkedHashMapEntry;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
-Ljava/util/LinkedHashMap$LinkedHashMapEntry;->after:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap$LinkedHashMapEntry;->before:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap$LinkedKeySet;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/LinkedHashMap$LinkedValues;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/LinkedHashMap;->afterNodeAccess(Ljava/util/HashMap$Node;)V
-Ljava/util/LinkedHashMap;->afterNodeInsertion(Z)V
-Ljava/util/LinkedHashMap;->afterNodeRemoval(Ljava/util/HashMap$Node;)V
-Ljava/util/LinkedHashMap;->head:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap;->internalWriteEntries(Ljava/io/ObjectOutputStream;)V
-Ljava/util/LinkedHashMap;->linkNodeLast(Ljava/util/LinkedHashMap$LinkedHashMapEntry;)V
-Ljava/util/LinkedHashMap;->newNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
-Ljava/util/LinkedHashMap;->newTreeNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
-Ljava/util/LinkedHashMap;->reinitialize()V
-Ljava/util/LinkedHashMap;->replacementNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
-Ljava/util/LinkedHashMap;->replacementTreeNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
-Ljava/util/LinkedHashMap;->tail:Ljava/util/LinkedHashMap$LinkedHashMapEntry;
-Ljava/util/LinkedHashMap;->transferLinks(Ljava/util/LinkedHashMap$LinkedHashMapEntry;Ljava/util/LinkedHashMap$LinkedHashMapEntry;)V
-Ljava/util/LinkedList$DescendingIterator;->itr:Ljava/util/LinkedList$ListItr;
-Ljava/util/LinkedList$ListItr;->checkForComodification()V
-Ljava/util/LinkedList$ListItr;->expectedModCount:I
-Ljava/util/LinkedList$ListItr;->lastReturned:Ljava/util/LinkedList$Node;
-Ljava/util/LinkedList$ListItr;->next:Ljava/util/LinkedList$Node;
-Ljava/util/LinkedList$ListItr;->nextIndex:I
-Ljava/util/LinkedList$LLSpliterator;-><init>(Ljava/util/LinkedList;II)V
-Ljava/util/LinkedList$LLSpliterator;->batch:I
-Ljava/util/LinkedList$LLSpliterator;->BATCH_UNIT:I
-Ljava/util/LinkedList$LLSpliterator;->current:Ljava/util/LinkedList$Node;
-Ljava/util/LinkedList$LLSpliterator;->est:I
-Ljava/util/LinkedList$LLSpliterator;->expectedModCount:I
-Ljava/util/LinkedList$LLSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/LinkedList$LLSpliterator;->getEst()I
-Ljava/util/LinkedList$LLSpliterator;->list:Ljava/util/LinkedList;
-Ljava/util/LinkedList$LLSpliterator;->MAX_BATCH:I
-Ljava/util/LinkedList$LLSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/LinkedList$Node;-><init>(Ljava/util/LinkedList$Node;Ljava/lang/Object;Ljava/util/LinkedList$Node;)V
-Ljava/util/LinkedList$Node;->prev:Ljava/util/LinkedList$Node;
-Ljava/util/LinkedList;->checkElementIndex(I)V
-Ljava/util/LinkedList;->checkPositionIndex(I)V
-Ljava/util/LinkedList;->isElementIndex(I)Z
-Ljava/util/LinkedList;->isPositionIndex(I)Z
-Ljava/util/LinkedList;->last:Ljava/util/LinkedList$Node;
-Ljava/util/LinkedList;->linkBefore(Ljava/lang/Object;Ljava/util/LinkedList$Node;)V
-Ljava/util/LinkedList;->linkFirst(Ljava/lang/Object;)V
-Ljava/util/LinkedList;->linkLast(Ljava/lang/Object;)V
-Ljava/util/LinkedList;->node(I)Ljava/util/LinkedList$Node;
-Ljava/util/LinkedList;->outOfBoundsMsg(I)Ljava/lang/String;
-Ljava/util/LinkedList;->superClone()Ljava/util/LinkedList;
-Ljava/util/LinkedList;->unlink(Ljava/util/LinkedList$Node;)Ljava/lang/Object;
-Ljava/util/LinkedList;->unlinkFirst(Ljava/util/LinkedList$Node;)Ljava/lang/Object;
-Ljava/util/LinkedList;->unlinkLast(Ljava/util/LinkedList$Node;)Ljava/lang/Object;
-Ljava/util/ListResourceBundle;->loadLookup()V
-Ljava/util/ListResourceBundle;->lookup:Ljava/util/Map;
-Ljava/util/Locale$Builder;->localeBuilder:Lsun/util/locale/InternalLocaleBuilder;
-Ljava/util/Locale$Cache;-><init>()V
-Ljava/util/Locale$Cache;->createObject(Ljava/util/Locale$LocaleKey;)Ljava/util/Locale;
-Ljava/util/Locale$Category;->countryKey:Ljava/lang/String;
-Ljava/util/Locale$Category;->languageKey:Ljava/lang/String;
-Ljava/util/Locale$Category;->scriptKey:Ljava/lang/String;
-Ljava/util/Locale$Category;->variantKey:Ljava/lang/String;
-Ljava/util/Locale$LanguageRange;->hash:I
-Ljava/util/Locale$LanguageRange;->isSubtagIllFormed(Ljava/lang/String;Z)Z
-Ljava/util/Locale$LanguageRange;->range:Ljava/lang/String;
-Ljava/util/Locale$LanguageRange;->weight:D
-Ljava/util/Locale$LocaleKey;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V
-Ljava/util/Locale$LocaleKey;->base:Lsun/util/locale/BaseLocale;
-Ljava/util/Locale$LocaleKey;->exts:Lsun/util/locale/LocaleExtensions;
-Ljava/util/Locale$LocaleKey;->hash:I
-Ljava/util/Locale$NoImagePreloadHolder;-><init>()V
-Ljava/util/Locale$NoImagePreloadHolder;->defaultLocale:Ljava/util/Locale;
-Ljava/util/Locale;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V
-Ljava/util/Locale;->adjustLanguageCode(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Locale;->baseLocale:Lsun/util/locale/BaseLocale;
-Ljava/util/Locale;->composeList(Ljava/text/MessageFormat;[Ljava/lang/String;)[Ljava/lang/String;
-Ljava/util/Locale;->convertOldISOCodes(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Locale;->defaultDisplayLocale:Ljava/util/Locale;
-Ljava/util/Locale;->defaultFormatLocale:Ljava/util/Locale;
-Ljava/util/Locale;->DISPLAY_COUNTRY:I
-Ljava/util/Locale;->DISPLAY_LANGUAGE:I
-Ljava/util/Locale;->DISPLAY_SCRIPT:I
-Ljava/util/Locale;->DISPLAY_VARIANT:I
-Ljava/util/Locale;->formatList([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Locale;->getBaseLocale()Lsun/util/locale/BaseLocale;
-Ljava/util/Locale;->getCompatibilityExtensions(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/LocaleExtensions;
-Ljava/util/Locale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Locale;
-Ljava/util/Locale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/LocaleExtensions;)Ljava/util/Locale;
-Ljava/util/Locale;->getLocaleExtensions()Lsun/util/locale/LocaleExtensions;
-Ljava/util/Locale;->hashCodeValue:I
-Ljava/util/Locale;->initDefault()Ljava/util/Locale;
-Ljava/util/Locale;->initDefault(Ljava/util/Locale$Category;)Ljava/util/Locale;
-Ljava/util/Locale;->isAsciiAlphaNum(Ljava/lang/String;)Z
-Ljava/util/Locale;->isoCountries:[Ljava/lang/String;
-Ljava/util/Locale;->isoLanguages:[Ljava/lang/String;
-Ljava/util/Locale;->isUnicodeExtensionKey(Ljava/lang/String;)Z
-Ljava/util/Locale;->isUnM49AreaCode(Ljava/lang/String;)Z
-Ljava/util/Locale;->isValidBcp47Alpha(Ljava/lang/String;II)Z
-Ljava/util/Locale;->isValidVariantSubtag(Ljava/lang/String;)Z
-Ljava/util/Locale;->languageTag:Ljava/lang/String;
-Ljava/util/Locale;->LOCALECACHE:Ljava/util/Locale$Cache;
-Ljava/util/Locale;->localeExtensions:Lsun/util/locale/LocaleExtensions;
-Ljava/util/Locale;->normalizeAndValidateLanguage(Ljava/lang/String;Z)Ljava/lang/String;
-Ljava/util/Locale;->normalizeAndValidateRegion(Ljava/lang/String;Z)Ljava/lang/String;
-Ljava/util/Locale;->normalizeAndValidateVariant(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Locale;->UNDETERMINED_LANGUAGE:Ljava/lang/String;
-Ljava/util/logging/ConsoleHandler;->configure()V
-Ljava/util/logging/ErrorManager;->reported:Z
-Ljava/util/logging/FileHandler$InitializationErrorManager;-><init>()V
-Ljava/util/logging/FileHandler$InitializationErrorManager;->lastException:Ljava/lang/Exception;
-Ljava/util/logging/FileHandler$MeteredStream;->out:Ljava/io/OutputStream;
-Ljava/util/logging/FileHandler$MeteredStream;->written:I
-Ljava/util/logging/FileHandler;->append:Z
-Ljava/util/logging/FileHandler;->configure()V
-Ljava/util/logging/FileHandler;->count:I
-Ljava/util/logging/FileHandler;->files:[Ljava/io/File;
-Ljava/util/logging/FileHandler;->generate(Ljava/lang/String;II)Ljava/io/File;
-Ljava/util/logging/FileHandler;->isParentWritable(Ljava/nio/file/Path;)Z
-Ljava/util/logging/FileHandler;->limit:I
-Ljava/util/logging/FileHandler;->lockFileChannel:Ljava/nio/channels/FileChannel;
-Ljava/util/logging/FileHandler;->lockFileName:Ljava/lang/String;
-Ljava/util/logging/FileHandler;->locks:Ljava/util/Set;
-Ljava/util/logging/FileHandler;->MAX_LOCKS:I
-Ljava/util/logging/FileHandler;->meter:Ljava/util/logging/FileHandler$MeteredStream;
-Ljava/util/logging/FileHandler;->open(Ljava/io/File;Z)V
-Ljava/util/logging/FileHandler;->openFiles()V
-Ljava/util/logging/FileHandler;->pattern:Ljava/lang/String;
-Ljava/util/logging/FileHandler;->rotate()V
-Ljava/util/logging/Handler;->checkPermission()V
-Ljava/util/logging/Handler;->encoding:Ljava/lang/String;
-Ljava/util/logging/Handler;->errorManager:Ljava/util/logging/ErrorManager;
-Ljava/util/logging/Handler;->filter:Ljava/util/logging/Filter;
-Ljava/util/logging/Handler;->formatter:Ljava/util/logging/Formatter;
-Ljava/util/logging/Handler;->logLevel:Ljava/util/logging/Level;
-Ljava/util/logging/Handler;->manager:Ljava/util/logging/LogManager;
-Ljava/util/logging/Handler;->offValue:I
-Ljava/util/logging/Level$KnownLevel;-><init>(Ljava/util/logging/Level;)V
-Ljava/util/logging/Level$KnownLevel;->add(Ljava/util/logging/Level;)V
-Ljava/util/logging/Level$KnownLevel;->findByLocalizedLevelName(Ljava/lang/String;)Ljava/util/logging/Level$KnownLevel;
-Ljava/util/logging/Level$KnownLevel;->findByName(Ljava/lang/String;)Ljava/util/logging/Level$KnownLevel;
-Ljava/util/logging/Level$KnownLevel;->findByValue(I)Ljava/util/logging/Level$KnownLevel;
-Ljava/util/logging/Level$KnownLevel;->intToLevels:Ljava/util/Map;
-Ljava/util/logging/Level$KnownLevel;->levelObject:Ljava/util/logging/Level;
-Ljava/util/logging/Level$KnownLevel;->matches(Ljava/util/logging/Level;)Ljava/util/logging/Level$KnownLevel;
-Ljava/util/logging/Level$KnownLevel;->mirroredLevel:Ljava/util/logging/Level;
-Ljava/util/logging/Level$KnownLevel;->nameToLevels:Ljava/util/Map;
-Ljava/util/logging/Level;-><init>(Ljava/lang/String;ILjava/lang/String;Z)V
-Ljava/util/logging/Level;->cachedLocale:Ljava/util/Locale;
-Ljava/util/logging/Level;->computeLocalizedLevelName(Ljava/util/Locale;)Ljava/lang/String;
-Ljava/util/logging/Level;->defaultBundle:Ljava/lang/String;
-Ljava/util/logging/Level;->findLevel(Ljava/lang/String;)Ljava/util/logging/Level;
-Ljava/util/logging/Level;->getCachedLocalizedLevelName()Ljava/lang/String;
-Ljava/util/logging/Level;->getLevelName()Ljava/lang/String;
-Ljava/util/logging/Level;->getLocalizedLevelName()Ljava/lang/String;
-Ljava/util/logging/Level;->localizedLevelName:Ljava/lang/String;
-Ljava/util/logging/Level;->name:Ljava/lang/String;
-Ljava/util/logging/Level;->resourceBundleName:Ljava/lang/String;
-Ljava/util/logging/Level;->value:I
-Ljava/util/logging/Logger$LoggerBundle;-><init>(Ljava/lang/String;Ljava/util/ResourceBundle;)V
-Ljava/util/logging/Logger$LoggerBundle;->get(Ljava/lang/String;Ljava/util/ResourceBundle;)Ljava/util/logging/Logger$LoggerBundle;
-Ljava/util/logging/Logger$LoggerBundle;->isSystemBundle()Z
-Ljava/util/logging/Logger$LoggerBundle;->resourceBundleName:Ljava/lang/String;
-Ljava/util/logging/Logger$LoggerBundle;->userBundle:Ljava/util/ResourceBundle;
-Ljava/util/logging/Logger$SystemLoggerHelper;-><init>()V
-Ljava/util/logging/Logger$SystemLoggerHelper;->disableCallerCheck:Z
-Ljava/util/logging/Logger$SystemLoggerHelper;->getBooleanProperty(Ljava/lang/String;)Z
-Ljava/util/logging/Logger;-><init>(Ljava/lang/String;)V
-Ljava/util/logging/Logger;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/util/logging/LogManager;Z)V
-Ljava/util/logging/Logger;->accessCheckedHandlers()[Ljava/util/logging/Handler;
-Ljava/util/logging/Logger;->anonymous:Z
-Ljava/util/logging/Logger;->callersClassLoaderRef:Ljava/lang/ref/WeakReference;
-Ljava/util/logging/Logger;->catalog:Ljava/util/ResourceBundle;
-Ljava/util/logging/Logger;->catalogLocale:Ljava/util/Locale;
-Ljava/util/logging/Logger;->catalogName:Ljava/lang/String;
-Ljava/util/logging/Logger;->checkPermission()V
-Ljava/util/logging/Logger;->demandLogger(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/logging/Logger;
-Ljava/util/logging/Logger;->doLog(Ljava/util/logging/LogRecord;)V
-Ljava/util/logging/Logger;->doLog(Ljava/util/logging/LogRecord;Ljava/lang/String;)V
-Ljava/util/logging/Logger;->doLog(Ljava/util/logging/LogRecord;Ljava/util/ResourceBundle;)V
-Ljava/util/logging/Logger;->doSetParent(Ljava/util/logging/Logger;)V
-Ljava/util/logging/Logger;->emptyHandlers:[Ljava/util/logging/Handler;
-Ljava/util/logging/Logger;->filter:Ljava/util/logging/Filter;
-Ljava/util/logging/Logger;->findResourceBundle(Ljava/lang/String;Z)Ljava/util/ResourceBundle;
-Ljava/util/logging/Logger;->findSystemResourceBundle(Ljava/util/Locale;)Ljava/util/ResourceBundle;
-Ljava/util/logging/Logger;->getCallersClassLoader()Ljava/lang/ClassLoader;
-Ljava/util/logging/Logger;->getEffectiveLoggerBundle()Ljava/util/logging/Logger$LoggerBundle;
-Ljava/util/logging/Logger;->getPlatformLogger(Ljava/lang/String;)Ljava/util/logging/Logger;
-Ljava/util/logging/Logger;->handlers:Ljava/util/concurrent/CopyOnWriteArrayList;
-Ljava/util/logging/Logger;->isLevelInitialized()Z
-Ljava/util/logging/Logger;->isSystemLogger:Z
-Ljava/util/logging/Logger;->kids:Ljava/util/ArrayList;
-Ljava/util/logging/Logger;->levelObject:Ljava/util/logging/Level;
-Ljava/util/logging/Logger;->levelValue:I
-Ljava/util/logging/Logger;->loggerBundle:Ljava/util/logging/Logger$LoggerBundle;
-Ljava/util/logging/Logger;->manager:Ljava/util/logging/LogManager;
-Ljava/util/logging/Logger;->name:Ljava/lang/String;
-Ljava/util/logging/Logger;->NO_RESOURCE_BUNDLE:Ljava/util/logging/Logger$LoggerBundle;
-Ljava/util/logging/Logger;->offValue:I
-Ljava/util/logging/Logger;->parent:Ljava/util/logging/Logger;
-Ljava/util/logging/Logger;->removeChildLogger(Ljava/util/logging/LogManager$LoggerWeakRef;)V
-Ljava/util/logging/Logger;->setCallersClassLoaderRef(Ljava/lang/Class;)V
-Ljava/util/logging/Logger;->setLogManager(Ljava/util/logging/LogManager;)V
-Ljava/util/logging/Logger;->setupResourceInfo(Ljava/lang/String;Ljava/lang/Class;)V
-Ljava/util/logging/Logger;->SYSTEM_BUNDLE:Ljava/util/logging/Logger$LoggerBundle;
-Ljava/util/logging/Logger;->SYSTEM_LOGGER_RB_NAME:Ljava/lang/String;
-Ljava/util/logging/Logger;->updateEffectiveLevel()V
-Ljava/util/logging/Logger;->useParentHandlers:Z
-Ljava/util/logging/LogManager$Beans;-><init>()V
-Ljava/util/logging/LogManager$Beans;->getClass(Ljava/lang/String;)Ljava/lang/Class;
-Ljava/util/logging/LogManager$Beans;->invokePropertyChange(Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/util/logging/LogManager$Beans;->isBeansPresent()Z
-Ljava/util/logging/LogManager$Beans;->newPropertyChangeEvent(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/logging/LogManager$Beans;->propertyChangeEventClass:Ljava/lang/Class;
-Ljava/util/logging/LogManager$Beans;->propertyChangeListenerClass:Ljava/lang/Class;
-Ljava/util/logging/LogManager$Beans;->propertyChangeMethod:Ljava/lang/reflect/Method;
-Ljava/util/logging/LogManager$Beans;->propertyEventCtor:Ljava/lang/reflect/Constructor;
-Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;)Z
-Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;Ljava/util/logging/LogManager;)Z
-Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;Z)Z
-Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;ZLjava/util/logging/LogManager;)Z
-Ljava/util/logging/LogManager$LoggerContext;->demandLogger(Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager$LoggerContext;->ensureAllDefaultLoggers(Ljava/util/logging/Logger;)V
-Ljava/util/logging/LogManager$LoggerContext;->ensureDefaultLogger(Ljava/util/logging/Logger;)V
-Ljava/util/logging/LogManager$LoggerContext;->ensureInitialized()V
-Ljava/util/logging/LogManager$LoggerContext;->findLogger(Ljava/lang/String;)Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager$LoggerContext;->getGlobalLogger()Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager$LoggerContext;->getLoggerNames()Ljava/util/Enumeration;
-Ljava/util/logging/LogManager$LoggerContext;->getNode(Ljava/lang/String;)Ljava/util/logging/LogManager$LogNode;
-Ljava/util/logging/LogManager$LoggerContext;->getOwner()Ljava/util/logging/LogManager;
-Ljava/util/logging/LogManager$LoggerContext;->getRootLogger()Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager$LoggerContext;->namedLoggers:Ljava/util/Hashtable;
-Ljava/util/logging/LogManager$LoggerContext;->processParentHandlers(Ljava/util/logging/Logger;Ljava/lang/String;)V
-Ljava/util/logging/LogManager$LoggerContext;->removeLoggerRef(Ljava/lang/String;Ljava/util/logging/LogManager$LoggerWeakRef;)V
-Ljava/util/logging/LogManager$LoggerContext;->requiresDefaultLoggers()Z
-Ljava/util/logging/LogManager$LoggerContext;->root:Ljava/util/logging/LogManager$LogNode;
-Ljava/util/logging/LogManager$LoggerWeakRef;->dispose()V
-Ljava/util/logging/LogManager$LoggerWeakRef;->disposed:Z
-Ljava/util/logging/LogManager$LoggerWeakRef;->name:Ljava/lang/String;
-Ljava/util/logging/LogManager$LoggerWeakRef;->node:Ljava/util/logging/LogManager$LogNode;
-Ljava/util/logging/LogManager$LoggerWeakRef;->parentRef:Ljava/lang/ref/WeakReference;
-Ljava/util/logging/LogManager$LoggerWeakRef;->setNode(Ljava/util/logging/LogManager$LogNode;)V
-Ljava/util/logging/LogManager$LoggerWeakRef;->setParentRef(Ljava/lang/ref/WeakReference;)V
-Ljava/util/logging/LogManager$LogNode;-><init>(Ljava/util/logging/LogManager$LogNode;Ljava/util/logging/LogManager$LoggerContext;)V
-Ljava/util/logging/LogManager$LogNode;->children:Ljava/util/HashMap;
-Ljava/util/logging/LogManager$LogNode;->context:Ljava/util/logging/LogManager$LoggerContext;
-Ljava/util/logging/LogManager$LogNode;->loggerRef:Ljava/util/logging/LogManager$LoggerWeakRef;
-Ljava/util/logging/LogManager$LogNode;->parent:Ljava/util/logging/LogManager$LogNode;
-Ljava/util/logging/LogManager$LogNode;->walkAndSetParent(Ljava/util/logging/Logger;)V
-Ljava/util/logging/LogManager$RootLogger;->accessCheckedHandlers()[Ljava/util/logging/Handler;
-Ljava/util/logging/LogManager$SystemLoggerContext;->demandLogger(Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager;-><init>(Ljava/lang/Void;)V
-Ljava/util/logging/LogManager;->checkPermission()V
-Ljava/util/logging/LogManager;->checkSubclassPermissions()Ljava/lang/Void;
-Ljava/util/logging/LogManager;->contexts()Ljava/util/List;
-Ljava/util/logging/LogManager;->contextsMap:Ljava/util/WeakHashMap;
-Ljava/util/logging/LogManager;->controlPermission:Ljava/security/Permission;
-Ljava/util/logging/LogManager;->deathImminent:Z
-Ljava/util/logging/LogManager;->defaultLevel:Ljava/util/logging/Level;
-Ljava/util/logging/LogManager;->demandLogger(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager;->demandSystemLogger(Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager;->doSetLevel(Ljava/util/logging/Logger;Ljava/util/logging/Level;)V
-Ljava/util/logging/LogManager;->doSetParent(Ljava/util/logging/Logger;Ljava/util/logging/Logger;)V
-Ljava/util/logging/LogManager;->drainLoggerRefQueueBounded()V
-Ljava/util/logging/LogManager;->ensureLogManagerInitialized()V
-Ljava/util/logging/LogManager;->getBooleanProperty(Ljava/lang/String;Z)Z
-Ljava/util/logging/LogManager;->getClassInstance(Ljava/lang/String;)Ljava/lang/Class;
-Ljava/util/logging/LogManager;->getFilterProperty(Ljava/lang/String;Ljava/util/logging/Filter;)Ljava/util/logging/Filter;
-Ljava/util/logging/LogManager;->getIntProperty(Ljava/lang/String;I)I
-Ljava/util/logging/LogManager;->getLevelProperty(Ljava/lang/String;Ljava/util/logging/Level;)Ljava/util/logging/Level;
-Ljava/util/logging/LogManager;->getStringProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/logging/LogManager;->getSystemContext()Ljava/util/logging/LogManager$LoggerContext;
-Ljava/util/logging/LogManager;->getUserContext()Ljava/util/logging/LogManager$LoggerContext;
-Ljava/util/logging/LogManager;->initializationDone:Z
-Ljava/util/logging/LogManager;->initializedCalled:Z
-Ljava/util/logging/LogManager;->initializedGlobalHandlers:Z
-Ljava/util/logging/LogManager;->initializeGlobalHandlers()V
-Ljava/util/logging/LogManager;->listenerMap:Ljava/util/Map;
-Ljava/util/logging/LogManager;->loadLoggerHandlers(Ljava/util/logging/Logger;Ljava/lang/String;Ljava/lang/String;)V
-Ljava/util/logging/LogManager;->loggerRefQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/util/logging/LogManager;->loggingMXBean:Ljava/util/logging/LoggingMXBean;
-Ljava/util/logging/LogManager;->manager:Ljava/util/logging/LogManager;
-Ljava/util/logging/LogManager;->MAX_ITERATIONS:I
-Ljava/util/logging/LogManager;->parseClassNames(Ljava/lang/String;)[Ljava/lang/String;
-Ljava/util/logging/LogManager;->props:Ljava/util/Properties;
-Ljava/util/logging/LogManager;->readPrimordialConfiguration()V
-Ljava/util/logging/LogManager;->readPrimordialConfiguration:Z
-Ljava/util/logging/LogManager;->resetLogger(Ljava/util/logging/Logger;)V
-Ljava/util/logging/LogManager;->rootLogger:Ljava/util/logging/Logger;
-Ljava/util/logging/LogManager;->setLevelsOnExistingLoggers()V
-Ljava/util/logging/LogManager;->systemContext:Ljava/util/logging/LogManager$LoggerContext;
-Ljava/util/logging/LogManager;->userContext:Ljava/util/logging/LogManager$LoggerContext;
-Ljava/util/logging/LogRecord;->defaultThreadID()I
-Ljava/util/logging/LogRecord;->globalSequenceNumber:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/util/logging/LogRecord;->inferCaller()V
-Ljava/util/logging/LogRecord;->isLoggerImplFrame(Ljava/lang/String;)Z
-Ljava/util/logging/LogRecord;->level:Ljava/util/logging/Level;
-Ljava/util/logging/LogRecord;->loggerName:Ljava/lang/String;
-Ljava/util/logging/LogRecord;->message:Ljava/lang/String;
-Ljava/util/logging/LogRecord;->millis:J
-Ljava/util/logging/LogRecord;->MIN_SEQUENTIAL_THREAD_ID:I
-Ljava/util/logging/LogRecord;->needToInferCaller:Z
-Ljava/util/logging/LogRecord;->nextThreadId:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/util/logging/LogRecord;->parameters:[Ljava/lang/Object;
-Ljava/util/logging/LogRecord;->resourceBundle:Ljava/util/ResourceBundle;
-Ljava/util/logging/LogRecord;->resourceBundleName:Ljava/lang/String;
-Ljava/util/logging/LogRecord;->sequenceNumber:J
-Ljava/util/logging/LogRecord;->sourceClassName:Ljava/lang/String;
-Ljava/util/logging/LogRecord;->sourceMethodName:Ljava/lang/String;
-Ljava/util/logging/LogRecord;->threadID:I
-Ljava/util/logging/LogRecord;->threadIds:Ljava/lang/ThreadLocal;
-Ljava/util/logging/LogRecord;->thrown:Ljava/lang/Throwable;
-Ljava/util/logging/MemoryHandler;->buffer:[Ljava/util/logging/LogRecord;
-Ljava/util/logging/MemoryHandler;->configure()V
-Ljava/util/logging/MemoryHandler;->count:I
-Ljava/util/logging/MemoryHandler;->DEFAULT_SIZE:I
-Ljava/util/logging/MemoryHandler;->init()V
-Ljava/util/logging/MemoryHandler;->pushLevel:Ljava/util/logging/Level;
-Ljava/util/logging/MemoryHandler;->size:I
-Ljava/util/logging/MemoryHandler;->start:I
-Ljava/util/logging/MemoryHandler;->target:Ljava/util/logging/Handler;
-Ljava/util/logging/SimpleFormatter;->dat:Ljava/util/Date;
-Ljava/util/logging/SimpleFormatter;->format:Ljava/lang/String;
-Ljava/util/logging/SocketHandler;->configure()V
-Ljava/util/logging/SocketHandler;->connect()V
-Ljava/util/logging/SocketHandler;->host:Ljava/lang/String;
-Ljava/util/logging/SocketHandler;->port:I
-Ljava/util/logging/SocketHandler;->sock:Ljava/net/Socket;
-Ljava/util/logging/StreamHandler;->configure()V
-Ljava/util/logging/StreamHandler;->doneHeader:Z
-Ljava/util/logging/StreamHandler;->flushAndClose()V
-Ljava/util/logging/StreamHandler;->output:Ljava/io/OutputStream;
-Ljava/util/logging/StreamHandler;->writer:Ljava/io/Writer;
-Ljava/util/logging/XMLFormatter;->a2(Ljava/lang/StringBuilder;I)V
-Ljava/util/logging/XMLFormatter;->appendISO8601(Ljava/lang/StringBuilder;J)V
-Ljava/util/logging/XMLFormatter;->escape(Ljava/lang/StringBuilder;Ljava/lang/String;)V
-Ljava/util/logging/XMLFormatter;->manager:Ljava/util/logging/LogManager;
-Ljava/util/LongSummaryStatistics;->count:J
-Ljava/util/LongSummaryStatistics;->max:J
-Ljava/util/LongSummaryStatistics;->min:J
-Ljava/util/LongSummaryStatistics;->sum:J
-Ljava/util/MissingFormatArgumentException;->s:Ljava/lang/String;
-Ljava/util/MissingFormatWidthException;->s:Ljava/lang/String;
-Ljava/util/MissingResourceException;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/util/MissingResourceException;->className:Ljava/lang/String;
-Ljava/util/MissingResourceException;->key:Ljava/lang/String;
-Ljava/util/Objects;-><init>()V
-Ljava/util/Observable;->changed:Z
-Ljava/util/Observable;->obs:Ljava/util/Vector;
-Ljava/util/Optional;-><init>()V
-Ljava/util/Optional;-><init>(Ljava/lang/Object;)V
-Ljava/util/Optional;->EMPTY:Ljava/util/Optional;
-Ljava/util/Optional;->value:Ljava/lang/Object;
-Ljava/util/OptionalDouble;-><init>()V
-Ljava/util/OptionalDouble;-><init>(D)V
-Ljava/util/OptionalDouble;->EMPTY:Ljava/util/OptionalDouble;
-Ljava/util/OptionalDouble;->isPresent:Z
-Ljava/util/OptionalDouble;->value:D
-Ljava/util/OptionalInt;-><init>()V
-Ljava/util/OptionalInt;-><init>(I)V
-Ljava/util/OptionalInt;->EMPTY:Ljava/util/OptionalInt;
-Ljava/util/OptionalInt;->isPresent:Z
-Ljava/util/OptionalInt;->value:I
-Ljava/util/OptionalLong;-><init>()V
-Ljava/util/OptionalLong;-><init>(J)V
-Ljava/util/OptionalLong;->EMPTY:Ljava/util/OptionalLong;
-Ljava/util/OptionalLong;->isPresent:Z
-Ljava/util/OptionalLong;->value:J
-Ljava/util/prefs/AbstractPreferences$EventDispatchThread;-><init>()V
-Ljava/util/prefs/AbstractPreferences;->absolutePath:Ljava/lang/String;
-Ljava/util/prefs/AbstractPreferences;->EMPTY_ABSTRACT_PREFS_ARRAY:[Ljava/util/prefs/AbstractPreferences;
-Ljava/util/prefs/AbstractPreferences;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
-Ljava/util/prefs/AbstractPreferences;->enqueueNodeAddedEvent(Ljava/util/prefs/Preferences;)V
-Ljava/util/prefs/AbstractPreferences;->enqueueNodeRemovedEvent(Ljava/util/prefs/Preferences;)V
-Ljava/util/prefs/AbstractPreferences;->enqueuePreferenceChangeEvent(Ljava/lang/String;Ljava/lang/String;)V
-Ljava/util/prefs/AbstractPreferences;->eventDispatchThread:Ljava/lang/Thread;
-Ljava/util/prefs/AbstractPreferences;->eventQueue:Ljava/util/List;
-Ljava/util/prefs/AbstractPreferences;->flush2()V
-Ljava/util/prefs/AbstractPreferences;->kidCache:Ljava/util/Map;
-Ljava/util/prefs/AbstractPreferences;->name:Ljava/lang/String;
-Ljava/util/prefs/AbstractPreferences;->node(Ljava/util/StringTokenizer;)Ljava/util/prefs/Preferences;
-Ljava/util/prefs/AbstractPreferences;->nodeExists(Ljava/util/StringTokenizer;)Z
-Ljava/util/prefs/AbstractPreferences;->nodeListeners()[Ljava/util/prefs/NodeChangeListener;
-Ljava/util/prefs/AbstractPreferences;->nodeListeners:Ljava/util/ArrayList;
-Ljava/util/prefs/AbstractPreferences;->parent:Ljava/util/prefs/AbstractPreferences;
-Ljava/util/prefs/AbstractPreferences;->prefListeners()[Ljava/util/prefs/PreferenceChangeListener;
-Ljava/util/prefs/AbstractPreferences;->prefListeners:Ljava/util/ArrayList;
-Ljava/util/prefs/AbstractPreferences;->removed:Z
-Ljava/util/prefs/AbstractPreferences;->removeNode2()V
-Ljava/util/prefs/AbstractPreferences;->root:Ljava/util/prefs/AbstractPreferences;
-Ljava/util/prefs/AbstractPreferences;->startEventDispatchThreadIfNecessary()V
-Ljava/util/prefs/AbstractPreferences;->sync2()V
-Ljava/util/prefs/FileSystemPreferences$Change;->replay()V
-Ljava/util/prefs/FileSystemPreferences$NodeCreate;->replay()V
-Ljava/util/prefs/FileSystemPreferences$Put;->key:Ljava/lang/String;
-Ljava/util/prefs/FileSystemPreferences$Put;->replay()V
-Ljava/util/prefs/FileSystemPreferences$Put;->value:Ljava/lang/String;
-Ljava/util/prefs/FileSystemPreferences$Remove;->key:Ljava/lang/String;
-Ljava/util/prefs/FileSystemPreferences$Remove;->replay()V
-Ljava/util/prefs/FileSystemPreferences;-><init>(Ljava/lang/String;Ljava/io/File;Z)V
-Ljava/util/prefs/FileSystemPreferences;-><init>(Ljava/util/prefs/FileSystemPreferences;Ljava/lang/String;)V
-Ljava/util/prefs/FileSystemPreferences;-><init>(Z)V
-Ljava/util/prefs/FileSystemPreferences;->byteArray(Ljava/lang/String;)[B
-Ljava/util/prefs/FileSystemPreferences;->changeLog:Ljava/util/List;
-Ljava/util/prefs/FileSystemPreferences;->checkLockFile0ErrorCode(I)V
-Ljava/util/prefs/FileSystemPreferences;->chmod(Ljava/lang/String;I)I
-Ljava/util/prefs/FileSystemPreferences;->dir:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->dirName(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/prefs/FileSystemPreferences;->EACCES:I
-Ljava/util/prefs/FileSystemPreferences;->EAGAIN:I
-Ljava/util/prefs/FileSystemPreferences;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
-Ljava/util/prefs/FileSystemPreferences;->ERROR_CODE:I
-Ljava/util/prefs/FileSystemPreferences;->getLogger()Lsun/util/logging/PlatformLogger;
-Ljava/util/prefs/FileSystemPreferences;->getSystemRoot()Ljava/util/prefs/Preferences;
-Ljava/util/prefs/FileSystemPreferences;->getUserRoot()Ljava/util/prefs/Preferences;
-Ljava/util/prefs/FileSystemPreferences;->initCacheIfNecessary()V
-Ljava/util/prefs/FileSystemPreferences;->INIT_SLEEP_TIME:I
-Ljava/util/prefs/FileSystemPreferences;->isDirChar(C)Z
-Ljava/util/prefs/FileSystemPreferences;->isSystemRootModified:Z
-Ljava/util/prefs/FileSystemPreferences;->isSystemRootWritable:Z
-Ljava/util/prefs/FileSystemPreferences;->isUserNode:Z
-Ljava/util/prefs/FileSystemPreferences;->isUserRootModified:Z
-Ljava/util/prefs/FileSystemPreferences;->isUserRootWritable:Z
-Ljava/util/prefs/FileSystemPreferences;->lastSyncTime:J
-Ljava/util/prefs/FileSystemPreferences;->loadCache()V
-Ljava/util/prefs/FileSystemPreferences;->lockFile(Z)Z
-Ljava/util/prefs/FileSystemPreferences;->lockFile0(Ljava/lang/String;IZ)[I
-Ljava/util/prefs/FileSystemPreferences;->LOCK_HANDLE:I
-Ljava/util/prefs/FileSystemPreferences;->MAX_ATTEMPTS:I
-Ljava/util/prefs/FileSystemPreferences;->nodeCreate:Ljava/util/prefs/FileSystemPreferences$NodeCreate;
-Ljava/util/prefs/FileSystemPreferences;->nodeName(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/prefs/FileSystemPreferences;->prefsCache:Ljava/util/Map;
-Ljava/util/prefs/FileSystemPreferences;->prefsFile:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->replayChanges()V
-Ljava/util/prefs/FileSystemPreferences;->setupSystemRoot()V
-Ljava/util/prefs/FileSystemPreferences;->setupUserRoot()V
-Ljava/util/prefs/FileSystemPreferences;->syncSpiPrivileged()V
-Ljava/util/prefs/FileSystemPreferences;->syncWorld()V
-Ljava/util/prefs/FileSystemPreferences;->systemLockFile:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->systemRoot:Ljava/util/prefs/Preferences;
-Ljava/util/prefs/FileSystemPreferences;->systemRootDir:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->systemRootLockHandle:I
-Ljava/util/prefs/FileSystemPreferences;->systemRootModFile:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->systemRootModTime:J
-Ljava/util/prefs/FileSystemPreferences;->tmpFile:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->unlockFile()V
-Ljava/util/prefs/FileSystemPreferences;->unlockFile0(I)I
-Ljava/util/prefs/FileSystemPreferences;->userLockFile:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->userRoot:Ljava/util/prefs/Preferences;
-Ljava/util/prefs/FileSystemPreferences;->userRootDir:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->userRootLockHandle:I
-Ljava/util/prefs/FileSystemPreferences;->userRootModFile:Ljava/io/File;
-Ljava/util/prefs/FileSystemPreferences;->userRootModTime:J
-Ljava/util/prefs/FileSystemPreferences;->USER_READ_WRITE:I
-Ljava/util/prefs/FileSystemPreferences;->USER_RWX:I
-Ljava/util/prefs/FileSystemPreferences;->USER_RWX_ALL_RX:I
-Ljava/util/prefs/FileSystemPreferences;->USER_RW_ALL_READ:I
-Ljava/util/prefs/FileSystemPreferences;->writeBackCache()V
-Ljava/util/prefs/NodeChangeEvent;->child:Ljava/util/prefs/Preferences;
-Ljava/util/prefs/PreferenceChangeEvent;->key:Ljava/lang/String;
-Ljava/util/prefs/PreferenceChangeEvent;->newValue:Ljava/lang/String;
-Ljava/util/prefs/Preferences;->factory:Ljava/util/prefs/PreferencesFactory;
-Ljava/util/prefs/Preferences;->findPreferencesFactory()Ljava/util/prefs/PreferencesFactory;
-Ljava/util/prefs/Preferences;->nodeName(Ljava/lang/Class;)Ljava/lang/String;
-Ljava/util/prefs/Preferences;->prefsPerm:Ljava/security/Permission;
-Ljava/util/prefs/Preferences;->setPreferencesFactory(Ljava/util/prefs/PreferencesFactory;)Ljava/util/prefs/PreferencesFactory;
-Ljava/util/PriorityQueue$Itr;->cursor:I
-Ljava/util/PriorityQueue$Itr;->expectedModCount:I
-Ljava/util/PriorityQueue$Itr;->forgetMeNot:Ljava/util/ArrayDeque;
-Ljava/util/PriorityQueue$Itr;->lastRet:I
-Ljava/util/PriorityQueue$Itr;->lastRetElt:Ljava/lang/Object;
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;-><init>(Ljava/util/PriorityQueue;III)V
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->expectedModCount:I
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->fence:I
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->getFence()I
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->index:I
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->pq:Ljava/util/PriorityQueue;
-Ljava/util/PriorityQueue$PriorityQueueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/PriorityQueue;->comparator:Ljava/util/Comparator;
-Ljava/util/PriorityQueue;->DEFAULT_INITIAL_CAPACITY:I
-Ljava/util/PriorityQueue;->grow(I)V
-Ljava/util/PriorityQueue;->heapify()V
-Ljava/util/PriorityQueue;->hugeCapacity(I)I
-Ljava/util/PriorityQueue;->indexOf(Ljava/lang/Object;)I
-Ljava/util/PriorityQueue;->initElementsFromCollection(Ljava/util/Collection;)V
-Ljava/util/PriorityQueue;->initFromCollection(Ljava/util/Collection;)V
-Ljava/util/PriorityQueue;->initFromPriorityQueue(Ljava/util/PriorityQueue;)V
-Ljava/util/PriorityQueue;->MAX_ARRAY_SIZE:I
-Ljava/util/PriorityQueue;->removeAt(I)Ljava/lang/Object;
-Ljava/util/PriorityQueue;->removeEq(Ljava/lang/Object;)Z
-Ljava/util/PriorityQueue;->siftDown(ILjava/lang/Object;)V
-Ljava/util/PriorityQueue;->siftDownComparable(ILjava/lang/Object;)V
-Ljava/util/PriorityQueue;->siftDownUsingComparator(ILjava/lang/Object;)V
-Ljava/util/PriorityQueue;->siftUp(ILjava/lang/Object;)V
-Ljava/util/PriorityQueue;->siftUpComparable(ILjava/lang/Object;)V
-Ljava/util/PriorityQueue;->siftUpUsingComparator(ILjava/lang/Object;)V
-Ljava/util/Properties$LineReader;->inByteBuf:[B
-Ljava/util/Properties$LineReader;->inCharBuf:[C
-Ljava/util/Properties$LineReader;->inLimit:I
-Ljava/util/Properties$LineReader;->inOff:I
-Ljava/util/Properties$LineReader;->inStream:Ljava/io/InputStream;
-Ljava/util/Properties$LineReader;->lineBuf:[C
-Ljava/util/Properties$LineReader;->reader:Ljava/io/Reader;
-Ljava/util/Properties$LineReader;->readLine()I
-Ljava/util/Properties;->enumerate(Ljava/util/Hashtable;)V
-Ljava/util/Properties;->enumerateStringProperties(Ljava/util/Hashtable;)V
-Ljava/util/Properties;->hexDigit:[C
-Ljava/util/Properties;->load0(Ljava/util/Properties$LineReader;)V
-Ljava/util/Properties;->loadConvert([CII[C)Ljava/lang/String;
-Ljava/util/Properties;->store0(Ljava/io/BufferedWriter;Ljava/lang/String;Z)V
-Ljava/util/Properties;->toHex(I)C
-Ljava/util/Properties;->writeComments(Ljava/io/BufferedWriter;Ljava/lang/String;)V
-Ljava/util/PropertyResourceBundle;->lookup:Ljava/util/Map;
-Ljava/util/Random$RandomDoublesSpliterator;-><init>(Ljava/util/Random;JJDD)V
-Ljava/util/Random$RandomDoublesSpliterator;->bound:D
-Ljava/util/Random$RandomDoublesSpliterator;->fence:J
-Ljava/util/Random$RandomDoublesSpliterator;->index:J
-Ljava/util/Random$RandomDoublesSpliterator;->origin:D
-Ljava/util/Random$RandomDoublesSpliterator;->rng:Ljava/util/Random;
-Ljava/util/Random$RandomIntsSpliterator;-><init>(Ljava/util/Random;JJII)V
-Ljava/util/Random$RandomIntsSpliterator;->bound:I
-Ljava/util/Random$RandomIntsSpliterator;->fence:J
-Ljava/util/Random$RandomIntsSpliterator;->index:J
-Ljava/util/Random$RandomIntsSpliterator;->origin:I
-Ljava/util/Random$RandomIntsSpliterator;->rng:Ljava/util/Random;
-Ljava/util/Random$RandomLongsSpliterator;-><init>(Ljava/util/Random;JJJJ)V
-Ljava/util/Random$RandomLongsSpliterator;->bound:J
-Ljava/util/Random$RandomLongsSpliterator;->fence:J
-Ljava/util/Random$RandomLongsSpliterator;->index:J
-Ljava/util/Random$RandomLongsSpliterator;->origin:J
-Ljava/util/Random$RandomLongsSpliterator;->rng:Ljava/util/Random;
-Ljava/util/Random;->addend:J
-Ljava/util/Random;->BadBound:Ljava/lang/String;
-Ljava/util/Random;->BadRange:Ljava/lang/String;
-Ljava/util/Random;->BadSize:Ljava/lang/String;
-Ljava/util/Random;->DOUBLE_UNIT:D
-Ljava/util/Random;->haveNextNextGaussian:Z
-Ljava/util/Random;->initialScramble(J)J
-Ljava/util/Random;->internalNextDouble(DD)D
-Ljava/util/Random;->internalNextInt(II)I
-Ljava/util/Random;->internalNextLong(JJ)J
-Ljava/util/Random;->mask:J
-Ljava/util/Random;->multiplier:J
-Ljava/util/Random;->nextNextGaussian:D
-Ljava/util/Random;->resetSeed(J)V
-Ljava/util/Random;->seed:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/util/Random;->seedOffset:J
-Ljava/util/Random;->seedUniquifier:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/util/Random;->unsafe:Lsun/misc/Unsafe;
-Ljava/util/regex/Matcher$OffsetBasedMatchResult;-><init>(Ljava/lang/String;[I)V
-Ljava/util/regex/Matcher$OffsetBasedMatchResult;->input:Ljava/lang/String;
-Ljava/util/regex/Matcher$OffsetBasedMatchResult;->offsets:[I
-Ljava/util/regex/Matcher;-><init>(Ljava/util/regex/Pattern;Ljava/lang/CharSequence;)V
-Ljava/util/regex/Matcher;->address:J
-Ljava/util/regex/Matcher;->anchoringBounds:Z
-Ljava/util/regex/Matcher;->appendEvaluated(Ljava/lang/StringBuffer;Ljava/lang/String;)V
-Ljava/util/regex/Matcher;->ensureMatch()V
-Ljava/util/regex/Matcher;->findImpl(JI[I)Z
-Ljava/util/regex/Matcher;->findNextImpl(J[I)Z
-Ljava/util/regex/Matcher;->getMatchedGroupIndex(JLjava/lang/String;)I
-Ljava/util/regex/Matcher;->getMatchedGroupIndex0(JLjava/lang/String;)I
-Ljava/util/regex/Matcher;->getNativeFinalizer()J
-Ljava/util/regex/Matcher;->groupCountImpl(J)I
-Ljava/util/regex/Matcher;->hitEndImpl(J)Z
-Ljava/util/regex/Matcher;->input:Ljava/lang/String;
-Ljava/util/regex/Matcher;->lookingAtImpl(J[I)Z
-Ljava/util/regex/Matcher;->matchesImpl(J[I)Z
-Ljava/util/regex/Matcher;->matchFound:Z
-Ljava/util/regex/Matcher;->matchOffsets:[I
-Ljava/util/regex/Matcher;->nativeFinalizer:Ljava/lang/Runnable;
-Ljava/util/regex/Matcher;->nativeSize()I
-Ljava/util/regex/Matcher;->openImpl(J)J
-Ljava/util/regex/Matcher;->originalInput:Ljava/lang/CharSequence;
-Ljava/util/regex/Matcher;->pattern:Ljava/util/regex/Pattern;
-Ljava/util/regex/Matcher;->regionEnd:I
-Ljava/util/regex/Matcher;->regionStart:I
-Ljava/util/regex/Matcher;->registry:Llibcore/util/NativeAllocationRegistry;
-Ljava/util/regex/Matcher;->requireEndImpl(J)Z
-Ljava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;II)Ljava/util/regex/Matcher;
-Ljava/util/regex/Matcher;->resetForInput()V
-Ljava/util/regex/Matcher;->setInputImpl(JLjava/lang/String;II)V
-Ljava/util/regex/Matcher;->transparentBounds:Z
-Ljava/util/regex/Matcher;->useAnchoringBoundsImpl(JZ)V
-Ljava/util/regex/Matcher;->useTransparentBoundsImpl(JZ)V
-Ljava/util/regex/Pattern;-><init>(Ljava/lang/String;I)V
-Ljava/util/regex/Pattern;->address:J
-Ljava/util/regex/Pattern;->compile()V
-Ljava/util/regex/Pattern;->compileImpl(Ljava/lang/String;I)J
-Ljava/util/regex/Pattern;->fastSplit(Ljava/lang/String;Ljava/lang/String;I)[Ljava/lang/String;
-Ljava/util/regex/Pattern;->FASTSPLIT_METACHARACTERS:Ljava/lang/String;
-Ljava/util/regex/Pattern;->flags:I
-Ljava/util/regex/Pattern;->getNativeFinalizer()J
-Ljava/util/regex/Pattern;->nativeSize()I
-Ljava/util/regex/Pattern;->pattern:Ljava/lang/String;
-Ljava/util/regex/Pattern;->registry:Llibcore/util/NativeAllocationRegistry;
-Ljava/util/regex/PatternSyntaxException;->desc:Ljava/lang/String;
-Ljava/util/regex/PatternSyntaxException;->index:I
-Ljava/util/regex/PatternSyntaxException;->nl:Ljava/lang/String;
-Ljava/util/regex/PatternSyntaxException;->pattern:Ljava/lang/String;
-Ljava/util/ResourceBundle$BundleReference;-><init>(Ljava/util/ResourceBundle;Ljava/lang/ref/ReferenceQueue;Ljava/util/ResourceBundle$CacheKey;)V
-Ljava/util/ResourceBundle$BundleReference;->cacheKey:Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$BundleReference;->getCacheKey()Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$CacheKey;-><init>(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)V
-Ljava/util/ResourceBundle$CacheKey;->calculateHashCode()V
-Ljava/util/ResourceBundle$CacheKey;->cause:Ljava/lang/Throwable;
-Ljava/util/ResourceBundle$CacheKey;->expirationTime:J
-Ljava/util/ResourceBundle$CacheKey;->format:Ljava/lang/String;
-Ljava/util/ResourceBundle$CacheKey;->getCause()Ljava/lang/Throwable;
-Ljava/util/ResourceBundle$CacheKey;->getFormat()Ljava/lang/String;
-Ljava/util/ResourceBundle$CacheKey;->getLoader()Ljava/lang/ClassLoader;
-Ljava/util/ResourceBundle$CacheKey;->getLocale()Ljava/util/Locale;
-Ljava/util/ResourceBundle$CacheKey;->getName()Ljava/lang/String;
-Ljava/util/ResourceBundle$CacheKey;->hashCodeCache:I
-Ljava/util/ResourceBundle$CacheKey;->loaderRef:Ljava/util/ResourceBundle$LoaderReference;
-Ljava/util/ResourceBundle$CacheKey;->loadTime:J
-Ljava/util/ResourceBundle$CacheKey;->locale:Ljava/util/Locale;
-Ljava/util/ResourceBundle$CacheKey;->name:Ljava/lang/String;
-Ljava/util/ResourceBundle$CacheKey;->setCause(Ljava/lang/Throwable;)V
-Ljava/util/ResourceBundle$CacheKey;->setFormat(Ljava/lang/String;)V
-Ljava/util/ResourceBundle$CacheKey;->setLocale(Ljava/util/Locale;)Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$CacheKey;->setName(Ljava/lang/String;)Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$CacheKeyReference;->getCacheKey()Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$Control$CandidateListCache;-><init>()V
-Ljava/util/ResourceBundle$Control$CandidateListCache;->createObject(Lsun/util/locale/BaseLocale;)Ljava/util/List;
-Ljava/util/ResourceBundle$Control$CandidateListCache;->getDefaultList(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
-Ljava/util/ResourceBundle$Control;->CANDIDATES_CACHE:Ljava/util/ResourceBundle$Control$CandidateListCache;
-Ljava/util/ResourceBundle$Control;->INSTANCE:Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle$Control;->toResourceName0(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/ResourceBundle$LoaderReference;-><init>(Ljava/lang/ClassLoader;Ljava/lang/ref/ReferenceQueue;Ljava/util/ResourceBundle$CacheKey;)V
-Ljava/util/ResourceBundle$LoaderReference;->cacheKey:Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$LoaderReference;->getCacheKey()Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle$NoFallbackControl;-><init>(Ljava/util/List;)V
-Ljava/util/ResourceBundle$NoFallbackControl;->CLASS_ONLY_NO_FALLBACK:Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle$NoFallbackControl;->NO_FALLBACK:Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle$NoFallbackControl;->PROPERTIES_ONLY_NO_FALLBACK:Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle$RBClassLoader;-><init>()V
-Ljava/util/ResourceBundle$RBClassLoader;->INSTANCE:Ljava/util/ResourceBundle$RBClassLoader;
-Ljava/util/ResourceBundle$RBClassLoader;->loader:Ljava/lang/ClassLoader;
-Ljava/util/ResourceBundle$SingleFormatControl;-><init>(Ljava/util/List;)V
-Ljava/util/ResourceBundle$SingleFormatControl;->CLASS_ONLY:Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle$SingleFormatControl;->formats:Ljava/util/List;
-Ljava/util/ResourceBundle$SingleFormatControl;->PROPERTIES_ONLY:Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle;->cacheKey:Ljava/util/ResourceBundle$CacheKey;
-Ljava/util/ResourceBundle;->cacheList:Ljava/util/concurrent/ConcurrentMap;
-Ljava/util/ResourceBundle;->checkList(Ljava/util/List;)Z
-Ljava/util/ResourceBundle;->expired:Z
-Ljava/util/ResourceBundle;->findBundle(Ljava/util/ResourceBundle$CacheKey;Ljava/util/List;Ljava/util/List;ILjava/util/ResourceBundle$Control;Ljava/util/ResourceBundle;)Ljava/util/ResourceBundle;
-Ljava/util/ResourceBundle;->findBundleInCache(Ljava/util/ResourceBundle$CacheKey;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;
-Ljava/util/ResourceBundle;->getBundleImpl(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;
-Ljava/util/ResourceBundle;->getDefaultControl(Ljava/lang/String;)Ljava/util/ResourceBundle$Control;
-Ljava/util/ResourceBundle;->getLoader(Ljava/lang/ClassLoader;)Ljava/lang/ClassLoader;
-Ljava/util/ResourceBundle;->hasValidParentChain(Ljava/util/ResourceBundle;)Z
-Ljava/util/ResourceBundle;->INITIAL_CACHE_SIZE:I
-Ljava/util/ResourceBundle;->isValidBundle(Ljava/util/ResourceBundle;)Z
-Ljava/util/ResourceBundle;->keySet:Ljava/util/Set;
-Ljava/util/ResourceBundle;->loadBundle(Ljava/util/ResourceBundle$CacheKey;Ljava/util/List;Ljava/util/ResourceBundle$Control;Z)Ljava/util/ResourceBundle;
-Ljava/util/ResourceBundle;->locale:Ljava/util/Locale;
-Ljava/util/ResourceBundle;->name:Ljava/lang/String;
-Ljava/util/ResourceBundle;->NONEXISTENT_BUNDLE:Ljava/util/ResourceBundle;
-Ljava/util/ResourceBundle;->putBundleInCache(Ljava/util/ResourceBundle$CacheKey;Ljava/util/ResourceBundle;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;
-Ljava/util/ResourceBundle;->referenceQueue:Ljava/lang/ref/ReferenceQueue;
-Ljava/util/ResourceBundle;->setExpirationTime(Ljava/util/ResourceBundle$CacheKey;Ljava/util/ResourceBundle$Control;)V
-Ljava/util/ResourceBundle;->throwMissingResourceException(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/Throwable;)V
-Ljava/util/Scanner;-><init>(Ljava/io/File;Ljava/nio/charset/CharsetDecoder;)V
-Ljava/util/Scanner;-><init>(Ljava/lang/Readable;Ljava/util/regex/Pattern;)V
-Ljava/util/Scanner;-><init>(Ljava/nio/file/Path;Ljava/nio/charset/Charset;)V
-Ljava/util/Scanner;->BOOLEAN_PATTERN:Ljava/lang/String;
-Ljava/util/Scanner;->boolPattern()Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->boolPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->buf:Ljava/nio/CharBuffer;
-Ljava/util/Scanner;->BUFFER_SIZE:I
-Ljava/util/Scanner;->buildFloatAndDecimalPattern()V
-Ljava/util/Scanner;->buildIntegerPatternString()Ljava/lang/String;
-Ljava/util/Scanner;->cacheResult()V
-Ljava/util/Scanner;->cacheResult(Ljava/lang/String;)V
-Ljava/util/Scanner;->clearCaches()V
-Ljava/util/Scanner;->closed:Z
-Ljava/util/Scanner;->decimalPattern()Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->decimalPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->decimalSeparator:Ljava/lang/String;
-Ljava/util/Scanner;->defaultRadix:I
-Ljava/util/Scanner;->delimPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->digits:Ljava/lang/String;
-Ljava/util/Scanner;->ensureOpen()V
-Ljava/util/Scanner;->findPatternInBuffer(Ljava/util/regex/Pattern;I)Ljava/lang/String;
-Ljava/util/Scanner;->FIND_ANY_PATTERN:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->floatPattern()Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->floatPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->getCachedResult()Ljava/lang/String;
-Ljava/util/Scanner;->getCompleteTokenInBuffer(Ljava/util/regex/Pattern;)Ljava/lang/String;
-Ljava/util/Scanner;->groupSeparator:Ljava/lang/String;
-Ljava/util/Scanner;->hasNextPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->hasNextPosition:I
-Ljava/util/Scanner;->hasNextResult:Ljava/lang/String;
-Ljava/util/Scanner;->hasTokenInBuffer()Z
-Ljava/util/Scanner;->infinityString:Ljava/lang/String;
-Ljava/util/Scanner;->integerPattern()Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->integerPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->lastException:Ljava/io/IOException;
-Ljava/util/Scanner;->linePattern()Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->linePattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->LINE_PATTERN:Ljava/lang/String;
-Ljava/util/Scanner;->LINE_SEPARATOR_PATTERN:Ljava/lang/String;
-Ljava/util/Scanner;->locale:Ljava/util/Locale;
-Ljava/util/Scanner;->makeReadable(Ljava/io/InputStream;Ljava/nio/charset/Charset;)Ljava/lang/Readable;
-Ljava/util/Scanner;->makeReadable(Ljava/nio/channels/ReadableByteChannel;)Ljava/lang/Readable;
-Ljava/util/Scanner;->makeReadable(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;)Ljava/lang/Readable;
-Ljava/util/Scanner;->makeSpace()Z
-Ljava/util/Scanner;->matcher:Ljava/util/regex/Matcher;
-Ljava/util/Scanner;->matchPatternInBuffer(Ljava/util/regex/Pattern;)Ljava/lang/String;
-Ljava/util/Scanner;->matchValid:Z
-Ljava/util/Scanner;->nanString:Ljava/lang/String;
-Ljava/util/Scanner;->needInput:Z
-Ljava/util/Scanner;->negativePrefix:Ljava/lang/String;
-Ljava/util/Scanner;->negativeSuffix:Ljava/lang/String;
-Ljava/util/Scanner;->non0Digit:Ljava/lang/String;
-Ljava/util/Scanner;->NON_ASCII_DIGIT:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->patternCache:Lsun/misc/LRUCache;
-Ljava/util/Scanner;->position:I
-Ljava/util/Scanner;->positivePrefix:Ljava/lang/String;
-Ljava/util/Scanner;->positiveSuffix:Ljava/lang/String;
-Ljava/util/Scanner;->processFloatToken(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Scanner;->processIntegerToken(Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/Scanner;->radix:I
-Ljava/util/Scanner;->readInput()V
-Ljava/util/Scanner;->revertState()V
-Ljava/util/Scanner;->revertState(Z)Z
-Ljava/util/Scanner;->savedScannerPosition:I
-Ljava/util/Scanner;->saveState()V
-Ljava/util/Scanner;->separatorPattern()Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->separatorPattern:Ljava/util/regex/Pattern;
-Ljava/util/Scanner;->setRadix(I)V
-Ljava/util/Scanner;->SIMPLE_GROUP_INDEX:I
-Ljava/util/Scanner;->skipped:Z
-Ljava/util/Scanner;->source:Ljava/lang/Readable;
-Ljava/util/Scanner;->sourceClosed:Z
-Ljava/util/Scanner;->throwFor()V
-Ljava/util/Scanner;->toCharset(Ljava/lang/String;)Ljava/nio/charset/Charset;
-Ljava/util/Scanner;->toDecoder(Ljava/lang/String;)Ljava/nio/charset/CharsetDecoder;
-Ljava/util/Scanner;->translateSavedIndexes(I)V
-Ljava/util/Scanner;->typeCache:Ljava/lang/Object;
-Ljava/util/Scanner;->useTypeCache()V
-Ljava/util/Scanner;->WHITESPACE_PATTERN:Ljava/util/regex/Pattern;
-Ljava/util/ServiceLoader$LazyIterator;->configs:Ljava/util/Enumeration;
-Ljava/util/ServiceLoader$LazyIterator;->hasNextService()Z
-Ljava/util/ServiceLoader$LazyIterator;->loader:Ljava/lang/ClassLoader;
-Ljava/util/ServiceLoader$LazyIterator;->nextName:Ljava/lang/String;
-Ljava/util/ServiceLoader$LazyIterator;->nextService()Ljava/lang/Object;
-Ljava/util/ServiceLoader$LazyIterator;->pending:Ljava/util/Iterator;
-Ljava/util/ServiceLoader$LazyIterator;->service:Ljava/lang/Class;
-Ljava/util/ServiceLoader;-><init>(Ljava/lang/Class;Ljava/lang/ClassLoader;)V
-Ljava/util/ServiceLoader;->fail(Ljava/lang/Class;Ljava/lang/String;)V
-Ljava/util/ServiceLoader;->fail(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Throwable;)V
-Ljava/util/ServiceLoader;->fail(Ljava/lang/Class;Ljava/net/URL;ILjava/lang/String;)V
-Ljava/util/ServiceLoader;->loader:Ljava/lang/ClassLoader;
-Ljava/util/ServiceLoader;->loadFromSystemProperty(Ljava/lang/Class;)Ljava/lang/Object;
-Ljava/util/ServiceLoader;->lookupIterator:Ljava/util/ServiceLoader$LazyIterator;
-Ljava/util/ServiceLoader;->parse(Ljava/lang/Class;Ljava/net/URL;)Ljava/util/Iterator;
-Ljava/util/ServiceLoader;->parseLine(Ljava/lang/Class;Ljava/net/URL;Ljava/io/BufferedReader;ILjava/util/List;)I
-Ljava/util/ServiceLoader;->PREFIX:Ljava/lang/String;
-Ljava/util/ServiceLoader;->providers:Ljava/util/LinkedHashMap;
-Ljava/util/ServiceLoader;->service:Ljava/lang/Class;
-Ljava/util/SimpleTimeZone;->cacheEnd:J
-Ljava/util/SimpleTimeZone;->cacheStart:J
-Ljava/util/SimpleTimeZone;->cacheYear:J
-Ljava/util/SimpleTimeZone;->currentSerialVersion:I
-Ljava/util/SimpleTimeZone;->decodeEndRule()V
-Ljava/util/SimpleTimeZone;->decodeRules()V
-Ljava/util/SimpleTimeZone;->decodeStartRule()V
-Ljava/util/SimpleTimeZone;->DOM_MODE:I
-Ljava/util/SimpleTimeZone;->DOW_GE_DOM_MODE:I
-Ljava/util/SimpleTimeZone;->DOW_IN_MONTH_MODE:I
-Ljava/util/SimpleTimeZone;->DOW_LE_DOM_MODE:I
-Ljava/util/SimpleTimeZone;->dstSavings:I
-Ljava/util/SimpleTimeZone;->endDay:I
-Ljava/util/SimpleTimeZone;->endDayOfWeek:I
-Ljava/util/SimpleTimeZone;->endMode:I
-Ljava/util/SimpleTimeZone;->endMonth:I
-Ljava/util/SimpleTimeZone;->endTime:I
-Ljava/util/SimpleTimeZone;->endTimeMode:I
-Ljava/util/SimpleTimeZone;->gcal:Lsun/util/calendar/Gregorian;
-Ljava/util/SimpleTimeZone;->getEnd(Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/BaseCalendar$Date;I)J
-Ljava/util/SimpleTimeZone;->getOffset(Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/BaseCalendar$Date;IJ)I
-Ljava/util/SimpleTimeZone;->getOffsets(J[I)I
-Ljava/util/SimpleTimeZone;->getStart(Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/BaseCalendar$Date;I)J
-Ljava/util/SimpleTimeZone;->getTransition(Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/BaseCalendar$Date;IIIIII)J
-Ljava/util/SimpleTimeZone;->invalidateCache()V
-Ljava/util/SimpleTimeZone;->makeRulesCompatible()V
-Ljava/util/SimpleTimeZone;->millisPerDay:I
-Ljava/util/SimpleTimeZone;->millisPerHour:I
-Ljava/util/SimpleTimeZone;->monthLength:[B
-Ljava/util/SimpleTimeZone;->packRules()[B
-Ljava/util/SimpleTimeZone;->packTimes()[I
-Ljava/util/SimpleTimeZone;->rawOffset:I
-Ljava/util/SimpleTimeZone;->serialVersionOnStream:I
-Ljava/util/SimpleTimeZone;->startDay:I
-Ljava/util/SimpleTimeZone;->startDayOfWeek:I
-Ljava/util/SimpleTimeZone;->startMode:I
-Ljava/util/SimpleTimeZone;->startMonth:I
-Ljava/util/SimpleTimeZone;->startTime:I
-Ljava/util/SimpleTimeZone;->startTimeMode:I
-Ljava/util/SimpleTimeZone;->startYear:I
-Ljava/util/SimpleTimeZone;->staticLeapMonthLength:[B
-Ljava/util/SimpleTimeZone;->staticMonthLength:[B
-Ljava/util/SimpleTimeZone;->unpackRules([B)V
-Ljava/util/SimpleTimeZone;->unpackTimes([I)V
-Ljava/util/SimpleTimeZone;->useDaylight:Z
-Ljava/util/Spliterators$AbstractDoubleSpliterator$HoldingDoubleConsumer;-><init>()V
-Ljava/util/Spliterators$AbstractDoubleSpliterator$HoldingDoubleConsumer;->value:D
-Ljava/util/Spliterators$AbstractDoubleSpliterator;->batch:I
-Ljava/util/Spliterators$AbstractDoubleSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$AbstractDoubleSpliterator;->characteristics:I
-Ljava/util/Spliterators$AbstractDoubleSpliterator;->est:J
-Ljava/util/Spliterators$AbstractDoubleSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$AbstractIntSpliterator$HoldingIntConsumer;-><init>()V
-Ljava/util/Spliterators$AbstractIntSpliterator$HoldingIntConsumer;->value:I
-Ljava/util/Spliterators$AbstractIntSpliterator;->batch:I
-Ljava/util/Spliterators$AbstractIntSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$AbstractIntSpliterator;->characteristics:I
-Ljava/util/Spliterators$AbstractIntSpliterator;->est:J
-Ljava/util/Spliterators$AbstractIntSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$AbstractLongSpliterator$HoldingLongConsumer;-><init>()V
-Ljava/util/Spliterators$AbstractLongSpliterator$HoldingLongConsumer;->value:J
-Ljava/util/Spliterators$AbstractLongSpliterator;->batch:I
-Ljava/util/Spliterators$AbstractLongSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$AbstractLongSpliterator;->characteristics:I
-Ljava/util/Spliterators$AbstractLongSpliterator;->est:J
-Ljava/util/Spliterators$AbstractLongSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$AbstractSpliterator$HoldingConsumer;-><init>()V
-Ljava/util/Spliterators$AbstractSpliterator$HoldingConsumer;->value:Ljava/lang/Object;
-Ljava/util/Spliterators$AbstractSpliterator;->batch:I
-Ljava/util/Spliterators$AbstractSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$AbstractSpliterator;->characteristics:I
-Ljava/util/Spliterators$AbstractSpliterator;->est:J
-Ljava/util/Spliterators$AbstractSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$ArraySpliterator;-><init>([Ljava/lang/Object;I)V
-Ljava/util/Spliterators$ArraySpliterator;-><init>([Ljava/lang/Object;III)V
-Ljava/util/Spliterators$ArraySpliterator;->array:[Ljava/lang/Object;
-Ljava/util/Spliterators$ArraySpliterator;->characteristics:I
-Ljava/util/Spliterators$ArraySpliterator;->fence:I
-Ljava/util/Spliterators$ArraySpliterator;->index:I
-Ljava/util/Spliterators$DoubleArraySpliterator;-><init>([DI)V
-Ljava/util/Spliterators$DoubleArraySpliterator;-><init>([DIII)V
-Ljava/util/Spliterators$DoubleArraySpliterator;->array:[D
-Ljava/util/Spliterators$DoubleArraySpliterator;->characteristics:I
-Ljava/util/Spliterators$DoubleArraySpliterator;->fence:I
-Ljava/util/Spliterators$DoubleArraySpliterator;->index:I
-Ljava/util/Spliterators$DoubleIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfDouble;I)V
-Ljava/util/Spliterators$DoubleIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfDouble;JI)V
-Ljava/util/Spliterators$DoubleIteratorSpliterator;->batch:I
-Ljava/util/Spliterators$DoubleIteratorSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$DoubleIteratorSpliterator;->characteristics:I
-Ljava/util/Spliterators$DoubleIteratorSpliterator;->est:J
-Ljava/util/Spliterators$DoubleIteratorSpliterator;->it:Ljava/util/PrimitiveIterator$OfDouble;
-Ljava/util/Spliterators$DoubleIteratorSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$EmptySpliterator$OfDouble;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator$OfInt;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator$OfLong;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator$OfRef;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator;-><init>()V
-Ljava/util/Spliterators$EmptySpliterator;->characteristics()I
-Ljava/util/Spliterators$EmptySpliterator;->estimateSize()J
-Ljava/util/Spliterators$EmptySpliterator;->forEachRemaining(Ljava/lang/Object;)V
-Ljava/util/Spliterators$EmptySpliterator;->tryAdvance(Ljava/lang/Object;)Z
-Ljava/util/Spliterators$EmptySpliterator;->trySplit()Ljava/util/Spliterator;
-Ljava/util/Spliterators$IntArraySpliterator;-><init>([II)V
-Ljava/util/Spliterators$IntArraySpliterator;-><init>([IIII)V
-Ljava/util/Spliterators$IntArraySpliterator;->array:[I
-Ljava/util/Spliterators$IntArraySpliterator;->characteristics:I
-Ljava/util/Spliterators$IntArraySpliterator;->fence:I
-Ljava/util/Spliterators$IntArraySpliterator;->index:I
-Ljava/util/Spliterators$IntIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfInt;I)V
-Ljava/util/Spliterators$IntIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfInt;JI)V
-Ljava/util/Spliterators$IntIteratorSpliterator;->batch:I
-Ljava/util/Spliterators$IntIteratorSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$IntIteratorSpliterator;->characteristics:I
-Ljava/util/Spliterators$IntIteratorSpliterator;->est:J
-Ljava/util/Spliterators$IntIteratorSpliterator;->it:Ljava/util/PrimitiveIterator$OfInt;
-Ljava/util/Spliterators$IntIteratorSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Collection;I)V
-Ljava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Iterator;I)V
-Ljava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Iterator;JI)V
-Ljava/util/Spliterators$IteratorSpliterator;->batch:I
-Ljava/util/Spliterators$IteratorSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$IteratorSpliterator;->characteristics:I
-Ljava/util/Spliterators$IteratorSpliterator;->collection:Ljava/util/Collection;
-Ljava/util/Spliterators$IteratorSpliterator;->est:J
-Ljava/util/Spliterators$IteratorSpliterator;->it:Ljava/util/Iterator;
-Ljava/util/Spliterators$IteratorSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators$LongArraySpliterator;-><init>([JI)V
-Ljava/util/Spliterators$LongArraySpliterator;-><init>([JIII)V
-Ljava/util/Spliterators$LongArraySpliterator;->array:[J
-Ljava/util/Spliterators$LongArraySpliterator;->characteristics:I
-Ljava/util/Spliterators$LongArraySpliterator;->fence:I
-Ljava/util/Spliterators$LongArraySpliterator;->index:I
-Ljava/util/Spliterators$LongIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfLong;I)V
-Ljava/util/Spliterators$LongIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfLong;JI)V
-Ljava/util/Spliterators$LongIteratorSpliterator;->batch:I
-Ljava/util/Spliterators$LongIteratorSpliterator;->BATCH_UNIT:I
-Ljava/util/Spliterators$LongIteratorSpliterator;->characteristics:I
-Ljava/util/Spliterators$LongIteratorSpliterator;->est:J
-Ljava/util/Spliterators$LongIteratorSpliterator;->it:Ljava/util/PrimitiveIterator$OfLong;
-Ljava/util/Spliterators$LongIteratorSpliterator;->MAX_BATCH:I
-Ljava/util/Spliterators;-><init>()V
-Ljava/util/Spliterators;->checkFromToBounds(III)V
-Ljava/util/Spliterators;->EMPTY_DOUBLE_SPLITERATOR:Ljava/util/Spliterator$OfDouble;
-Ljava/util/Spliterators;->EMPTY_INT_SPLITERATOR:Ljava/util/Spliterator$OfInt;
-Ljava/util/Spliterators;->EMPTY_LONG_SPLITERATOR:Ljava/util/Spliterator$OfLong;
-Ljava/util/Spliterators;->EMPTY_SPLITERATOR:Ljava/util/Spliterator;
-Ljava/util/SplittableRandom$RandomDoublesSpliterator;-><init>(Ljava/util/SplittableRandom;JJDD)V
-Ljava/util/SplittableRandom$RandomDoublesSpliterator;->bound:D
-Ljava/util/SplittableRandom$RandomDoublesSpliterator;->fence:J
-Ljava/util/SplittableRandom$RandomDoublesSpliterator;->index:J
-Ljava/util/SplittableRandom$RandomDoublesSpliterator;->origin:D
-Ljava/util/SplittableRandom$RandomDoublesSpliterator;->rng:Ljava/util/SplittableRandom;
-Ljava/util/SplittableRandom$RandomIntsSpliterator;-><init>(Ljava/util/SplittableRandom;JJII)V
-Ljava/util/SplittableRandom$RandomIntsSpliterator;->bound:I
-Ljava/util/SplittableRandom$RandomIntsSpliterator;->fence:J
-Ljava/util/SplittableRandom$RandomIntsSpliterator;->index:J
-Ljava/util/SplittableRandom$RandomIntsSpliterator;->origin:I
-Ljava/util/SplittableRandom$RandomIntsSpliterator;->rng:Ljava/util/SplittableRandom;
-Ljava/util/SplittableRandom$RandomLongsSpliterator;-><init>(Ljava/util/SplittableRandom;JJJJ)V
-Ljava/util/SplittableRandom$RandomLongsSpliterator;->bound:J
-Ljava/util/SplittableRandom$RandomLongsSpliterator;->fence:J
-Ljava/util/SplittableRandom$RandomLongsSpliterator;->index:J
-Ljava/util/SplittableRandom$RandomLongsSpliterator;->origin:J
-Ljava/util/SplittableRandom$RandomLongsSpliterator;->rng:Ljava/util/SplittableRandom;
-Ljava/util/SplittableRandom;-><init>(JJ)V
-Ljava/util/SplittableRandom;->BAD_BOUND:Ljava/lang/String;
-Ljava/util/SplittableRandom;->BAD_RANGE:Ljava/lang/String;
-Ljava/util/SplittableRandom;->BAD_SIZE:Ljava/lang/String;
-Ljava/util/SplittableRandom;->defaultGen:Ljava/util/concurrent/atomic/AtomicLong;
-Ljava/util/SplittableRandom;->DOUBLE_UNIT:D
-Ljava/util/SplittableRandom;->gamma:J
-Ljava/util/SplittableRandom;->GOLDEN_GAMMA:J
-Ljava/util/SplittableRandom;->internalNextDouble(DD)D
-Ljava/util/SplittableRandom;->internalNextInt(II)I
-Ljava/util/SplittableRandom;->internalNextLong(JJ)J
-Ljava/util/SplittableRandom;->mix32(J)I
-Ljava/util/SplittableRandom;->mix64(J)J
-Ljava/util/SplittableRandom;->mixGamma(J)J
-Ljava/util/SplittableRandom;->nextSeed()J
-Ljava/util/SplittableRandom;->seed:J
-Ljava/util/stream/AbstractPipeline;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/AbstractPipeline;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/AbstractPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
-Ljava/util/stream/AbstractPipeline;->combinedFlags:I
-Ljava/util/stream/AbstractPipeline;->copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V
-Ljava/util/stream/AbstractPipeline;->copyIntoWithCancel(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V
-Ljava/util/stream/AbstractPipeline;->depth:I
-Ljava/util/stream/AbstractPipeline;->evaluate(Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/AbstractPipeline;->evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;
-Ljava/util/stream/AbstractPipeline;->evaluateToArrayNode(Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/AbstractPipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/AbstractPipeline;->exactOutputSizeIfKnown(Ljava/util/Spliterator;)J
-Ljava/util/stream/AbstractPipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V
-Ljava/util/stream/AbstractPipeline;->getOutputShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/AbstractPipeline;->getSourceShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/AbstractPipeline;->getStreamAndOpFlags()I
-Ljava/util/stream/AbstractPipeline;->getStreamFlags()I
-Ljava/util/stream/AbstractPipeline;->isOrdered()Z
-Ljava/util/stream/AbstractPipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator;
-Ljava/util/stream/AbstractPipeline;->linkedOrConsumed:Z
-Ljava/util/stream/AbstractPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
-Ljava/util/stream/AbstractPipeline;->MSG_CONSUMED:Ljava/lang/String;
-Ljava/util/stream/AbstractPipeline;->MSG_STREAM_LINKED:Ljava/lang/String;
-Ljava/util/stream/AbstractPipeline;->nextStage:Ljava/util/stream/AbstractPipeline;
-Ljava/util/stream/AbstractPipeline;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/AbstractPipeline;->opEvaluateParallelLazy(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/util/Spliterator;
-Ljava/util/stream/AbstractPipeline;->opIsStateful()Z
-Ljava/util/stream/AbstractPipeline;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/AbstractPipeline;->parallel:Z
-Ljava/util/stream/AbstractPipeline;->previousStage:Ljava/util/stream/AbstractPipeline;
-Ljava/util/stream/AbstractPipeline;->sourceAnyStateful:Z
-Ljava/util/stream/AbstractPipeline;->sourceCloseAction:Ljava/lang/Runnable;
-Ljava/util/stream/AbstractPipeline;->sourceOrOpFlags:I
-Ljava/util/stream/AbstractPipeline;->sourceSpliterator(I)Ljava/util/Spliterator;
-Ljava/util/stream/AbstractPipeline;->sourceSpliterator:Ljava/util/Spliterator;
-Ljava/util/stream/AbstractPipeline;->sourceStage:Ljava/util/stream/AbstractPipeline;
-Ljava/util/stream/AbstractPipeline;->sourceStageSpliterator()Ljava/util/Spliterator;
-Ljava/util/stream/AbstractPipeline;->sourceSupplier:Ljava/util/function/Supplier;
-Ljava/util/stream/AbstractPipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/AbstractPipeline;->wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;
-Ljava/util/stream/AbstractPipeline;->wrapSink(Ljava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/AbstractPipeline;->wrapSpliterator(Ljava/util/Spliterator;)Ljava/util/Spliterator;
-Ljava/util/stream/AbstractSpinedBuffer;-><init>()V
-Ljava/util/stream/AbstractSpinedBuffer;-><init>(I)V
-Ljava/util/stream/AbstractSpinedBuffer;->chunkSize(I)I
-Ljava/util/stream/AbstractSpinedBuffer;->clear()V
-Ljava/util/stream/AbstractSpinedBuffer;->count()J
-Ljava/util/stream/AbstractSpinedBuffer;->elementIndex:I
-Ljava/util/stream/AbstractSpinedBuffer;->initialChunkPower:I
-Ljava/util/stream/AbstractSpinedBuffer;->isEmpty()Z
-Ljava/util/stream/AbstractSpinedBuffer;->MAX_CHUNK_POWER:I
-Ljava/util/stream/AbstractSpinedBuffer;->MIN_CHUNK_POWER:I
-Ljava/util/stream/AbstractSpinedBuffer;->MIN_CHUNK_SIZE:I
-Ljava/util/stream/AbstractSpinedBuffer;->MIN_SPINE_SIZE:I
-Ljava/util/stream/AbstractSpinedBuffer;->priorElementCount:[J
-Ljava/util/stream/AbstractSpinedBuffer;->spineIndex:I
-Ljava/util/stream/Collectors$CollectorImpl;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/function/Function;Ljava/util/Set;)V
-Ljava/util/stream/Collectors$CollectorImpl;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/Set;)V
-Ljava/util/stream/Collectors$CollectorImpl;->accumulator:Ljava/util/function/BiConsumer;
-Ljava/util/stream/Collectors$CollectorImpl;->characteristics:Ljava/util/Set;
-Ljava/util/stream/Collectors$CollectorImpl;->combiner:Ljava/util/function/BinaryOperator;
-Ljava/util/stream/Collectors$CollectorImpl;->finisher:Ljava/util/function/Function;
-Ljava/util/stream/Collectors$CollectorImpl;->supplier:Ljava/util/function/Supplier;
-Ljava/util/stream/Collectors$Partition;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
-Ljava/util/stream/Collectors$Partition;->forFalse:Ljava/lang/Object;
-Ljava/util/stream/Collectors$Partition;->forTrue:Ljava/lang/Object;
-Ljava/util/stream/Collectors;-><init>()V
-Ljava/util/stream/Collectors;->boxSupplier(Ljava/lang/Object;)Ljava/util/function/Supplier;
-Ljava/util/stream/Collectors;->castingIdentity()Ljava/util/function/Function;
-Ljava/util/stream/Collectors;->CH_CONCURRENT_ID:Ljava/util/Set;
-Ljava/util/stream/Collectors;->CH_CONCURRENT_NOID:Ljava/util/Set;
-Ljava/util/stream/Collectors;->CH_ID:Ljava/util/Set;
-Ljava/util/stream/Collectors;->CH_NOID:Ljava/util/Set;
-Ljava/util/stream/Collectors;->CH_UNORDERED_ID:Ljava/util/Set;
-Ljava/util/stream/Collectors;->computeFinalSum([D)D
-Ljava/util/stream/Collectors;->mapMerger(Ljava/util/function/BinaryOperator;)Ljava/util/function/BinaryOperator;
-Ljava/util/stream/Collectors;->sumWithCompensation([DD)[D
-Ljava/util/stream/Collectors;->throwingMerger()Ljava/util/function/BinaryOperator;
-Ljava/util/stream/DoublePipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/DoublePipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/DoublePipeline$Head;->opIsStateful()Z
-Ljava/util/stream/DoublePipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/DoublePipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/DoublePipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/DoublePipeline$StatefulOp;->opIsStateful()Z
-Ljava/util/stream/DoublePipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/DoublePipeline$StatelessOp;->opIsStateful()Z
-Ljava/util/stream/DoublePipeline;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/DoublePipeline;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/DoublePipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
-Ljava/util/stream/DoublePipeline;->adapt(Ljava/util/Spliterator;)Ljava/util/Spliterator$OfDouble;
-Ljava/util/stream/DoublePipeline;->adapt(Ljava/util/stream/Sink;)Ljava/util/function/DoubleConsumer;
-Ljava/util/stream/DoublePipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/DoublePipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V
-Ljava/util/stream/DoublePipeline;->getOutputShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/DoublePipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator$OfDouble;
-Ljava/util/stream/DoublePipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
-Ljava/util/stream/DoublePipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/IntPipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/IntPipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/IntPipeline$Head;->opIsStateful()Z
-Ljava/util/stream/IntPipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/IntPipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/IntPipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/IntPipeline$StatefulOp;->opIsStateful()Z
-Ljava/util/stream/IntPipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/IntPipeline$StatelessOp;->opIsStateful()Z
-Ljava/util/stream/IntPipeline;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/IntPipeline;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/IntPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
-Ljava/util/stream/IntPipeline;->adapt(Ljava/util/Spliterator;)Ljava/util/Spliterator$OfInt;
-Ljava/util/stream/IntPipeline;->adapt(Ljava/util/stream/Sink;)Ljava/util/function/IntConsumer;
-Ljava/util/stream/IntPipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/IntPipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V
-Ljava/util/stream/IntPipeline;->getOutputShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/IntPipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator$OfInt;
-Ljava/util/stream/IntPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
-Ljava/util/stream/IntPipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/LongPipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/LongPipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/LongPipeline$Head;->opIsStateful()Z
-Ljava/util/stream/LongPipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/LongPipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/LongPipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/LongPipeline$StatefulOp;->opIsStateful()Z
-Ljava/util/stream/LongPipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/LongPipeline$StatelessOp;->opIsStateful()Z
-Ljava/util/stream/LongPipeline;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/LongPipeline;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/LongPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
-Ljava/util/stream/LongPipeline;->adapt(Ljava/util/Spliterator;)Ljava/util/Spliterator$OfLong;
-Ljava/util/stream/LongPipeline;->adapt(Ljava/util/stream/Sink;)Ljava/util/function/LongConsumer;
-Ljava/util/stream/LongPipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/LongPipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V
-Ljava/util/stream/LongPipeline;->getOutputShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/LongPipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator$OfLong;
-Ljava/util/stream/LongPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
-Ljava/util/stream/LongPipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/Node$Builder$OfDouble;->build()Ljava/util/stream/Node$OfDouble;
-Ljava/util/stream/Node$Builder$OfInt;->build()Ljava/util/stream/Node$OfInt;
-Ljava/util/stream/Node$Builder$OfLong;->build()Ljava/util/stream/Node$OfLong;
-Ljava/util/stream/Node$Builder;->build()Ljava/util/stream/Node;
-Ljava/util/stream/Node$OfDouble;->copyInto([Ljava/lang/Double;I)V
-Ljava/util/stream/Node$OfDouble;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/Node$OfDouble;->getShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/Node$OfDouble;->newArray(I)[D
-Ljava/util/stream/Node$OfDouble;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfDouble;
-Ljava/util/stream/Node$OfInt;->copyInto([Ljava/lang/Integer;I)V
-Ljava/util/stream/Node$OfInt;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/Node$OfInt;->getShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/Node$OfInt;->newArray(I)[I
-Ljava/util/stream/Node$OfInt;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfInt;
-Ljava/util/stream/Node$OfLong;->copyInto([Ljava/lang/Long;I)V
-Ljava/util/stream/Node$OfLong;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/Node$OfLong;->getShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/Node$OfLong;->newArray(I)[J
-Ljava/util/stream/Node$OfLong;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfLong;
-Ljava/util/stream/Node$OfPrimitive;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
-Ljava/util/stream/Node$OfPrimitive;->asPrimitiveArray()Ljava/lang/Object;
-Ljava/util/stream/Node$OfPrimitive;->copyInto(Ljava/lang/Object;I)V
-Ljava/util/stream/Node$OfPrimitive;->forEach(Ljava/lang/Object;)V
-Ljava/util/stream/Node$OfPrimitive;->getChild(I)Ljava/util/stream/Node$OfPrimitive;
-Ljava/util/stream/Node$OfPrimitive;->newArray(I)Ljava/lang/Object;
-Ljava/util/stream/Node$OfPrimitive;->spliterator()Ljava/util/Spliterator$OfPrimitive;
-Ljava/util/stream/Node$OfPrimitive;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfPrimitive;
-Ljava/util/stream/Node;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
-Ljava/util/stream/Node;->copyInto([Ljava/lang/Object;I)V
-Ljava/util/stream/Node;->count()J
-Ljava/util/stream/Node;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/Node;->getChild(I)Ljava/util/stream/Node;
-Ljava/util/stream/Node;->getChildCount()I
-Ljava/util/stream/Node;->getShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/Node;->spliterator()Ljava/util/Spliterator;
-Ljava/util/stream/Node;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/PipelineHelper;-><init>()V
-Ljava/util/stream/PipelineHelper;->copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V
-Ljava/util/stream/PipelineHelper;->copyIntoWithCancel(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V
-Ljava/util/stream/PipelineHelper;->evaluate(Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/PipelineHelper;->exactOutputSizeIfKnown(Ljava/util/Spliterator;)J
-Ljava/util/stream/PipelineHelper;->getSourceShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/PipelineHelper;->getStreamAndOpFlags()I
-Ljava/util/stream/PipelineHelper;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
-Ljava/util/stream/PipelineHelper;->wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;
-Ljava/util/stream/PipelineHelper;->wrapSink(Ljava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/PipelineHelper;->wrapSpliterator(Ljava/util/Spliterator;)Ljava/util/Spliterator;
-Ljava/util/stream/ReferencePipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/ReferencePipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/ReferencePipeline$Head;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/ReferencePipeline$Head;->forEachOrdered(Ljava/util/function/Consumer;)V
-Ljava/util/stream/ReferencePipeline$Head;->opIsStateful()Z
-Ljava/util/stream/ReferencePipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-Ljava/util/stream/ReferencePipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/ReferencePipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/ReferencePipeline$StatefulOp;->opIsStateful()Z
-Ljava/util/stream/ReferencePipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
-Ljava/util/stream/ReferencePipeline$StatelessOp;->opIsStateful()Z
-Ljava/util/stream/ReferencePipeline;-><init>(Ljava/util/function/Supplier;IZ)V
-Ljava/util/stream/ReferencePipeline;-><init>(Ljava/util/Spliterator;IZ)V
-Ljava/util/stream/ReferencePipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
-Ljava/util/stream/ReferencePipeline;->allMatch(Ljava/util/function/Predicate;)Z
-Ljava/util/stream/ReferencePipeline;->anyMatch(Ljava/util/function/Predicate;)Z
-Ljava/util/stream/ReferencePipeline;->collect(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BiConsumer;)Ljava/lang/Object;
-Ljava/util/stream/ReferencePipeline;->collect(Ljava/util/stream/Collector;)Ljava/lang/Object;
-Ljava/util/stream/ReferencePipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
-Ljava/util/stream/ReferencePipeline;->filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
-Ljava/util/stream/ReferencePipeline;->flatMap(Ljava/util/function/Function;)Ljava/util/stream/Stream;
-Ljava/util/stream/ReferencePipeline;->flatMapToDouble(Ljava/util/function/Function;)Ljava/util/stream/DoubleStream;
-Ljava/util/stream/ReferencePipeline;->flatMapToInt(Ljava/util/function/Function;)Ljava/util/stream/IntStream;
-Ljava/util/stream/ReferencePipeline;->flatMapToLong(Ljava/util/function/Function;)Ljava/util/stream/LongStream;
-Ljava/util/stream/ReferencePipeline;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/ReferencePipeline;->forEachOrdered(Ljava/util/function/Consumer;)V
-Ljava/util/stream/ReferencePipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V
-Ljava/util/stream/ReferencePipeline;->getOutputShape()Ljava/util/stream/StreamShape;
-Ljava/util/stream/ReferencePipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator;
-Ljava/util/stream/ReferencePipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
-Ljava/util/stream/ReferencePipeline;->map(Ljava/util/function/Function;)Ljava/util/stream/Stream;
-Ljava/util/stream/ReferencePipeline;->mapToDouble(Ljava/util/function/ToDoubleFunction;)Ljava/util/stream/DoubleStream;
-Ljava/util/stream/ReferencePipeline;->mapToInt(Ljava/util/function/ToIntFunction;)Ljava/util/stream/IntStream;
-Ljava/util/stream/ReferencePipeline;->mapToLong(Ljava/util/function/ToLongFunction;)Ljava/util/stream/LongStream;
-Ljava/util/stream/ReferencePipeline;->max(Ljava/util/Comparator;)Ljava/util/Optional;
-Ljava/util/stream/ReferencePipeline;->min(Ljava/util/Comparator;)Ljava/util/Optional;
-Ljava/util/stream/ReferencePipeline;->noneMatch(Ljava/util/function/Predicate;)Z
-Ljava/util/stream/ReferencePipeline;->peek(Ljava/util/function/Consumer;)Ljava/util/stream/Stream;
-Ljava/util/stream/ReferencePipeline;->reduce(Ljava/lang/Object;Ljava/util/function/BiFunction;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;
-Ljava/util/stream/ReferencePipeline;->reduce(Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;
-Ljava/util/stream/ReferencePipeline;->reduce(Ljava/util/function/BinaryOperator;)Ljava/util/Optional;
-Ljava/util/stream/ReferencePipeline;->sorted(Ljava/util/Comparator;)Ljava/util/stream/Stream;
-Ljava/util/stream/ReferencePipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator;
-Ljava/util/stream/Sink$ChainedDouble;-><init>(Ljava/util/stream/Sink;)V
-Ljava/util/stream/Sink$ChainedDouble;->begin(J)V
-Ljava/util/stream/Sink$ChainedDouble;->cancellationRequested()Z
-Ljava/util/stream/Sink$ChainedDouble;->downstream:Ljava/util/stream/Sink;
-Ljava/util/stream/Sink$ChainedDouble;->end()V
-Ljava/util/stream/Sink$ChainedInt;-><init>(Ljava/util/stream/Sink;)V
-Ljava/util/stream/Sink$ChainedInt;->begin(J)V
-Ljava/util/stream/Sink$ChainedInt;->cancellationRequested()Z
-Ljava/util/stream/Sink$ChainedInt;->downstream:Ljava/util/stream/Sink;
-Ljava/util/stream/Sink$ChainedInt;->end()V
-Ljava/util/stream/Sink$ChainedLong;-><init>(Ljava/util/stream/Sink;)V
-Ljava/util/stream/Sink$ChainedLong;->begin(J)V
-Ljava/util/stream/Sink$ChainedLong;->cancellationRequested()Z
-Ljava/util/stream/Sink$ChainedLong;->downstream:Ljava/util/stream/Sink;
-Ljava/util/stream/Sink$ChainedLong;->end()V
-Ljava/util/stream/Sink$ChainedReference;-><init>(Ljava/util/stream/Sink;)V
-Ljava/util/stream/Sink$ChainedReference;->begin(J)V
-Ljava/util/stream/Sink$ChainedReference;->cancellationRequested()Z
-Ljava/util/stream/Sink$ChainedReference;->downstream:Ljava/util/stream/Sink;
-Ljava/util/stream/Sink$ChainedReference;->end()V
-Ljava/util/stream/Sink$OfDouble;->accept(Ljava/lang/Double;)V
-Ljava/util/stream/Sink$OfInt;->accept(Ljava/lang/Integer;)V
-Ljava/util/stream/Sink$OfLong;->accept(Ljava/lang/Long;)V
-Ljava/util/stream/Sink;->accept(D)V
-Ljava/util/stream/Sink;->accept(I)V
-Ljava/util/stream/Sink;->accept(J)V
-Ljava/util/stream/Sink;->begin(J)V
-Ljava/util/stream/Sink;->cancellationRequested()Z
-Ljava/util/stream/Sink;->end()V
-Ljava/util/stream/SpinedBuffer$OfDouble;-><init>()V
-Ljava/util/stream/SpinedBuffer$OfDouble;-><init>(I)V
-Ljava/util/stream/SpinedBuffer$OfDouble;->arrayForEach([DIILjava/util/function/DoubleConsumer;)V
-Ljava/util/stream/SpinedBuffer$OfDouble;->arrayLength([D)I
-Ljava/util/stream/SpinedBuffer$OfDouble;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/SpinedBuffer$OfDouble;->get(J)D
-Ljava/util/stream/SpinedBuffer$OfDouble;->newArray(I)[D
-Ljava/util/stream/SpinedBuffer$OfDouble;->newArrayArray(I)[[D
-Ljava/util/stream/SpinedBuffer$OfInt;-><init>()V
-Ljava/util/stream/SpinedBuffer$OfInt;-><init>(I)V
-Ljava/util/stream/SpinedBuffer$OfInt;->arrayForEach([IIILjava/util/function/IntConsumer;)V
-Ljava/util/stream/SpinedBuffer$OfInt;->arrayLength([I)I
-Ljava/util/stream/SpinedBuffer$OfInt;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/SpinedBuffer$OfInt;->get(J)I
-Ljava/util/stream/SpinedBuffer$OfInt;->newArray(I)[I
-Ljava/util/stream/SpinedBuffer$OfInt;->newArrayArray(I)[[I
-Ljava/util/stream/SpinedBuffer$OfLong;-><init>()V
-Ljava/util/stream/SpinedBuffer$OfLong;-><init>(I)V
-Ljava/util/stream/SpinedBuffer$OfLong;->arrayForEach([JIILjava/util/function/LongConsumer;)V
-Ljava/util/stream/SpinedBuffer$OfLong;->arrayLength([J)I
-Ljava/util/stream/SpinedBuffer$OfLong;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/SpinedBuffer$OfLong;->get(J)J
-Ljava/util/stream/SpinedBuffer$OfLong;->newArray(I)[J
-Ljava/util/stream/SpinedBuffer$OfLong;->newArrayArray(I)[[J
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->arrayForOne(Ljava/lang/Object;ILjava/lang/Object;)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->arraySpliterator(Ljava/lang/Object;II)Ljava/util/Spliterator$OfPrimitive;
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->lastSpineElementFence:I
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->lastSpineIndex:I
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->newSpliterator(IIII)Ljava/util/Spliterator$OfPrimitive;
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->splChunk:Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->splElementIndex:I
-Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->splSpineIndex:I
-Ljava/util/stream/SpinedBuffer$OfPrimitive;-><init>()V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;-><init>(I)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->arrayForEach(Ljava/lang/Object;IILjava/lang/Object;)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->arrayLength(Ljava/lang/Object;)I
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->asPrimitiveArray()Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->capacity()J
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->chunkFor(J)I
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->clear()V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->copyInto(Ljava/lang/Object;I)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->curChunk:Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->ensureCapacity(J)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->forEach(Ljava/lang/Object;)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->increaseCapacity()V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->inflateSpine()V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->newArray(I)Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->newArrayArray(I)[Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->preAccept()V
-Ljava/util/stream/SpinedBuffer$OfPrimitive;->spine:[Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer;-><init>()V
-Ljava/util/stream/SpinedBuffer;-><init>(I)V
-Ljava/util/stream/SpinedBuffer;->accept(Ljava/lang/Object;)V
-Ljava/util/stream/SpinedBuffer;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer;->capacity()J
-Ljava/util/stream/SpinedBuffer;->clear()V
-Ljava/util/stream/SpinedBuffer;->copyInto([Ljava/lang/Object;I)V
-Ljava/util/stream/SpinedBuffer;->curChunk:[Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer;->ensureCapacity(J)V
-Ljava/util/stream/SpinedBuffer;->forEach(Ljava/util/function/Consumer;)V
-Ljava/util/stream/SpinedBuffer;->get(J)Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer;->increaseCapacity()V
-Ljava/util/stream/SpinedBuffer;->inflateSpine()V
-Ljava/util/stream/SpinedBuffer;->spine:[[Ljava/lang/Object;
-Ljava/util/stream/SpinedBuffer;->SPLITERATOR_CHARACTERISTICS:I
-Ljava/util/stream/StreamOpFlag$MaskBuilder;-><init>(Ljava/util/Map;)V
-Ljava/util/stream/StreamOpFlag$MaskBuilder;->build()Ljava/util/Map;
-Ljava/util/stream/StreamOpFlag$MaskBuilder;->clear(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-Ljava/util/stream/StreamOpFlag$MaskBuilder;->map:Ljava/util/Map;
-Ljava/util/stream/StreamOpFlag$MaskBuilder;->mask(Ljava/util/stream/StreamOpFlag$Type;Ljava/lang/Integer;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-Ljava/util/stream/StreamOpFlag$MaskBuilder;->set(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-Ljava/util/stream/StreamOpFlag$MaskBuilder;->setAndClear(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-Ljava/util/stream/StreamOpFlag$Type;->OP:Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag$Type;->SPLITERATOR:Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag$Type;->STREAM:Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag$Type;->TERMINAL_OP:Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag$Type;->UPSTREAM_TERMINAL_OP:Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag$Type;->valueOf(Ljava/lang/String;)Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag$Type;->values()[Ljava/util/stream/StreamOpFlag$Type;
-Ljava/util/stream/StreamOpFlag;->bitPosition:I
-Ljava/util/stream/StreamOpFlag;->canSet(Ljava/util/stream/StreamOpFlag$Type;)Z
-Ljava/util/stream/StreamOpFlag;->clear()I
-Ljava/util/stream/StreamOpFlag;->clear:I
-Ljava/util/stream/StreamOpFlag;->CLEAR_BITS:I
-Ljava/util/stream/StreamOpFlag;->combineOpFlags(II)I
-Ljava/util/stream/StreamOpFlag;->createFlagMask()I
-Ljava/util/stream/StreamOpFlag;->createMask(Ljava/util/stream/StreamOpFlag$Type;)I
-Ljava/util/stream/StreamOpFlag;->DISTINCT:Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamOpFlag;->FLAG_MASK:I
-Ljava/util/stream/StreamOpFlag;->FLAG_MASK_IS:I
-Ljava/util/stream/StreamOpFlag;->FLAG_MASK_NOT:I
-Ljava/util/stream/StreamOpFlag;->fromCharacteristics(I)I
-Ljava/util/stream/StreamOpFlag;->fromCharacteristics(Ljava/util/Spliterator;)I
-Ljava/util/stream/StreamOpFlag;->getMask(I)I
-Ljava/util/stream/StreamOpFlag;->INITIAL_OPS_VALUE:I
-Ljava/util/stream/StreamOpFlag;->isCleared(I)Z
-Ljava/util/stream/StreamOpFlag;->isKnown(I)Z
-Ljava/util/stream/StreamOpFlag;->isPreserved(I)Z
-Ljava/util/stream/StreamOpFlag;->isStreamFlag()Z
-Ljava/util/stream/StreamOpFlag;->IS_DISTINCT:I
-Ljava/util/stream/StreamOpFlag;->IS_ORDERED:I
-Ljava/util/stream/StreamOpFlag;->IS_SHORT_CIRCUIT:I
-Ljava/util/stream/StreamOpFlag;->IS_SIZED:I
-Ljava/util/stream/StreamOpFlag;->IS_SORTED:I
-Ljava/util/stream/StreamOpFlag;->maskTable:Ljava/util/Map;
-Ljava/util/stream/StreamOpFlag;->NOT_DISTINCT:I
-Ljava/util/stream/StreamOpFlag;->NOT_ORDERED:I
-Ljava/util/stream/StreamOpFlag;->NOT_SIZED:I
-Ljava/util/stream/StreamOpFlag;->NOT_SORTED:I
-Ljava/util/stream/StreamOpFlag;->OP_MASK:I
-Ljava/util/stream/StreamOpFlag;->ORDERED:Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamOpFlag;->preserve:I
-Ljava/util/stream/StreamOpFlag;->PRESERVE_BITS:I
-Ljava/util/stream/StreamOpFlag;->set()I
-Ljava/util/stream/StreamOpFlag;->set(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-Ljava/util/stream/StreamOpFlag;->set:I
-Ljava/util/stream/StreamOpFlag;->SET_BITS:I
-Ljava/util/stream/StreamOpFlag;->SHORT_CIRCUIT:Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamOpFlag;->SIZED:Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamOpFlag;->SORTED:Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamOpFlag;->SPLITERATOR_CHARACTERISTICS_MASK:I
-Ljava/util/stream/StreamOpFlag;->STREAM_MASK:I
-Ljava/util/stream/StreamOpFlag;->TERMINAL_OP_MASK:I
-Ljava/util/stream/StreamOpFlag;->toCharacteristics(I)I
-Ljava/util/stream/StreamOpFlag;->toStreamFlags(I)I
-Ljava/util/stream/StreamOpFlag;->UPSTREAM_TERMINAL_OP_MASK:I
-Ljava/util/stream/StreamOpFlag;->valueOf(Ljava/lang/String;)Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamOpFlag;->values()[Ljava/util/stream/StreamOpFlag;
-Ljava/util/stream/StreamShape;->DOUBLE_VALUE:Ljava/util/stream/StreamShape;
-Ljava/util/stream/StreamShape;->INT_VALUE:Ljava/util/stream/StreamShape;
-Ljava/util/stream/StreamShape;->LONG_VALUE:Ljava/util/stream/StreamShape;
-Ljava/util/stream/StreamShape;->REFERENCE:Ljava/util/stream/StreamShape;
-Ljava/util/stream/StreamShape;->valueOf(Ljava/lang/String;)Ljava/util/stream/StreamShape;
-Ljava/util/stream/StreamShape;->values()[Ljava/util/stream/StreamShape;
-Ljava/util/stream/StreamSupport;-><init>()V
-Ljava/util/stream/TerminalOp;->evaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;
-Ljava/util/stream/TerminalOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;
-Ljava/util/stream/TerminalOp;->getOpFlags()I
-Ljava/util/stream/TerminalOp;->inputShape()Ljava/util/stream/StreamShape;
-Ljava/util/StringJoiner;->delimiter:Ljava/lang/String;
-Ljava/util/StringJoiner;->emptyValue:Ljava/lang/String;
-Ljava/util/StringJoiner;->prefix:Ljava/lang/String;
-Ljava/util/StringJoiner;->prepareBuilder()Ljava/lang/StringBuilder;
-Ljava/util/StringJoiner;->suffix:Ljava/lang/String;
-Ljava/util/StringJoiner;->value:Ljava/lang/StringBuilder;
-Ljava/util/StringTokenizer;->currentPosition:I
-Ljava/util/StringTokenizer;->delimiterCodePoints:[I
-Ljava/util/StringTokenizer;->delimiters:Ljava/lang/String;
-Ljava/util/StringTokenizer;->delimsChanged:Z
-Ljava/util/StringTokenizer;->hasSurrogates:Z
-Ljava/util/StringTokenizer;->isDelimiter(I)Z
-Ljava/util/StringTokenizer;->maxDelimCodePoint:I
-Ljava/util/StringTokenizer;->maxPosition:I
-Ljava/util/StringTokenizer;->newPosition:I
-Ljava/util/StringTokenizer;->retDelims:Z
-Ljava/util/StringTokenizer;->scanToken(I)I
-Ljava/util/StringTokenizer;->setMaxDelimCodePoint()V
-Ljava/util/StringTokenizer;->skipDelimiters(I)I
-Ljava/util/StringTokenizer;->str:Ljava/lang/String;
-Ljava/util/TaskQueue;-><init>()V
-Ljava/util/TaskQueue;->add(Ljava/util/TimerTask;)V
-Ljava/util/TaskQueue;->clear()V
-Ljava/util/TaskQueue;->fixDown(I)V
-Ljava/util/TaskQueue;->fixUp(I)V
-Ljava/util/TaskQueue;->get(I)Ljava/util/TimerTask;
-Ljava/util/TaskQueue;->getMin()Ljava/util/TimerTask;
-Ljava/util/TaskQueue;->heapify()V
-Ljava/util/TaskQueue;->isEmpty()Z
-Ljava/util/TaskQueue;->queue:[Ljava/util/TimerTask;
-Ljava/util/TaskQueue;->quickRemove(I)V
-Ljava/util/TaskQueue;->removeMin()V
-Ljava/util/TaskQueue;->rescheduleMin(J)V
-Ljava/util/TaskQueue;->size()I
-Ljava/util/TaskQueue;->size:I
-Ljava/util/Timer;->nextSerialNumber:Ljava/util/concurrent/atomic/AtomicInteger;
-Ljava/util/Timer;->queue:Ljava/util/TaskQueue;
-Ljava/util/Timer;->sched(Ljava/util/TimerTask;JJ)V
-Ljava/util/Timer;->serialNumber()I
-Ljava/util/Timer;->thread:Ljava/util/TimerThread;
-Ljava/util/Timer;->threadReaper:Ljava/lang/Object;
-Ljava/util/TimerTask;->CANCELLED:I
-Ljava/util/TimerTask;->EXECUTED:I
-Ljava/util/TimerTask;->lock:Ljava/lang/Object;
-Ljava/util/TimerTask;->nextExecutionTime:J
-Ljava/util/TimerTask;->SCHEDULED:I
-Ljava/util/TimerTask;->state:I
-Ljava/util/TimerTask;->VIRGIN:I
-Ljava/util/TimerThread;-><init>(Ljava/util/TaskQueue;)V
-Ljava/util/TimerThread;->mainLoop()V
-Ljava/util/TimerThread;->newTasksMayBeScheduled:Z
-Ljava/util/TimerThread;->queue:Ljava/util/TaskQueue;
-Ljava/util/TimeZone$NoImagePreloadHolder;-><init>()V
-Ljava/util/TimeZone$NoImagePreloadHolder;->CUSTOM_ZONE_ID_PATTERN:Ljava/util/regex/Pattern;
-Ljava/util/TimeZone;->appendNumber(Ljava/lang/StringBuilder;II)V
-Ljava/util/TimeZone;->createGmtOffsetString(ZZI)Ljava/lang/String;
-Ljava/util/TimeZone;->defaultTimeZone:Ljava/util/TimeZone;
-Ljava/util/TimeZone;->getCustomTimeZone(Ljava/lang/String;)Ljava/util/TimeZone;
-Ljava/util/TimeZone;->getDefaultRef()Ljava/util/TimeZone;
-Ljava/util/TimeZone;->getOffsets(J[I)I
-Ljava/util/TimeZone;->getSystemGMTOffsetID()Ljava/lang/String;
-Ljava/util/TimeZone;->getSystemTimeZoneID(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Ljava/util/TimeZone;->GMT:Ljava/util/TimeZone;
-Ljava/util/TimeZone;->ID:Ljava/lang/String;
-Ljava/util/TimeZone;->NO_TIMEZONE:Ljava/util/TimeZone;
-Ljava/util/TimeZone;->UTC:Ljava/util/TimeZone;
-Ljava/util/TreeMap$AscendingSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V
-Ljava/util/TreeMap$AscendingSubMap;->descendingKeyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap$AscendingSubMap;->keyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap$AscendingSubMap;->keySpliterator()Ljava/util/Spliterator;
-Ljava/util/TreeMap$AscendingSubMap;->subCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$AscendingSubMap;->subFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$AscendingSubMap;->subHigher(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$AscendingSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$AscendingSubMap;->subLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$AscendingSubMap;->subLowest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$DescendingKeySpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
-Ljava/util/TreeMap$DescendingKeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/TreeMap$DescendingKeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$DescendingSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V
-Ljava/util/TreeMap$DescendingSubMap;->descendingKeyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap$DescendingSubMap;->keyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap$DescendingSubMap;->keySpliterator()Ljava/util/Spliterator;
-Ljava/util/TreeMap$DescendingSubMap;->reverseComparator:Ljava/util/Comparator;
-Ljava/util/TreeMap$DescendingSubMap;->subCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$DescendingSubMap;->subFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$DescendingSubMap;->subHigher(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$DescendingSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$DescendingSubMap;->subLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$DescendingSubMap;->subLowest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$EntrySpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
-Ljava/util/TreeMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/TreeMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$KeySet;-><init>(Ljava/util/NavigableMap;)V
-Ljava/util/TreeMap$KeySet;->m:Ljava/util/NavigableMap;
-Ljava/util/TreeMap$KeySpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
-Ljava/util/TreeMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/TreeMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$NavigableSubMap$DescendingSubMapKeyIterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/TreeMap$NavigableSubMap$DescendingSubMapKeyIterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$NavigableSubMap$EntrySetView;->size:I
-Ljava/util/TreeMap$NavigableSubMap$EntrySetView;->sizeModCount:I
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->expectedModCount:I
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->fenceKey:Ljava/lang/Object;
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->lastReturned:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->next:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->nextEntry()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->prevEntry()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->removeAscending()V
-Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->removeDescending()V
-Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap$NavigableSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V
-Ljava/util/TreeMap$NavigableSubMap;->absCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absHigher(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absHighest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absHighFence()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absLowest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->absLowFence()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->descendingKeyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap$NavigableSubMap;->descendingMapView:Ljava/util/NavigableMap;
-Ljava/util/TreeMap$NavigableSubMap;->entrySetView:Ljava/util/TreeMap$NavigableSubMap$EntrySetView;
-Ljava/util/TreeMap$NavigableSubMap;->fromStart:Z
-Ljava/util/TreeMap$NavigableSubMap;->hi:Ljava/lang/Object;
-Ljava/util/TreeMap$NavigableSubMap;->hiInclusive:Z
-Ljava/util/TreeMap$NavigableSubMap;->inClosedRange(Ljava/lang/Object;)Z
-Ljava/util/TreeMap$NavigableSubMap;->inRange(Ljava/lang/Object;)Z
-Ljava/util/TreeMap$NavigableSubMap;->inRange(Ljava/lang/Object;Z)Z
-Ljava/util/TreeMap$NavigableSubMap;->keyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap$NavigableSubMap;->keySpliterator()Ljava/util/Spliterator;
-Ljava/util/TreeMap$NavigableSubMap;->lo:Ljava/lang/Object;
-Ljava/util/TreeMap$NavigableSubMap;->loInclusive:Z
-Ljava/util/TreeMap$NavigableSubMap;->m:Ljava/util/TreeMap;
-Ljava/util/TreeMap$NavigableSubMap;->navigableKeySetView:Ljava/util/TreeMap$KeySet;
-Ljava/util/TreeMap$NavigableSubMap;->subCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->subFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->subHigher(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->subLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->subLowest()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$NavigableSubMap;->toEnd:Z
-Ljava/util/TreeMap$NavigableSubMap;->tooHigh(Ljava/lang/Object;)Z
-Ljava/util/TreeMap$NavigableSubMap;->tooLow(Ljava/lang/Object;)Z
-Ljava/util/TreeMap$PrivateEntryIterator;->expectedModCount:I
-Ljava/util/TreeMap$PrivateEntryIterator;->lastReturned:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$PrivateEntryIterator;->next:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$PrivateEntryIterator;->nextEntry()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$PrivateEntryIterator;->prevEntry()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$SubMap;->fromKey:Ljava/lang/Object;
-Ljava/util/TreeMap$SubMap;->fromStart:Z
-Ljava/util/TreeMap$SubMap;->toEnd:Z
-Ljava/util/TreeMap$SubMap;->toKey:Ljava/lang/Object;
-Ljava/util/TreeMap$TreeMapEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap$TreeMapEntry;->color:Z
-Ljava/util/TreeMap$TreeMapEntry;->key:Ljava/lang/Object;
-Ljava/util/TreeMap$TreeMapEntry;->left:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$TreeMapEntry;->parent:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$TreeMapEntry;->right:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$TreeMapEntry;->value:Ljava/lang/Object;
-Ljava/util/TreeMap$TreeMapSpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
-Ljava/util/TreeMap$TreeMapSpliterator;->current:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$TreeMapSpliterator;->est:I
-Ljava/util/TreeMap$TreeMapSpliterator;->estimateSize()J
-Ljava/util/TreeMap$TreeMapSpliterator;->expectedModCount:I
-Ljava/util/TreeMap$TreeMapSpliterator;->fence:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap$TreeMapSpliterator;->getEstimate()I
-Ljava/util/TreeMap$TreeMapSpliterator;->side:I
-Ljava/util/TreeMap$TreeMapSpliterator;->tree:Ljava/util/TreeMap;
-Ljava/util/TreeMap$ValueSpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V
-Ljava/util/TreeMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/TreeMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/TreeMap;->addAllForTreeSet(Ljava/util/SortedSet;Ljava/lang/Object;)V
-Ljava/util/TreeMap;->BLACK:Z
-Ljava/util/TreeMap;->buildFromSorted(IIIILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->buildFromSorted(ILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)V
-Ljava/util/TreeMap;->colorOf(Ljava/util/TreeMap$TreeMapEntry;)Z
-Ljava/util/TreeMap;->comparator:Ljava/util/Comparator;
-Ljava/util/TreeMap;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-Ljava/util/TreeMap;->computeRedLevel(I)I
-Ljava/util/TreeMap;->deleteEntry(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap;->descendingKeyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap;->descendingKeySpliterator()Ljava/util/Spliterator;
-Ljava/util/TreeMap;->descendingMap:Ljava/util/NavigableMap;
-Ljava/util/TreeMap;->entrySet:Ljava/util/TreeMap$EntrySet;
-Ljava/util/TreeMap;->exportEntry(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/Map$Entry;
-Ljava/util/TreeMap;->fixAfterDeletion(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap;->fixAfterInsertion(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap;->getCeilingEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getEntryUsingComparator(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getFirstEntry()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getFloorEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getHigherEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getLastEntry()Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->getLowerEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->key(Ljava/util/TreeMap$TreeMapEntry;)Ljava/lang/Object;
-Ljava/util/TreeMap;->keyIterator()Ljava/util/Iterator;
-Ljava/util/TreeMap;->keyOrNull(Ljava/util/TreeMap$TreeMapEntry;)Ljava/lang/Object;
-Ljava/util/TreeMap;->keySpliterator()Ljava/util/Spliterator;
-Ljava/util/TreeMap;->keySpliteratorFor(Ljava/util/NavigableMap;)Ljava/util/Spliterator;
-Ljava/util/TreeMap;->leftOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->modCount:I
-Ljava/util/TreeMap;->navigableKeySet:Ljava/util/TreeMap$KeySet;
-Ljava/util/TreeMap;->parentOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->predecessor(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->readTreeSet(ILjava/io/ObjectInputStream;Ljava/lang/Object;)V
-Ljava/util/TreeMap;->RED:Z
-Ljava/util/TreeMap;->rightOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->root:Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->rotateLeft(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap;->rotateRight(Ljava/util/TreeMap$TreeMapEntry;)V
-Ljava/util/TreeMap;->setColor(Ljava/util/TreeMap$TreeMapEntry;Z)V
-Ljava/util/TreeMap;->size:I
-Ljava/util/TreeMap;->successor(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
-Ljava/util/TreeMap;->UNBOUNDED:Ljava/lang/Object;
-Ljava/util/TreeMap;->valEquals(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/TreeSet;-><init>(Ljava/util/NavigableMap;)V
-Ljava/util/TreeSet;->m:Ljava/util/NavigableMap;
-Ljava/util/TreeSet;->PRESENT:Ljava/lang/Object;
-Ljava/util/UnknownFormatConversionException;->s:Ljava/lang/String;
-Ljava/util/UnknownFormatFlagsException;->flags:Ljava/lang/String;
-Ljava/util/UUID$Holder;-><init>()V
-Ljava/util/UUID$Holder;->numberGenerator:Ljava/security/SecureRandom;
-Ljava/util/UUID;-><init>([B)V
-Ljava/util/UUID;->digits(JI)Ljava/lang/String;
-Ljava/util/Vector$Itr;->checkForComodification()V
-Ljava/util/Vector$Itr;->cursor:I
-Ljava/util/Vector$Itr;->expectedModCount:I
-Ljava/util/Vector$Itr;->lastRet:I
-Ljava/util/Vector$Itr;->limit:I
-Ljava/util/Vector$VectorSpliterator;-><init>(Ljava/util/Vector;[Ljava/lang/Object;III)V
-Ljava/util/Vector$VectorSpliterator;->array:[Ljava/lang/Object;
-Ljava/util/Vector$VectorSpliterator;->expectedModCount:I
-Ljava/util/Vector$VectorSpliterator;->fence:I
-Ljava/util/Vector$VectorSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/Vector$VectorSpliterator;->getFence()I
-Ljava/util/Vector$VectorSpliterator;->index:I
-Ljava/util/Vector$VectorSpliterator;->list:Ljava/util/Vector;
-Ljava/util/Vector$VectorSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/Vector;->ensureCapacityHelper(I)V
-Ljava/util/Vector;->grow(I)V
-Ljava/util/Vector;->hugeCapacity(I)I
-Ljava/util/Vector;->MAX_ARRAY_SIZE:I
-Ljava/util/WeakHashMap$Entry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;ILjava/util/WeakHashMap$Entry;)V
-Ljava/util/WeakHashMap$Entry;->hash:I
-Ljava/util/WeakHashMap$Entry;->next:Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap$Entry;->value:Ljava/lang/Object;
-Ljava/util/WeakHashMap$EntrySet;->deepCopy()Ljava/util/List;
-Ljava/util/WeakHashMap$EntrySpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V
-Ljava/util/WeakHashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/WeakHashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/WeakHashMap$HashIterator;->currentKey:Ljava/lang/Object;
-Ljava/util/WeakHashMap$HashIterator;->entry:Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap$HashIterator;->expectedModCount:I
-Ljava/util/WeakHashMap$HashIterator;->index:I
-Ljava/util/WeakHashMap$HashIterator;->lastReturned:Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap$HashIterator;->nextEntry()Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap$HashIterator;->nextKey:Ljava/lang/Object;
-Ljava/util/WeakHashMap$KeySpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V
-Ljava/util/WeakHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/WeakHashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/WeakHashMap$ValueSpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V
-Ljava/util/WeakHashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-Ljava/util/WeakHashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->current:Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->est:I
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->estimateSize()J
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->expectedModCount:I
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->fence:I
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->getFence()I
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->index:I
-Ljava/util/WeakHashMap$WeakHashMapSpliterator;->map:Ljava/util/WeakHashMap;
-Ljava/util/WeakHashMap;->containsNullValue()Z
-Ljava/util/WeakHashMap;->DEFAULT_INITIAL_CAPACITY:I
-Ljava/util/WeakHashMap;->DEFAULT_LOAD_FACTOR:F
-Ljava/util/WeakHashMap;->entrySet:Ljava/util/Set;
-Ljava/util/WeakHashMap;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z
-Ljava/util/WeakHashMap;->expungeStaleEntries()V
-Ljava/util/WeakHashMap;->getEntry(Ljava/lang/Object;)Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap;->getTable()[Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap;->hash(Ljava/lang/Object;)I
-Ljava/util/WeakHashMap;->indexFor(II)I
-Ljava/util/WeakHashMap;->loadFactor:F
-Ljava/util/WeakHashMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/WeakHashMap;->MAXIMUM_CAPACITY:I
-Ljava/util/WeakHashMap;->modCount:I
-Ljava/util/WeakHashMap;->newTable(I)[Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap;->NULL_KEY:Ljava/lang/Object;
-Ljava/util/WeakHashMap;->queue:Ljava/lang/ref/ReferenceQueue;
-Ljava/util/WeakHashMap;->removeMapping(Ljava/lang/Object;)Z
-Ljava/util/WeakHashMap;->resize(I)V
-Ljava/util/WeakHashMap;->size:I
-Ljava/util/WeakHashMap;->table:[Ljava/util/WeakHashMap$Entry;
-Ljava/util/WeakHashMap;->threshold:I
-Ljava/util/WeakHashMap;->transfer([Ljava/util/WeakHashMap$Entry;[Ljava/util/WeakHashMap$Entry;)V
-Ljava/util/WeakHashMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object;
-Ljava/util/zip/Adler32;->adler:I
-Ljava/util/zip/Adler32;->updateByteBuffer(IJII)I
-Ljava/util/zip/Adler32;->updateBytes(I[BII)I
-Ljava/util/zip/CheckedInputStream;->cksum:Ljava/util/zip/Checksum;
-Ljava/util/zip/CheckedOutputStream;->cksum:Ljava/util/zip/Checksum;
-Ljava/util/zip/CRC32;->crc:I
-Ljava/util/zip/CRC32;->updateByteBuffer(IJII)I
-Ljava/util/zip/CRC32;->updateBytes(I[BII)I
-Ljava/util/zip/Deflater;->bytesRead:J
-Ljava/util/zip/Deflater;->bytesWritten:J
-Ljava/util/zip/Deflater;->deflateBytes(J[BIII)I
-Ljava/util/zip/Deflater;->end(J)V
-Ljava/util/zip/Deflater;->ensureOpen()V
-Ljava/util/zip/Deflater;->getAdler(J)I
-Ljava/util/zip/Deflater;->guard:Ldalvik/system/CloseGuard;
-Ljava/util/zip/Deflater;->init(IIZ)J
-Ljava/util/zip/Deflater;->reset(J)V
-Ljava/util/zip/Deflater;->setDictionary(J[BII)V
-Ljava/util/zip/Deflater;->zsRef:Ljava/util/zip/ZStreamRef;
-Ljava/util/zip/DeflaterInputStream;->ensureOpen()V
-Ljava/util/zip/DeflaterInputStream;->rbuf:[B
-Ljava/util/zip/DeflaterInputStream;->reachEOF:Z
-Ljava/util/zip/DeflaterInputStream;->usesDefaultDeflater:Z
-Ljava/util/zip/DeflaterOutputStream;->closed:Z
-Ljava/util/zip/DeflaterOutputStream;->syncFlush:Z
-Ljava/util/zip/DeflaterOutputStream;->usesDefaultDeflater:Z
-Ljava/util/zip/GZIPInputStream;->closed:Z
-Ljava/util/zip/GZIPInputStream;->ensureOpen()V
-Ljava/util/zip/GZIPInputStream;->FCOMMENT:I
-Ljava/util/zip/GZIPInputStream;->FEXTRA:I
-Ljava/util/zip/GZIPInputStream;->FHCRC:I
-Ljava/util/zip/GZIPInputStream;->FNAME:I
-Ljava/util/zip/GZIPInputStream;->FTEXT:I
-Ljava/util/zip/GZIPInputStream;->readHeader(Ljava/io/InputStream;)I
-Ljava/util/zip/GZIPInputStream;->readTrailer()Z
-Ljava/util/zip/GZIPInputStream;->readUByte(Ljava/io/InputStream;)I
-Ljava/util/zip/GZIPInputStream;->readUInt(Ljava/io/InputStream;)J
-Ljava/util/zip/GZIPInputStream;->readUShort(Ljava/io/InputStream;)I
-Ljava/util/zip/GZIPInputStream;->skipBytes(Ljava/io/InputStream;I)V
-Ljava/util/zip/GZIPInputStream;->tmpbuf:[B
-Ljava/util/zip/GZIPOutputStream;->GZIP_MAGIC:I
-Ljava/util/zip/GZIPOutputStream;->TRAILER_SIZE:I
-Ljava/util/zip/GZIPOutputStream;->writeHeader()V
-Ljava/util/zip/GZIPOutputStream;->writeInt(I[BI)V
-Ljava/util/zip/GZIPOutputStream;->writeShort(I[BI)V
-Ljava/util/zip/GZIPOutputStream;->writeTrailer([BI)V
-Ljava/util/zip/Inflater;->bytesRead:J
-Ljava/util/zip/Inflater;->bytesWritten:J
-Ljava/util/zip/Inflater;->defaultBuf:[B
-Ljava/util/zip/Inflater;->end(J)V
-Ljava/util/zip/Inflater;->ended()Z
-Ljava/util/zip/Inflater;->ensureOpen()V
-Ljava/util/zip/Inflater;->getAdler(J)I
-Ljava/util/zip/Inflater;->guard:Ldalvik/system/CloseGuard;
-Ljava/util/zip/Inflater;->inflateBytes(J[BII)I
-Ljava/util/zip/Inflater;->init(Z)J
-Ljava/util/zip/Inflater;->reset(J)V
-Ljava/util/zip/Inflater;->setDictionary(J[BII)V
-Ljava/util/zip/Inflater;->zsRef:Ljava/util/zip/ZStreamRef;
-Ljava/util/zip/InflaterInputStream;->b:[B
-Ljava/util/zip/InflaterInputStream;->ensureOpen()V
-Ljava/util/zip/InflaterInputStream;->reachEOF:Z
-Ljava/util/zip/InflaterInputStream;->singleByteBuf:[B
-Ljava/util/zip/InflaterOutputStream;->closed:Z
-Ljava/util/zip/InflaterOutputStream;->ensureOpen()V
-Ljava/util/zip/InflaterOutputStream;->usesDefaultInflater:Z
-Ljava/util/zip/InflaterOutputStream;->wbuf:[B
-Ljava/util/zip/ZipCoder;-><init>(Ljava/nio/charset/Charset;)V
-Ljava/util/zip/ZipCoder;->cs:Ljava/nio/charset/Charset;
-Ljava/util/zip/ZipCoder;->dec:Ljava/nio/charset/CharsetDecoder;
-Ljava/util/zip/ZipCoder;->decoder()Ljava/nio/charset/CharsetDecoder;
-Ljava/util/zip/ZipCoder;->enc:Ljava/nio/charset/CharsetEncoder;
-Ljava/util/zip/ZipCoder;->encoder()Ljava/nio/charset/CharsetEncoder;
-Ljava/util/zip/ZipCoder;->get(Ljava/nio/charset/Charset;)Ljava/util/zip/ZipCoder;
-Ljava/util/zip/ZipCoder;->getBytes(Ljava/lang/String;)[B
-Ljava/util/zip/ZipCoder;->getBytesUTF8(Ljava/lang/String;)[B
-Ljava/util/zip/ZipCoder;->isUTF8()Z
-Ljava/util/zip/ZipCoder;->isUTF8:Z
-Ljava/util/zip/ZipCoder;->toString([B)Ljava/lang/String;
-Ljava/util/zip/ZipCoder;->toString([BI)Ljava/lang/String;
-Ljava/util/zip/ZipCoder;->toStringUTF8([BI)Ljava/lang/String;
-Ljava/util/zip/ZipCoder;->utf8:Ljava/util/zip/ZipCoder;
-Ljava/util/zip/ZipEntry;-><init>()V
-Ljava/util/zip/ZipEntry;->atime:Ljava/nio/file/attribute/FileTime;
-Ljava/util/zip/ZipEntry;->comment:Ljava/lang/String;
-Ljava/util/zip/ZipEntry;->crc:J
-Ljava/util/zip/ZipEntry;->csize:J
-Ljava/util/zip/ZipEntry;->ctime:Ljava/nio/file/attribute/FileTime;
-Ljava/util/zip/ZipEntry;->dataOffset:J
-Ljava/util/zip/ZipEntry;->DOSTIME_BEFORE_1980:J
-Ljava/util/zip/ZipEntry;->extra:[B
-Ljava/util/zip/ZipEntry;->flag:I
-Ljava/util/zip/ZipEntry;->getDataOffset()J
-Ljava/util/zip/ZipEntry;->mtime:Ljava/nio/file/attribute/FileTime;
-Ljava/util/zip/ZipEntry;->name:Ljava/lang/String;
-Ljava/util/zip/ZipEntry;->setExtra0([BZ)V
-Ljava/util/zip/ZipEntry;->size:J
-Ljava/util/zip/ZipEntry;->UPPER_DOSTIME_BOUND:J
-Ljava/util/zip/ZipEntry;->xdostime:J
-Ljava/util/zip/ZipFile$ZipEntryIterator;->i:I
-Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;->closeRequested:Z
-Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;->eof:Z
-Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;->zfin:Ljava/util/zip/ZipFile$ZipFileInputStream;
-Ljava/util/zip/ZipFile$ZipFileInputStream;->jzentry:J
-Ljava/util/zip/ZipFile$ZipFileInputStream;->pos:J
-Ljava/util/zip/ZipFile$ZipFileInputStream;->rem:J
-Ljava/util/zip/ZipFile$ZipFileInputStream;->size()J
-Ljava/util/zip/ZipFile$ZipFileInputStream;->size:J
-Ljava/util/zip/ZipFile$ZipFileInputStream;->zfisCloseRequested:Z
-Ljava/util/zip/ZipFile;->closeRequested:Z
-Ljava/util/zip/ZipFile;->DEFLATED:I
-Ljava/util/zip/ZipFile;->ensureOpen()V
-Ljava/util/zip/ZipFile;->ensureOpenOrZipException()V
-Ljava/util/zip/ZipFile;->fileToRemoveOnClose:Ljava/io/File;
-Ljava/util/zip/ZipFile;->freeEntry(JJ)V
-Ljava/util/zip/ZipFile;->getCommentBytes(J)[B
-Ljava/util/zip/ZipFile;->getEntryBytes(JI)[B
-Ljava/util/zip/ZipFile;->getEntryCrc(J)J
-Ljava/util/zip/ZipFile;->getEntryCSize(J)J
-Ljava/util/zip/ZipFile;->getEntryFlag(J)I
-Ljava/util/zip/ZipFile;->getEntryMethod(J)I
-Ljava/util/zip/ZipFile;->getEntrySize(J)J
-Ljava/util/zip/ZipFile;->getEntryTime(J)J
-Ljava/util/zip/ZipFile;->getFileDescriptor()I
-Ljava/util/zip/ZipFile;->getFileDescriptor(J)I
-Ljava/util/zip/ZipFile;->getInflater()Ljava/util/zip/Inflater;
-Ljava/util/zip/ZipFile;->getNextEntry(JI)J
-Ljava/util/zip/ZipFile;->getTotal(J)I
-Ljava/util/zip/ZipFile;->getZipEntry(Ljava/lang/String;J)Ljava/util/zip/ZipEntry;
-Ljava/util/zip/ZipFile;->getZipMessage(J)Ljava/lang/String;
-Ljava/util/zip/ZipFile;->guard:Ldalvik/system/CloseGuard;
-Ljava/util/zip/ZipFile;->inflaterCache:Ljava/util/Deque;
-Ljava/util/zip/ZipFile;->JZENTRY_COMMENT:I
-Ljava/util/zip/ZipFile;->JZENTRY_EXTRA:I
-Ljava/util/zip/ZipFile;->JZENTRY_NAME:I
-Ljava/util/zip/ZipFile;->locsig:Z
-Ljava/util/zip/ZipFile;->name:Ljava/lang/String;
-Ljava/util/zip/ZipFile;->open(Ljava/lang/String;IJZ)J
-Ljava/util/zip/ZipFile;->read(JJJ[BII)I
-Ljava/util/zip/ZipFile;->releaseInflater(Ljava/util/zip/Inflater;)V
-Ljava/util/zip/ZipFile;->startsWithLOC(J)Z
-Ljava/util/zip/ZipFile;->startsWithLocHeader()Z
-Ljava/util/zip/ZipFile;->STORED:I
-Ljava/util/zip/ZipFile;->streams:Ljava/util/Map;
-Ljava/util/zip/ZipFile;->total:I
-Ljava/util/zip/ZipFile;->usemmap:Z
-Ljava/util/zip/ZipFile;->zc:Ljava/util/zip/ZipCoder;
-Ljava/util/zip/ZipInputStream;->b:[B
-Ljava/util/zip/ZipInputStream;->closed:Z
-Ljava/util/zip/ZipInputStream;->crc:Ljava/util/zip/CRC32;
-Ljava/util/zip/ZipInputStream;->DEFLATED:I
-Ljava/util/zip/ZipInputStream;->ensureOpen()V
-Ljava/util/zip/ZipInputStream;->entry:Ljava/util/zip/ZipEntry;
-Ljava/util/zip/ZipInputStream;->entryEOF:Z
-Ljava/util/zip/ZipInputStream;->readEnd(Ljava/util/zip/ZipEntry;)V
-Ljava/util/zip/ZipInputStream;->readFully([BII)V
-Ljava/util/zip/ZipInputStream;->readLOC()Ljava/util/zip/ZipEntry;
-Ljava/util/zip/ZipInputStream;->remaining:J
-Ljava/util/zip/ZipInputStream;->STORED:I
-Ljava/util/zip/ZipInputStream;->zc:Ljava/util/zip/ZipCoder;
-Ljava/util/zip/ZipOutputStream$XEntry;-><init>(Ljava/util/zip/ZipEntry;J)V
-Ljava/util/zip/ZipOutputStream$XEntry;->entry:Ljava/util/zip/ZipEntry;
-Ljava/util/zip/ZipOutputStream$XEntry;->offset:J
-Ljava/util/zip/ZipOutputStream;->closed:Z
-Ljava/util/zip/ZipOutputStream;->comment:[B
-Ljava/util/zip/ZipOutputStream;->crc:Ljava/util/zip/CRC32;
-Ljava/util/zip/ZipOutputStream;->current:Ljava/util/zip/ZipOutputStream$XEntry;
-Ljava/util/zip/ZipOutputStream;->ensureOpen()V
-Ljava/util/zip/ZipOutputStream;->finished:Z
-Ljava/util/zip/ZipOutputStream;->getExtraLen([B)I
-Ljava/util/zip/ZipOutputStream;->inhibitZip64:Z
-Ljava/util/zip/ZipOutputStream;->locoff:J
-Ljava/util/zip/ZipOutputStream;->version(Ljava/util/zip/ZipEntry;)I
-Ljava/util/zip/ZipOutputStream;->writeByte(I)V
-Ljava/util/zip/ZipOutputStream;->writeBytes([BII)V
-Ljava/util/zip/ZipOutputStream;->writeCEN(Ljava/util/zip/ZipOutputStream$XEntry;)V
-Ljava/util/zip/ZipOutputStream;->writeEND(JJ)V
-Ljava/util/zip/ZipOutputStream;->writeEXT(Ljava/util/zip/ZipEntry;)V
-Ljava/util/zip/ZipOutputStream;->writeExtra([B)V
-Ljava/util/zip/ZipOutputStream;->writeInt(J)V
-Ljava/util/zip/ZipOutputStream;->writeLOC(Ljava/util/zip/ZipOutputStream$XEntry;)V
-Ljava/util/zip/ZipOutputStream;->writeLong(J)V
-Ljava/util/zip/ZipOutputStream;->writeShort(I)V
-Ljava/util/zip/ZipOutputStream;->xentries:Ljava/util/Vector;
-Ljava/util/zip/ZipOutputStream;->zc:Ljava/util/zip/ZipCoder;
-Ljava/util/zip/ZStreamRef;-><init>(J)V
-Ljava/util/zip/ZStreamRef;->address()J
-Ljava/util/zip/ZStreamRef;->address:J
-Ljava/util/zip/ZStreamRef;->clear()V
-Ljavax/crypto/Cipher$CipherSpiAndProvider;-><init>(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V
-Ljavax/crypto/Cipher$CipherSpiAndProvider;->cipherSpi:Ljavax/crypto/CipherSpi;
-Ljavax/crypto/Cipher$CipherSpiAndProvider;->provider:Ljava/security/Provider;
-Ljavax/crypto/Cipher$InitParams;-><init>(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/SecureRandom;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;)V
-Ljavax/crypto/Cipher$InitParams;->initType:Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$InitParams;->key:Ljava/security/Key;
-Ljavax/crypto/Cipher$InitParams;->opmode:I
-Ljavax/crypto/Cipher$InitParams;->params:Ljava/security/AlgorithmParameters;
-Ljavax/crypto/Cipher$InitParams;->random:Ljava/security/SecureRandom;
-Ljavax/crypto/Cipher$InitParams;->spec:Ljava/security/spec/AlgorithmParameterSpec;
-Ljavax/crypto/Cipher$InitType;->ALGORITHM_PARAMS:Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$InitType;->ALGORITHM_PARAM_SPEC:Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$InitType;->KEY:Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$InitType;->valueOf(Ljava/lang/String;)Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$InitType;->values()[Ljavax/crypto/Cipher$InitType;
-Ljavax/crypto/Cipher$NeedToSet;->BOTH:Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$NeedToSet;->MODE:Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$NeedToSet;->NONE:Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$NeedToSet;->PADDING:Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$NeedToSet;->valueOf(Ljava/lang/String;)Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$NeedToSet;->values()[Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->getCurrentSpi(Ljavax/crypto/CipherSpi;)Ljavax/crypto/CipherSpi;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->initSpiLock:Ljava/lang/Object;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->setCipherSpiImplAndProvider(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->specifiedProvider:Ljava/security/Provider;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->specifiedSpi:Ljavax/crypto/CipherSpi;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->updateAndGetSpiAndProvider(Ljavax/crypto/Cipher$InitParams;Ljavax/crypto/CipherSpi;Ljava/security/Provider;)Ljavax/crypto/Cipher$CipherSpiAndProvider;
-Ljavax/crypto/Cipher$SpiAndProviderUpdater;->updateAndGetSpiAndProvider(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)Ljavax/crypto/Cipher$CipherSpiAndProvider;
-Ljavax/crypto/Cipher$Transform;-><init>(Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;)V
-Ljavax/crypto/Cipher$Transform;->name:Ljava/lang/String;
-Ljavax/crypto/Cipher$Transform;->needToSet:Ljavax/crypto/Cipher$NeedToSet;
-Ljavax/crypto/Cipher;-><init>(Ljavax/crypto/CipherSpi;Ljava/security/Provider;Ljava/lang/String;[Ljava/lang/String;)V
-Ljavax/crypto/Cipher;->ATTRIBUTE_MODES:Ljava/lang/String;
-Ljavax/crypto/Cipher;->ATTRIBUTE_PADDINGS:Ljava/lang/String;
-Ljavax/crypto/Cipher;->checkCipherState()V
-Ljavax/crypto/Cipher;->checkOpmode(I)V
-Ljavax/crypto/Cipher;->chooseProvider(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V
-Ljavax/crypto/Cipher;->createCipher(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher;
-Ljavax/crypto/Cipher;->exmech:Ljavax/crypto/ExemptionMechanism;
-Ljavax/crypto/Cipher;->getAlgorithmParameterSpec(Ljava/security/AlgorithmParameters;)Ljava/security/spec/AlgorithmParameterSpec;
-Ljavax/crypto/Cipher;->getCurrentSpi()Ljavax/crypto/CipherSpi;
-Ljavax/crypto/Cipher;->getOpmodeString(I)Ljava/lang/String;
-Ljavax/crypto/Cipher;->initialized:Z
-Ljavax/crypto/Cipher;->KEY_USAGE_EXTENSION_OID:Ljava/lang/String;
-Ljavax/crypto/Cipher;->matchAttribute(Ljava/security/Provider$Service;Ljava/lang/String;Ljava/lang/String;)Z
-Ljavax/crypto/Cipher;->opmode:I
-Ljavax/crypto/Cipher;->provider:Ljava/security/Provider;
-Ljavax/crypto/Cipher;->spi:Ljavax/crypto/CipherSpi;
-Ljavax/crypto/Cipher;->spiAndProviderUpdater:Ljavax/crypto/Cipher$SpiAndProviderUpdater;
-Ljavax/crypto/Cipher;->tokenizedTransformation:[Ljava/lang/String;
-Ljavax/crypto/Cipher;->tokenizeTransformation(Ljava/lang/String;)[Ljava/lang/String;
-Ljavax/crypto/Cipher;->transformation:Ljava/lang/String;
-Ljavax/crypto/Cipher;->tryCombinations(Ljavax/crypto/Cipher$InitParams;Ljava/security/Provider;[Ljava/lang/String;)Ljavax/crypto/Cipher$CipherSpiAndProvider;
-Ljavax/crypto/Cipher;->tryTransformWithProvider(Ljavax/crypto/Cipher$InitParams;[Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;Ljava/security/Provider$Service;)Ljavax/crypto/Cipher$CipherSpiAndProvider;
-Ljavax/crypto/Cipher;->updateProviderIfNeeded()V
-Ljavax/crypto/CipherInputStream;->cipher:Ljavax/crypto/Cipher;
-Ljavax/crypto/CipherInputStream;->closed:Z
-Ljavax/crypto/CipherInputStream;->done:Z
-Ljavax/crypto/CipherInputStream;->getMoreData()I
-Ljavax/crypto/CipherInputStream;->ibuffer:[B
-Ljavax/crypto/CipherInputStream;->input:Ljava/io/InputStream;
-Ljavax/crypto/CipherInputStream;->obuffer:[B
-Ljavax/crypto/CipherInputStream;->ofinish:I
-Ljavax/crypto/CipherInputStream;->ostart:I
-Ljavax/crypto/CipherOutputStream;->cipher:Ljavax/crypto/Cipher;
-Ljavax/crypto/CipherOutputStream;->closed:Z
-Ljavax/crypto/CipherOutputStream;->ibuffer:[B
-Ljavax/crypto/CipherOutputStream;->obuffer:[B
-Ljavax/crypto/CipherOutputStream;->output:Ljava/io/OutputStream;
-Ljavax/crypto/CipherSpi;->bufferCrypt(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;Z)I
-Ljavax/crypto/CipherSpi;->getTempArraySize(I)I
-Ljavax/crypto/EncryptedPrivateKeyInfo;->algid:Lsun/security/x509/AlgorithmId;
-Ljavax/crypto/EncryptedPrivateKeyInfo;->checkPKCS8Encoding([B)V
-Ljavax/crypto/EncryptedPrivateKeyInfo;->checkTag(Lsun/security/util/DerValue;BLjava/lang/String;)V
-Ljavax/crypto/EncryptedPrivateKeyInfo;->encoded:[B
-Ljavax/crypto/EncryptedPrivateKeyInfo;->encryptedData:[B
-Ljavax/crypto/EncryptedPrivateKeyInfo;->getKeySpecImpl(Ljava/security/Key;Ljava/security/Provider;)Ljava/security/spec/PKCS8EncodedKeySpec;
-Ljavax/crypto/ExemptionMechanism;->done:Z
-Ljavax/crypto/ExemptionMechanism;->exmechSpi:Ljavax/crypto/ExemptionMechanismSpi;
-Ljavax/crypto/ExemptionMechanism;->initialized:Z
-Ljavax/crypto/ExemptionMechanism;->keyStored:Ljava/security/Key;
-Ljavax/crypto/ExemptionMechanism;->mechanism:Ljava/lang/String;
-Ljavax/crypto/ExemptionMechanism;->provider:Ljava/security/Provider;
-Ljavax/crypto/KeyAgreement;-><init>(Ljava/lang/String;)V
-Ljavax/crypto/KeyAgreement;->algorithm:Ljava/lang/String;
-Ljavax/crypto/KeyAgreement;->chooseFirstProvider()V
-Ljavax/crypto/KeyAgreement;->chooseProvider(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
-Ljavax/crypto/KeyAgreement;->implInit(Ljavax/crypto/KeyAgreementSpi;ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
-Ljavax/crypto/KeyAgreement;->I_NO_PARAMS:I
-Ljavax/crypto/KeyAgreement;->I_PARAMS:I
-Ljavax/crypto/KeyAgreement;->lock:Ljava/lang/Object;
-Ljavax/crypto/KeyAgreement;->provider:Ljava/security/Provider;
-Ljavax/crypto/KeyAgreement;->spi:Ljavax/crypto/KeyAgreementSpi;
-Ljavax/crypto/KeyAgreement;->warnCount:I
-Ljavax/crypto/KeyGenerator;-><init>(Ljava/lang/String;)V
-Ljavax/crypto/KeyGenerator;->algorithm:Ljava/lang/String;
-Ljavax/crypto/KeyGenerator;->disableFailover()V
-Ljavax/crypto/KeyGenerator;->initKeySize:I
-Ljavax/crypto/KeyGenerator;->initParams:Ljava/security/spec/AlgorithmParameterSpec;
-Ljavax/crypto/KeyGenerator;->initRandom:Ljava/security/SecureRandom;
-Ljavax/crypto/KeyGenerator;->initType:I
-Ljavax/crypto/KeyGenerator;->I_NONE:I
-Ljavax/crypto/KeyGenerator;->I_PARAMS:I
-Ljavax/crypto/KeyGenerator;->I_RANDOM:I
-Ljavax/crypto/KeyGenerator;->I_SIZE:I
-Ljavax/crypto/KeyGenerator;->lock:Ljava/lang/Object;
-Ljavax/crypto/KeyGenerator;->nextSpi(Ljavax/crypto/KeyGeneratorSpi;Z)Ljavax/crypto/KeyGeneratorSpi;
-Ljavax/crypto/KeyGenerator;->provider:Ljava/security/Provider;
-Ljavax/crypto/KeyGenerator;->serviceIterator:Ljava/util/Iterator;
-Ljavax/crypto/KeyGenerator;->spi:Ljavax/crypto/KeyGeneratorSpi;
-Ljavax/crypto/Mac;-><init>(Ljava/lang/String;)V
-Ljavax/crypto/Mac;->algorithm:Ljava/lang/String;
-Ljavax/crypto/Mac;->chooseFirstProvider()V
-Ljavax/crypto/Mac;->chooseProvider(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
-Ljavax/crypto/Mac;->getCurrentSpi()Ljavax/crypto/MacSpi;
-Ljavax/crypto/Mac;->initialized:Z
-Ljavax/crypto/Mac;->lock:Ljava/lang/Object;
-Ljavax/crypto/Mac;->provider:Ljava/security/Provider;
-Ljavax/crypto/Mac;->spi:Ljavax/crypto/MacSpi;
-Ljavax/crypto/Mac;->warnCount:I
-Ljavax/crypto/SealedObject;->encryptedContent:[B
-Ljavax/crypto/SealedObject;->paramsAlg:Ljava/lang/String;
-Ljavax/crypto/SealedObject;->sealAlg:Ljava/lang/String;
-Ljavax/crypto/SealedObject;->unseal(Ljava/security/Key;Ljava/lang/String;)Ljava/lang/Object;
-Ljavax/crypto/SecretKeyFactory;-><init>(Ljava/lang/String;)V
-Ljavax/crypto/SecretKeyFactory;->algorithm:Ljava/lang/String;
-Ljavax/crypto/SecretKeyFactory;->lock:Ljava/lang/Object;
-Ljavax/crypto/SecretKeyFactory;->nextSpi(Ljavax/crypto/SecretKeyFactorySpi;)Ljavax/crypto/SecretKeyFactorySpi;
-Ljavax/crypto/SecretKeyFactory;->provider:Ljava/security/Provider;
-Ljavax/crypto/SecretKeyFactory;->serviceIterator:Ljava/util/Iterator;
-Ljavax/crypto/SecretKeyFactory;->spi:Ljavax/crypto/SecretKeyFactorySpi;
-Ljavax/crypto/spec/DESedeKeySpec;->key:[B
-Ljavax/crypto/spec/DESKeySpec;->key:[B
-Ljavax/crypto/spec/DESKeySpec;->WEAK_KEYS:[[B
-Ljavax/crypto/spec/DHGenParameterSpec;->exponentSize:I
-Ljavax/crypto/spec/DHGenParameterSpec;->primeSize:I
-Ljavax/crypto/spec/DHParameterSpec;->g:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHParameterSpec;->l:I
-Ljavax/crypto/spec/DHParameterSpec;->p:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHPrivateKeySpec;->g:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHPrivateKeySpec;->p:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHPrivateKeySpec;->x:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHPublicKeySpec;->g:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHPublicKeySpec;->p:Ljava/math/BigInteger;
-Ljavax/crypto/spec/DHPublicKeySpec;->y:Ljava/math/BigInteger;
-Ljavax/crypto/spec/GCMParameterSpec;->init(I[BII)V
-Ljavax/crypto/spec/GCMParameterSpec;->iv:[B
-Ljavax/crypto/spec/GCMParameterSpec;->tLen:I
-Ljavax/crypto/spec/IvParameterSpec;->iv:[B
-Ljavax/crypto/spec/OAEPParameterSpec;-><init>()V
-Ljavax/crypto/spec/OAEPParameterSpec;->mdName:Ljava/lang/String;
-Ljavax/crypto/spec/OAEPParameterSpec;->mgfName:Ljava/lang/String;
-Ljavax/crypto/spec/OAEPParameterSpec;->mgfSpec:Ljava/security/spec/AlgorithmParameterSpec;
-Ljavax/crypto/spec/OAEPParameterSpec;->pSrc:Ljavax/crypto/spec/PSource;
-Ljavax/crypto/spec/PBEKeySpec;->iterationCount:I
-Ljavax/crypto/spec/PBEKeySpec;->keyLength:I
-Ljavax/crypto/spec/PBEKeySpec;->password:[C
-Ljavax/crypto/spec/PBEKeySpec;->salt:[B
-Ljavax/crypto/spec/PBEParameterSpec;->iterationCount:I
-Ljavax/crypto/spec/PBEParameterSpec;->paramSpec:Ljava/security/spec/AlgorithmParameterSpec;
-Ljavax/crypto/spec/PBEParameterSpec;->salt:[B
-Ljavax/crypto/spec/PSource$PSpecified;->p:[B
-Ljavax/crypto/spec/PSource;->pSrcName:Ljava/lang/String;
-Ljavax/crypto/spec/RC2ParameterSpec;->effectiveKeyBits:I
-Ljavax/crypto/spec/RC2ParameterSpec;->iv:[B
-Ljavax/crypto/spec/RC5ParameterSpec;->iv:[B
-Ljavax/crypto/spec/RC5ParameterSpec;->rounds:I
-Ljavax/crypto/spec/RC5ParameterSpec;->version:I
-Ljavax/crypto/spec/RC5ParameterSpec;->wordSize:I
-Ljavax/crypto/spec/SecretKeySpec;->algorithm:Ljava/lang/String;
-Ljavax/crypto/spec/SecretKeySpec;->key:[B
-Ljavax/microedition/khronos/egl/EGLContext;->EGL_INSTANCE:Ljavax/microedition/khronos/egl/EGL;
-Ljavax/net/ServerSocketFactory;->theFactory:Ljavax/net/ServerSocketFactory;
-Ljavax/net/SocketFactory;->setDefault(Ljavax/net/SocketFactory;)V
-Ljavax/net/SocketFactory;->theFactory:Ljavax/net/SocketFactory;
-Ljavax/net/ssl/CertPathTrustManagerParameters;->parameters:Ljava/security/cert/CertPathParameters;
-Ljavax/net/ssl/HandshakeCompletedEvent;->session:Ljavax/net/ssl/SSLSession;
-Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder;-><init>()V
-Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder;->defaultHostnameVerifier:Ljavax/net/ssl/HostnameVerifier;
-Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder;->originalDefaultHostnameVerifierClass:Ljava/lang/Class;
-Ljavax/net/ssl/HttpsURLConnection;->defaultSSLSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
-Ljavax/net/ssl/HttpsURLConnection;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
-Ljavax/net/ssl/KeyManagerFactory;->algorithm:Ljava/lang/String;
-Ljavax/net/ssl/KeyManagerFactory;->factorySpi:Ljavax/net/ssl/KeyManagerFactorySpi;
-Ljavax/net/ssl/KeyManagerFactory;->provider:Ljava/security/Provider;
-Ljavax/net/ssl/KeyStoreBuilderParameters;->parameters:Ljava/util/List;
-Ljavax/net/ssl/SNIHostName$SNIHostNameMatcher;-><init>(Ljava/lang/String;)V
-Ljavax/net/ssl/SNIHostName$SNIHostNameMatcher;->pattern:Ljava/util/regex/Pattern;
-Ljavax/net/ssl/SNIHostName;->checkHostName()V
-Ljavax/net/ssl/SNIHostName;->hostname:Ljava/lang/String;
-Ljavax/net/ssl/SNIMatcher;->type:I
-Ljavax/net/ssl/SNIServerName;->encoded:[B
-Ljavax/net/ssl/SNIServerName;->HEXES:[C
-Ljavax/net/ssl/SNIServerName;->toHexString([B)Ljava/lang/String;
-Ljavax/net/ssl/SNIServerName;->type:I
-Ljavax/net/ssl/SSLContext;->contextSpi:Ljavax/net/ssl/SSLContextSpi;
-Ljavax/net/ssl/SSLContext;->defaultContext:Ljavax/net/ssl/SSLContext;
-Ljavax/net/ssl/SSLContext;->protocol:Ljava/lang/String;
-Ljavax/net/ssl/SSLContext;->provider:Ljava/security/Provider;
-Ljavax/net/ssl/SSLContextSpi;->getDefaultSocket()Ljavax/net/ssl/SSLSocket;
-Ljavax/net/ssl/SSLEngine;->peerHost:Ljava/lang/String;
-Ljavax/net/ssl/SSLEngine;->peerPort:I
-Ljavax/net/ssl/SSLEngineResult;->bytesConsumed:I
-Ljavax/net/ssl/SSLEngineResult;->bytesProduced:I
-Ljavax/net/ssl/SSLEngineResult;->handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
-Ljavax/net/ssl/SSLEngineResult;->status:Ljavax/net/ssl/SSLEngineResult$Status;
-Ljavax/net/ssl/SSLParameters;->algorithmConstraints:Ljava/security/AlgorithmConstraints;
-Ljavax/net/ssl/SSLParameters;->cipherSuites:[Ljava/lang/String;
-Ljavax/net/ssl/SSLParameters;->clone([Ljava/lang/String;)[Ljava/lang/String;
-Ljavax/net/ssl/SSLParameters;->identificationAlgorithm:Ljava/lang/String;
-Ljavax/net/ssl/SSLParameters;->needClientAuth:Z
-Ljavax/net/ssl/SSLParameters;->preferLocalCipherSuites:Z
-Ljavax/net/ssl/SSLParameters;->protocols:[Ljava/lang/String;
-Ljavax/net/ssl/SSLParameters;->sniMatchers:Ljava/util/Map;
-Ljavax/net/ssl/SSLParameters;->sniNames:Ljava/util/Map;
-Ljavax/net/ssl/SSLParameters;->wantClientAuth:Z
-Ljavax/net/ssl/SSLServerSocketFactory;->lastVersion:I
-Ljavax/net/ssl/SSLServerSocketFactory;->log(Ljava/lang/String;)V
-Ljavax/net/ssl/SSLSessionBindingEvent;->name:Ljava/lang/String;
-Ljavax/net/ssl/SSLSocketFactory;->DEBUG:Z
-Ljavax/net/ssl/SSLSocketFactory;->getSecurityProperty(Ljava/lang/String;)Ljava/lang/String;
-Ljavax/net/ssl/SSLSocketFactory;->lastVersion:I
-Ljavax/net/ssl/SSLSocketFactory;->log(Ljava/lang/String;)V
-Ljavax/net/ssl/StandardConstants;-><init>()V
-Ljavax/net/ssl/TrustManagerFactory;->algorithm:Ljava/lang/String;
-Ljavax/net/ssl/TrustManagerFactory;->factorySpi:Ljavax/net/ssl/TrustManagerFactorySpi;
-Ljavax/net/ssl/TrustManagerFactory;->provider:Ljava/security/Provider;
-Ljavax/security/auth/callback/PasswordCallback;->echoOn:Z
-Ljavax/security/auth/callback/PasswordCallback;->inputPassword:[C
-Ljavax/security/auth/callback/PasswordCallback;->prompt:Ljava/lang/String;
-Ljavax/security/auth/callback/UnsupportedCallbackException;->callback:Ljavax/security/auth/callback/Callback;
-Ljavax/security/auth/PrivateCredentialPermission;-><init>(Ljava/lang/String;Ljava/util/Set;)V
-Ljavax/security/auth/Subject$AuthPermissionHolder;-><init>()V
-Ljavax/security/auth/Subject$AuthPermissionHolder;->DO_AS_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$AuthPermissionHolder;->DO_AS_PRIVILEGED_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$AuthPermissionHolder;->GET_SUBJECT_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$AuthPermissionHolder;->MODIFY_PRINCIPALS_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$AuthPermissionHolder;->MODIFY_PRIVATE_CREDENTIALS_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$AuthPermissionHolder;->MODIFY_PUBLIC_CREDENTIALS_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$AuthPermissionHolder;->SET_READ_ONLY_PERMISSION:Ljavax/security/auth/AuthPermission;
-Ljavax/security/auth/Subject$ClassSet;->add(Ljava/lang/Object;)Z
-Ljavax/security/auth/Subject$ClassSet;->c:Ljava/lang/Class;
-Ljavax/security/auth/Subject$ClassSet;->populateSet()V
-Ljavax/security/auth/Subject$ClassSet;->set:Ljava/util/Set;
-Ljavax/security/auth/Subject$ClassSet;->which:I
-Ljavax/security/auth/Subject$SecureSet;-><init>(Ljavax/security/auth/Subject;I)V
-Ljavax/security/auth/Subject$SecureSet;-><init>(Ljavax/security/auth/Subject;ILjava/util/Set;)V
-Ljavax/security/auth/Subject$SecureSet;->elements:Ljava/util/LinkedList;
-Ljavax/security/auth/Subject$SecureSet;->subject:Ljavax/security/auth/Subject;
-Ljavax/security/auth/Subject$SecureSet;->which:I
-Ljavax/security/auth/Subject;->createContext(Ljavax/security/auth/Subject;Ljava/security/AccessControlContext;)Ljava/security/AccessControlContext;
-Ljavax/security/auth/Subject;->getCredHashCode(Ljava/lang/Object;)I
-Ljavax/security/auth/Subject;->NULL_PD_ARRAY:[Ljava/security/ProtectionDomain;
-Ljavax/security/auth/Subject;->principals:Ljava/util/Set;
-Ljavax/security/auth/Subject;->PRINCIPAL_SET:I
-Ljavax/security/auth/Subject;->privCredentials:Ljava/util/Set;
-Ljavax/security/auth/Subject;->PRIV_CREDENTIAL_SET:I
-Ljavax/security/auth/Subject;->pubCredentials:Ljava/util/Set;
-Ljavax/security/auth/Subject;->PUB_CREDENTIAL_SET:I
-Ljavax/security/auth/Subject;->readOnly:Z
-Ljavax/security/auth/Subject;->toString(Z)Ljava/lang/String;
-Ljavax/security/auth/x500/X500Principal;-><init>(Lsun/security/x509/X500Name;)V
-Ljavax/security/auth/x500/X500Principal;->thisX500Name:Lsun/security/x509/X500Name;
-Ljavax/security/cert/X509Certificate;->DEFAULT_X509_CERT_CLASS:Ljava/lang/String;
-Ljavax/security/cert/X509Certificate;->getInst(Ljava/lang/Object;)Ljavax/security/cert/X509Certificate;
-Ljavax/security/cert/X509Certificate;->X509Provider:Ljava/lang/String;
-Ljavax/security/cert/X509Certificate;->X509_PROVIDER:Ljava/lang/String;
-Ljavax/sql/ConnectionEvent;->ex:Ljava/sql/SQLException;
-Ljavax/sql/StatementEvent;->exception:Ljava/sql/SQLException;
-Ljavax/sql/StatementEvent;->statement:Ljava/sql/PreparedStatement;
-Ljavax/xml/datatype/DatatypeConfigurationException;->causeOnJDK13OrBelow:Ljava/lang/Throwable;
-Ljavax/xml/datatype/DatatypeConfigurationException;->initCauseByReflection(Ljava/lang/Throwable;)V
-Ljavax/xml/datatype/DatatypeConfigurationException;->isJDK14OrAbove:Z
-Ljavax/xml/datatype/DatatypeConfigurationException;->printStackTrace0(Ljava/io/PrintWriter;)V
-Ljavax/xml/datatype/DatatypeConstants$Field;-><init>(Ljava/lang/String;I)V
-Ljavax/xml/datatype/DatatypeConstants$Field;->id:I
-Ljavax/xml/datatype/DatatypeConstants$Field;->str:Ljava/lang/String;
-Ljavax/xml/datatype/DatatypeConstants;-><init>()V
-Ljavax/xml/datatype/Duration;->getCalendarTimeInMillis(Ljava/util/Calendar;)J
-Ljavax/xml/datatype/Duration;->getFieldValueAsInt(Ljavax/xml/datatype/DatatypeConstants$Field;)I
-Ljavax/xml/datatype/Duration;->toString(Ljava/math/BigDecimal;)Ljava/lang/String;
-Ljavax/xml/namespace/QName;->compatibilitySerialVersionUID:J
-Ljavax/xml/namespace/QName;->defaultSerialVersionUID:J
-Ljavax/xml/namespace/QName;->localPart:Ljava/lang/String;
-Ljavax/xml/namespace/QName;->namespaceURI:Ljava/lang/String;
-Ljavax/xml/namespace/QName;->prefix:Ljava/lang/String;
-Ljavax/xml/namespace/QName;->qNameAsString:Ljava/lang/String;
-Ljavax/xml/parsers/DocumentBuilder;->DEBUG:Z
-Ljavax/xml/parsers/DocumentBuilderFactory;->coalescing:Z
-Ljavax/xml/parsers/DocumentBuilderFactory;->expandEntityRef:Z
-Ljavax/xml/parsers/DocumentBuilderFactory;->ignoreComments:Z
-Ljavax/xml/parsers/DocumentBuilderFactory;->namespaceAware:Z
-Ljavax/xml/parsers/DocumentBuilderFactory;->validating:Z
-Ljavax/xml/parsers/DocumentBuilderFactory;->whitespace:Z
-Ljavax/xml/parsers/FactoryConfigurationError;->exception:Ljava/lang/Exception;
-Ljavax/xml/parsers/SAXParser;->DEBUG:Z
-Ljavax/xml/parsers/SAXParserFactory;->namespaceAware:Z
-Ljavax/xml/parsers/SAXParserFactory;->validating:Z
-Ljavax/xml/transform/dom/DOMResult;->nextSibling:Lorg/w3c/dom/Node;
-Ljavax/xml/transform/dom/DOMResult;->node:Lorg/w3c/dom/Node;
-Ljavax/xml/transform/dom/DOMResult;->systemId:Ljava/lang/String;
-Ljavax/xml/transform/dom/DOMSource;->node:Lorg/w3c/dom/Node;
-Ljavax/xml/transform/dom/DOMSource;->systemID:Ljava/lang/String;
-Ljavax/xml/transform/OutputKeys;-><init>()V
-Ljavax/xml/transform/sax/SAXResult;->handler:Lorg/xml/sax/ContentHandler;
-Ljavax/xml/transform/sax/SAXResult;->lexhandler:Lorg/xml/sax/ext/LexicalHandler;
-Ljavax/xml/transform/sax/SAXResult;->systemId:Ljava/lang/String;
-Ljavax/xml/transform/sax/SAXSource;->inputSource:Lorg/xml/sax/InputSource;
-Ljavax/xml/transform/sax/SAXSource;->reader:Lorg/xml/sax/XMLReader;
-Ljavax/xml/transform/stream/StreamResult;->outputStream:Ljava/io/OutputStream;
-Ljavax/xml/transform/stream/StreamResult;->systemId:Ljava/lang/String;
-Ljavax/xml/transform/stream/StreamResult;->writer:Ljava/io/Writer;
-Ljavax/xml/transform/stream/StreamSource;->inputStream:Ljava/io/InputStream;
-Ljavax/xml/transform/stream/StreamSource;->publicId:Ljava/lang/String;
-Ljavax/xml/transform/stream/StreamSource;->reader:Ljava/io/Reader;
-Ljavax/xml/transform/stream/StreamSource;->systemId:Ljava/lang/String;
-Ljavax/xml/transform/TransformerException;->containedException:Ljava/lang/Throwable;
-Ljavax/xml/transform/TransformerException;->locator:Ljavax/xml/transform/SourceLocator;
-Ljavax/xml/transform/TransformerFactoryConfigurationError;->exception:Ljava/lang/Exception;
-Ljavax/xml/XMLConstants;-><init>()V
-Ljavax/xml/xpath/XPathConstants;-><init>()V
-Ljavax/xml/xpath/XPathException;->cause:Ljava/lang/Throwable;
-Llibcore/util/BasicLruCache;->maxSize:I
-Llibcore/util/BasicLruCache;->trimToSize(I)V
-Llibcore/util/NativeAllocationRegistry$CleanerRunner;-><init>(Lsun/misc/Cleaner;)V
-Llibcore/util/NativeAllocationRegistry$CleanerRunner;->cleaner:Lsun/misc/Cleaner;
-Llibcore/util/NativeAllocationRegistry$CleanerThunk;->nativePtr:J
-Llibcore/util/NativeAllocationRegistry$CleanerThunk;->setNativePtr(J)V
-Llibcore/util/NativeAllocationRegistry;->classLoader:Ljava/lang/ClassLoader;
-Llibcore/util/NativeAllocationRegistry;->freeFunction:J
-Llibcore/util/NativeAllocationRegistry;->registerNativeAllocation(J)V
-Llibcore/util/NativeAllocationRegistry;->registerNativeFree(J)V
-Llibcore/util/NativeAllocationRegistry;->size:J
-Llibcore/util/ZoneInfo$CheckedArithmeticException;-><init>()V
-Llibcore/util/ZoneInfo$OffsetInterval;-><init>(IIII)V
-Llibcore/util/ZoneInfo$OffsetInterval;->containsWallTime(J)Z
-Llibcore/util/ZoneInfo$OffsetInterval;->create(Llibcore/util/ZoneInfo;I)Llibcore/util/ZoneInfo$OffsetInterval;
-Llibcore/util/ZoneInfo$OffsetInterval;->endWallTimeSeconds:I
-Llibcore/util/ZoneInfo$OffsetInterval;->getEndWallTimeSeconds()J
-Llibcore/util/ZoneInfo$OffsetInterval;->getIsDst()I
-Llibcore/util/ZoneInfo$OffsetInterval;->getStartWallTimeSeconds()J
-Llibcore/util/ZoneInfo$OffsetInterval;->getTotalOffsetSeconds()I
-Llibcore/util/ZoneInfo$OffsetInterval;->isDst:I
-Llibcore/util/ZoneInfo$OffsetInterval;->startWallTimeSeconds:I
-Llibcore/util/ZoneInfo$OffsetInterval;->totalOffsetSeconds:I
-Llibcore/util/ZoneInfo$WallTime;->calendar:Ljava/util/GregorianCalendar;
-Llibcore/util/ZoneInfo$WallTime;->copyFieldsFromCalendar()V
-Llibcore/util/ZoneInfo$WallTime;->copyFieldsToCalendar()V
-Llibcore/util/ZoneInfo$WallTime;->doWallTimeSearch(Llibcore/util/ZoneInfo;IIZ)Ljava/lang/Integer;
-Llibcore/util/ZoneInfo$WallTime;->getOffsetsOfType(Llibcore/util/ZoneInfo;II)[I
-Llibcore/util/ZoneInfo$WallTime;->gmtOffsetSeconds:I
-Llibcore/util/ZoneInfo$WallTime;->hour:I
-Llibcore/util/ZoneInfo$WallTime;->isDst:I
-Llibcore/util/ZoneInfo$WallTime;->minute:I
-Llibcore/util/ZoneInfo$WallTime;->month:I
-Llibcore/util/ZoneInfo$WallTime;->monthDay:I
-Llibcore/util/ZoneInfo$WallTime;->second:I
-Llibcore/util/ZoneInfo$WallTime;->tryOffsetAdjustments(Llibcore/util/ZoneInfo;ILlibcore/util/ZoneInfo$OffsetInterval;II)Ljava/lang/Integer;
-Llibcore/util/ZoneInfo$WallTime;->weekDay:I
-Llibcore/util/ZoneInfo$WallTime;->year:I
-Llibcore/util/ZoneInfo$WallTime;->yearDay:I
-Llibcore/util/ZoneInfo;-><init>(Ljava/lang/String;[J[B[I[BJ)V
-Llibcore/util/ZoneInfo;->checkedAdd(JI)I
-Llibcore/util/ZoneInfo;->checkedSubtract(II)I
-Llibcore/util/ZoneInfo;->findOffsetIndexForTimeInMilliseconds(J)I
-Llibcore/util/ZoneInfo;->findOffsetIndexForTimeInSeconds(J)I
-Llibcore/util/ZoneInfo;->LEAP:[I
-Llibcore/util/ZoneInfo;->mDstSavings:I
-Llibcore/util/ZoneInfo;->mEarliestRawOffset:I
-Llibcore/util/ZoneInfo;->MILLISECONDS_PER_400_YEARS:J
-Llibcore/util/ZoneInfo;->MILLISECONDS_PER_DAY:J
-Llibcore/util/ZoneInfo;->mIsDsts:[B
-Llibcore/util/ZoneInfo;->mOffsets:[I
-Llibcore/util/ZoneInfo;->mRawOffset:I
-Llibcore/util/ZoneInfo;->mTypes:[B
-Llibcore/util/ZoneInfo;->mUseDst:Z
-Llibcore/util/ZoneInfo;->NORMAL:[I
-Llibcore/util/ZoneInfo;->roundDownMillisToSeconds(J)J
-Llibcore/util/ZoneInfo;->roundUpMillisToSeconds(J)J
-Llibcore/util/ZoneInfo;->UNIX_OFFSET:J
 Lorg/apache/http/conn/ssl/AbstractVerifier;->IPV4_PATTERN:Ljava/util/regex/Pattern;
 Lorg/apache/http/conn/ssl/AbstractVerifier;->isIPv4Address(Ljava/lang/String;)Z
 Lorg/apache/http/conn/ssl/SSLSocketFactory$NoPreloadHolder;-><init>()V
@@ -112510,629 +94147,3 @@
 Lorg/apache/http/params/HttpConnectionParams;-><init>()V
 Lorg/ccil/cowan/tagsoup/AttributesImpl;->badIndex(I)V
 Lorg/ccil/cowan/tagsoup/AttributesImpl;->ensureCapacity(I)V
-Lorg/json/JSONArray;->checkedPut(Ljava/lang/Object;)V
-Lorg/json/JSONStringer$Scope;->DANGLING_KEY:Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->EMPTY_ARRAY:Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->EMPTY_OBJECT:Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->NONEMPTY_ARRAY:Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->NONEMPTY_OBJECT:Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->NULL:Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->valueOf(Ljava/lang/String;)Lorg/json/JSONStringer$Scope;
-Lorg/json/JSONStringer$Scope;->values()[Lorg/json/JSONStringer$Scope;
-Lorg/w3c/dom/ls/LSSerializer;->getFilter()Lorg/w3c/dom/ls/LSSerializerFilter;
-Lorg/w3c/dom/ls/LSSerializer;->setFilter(Lorg/w3c/dom/ls/LSSerializerFilter;)V
-Lorg/w3c/dom/traversal/NodeFilter;->FILTER_ACCEPT:S
-Lorg/w3c/dom/traversal/NodeFilter;->FILTER_REJECT:S
-Lorg/w3c/dom/traversal/NodeFilter;->FILTER_SKIP:S
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ALL:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ATTRIBUTE:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_CDATA_SECTION:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_COMMENT:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_DOCUMENT:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_DOCUMENT_FRAGMENT:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_DOCUMENT_TYPE:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ELEMENT:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ENTITY:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ENTITY_REFERENCE:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_NOTATION:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_PROCESSING_INSTRUCTION:I
-Lorg/w3c/dom/traversal/NodeFilter;->SHOW_TEXT:I
-Lorg/w3c/dom/traversal/NodeIterator;->getExpandEntityReferences()Z
-Lorg/w3c/dom/traversal/NodeIterator;->getFilter()Lorg/w3c/dom/traversal/NodeFilter;
-Lorg/w3c/dom/traversal/NodeIterator;->getRoot()Lorg/w3c/dom/Node;
-Lorg/w3c/dom/traversal/NodeIterator;->getWhatToShow()I
-Lorg/w3c/dom/traversal/NodeIterator;->previousNode()Lorg/w3c/dom/Node;
-Lorg/xml/sax/helpers/AttributeListImpl;->names:Ljava/util/ArrayList;
-Lorg/xml/sax/helpers/AttributeListImpl;->types:Ljava/util/ArrayList;
-Lorg/xml/sax/helpers/AttributeListImpl;->values:Ljava/util/ArrayList;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->attributeNameTable:Ljava/util/Hashtable;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->clear()V
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->copyTables()V
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->declarations:Ljava/util/ArrayList;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->declarePrefix(Ljava/lang/String;Ljava/lang/String;)V
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->declSeen:Z
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->declsOK:Z
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->defaultNS:Ljava/lang/String;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->elementNameTable:Ljava/util/Hashtable;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->getDeclaredPrefixes()Ljava/util/Enumeration;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->getPrefix(Ljava/lang/String;)Ljava/lang/String;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->getPrefixes()Ljava/util/Enumeration;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->getURI(Ljava/lang/String;)Ljava/lang/String;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->parent:Lorg/xml/sax/helpers/NamespaceSupport$Context;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->prefixTable:Ljava/util/Hashtable;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->processName(Ljava/lang/String;Z)[Ljava/lang/String;
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->setParent(Lorg/xml/sax/helpers/NamespaceSupport$Context;)V
-Lorg/xml/sax/helpers/NamespaceSupport$Context;->uriTable:Ljava/util/Hashtable;
-Lorg/xml/sax/helpers/ParserAdapter$AttributeListAdapter;->qAtts:Lorg/xml/sax/AttributeList;
-Lorg/xml/sax/helpers/ParserAdapter$AttributeListAdapter;->setAttributeList(Lorg/xml/sax/AttributeList;)V
-Lorg/xml/sax/helpers/ParserAdapter;->FEATURES:Ljava/lang/String;
-Lorg/xml/sax/helpers/ParserAdapter;->NAMESPACES:Ljava/lang/String;
-Lorg/xml/sax/helpers/ParserAdapter;->NAMESPACE_PREFIXES:Ljava/lang/String;
-Lorg/xml/sax/helpers/ParserAdapter;->XMLNS_URIs:Ljava/lang/String;
-Lorg/xml/sax/helpers/ParserFactory;-><init>()V
-Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter;-><init>()V
-Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter;->attributes:Lorg/xml/sax/Attributes;
-Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter;->setAttributes(Lorg/xml/sax/Attributes;)V
-Lorg/xml/sax/helpers/XMLReaderFactory;-><init>()V
-Lorg/xml/sax/helpers/XMLReaderFactory;->property:Ljava/lang/String;
-Lorg/xmlpull/v1/XmlPullParserFactory;->getParserInstance()Lorg/xmlpull/v1/XmlPullParser;
-Lorg/xmlpull/v1/XmlPullParserFactory;->getSerializerInstance()Lorg/xmlpull/v1/XmlSerializer;
-Lorg/xmlpull/v1/XmlPullParserFactory;->newInstantiationException(Ljava/lang/String;Ljava/util/ArrayList;)Lorg/xmlpull/v1/XmlPullParserException;
-Lsun/misc/Cleaner;-><init>(Ljava/lang/Object;Ljava/lang/Runnable;)V
-Lsun/misc/Cleaner;->add(Lsun/misc/Cleaner;)Lsun/misc/Cleaner;
-Lsun/misc/Cleaner;->dummyQueue:Ljava/lang/ref/ReferenceQueue;
-Lsun/misc/Cleaner;->first:Lsun/misc/Cleaner;
-Lsun/misc/Cleaner;->next:Lsun/misc/Cleaner;
-Lsun/misc/Cleaner;->prev:Lsun/misc/Cleaner;
-Lsun/misc/Cleaner;->remove(Lsun/misc/Cleaner;)Z
-Lsun/misc/Cleaner;->thunk:Ljava/lang/Runnable;
-Lsun/misc/JarIndex;->addMapping(Ljava/lang/String;Ljava/lang/String;)V
-Lsun/misc/JarIndex;->addToList(Ljava/lang/String;Ljava/lang/String;Ljava/util/HashMap;)V
-Lsun/misc/JarIndex;->indexMap:Ljava/util/HashMap;
-Lsun/misc/JarIndex;->jarFiles:[Ljava/lang/String;
-Lsun/misc/JarIndex;->jarMap:Ljava/util/HashMap;
-Lsun/misc/JarIndex;->metaInfFilenames:Z
-Lsun/misc/JarIndex;->parseJars([Ljava/lang/String;)V
-Lsun/misc/LRUCache;->oa:[Ljava/lang/Object;
-Lsun/misc/LRUCache;->size:I
-Lsun/misc/MetaIndex;-><init>(Ljava/util/List;Z)V
-Lsun/misc/MetaIndex;->contents:[Ljava/lang/String;
-Lsun/misc/MetaIndex;->getJarMap()Ljava/util/Map;
-Lsun/misc/MetaIndex;->isClassOnlyJar:Z
-Lsun/misc/MetaIndex;->jarMap:Ljava/util/Map;
-Lsun/misc/Resource;->cachedInputStream()Ljava/io/InputStream;
-Lsun/misc/Resource;->cis:Ljava/io/InputStream;
-Lsun/misc/Unsafe;-><init>()V
-Lsun/misc/Unsafe;->getArrayBaseOffsetForComponentType(Ljava/lang/Class;)I
-Lsun/misc/Unsafe;->getArrayIndexScaleForComponentType(Ljava/lang/Class;)I
-Lsun/misc/URLClassPath$FileLoader;-><init>(Ljava/net/URL;)V
-Lsun/misc/URLClassPath$FileLoader;->dir:Ljava/io/File;
-Lsun/misc/URLClassPath$FileLoader;->findResource(Ljava/lang/String;Z)Ljava/net/URL;
-Lsun/misc/URLClassPath$FileLoader;->getResource(Ljava/lang/String;Z)Lsun/misc/Resource;
-Lsun/misc/URLClassPath$JarLoader;-><init>(Ljava/net/URL;Ljava/net/URLStreamHandler;Ljava/util/HashMap;Ljava/security/AccessControlContext;)V
-Lsun/misc/URLClassPath$JarLoader;->acc:Ljava/security/AccessControlContext;
-Lsun/misc/URLClassPath$JarLoader;->checkJar(Ljava/util/jar/JarFile;)Ljava/util/jar/JarFile;
-Lsun/misc/URLClassPath$JarLoader;->checkResource(Ljava/lang/String;ZLjava/util/jar/JarEntry;)Lsun/misc/Resource;
-Lsun/misc/URLClassPath$JarLoader;->closed:Z
-Lsun/misc/URLClassPath$JarLoader;->csu:Ljava/net/URL;
-Lsun/misc/URLClassPath$JarLoader;->ensureOpen()V
-Lsun/misc/URLClassPath$JarLoader;->findResource(Ljava/lang/String;Z)Ljava/net/URL;
-Lsun/misc/URLClassPath$JarLoader;->getClassPath()[Ljava/net/URL;
-Lsun/misc/URLClassPath$JarLoader;->getIndex()Lsun/misc/JarIndex;
-Lsun/misc/URLClassPath$JarLoader;->getJarFile(Ljava/net/URL;)Ljava/util/jar/JarFile;
-Lsun/misc/URLClassPath$JarLoader;->getResource(Ljava/lang/String;Z)Lsun/misc/Resource;
-Lsun/misc/URLClassPath$JarLoader;->getResource(Ljava/lang/String;ZLjava/util/Set;)Lsun/misc/Resource;
-Lsun/misc/URLClassPath$JarLoader;->handler:Ljava/net/URLStreamHandler;
-Lsun/misc/URLClassPath$JarLoader;->index:Lsun/misc/JarIndex;
-Lsun/misc/URLClassPath$JarLoader;->isOptimizable(Ljava/net/URL;)Z
-Lsun/misc/URLClassPath$JarLoader;->jar:Ljava/util/jar/JarFile;
-Lsun/misc/URLClassPath$JarLoader;->lmap:Ljava/util/HashMap;
-Lsun/misc/URLClassPath$JarLoader;->metaIndex:Lsun/misc/MetaIndex;
-Lsun/misc/URLClassPath$JarLoader;->parseClassPath(Ljava/net/URL;Ljava/lang/String;)[Ljava/net/URL;
-Lsun/misc/URLClassPath$JarLoader;->parseExtensionsDependencies()V
-Lsun/misc/URLClassPath$JarLoader;->validIndex(Ljava/lang/String;)Z
-Lsun/misc/URLClassPath$Loader;-><init>(Ljava/net/URL;)V
-Lsun/misc/URLClassPath$Loader;->base:Ljava/net/URL;
-Lsun/misc/URLClassPath$Loader;->findResource(Ljava/lang/String;Z)Ljava/net/URL;
-Lsun/misc/URLClassPath$Loader;->getBaseURL()Ljava/net/URL;
-Lsun/misc/URLClassPath$Loader;->getClassPath()[Ljava/net/URL;
-Lsun/misc/URLClassPath$Loader;->getResource(Ljava/lang/String;)Lsun/misc/Resource;
-Lsun/misc/URLClassPath$Loader;->getResource(Ljava/lang/String;Z)Lsun/misc/Resource;
-Lsun/misc/URLClassPath$Loader;->jarfile:Ljava/util/jar/JarFile;
-Lsun/misc/URLClassPath;->acc:Ljava/security/AccessControlContext;
-Lsun/misc/URLClassPath;->check(Ljava/net/URL;)V
-Lsun/misc/URLClassPath;->closed:Z
-Lsun/misc/URLClassPath;->DEBUG:Z
-Lsun/misc/URLClassPath;->DEBUG_LOOKUP_CACHE:Z
-Lsun/misc/URLClassPath;->disableAllLookupCaches()V
-Lsun/misc/URLClassPath;->DISABLE_ACC_CHECKING:Z
-Lsun/misc/URLClassPath;->DISABLE_JAR_CHECKING:Z
-Lsun/misc/URLClassPath;->ensureLoaderOpened(I)Z
-Lsun/misc/URLClassPath;->getLoader(I)Lsun/misc/URLClassPath$Loader;
-Lsun/misc/URLClassPath;->getLoader(Ljava/net/URL;)Lsun/misc/URLClassPath$Loader;
-Lsun/misc/URLClassPath;->getLookupCache(Ljava/lang/String;)[I
-Lsun/misc/URLClassPath;->getLookupCacheForClassLoader(Ljava/lang/ClassLoader;Ljava/lang/String;)[I
-Lsun/misc/URLClassPath;->getLookupCacheURLs(Ljava/lang/ClassLoader;)[Ljava/net/URL;
-Lsun/misc/URLClassPath;->getNextLoader([II)Lsun/misc/URLClassPath$Loader;
-Lsun/misc/URLClassPath;->initLookupCache(Ljava/lang/ClassLoader;)V
-Lsun/misc/URLClassPath;->jarHandler:Ljava/net/URLStreamHandler;
-Lsun/misc/URLClassPath;->JAVA_VERSION:Ljava/lang/String;
-Lsun/misc/URLClassPath;->knownToNotExist(Ljava/lang/String;)Z
-Lsun/misc/URLClassPath;->knownToNotExist0(Ljava/lang/ClassLoader;Ljava/lang/String;)Z
-Lsun/misc/URLClassPath;->lookupCacheEnabled:Z
-Lsun/misc/URLClassPath;->lookupCacheLoader:Ljava/lang/ClassLoader;
-Lsun/misc/URLClassPath;->lookupCacheURLs:[Ljava/net/URL;
-Lsun/misc/URLClassPath;->path:Ljava/util/ArrayList;
-Lsun/misc/URLClassPath;->push([Ljava/net/URL;)V
-Lsun/misc/URLClassPath;->USER_AGENT_JAVA_VERSION:Ljava/lang/String;
-Lsun/misc/URLClassPath;->validateLookupCache(ILjava/lang/String;)V
-Lsun/security/pkcs/ContentInfo;->content:Lsun/security/util/DerValue;
-Lsun/security/pkcs/ContentInfo;->contentType:Lsun/security/util/ObjectIdentifier;
-Lsun/security/pkcs/ContentInfo;->crdata:[I
-Lsun/security/pkcs/ContentInfo;->data:[I
-Lsun/security/pkcs/ContentInfo;->ddata:[I
-Lsun/security/pkcs/ContentInfo;->edata:[I
-Lsun/security/pkcs/ContentInfo;->nsdata:[I
-Lsun/security/pkcs/ContentInfo;->OLD_DATA:[I
-Lsun/security/pkcs/ContentInfo;->OLD_SDATA:[I
-Lsun/security/pkcs/ContentInfo;->pkcs7:[I
-Lsun/security/pkcs/ContentInfo;->sdata:[I
-Lsun/security/pkcs/ContentInfo;->sedata:[I
-Lsun/security/pkcs/ContentInfo;->tstInfo:[I
-Lsun/security/pkcs/PKCS7$VerbatimX509Certificate;-><init>(Ljava/security/cert/X509Certificate;[B)V
-Lsun/security/pkcs/PKCS7$VerbatimX509Certificate;->encodedVerbatim:[B
-Lsun/security/pkcs/PKCS7$WrappedX509Certificate;-><init>(Ljava/security/cert/X509Certificate;)V
-Lsun/security/pkcs/PKCS7$WrappedX509Certificate;->wrapped:Ljava/security/cert/X509Certificate;
-Lsun/security/pkcs/PKCS7;->certificates:[Ljava/security/cert/X509Certificate;
-Lsun/security/pkcs/PKCS7;->certIssuerNames:[Ljava/security/Principal;
-Lsun/security/pkcs/PKCS7;->contentInfo:Lsun/security/pkcs/ContentInfo;
-Lsun/security/pkcs/PKCS7;->contentType:Lsun/security/util/ObjectIdentifier;
-Lsun/security/pkcs/PKCS7;->crls:[Ljava/security/cert/X509CRL;
-Lsun/security/pkcs/PKCS7;->digestAlgorithmIds:[Lsun/security/x509/AlgorithmId;
-Lsun/security/pkcs/PKCS7;->oldStyle:Z
-Lsun/security/pkcs/PKCS7;->parse(Lsun/security/util/DerInputStream;)V
-Lsun/security/pkcs/PKCS7;->parse(Lsun/security/util/DerInputStream;Z)V
-Lsun/security/pkcs/PKCS7;->parseNetscapeCertChain(Lsun/security/util/DerValue;)V
-Lsun/security/pkcs/PKCS7;->parseOldSignedData(Lsun/security/util/DerValue;)V
-Lsun/security/pkcs/PKCS7;->parseSignedData(Lsun/security/util/DerValue;)V
-Lsun/security/pkcs/PKCS7;->populateCertIssuerNames()V
-Lsun/security/pkcs/PKCS7;->signerInfos:[Lsun/security/pkcs/SignerInfo;
-Lsun/security/pkcs/PKCS7;->version:Ljava/math/BigInteger;
-Lsun/security/pkcs/PKCS9Attribute;->BYTE_ARRAY_CLASS:Ljava/lang/Class;
-Lsun/security/pkcs/PKCS9Attribute;->debug:Lsun/security/util/Debug;
-Lsun/security/pkcs/PKCS9Attribute;->index:I
-Lsun/security/pkcs/PKCS9Attribute;->indexOf(Ljava/lang/Object;[Ljava/lang/Object;I)I
-Lsun/security/pkcs/PKCS9Attribute;->init(Lsun/security/util/ObjectIdentifier;Ljava/lang/Object;)V
-Lsun/security/pkcs/PKCS9Attribute;->NAME_OID_TABLE:Ljava/util/Hashtable;
-Lsun/security/pkcs/PKCS9Attribute;->oid:Lsun/security/util/ObjectIdentifier;
-Lsun/security/pkcs/PKCS9Attribute;->OID_NAME_TABLE:Ljava/util/Hashtable;
-Lsun/security/pkcs/PKCS9Attribute;->PKCS9_OIDS:[Lsun/security/util/ObjectIdentifier;
-Lsun/security/pkcs/PKCS9Attribute;->PKCS9_VALUE_TAGS:[[Ljava/lang/Byte;
-Lsun/security/pkcs/PKCS9Attribute;->RSA_PROPRIETARY_STR:Ljava/lang/String;
-Lsun/security/pkcs/PKCS9Attribute;->SINGLE_VALUED:[Z
-Lsun/security/pkcs/PKCS9Attribute;->SMIME_SIGNING_DESC_STR:Ljava/lang/String;
-Lsun/security/pkcs/PKCS9Attribute;->throwSingleValuedException()V
-Lsun/security/pkcs/PKCS9Attribute;->throwTagException(Ljava/lang/Byte;)V
-Lsun/security/pkcs/PKCS9Attribute;->value:Ljava/lang/Object;
-Lsun/security/pkcs/PKCS9Attribute;->VALUE_CLASSES:[Ljava/lang/Class;
-Lsun/security/pkcs/PKCS9Attributes;->attributes:Ljava/util/Hashtable;
-Lsun/security/pkcs/PKCS9Attributes;->castToDerEncoder([Ljava/lang/Object;)[Lsun/security/util/DerEncoder;
-Lsun/security/pkcs/PKCS9Attributes;->decode(Lsun/security/util/DerInputStream;)[B
-Lsun/security/pkcs/PKCS9Attributes;->derEncoding:[B
-Lsun/security/pkcs/PKCS9Attributes;->generateDerEncoding()[B
-Lsun/security/pkcs/PKCS9Attributes;->ignoreUnsupportedAttributes:Z
-Lsun/security/pkcs/PKCS9Attributes;->permittedAttributes:Ljava/util/Hashtable;
-Lsun/security/pkcs/SignerInfo;->authenticatedAttributes:Lsun/security/pkcs/PKCS9Attributes;
-Lsun/security/pkcs/SignerInfo;->certificateSerialNumber:Ljava/math/BigInteger;
-Lsun/security/pkcs/SignerInfo;->digestAlgorithmId:Lsun/security/x509/AlgorithmId;
-Lsun/security/pkcs/SignerInfo;->digestEncryptionAlgorithmId:Lsun/security/x509/AlgorithmId;
-Lsun/security/pkcs/SignerInfo;->DIGEST_PRIMITIVE_SET:Ljava/util/Set;
-Lsun/security/pkcs/SignerInfo;->encryptedDigest:[B
-Lsun/security/pkcs/SignerInfo;->hasTimestamp:Z
-Lsun/security/pkcs/SignerInfo;->issuerName:Lsun/security/x509/X500Name;
-Lsun/security/pkcs/SignerInfo;->JAR_DISABLED_CHECK:Lsun/security/util/DisabledAlgorithmConstraints;
-Lsun/security/pkcs/SignerInfo;->SIG_PRIMITIVE_SET:Ljava/util/Set;
-Lsun/security/pkcs/SignerInfo;->timestamp:Ljava/security/Timestamp;
-Lsun/security/pkcs/SignerInfo;->unauthenticatedAttributes:Lsun/security/pkcs/PKCS9Attributes;
-Lsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;)Lsun/security/pkcs/SignerInfo;
-Lsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;Ljava/io/InputStream;)Lsun/security/pkcs/SignerInfo;
-Lsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;[B)Lsun/security/pkcs/SignerInfo;
-Lsun/security/pkcs/SignerInfo;->verifyTimestamp(Lsun/security/timestamp/TimestampToken;)V
-Lsun/security/pkcs/SignerInfo;->version:Ljava/math/BigInteger;
-Lsun/security/util/AbstractAlgorithmConstraints;->checkAlgorithm([Ljava/lang/String;Ljava/lang/String;Lsun/security/util/AlgorithmDecomposer;)Z
-Lsun/security/util/AbstractAlgorithmConstraints;->getAlgorithms(Ljava/lang/String;)[Ljava/lang/String;
-Lsun/security/util/AlgorithmDecomposer;->decomposeImpl(Ljava/lang/String;)Ljava/util/Set;
-Lsun/security/util/AlgorithmDecomposer;->hasLoop(Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;)V
-Lsun/security/util/AlgorithmDecomposer;->pattern:Ljava/util/regex/Pattern;
-Lsun/security/util/AlgorithmDecomposer;->transPattern:Ljava/util/regex/Pattern;
-Lsun/security/util/BitArray;-><init>(Lsun/security/util/BitArray;)V
-Lsun/security/util/BitArray;->BITS_PER_UNIT:I
-Lsun/security/util/BitArray;->BYTES_PER_LINE:I
-Lsun/security/util/BitArray;->length:I
-Lsun/security/util/BitArray;->NYBBLE:[[B
-Lsun/security/util/BitArray;->position(I)I
-Lsun/security/util/BitArray;->repn:[B
-Lsun/security/util/BitArray;->subscript(I)I
-Lsun/security/util/CertConstraintParameters;->cert:Ljava/security/cert/X509Certificate;
-Lsun/security/util/CertConstraintParameters;->trustedMatch:Z
-Lsun/security/util/Debug;->args:Ljava/lang/String;
-Lsun/security/util/Debug;->hexDigits:[C
-Lsun/security/util/Debug;->marshal(Ljava/lang/String;)Ljava/lang/String;
-Lsun/security/util/Debug;->prefix:Ljava/lang/String;
-Lsun/security/util/DerInputBuffer;-><init>([B)V
-Lsun/security/util/DerInputBuffer;-><init>([BII)V
-Lsun/security/util/DerInputBuffer;->dup()Lsun/security/util/DerInputBuffer;
-Lsun/security/util/DerInputBuffer;->equals(Lsun/security/util/DerInputBuffer;)Z
-Lsun/security/util/DerInputBuffer;->getBigInteger(IZ)Ljava/math/BigInteger;
-Lsun/security/util/DerInputBuffer;->getBitString()[B
-Lsun/security/util/DerInputBuffer;->getBitString(I)[B
-Lsun/security/util/DerInputBuffer;->getGeneralizedTime(I)Ljava/util/Date;
-Lsun/security/util/DerInputBuffer;->getInteger(I)I
-Lsun/security/util/DerInputBuffer;->getPos()I
-Lsun/security/util/DerInputBuffer;->getSlice(II)[B
-Lsun/security/util/DerInputBuffer;->getTime(IZ)Ljava/util/Date;
-Lsun/security/util/DerInputBuffer;->getUnalignedBitString()Lsun/security/util/BitArray;
-Lsun/security/util/DerInputBuffer;->getUTCTime(I)Ljava/util/Date;
-Lsun/security/util/DerInputBuffer;->peek()I
-Lsun/security/util/DerInputBuffer;->toByteArray()[B
-Lsun/security/util/DerInputBuffer;->truncate(I)V
-Lsun/security/util/DerInputStream;-><init>(Lsun/security/util/DerInputBuffer;)V
-Lsun/security/util/DerInputStream;->buffer:Lsun/security/util/DerInputBuffer;
-Lsun/security/util/DerInputStream;->getByte()I
-Lsun/security/util/DerInputStream;->getLength()I
-Lsun/security/util/DerInputStream;->getLength(ILjava/io/InputStream;)I
-Lsun/security/util/DerInputStream;->getLength(Ljava/io/InputStream;)I
-Lsun/security/util/DerInputStream;->init([BIIZ)V
-Lsun/security/util/DerInputStream;->readString(BLjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Lsun/security/util/DerOutputStream;->lexOrder:Lsun/security/util/ByteArrayLexOrder;
-Lsun/security/util/DerOutputStream;->putIntegerContents(I)V
-Lsun/security/util/DerOutputStream;->putOrderedSet(B[Lsun/security/util/DerEncoder;Ljava/util/Comparator;)V
-Lsun/security/util/DerOutputStream;->putTime(Ljava/util/Date;B)V
-Lsun/security/util/DerOutputStream;->tagOrder:Lsun/security/util/ByteArrayTagOrder;
-Lsun/security/util/DerOutputStream;->writeString(Ljava/lang/String;BLjava/lang/String;)V
-Lsun/security/util/DerValue;-><init>(Lsun/security/util/DerInputBuffer;Z)V
-Lsun/security/util/DerValue;->append([B[B)[B
-Lsun/security/util/DerValue;->doEquals(Lsun/security/util/DerValue;Lsun/security/util/DerValue;)Z
-Lsun/security/util/DerValue;->init(BLjava/lang/String;)Lsun/security/util/DerInputStream;
-Lsun/security/util/DerValue;->init(ZLjava/io/InputStream;)Lsun/security/util/DerInputStream;
-Lsun/security/util/DerValue;->isPrivate()Z
-Lsun/security/util/DerValue;->length:I
-Lsun/security/util/DerValue;->originalEncodedForm:[B
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->EQ:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->GE:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->GT:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->LE:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->LT:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->NE:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->of(Ljava/lang/String;)Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->valueOf(Ljava/lang/String;)Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->values()[Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint;-><init>()V
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->algorithm:Ljava/lang/String;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->nextConstraint:Lsun/security/util/DisabledAlgorithmConstraints$Constraint;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->permits(Ljava/security/Key;)Z
-Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->permits(Lsun/security/util/CertConstraintParameters;)V
-Lsun/security/util/DisabledAlgorithmConstraints$Constraints;-><init>([Ljava/lang/String;)V
-Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->constraintsMap:Ljava/util/Map;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->getConstraints(Ljava/lang/String;)Ljava/util/Set;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->keySizePattern:Ljava/util/regex/Pattern;
-Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Ljava/security/Key;)Z
-Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Lsun/security/util/CertConstraintParameters;)V
-Lsun/security/util/DisabledAlgorithmConstraints$jdkCAConstraint;-><init>(Ljava/lang/String;)V
-Lsun/security/util/DisabledAlgorithmConstraints$jdkCAConstraint;->permits(Lsun/security/util/CertConstraintParameters;)V
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;-><init>(Ljava/lang/String;Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;I)V
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->maxSize:I
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->minSize:I
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Ljava/security/Key;)Z
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Lsun/security/util/CertConstraintParameters;)V
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permitsImpl(Ljava/security/Key;)Z
-Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->prohibitedSize:I
-Lsun/security/util/DisabledAlgorithmConstraints;->algorithmConstraints:Lsun/security/util/DisabledAlgorithmConstraints$Constraints;
-Lsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Ljava/lang/String;Ljava/security/Key;Ljava/security/AlgorithmParameters;)Z
-Lsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Lsun/security/util/CertConstraintParameters;)V
-Lsun/security/util/DisabledAlgorithmConstraints;->debug:Lsun/security/util/Debug;
-Lsun/security/util/DisabledAlgorithmConstraints;->disabledAlgorithms:[Ljava/lang/String;
-Lsun/security/util/ManifestDigester$Entry;->doOldStyle(Ljava/security/MessageDigest;[BII)V
-Lsun/security/util/ManifestDigester$Entry;->length:I
-Lsun/security/util/ManifestDigester$Entry;->lengthWithBlankLine:I
-Lsun/security/util/ManifestDigester$Entry;->offset:I
-Lsun/security/util/ManifestDigester$Entry;->oldStyle:Z
-Lsun/security/util/ManifestDigester$Entry;->rawBytes:[B
-Lsun/security/util/ManifestDigester$Position;-><init>()V
-Lsun/security/util/ManifestDigester$Position;->endOfFirstLine:I
-Lsun/security/util/ManifestDigester$Position;->endOfSection:I
-Lsun/security/util/ManifestDigester$Position;->startOfNext:I
-Lsun/security/util/ManifestDigester;->entries:Ljava/util/HashMap;
-Lsun/security/util/ManifestDigester;->findSection(ILsun/security/util/ManifestDigester$Position;)Z
-Lsun/security/util/ManifestDigester;->isNameAttr([BI)Z
-Lsun/security/util/ManifestDigester;->rawBytes:[B
-Lsun/security/util/ManifestEntryVerifier$SunProviderHolder;-><init>()V
-Lsun/security/util/ManifestEntryVerifier$SunProviderHolder;->instance:Ljava/security/Provider;
-Lsun/security/util/ManifestEntryVerifier;->createdDigests:Ljava/util/HashMap;
-Lsun/security/util/ManifestEntryVerifier;->debug:Lsun/security/util/Debug;
-Lsun/security/util/ManifestEntryVerifier;->digests:Ljava/util/ArrayList;
-Lsun/security/util/ManifestEntryVerifier;->entry:Ljava/util/jar/JarEntry;
-Lsun/security/util/ManifestEntryVerifier;->hexc:[C
-Lsun/security/util/ManifestEntryVerifier;->man:Ljava/util/jar/Manifest;
-Lsun/security/util/ManifestEntryVerifier;->manifestHashes:Ljava/util/ArrayList;
-Lsun/security/util/ManifestEntryVerifier;->name:Ljava/lang/String;
-Lsun/security/util/ManifestEntryVerifier;->signers:[Ljava/security/CodeSigner;
-Lsun/security/util/ManifestEntryVerifier;->skip:Z
-Lsun/security/util/ManifestEntryVerifier;->toHex([B)Ljava/lang/String;
-Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK;-><init>()V
-Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK;->theOne:Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK;
-Lsun/security/util/ObjectIdentifier;-><init>(Lsun/security/util/DerInputBuffer;)V
-Lsun/security/util/ObjectIdentifier;->check([B)V
-Lsun/security/util/ObjectIdentifier;->checkCount(I)V
-Lsun/security/util/ObjectIdentifier;->checkFirstComponent(I)V
-Lsun/security/util/ObjectIdentifier;->checkFirstComponent(Ljava/math/BigInteger;)V
-Lsun/security/util/ObjectIdentifier;->checkOtherComponent(II)V
-Lsun/security/util/ObjectIdentifier;->checkOtherComponent(ILjava/math/BigInteger;)V
-Lsun/security/util/ObjectIdentifier;->checkSecondComponent(II)V
-Lsun/security/util/ObjectIdentifier;->checkSecondComponent(ILjava/math/BigInteger;)V
-Lsun/security/util/ObjectIdentifier;->componentLen:I
-Lsun/security/util/ObjectIdentifier;->components:Ljava/lang/Object;
-Lsun/security/util/ObjectIdentifier;->componentsCalculated:Z
-Lsun/security/util/ObjectIdentifier;->encode(Lsun/security/util/DerOutputStream;)V
-Lsun/security/util/ObjectIdentifier;->encoding:[B
-Lsun/security/util/ObjectIdentifier;->init([II)V
-Lsun/security/util/ObjectIdentifier;->pack([BIIII)[B
-Lsun/security/util/ObjectIdentifier;->pack7Oid(I[BI)I
-Lsun/security/util/ObjectIdentifier;->pack7Oid(Ljava/math/BigInteger;[BI)I
-Lsun/security/util/ObjectIdentifier;->pack7Oid([BII[BI)I
-Lsun/security/util/ObjectIdentifier;->pack8([BII[BI)I
-Lsun/security/util/ObjectIdentifier;->stringForm:Ljava/lang/String;
-Lsun/security/util/SignatureFileVerifier;->ATTR_DIGEST:Ljava/lang/String;
-Lsun/security/util/SignatureFileVerifier;->block:Lsun/security/pkcs/PKCS7;
-Lsun/security/util/SignatureFileVerifier;->certificateFactory:Ljava/security/cert/CertificateFactory;
-Lsun/security/util/SignatureFileVerifier;->contains([Ljava/security/CodeSigner;Ljava/security/CodeSigner;)Z
-Lsun/security/util/SignatureFileVerifier;->createdDigests:Ljava/util/HashMap;
-Lsun/security/util/SignatureFileVerifier;->debug:Lsun/security/util/Debug;
-Lsun/security/util/SignatureFileVerifier;->DIGEST_PRIMITIVE_SET:Ljava/util/Set;
-Lsun/security/util/SignatureFileVerifier;->getDigest(Ljava/lang/String;)Ljava/security/MessageDigest;
-Lsun/security/util/SignatureFileVerifier;->getSigners([Lsun/security/pkcs/SignerInfo;Lsun/security/pkcs/PKCS7;)[Ljava/security/CodeSigner;
-Lsun/security/util/SignatureFileVerifier;->hexc:[C
-Lsun/security/util/SignatureFileVerifier;->isSubSet([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z
-Lsun/security/util/SignatureFileVerifier;->JAR_DISABLED_CHECK:Lsun/security/util/DisabledAlgorithmConstraints;
-Lsun/security/util/SignatureFileVerifier;->matches([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z
-Lsun/security/util/SignatureFileVerifier;->md:Lsun/security/util/ManifestDigester;
-Lsun/security/util/SignatureFileVerifier;->name:Ljava/lang/String;
-Lsun/security/util/SignatureFileVerifier;->processImpl(Ljava/util/Hashtable;Ljava/util/List;)V
-Lsun/security/util/SignatureFileVerifier;->sfBytes:[B
-Lsun/security/util/SignatureFileVerifier;->signerCache:Ljava/util/ArrayList;
-Lsun/security/util/SignatureFileVerifier;->toHex([B)Ljava/lang/String;
-Lsun/security/util/SignatureFileVerifier;->updateSigners([Ljava/security/CodeSigner;Ljava/util/Hashtable;Ljava/lang/String;)V
-Lsun/security/util/SignatureFileVerifier;->verifyManifestHash(Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;Ljava/util/List;)Z
-Lsun/security/util/SignatureFileVerifier;->verifyManifestMainAttrs(Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;)Z
-Lsun/security/util/SignatureFileVerifier;->verifySection(Ljava/util/jar/Attributes;Ljava/lang/String;Lsun/security/util/ManifestDigester;)Z
-Lsun/security/util/SignatureFileVerifier;->workaround:Z
-Lsun/security/x509/AlgorithmId;-><init>(Lsun/security/util/ObjectIdentifier;Lsun/security/util/DerValue;)V
-Lsun/security/x509/AlgorithmId;->algid:Lsun/security/util/ObjectIdentifier;
-Lsun/security/x509/AlgorithmId;->algOID(Ljava/lang/String;)Lsun/security/util/ObjectIdentifier;
-Lsun/security/x509/AlgorithmId;->algParams:Ljava/security/AlgorithmParameters;
-Lsun/security/x509/AlgorithmId;->constructedFromDer:Z
-Lsun/security/x509/AlgorithmId;->DH_data:[I
-Lsun/security/x509/AlgorithmId;->DH_PKIX_data:[I
-Lsun/security/x509/AlgorithmId;->dsaWithSHA1_PKIX_data:[I
-Lsun/security/x509/AlgorithmId;->DSA_OIW_data:[I
-Lsun/security/x509/AlgorithmId;->DSA_PKIX_data:[I
-Lsun/security/x509/AlgorithmId;->initOidTableVersion:I
-Lsun/security/x509/AlgorithmId;->md2WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->md5WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->nameTable:Ljava/util/Map;
-Lsun/security/x509/AlgorithmId;->oidTable:Ljava/util/Map;
-Lsun/security/x509/AlgorithmId;->reinitializeMappingTableLocked()V
-Lsun/security/x509/AlgorithmId;->RSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->RSA_data:[I
-Lsun/security/x509/AlgorithmId;->sha1WithDSA_OIW_data:[I
-Lsun/security/x509/AlgorithmId;->sha1WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->sha1WithRSAEncryption_OIW_data:[I
-Lsun/security/x509/AlgorithmId;->sha224WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->sha256WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->sha384WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->sha512WithRSAEncryption_data:[I
-Lsun/security/x509/AlgorithmId;->shaWithDSA_OIW_data:[I
-Lsun/security/x509/AVA;-><init>(Ljava/io/Reader;)V
-Lsun/security/x509/AVA;-><init>(Ljava/io/Reader;I)V
-Lsun/security/x509/AVA;-><init>(Ljava/io/Reader;ILjava/util/Map;)V
-Lsun/security/x509/AVA;-><init>(Ljava/io/Reader;Ljava/util/Map;)V
-Lsun/security/x509/AVA;-><init>(Lsun/security/util/DerInputStream;)V
-Lsun/security/x509/AVA;-><init>(Lsun/security/util/DerValue;)V
-Lsun/security/x509/AVA;->debug:Lsun/security/util/Debug;
-Lsun/security/x509/AVA;->DEFAULT:I
-Lsun/security/x509/AVA;->escapedDefault:Ljava/lang/String;
-Lsun/security/x509/AVA;->getEmbeddedHexPair(ILjava/io/Reader;)Ljava/lang/Byte;
-Lsun/security/x509/AVA;->getEmbeddedHexString(Ljava/util/List;)Ljava/lang/String;
-Lsun/security/x509/AVA;->hexDigits:Ljava/lang/String;
-Lsun/security/x509/AVA;->isDerString(Lsun/security/util/DerValue;Z)Z
-Lsun/security/x509/AVA;->isTerminator(II)Z
-Lsun/security/x509/AVA;->oid:Lsun/security/util/ObjectIdentifier;
-Lsun/security/x509/AVA;->parseHexString(Ljava/io/Reader;I)Lsun/security/util/DerValue;
-Lsun/security/x509/AVA;->parseQuotedString(Ljava/io/Reader;Ljava/lang/StringBuilder;)Lsun/security/util/DerValue;
-Lsun/security/x509/AVA;->parseString(Ljava/io/Reader;IILjava/lang/StringBuilder;)Lsun/security/util/DerValue;
-Lsun/security/x509/AVA;->PRESERVE_OLD_DC_ENCODING:Z
-Lsun/security/x509/AVA;->readChar(Ljava/io/Reader;Ljava/lang/String;)I
-Lsun/security/x509/AVA;->RFC1779:I
-Lsun/security/x509/AVA;->RFC2253:I
-Lsun/security/x509/AVA;->specialChars1779:Ljava/lang/String;
-Lsun/security/x509/AVA;->specialChars2253:Ljava/lang/String;
-Lsun/security/x509/AVA;->specialCharsDefault:Ljava/lang/String;
-Lsun/security/x509/AVA;->toKeyword(ILjava/util/Map;)Ljava/lang/String;
-Lsun/security/x509/AVA;->toKeywordValueString(Ljava/lang/String;)Ljava/lang/String;
-Lsun/security/x509/AVA;->trailingSpace(Ljava/io/Reader;)Z
-Lsun/security/x509/AVA;->value:Lsun/security/util/DerValue;
-Lsun/security/x509/CertificatePolicyId;->id:Lsun/security/util/ObjectIdentifier;
-Lsun/security/x509/CertificatePolicySet;->ids:Ljava/util/Vector;
-Lsun/security/x509/Extension;->hashMagic:I
-Lsun/security/x509/GeneralName;->name:Lsun/security/x509/GeneralNameInterface;
-Lsun/security/x509/GeneralSubtree;->maximum:I
-Lsun/security/x509/GeneralSubtree;->minimum:I
-Lsun/security/x509/GeneralSubtree;->MIN_DEFAULT:I
-Lsun/security/x509/GeneralSubtree;->myhash:I
-Lsun/security/x509/GeneralSubtree;->name:Lsun/security/x509/GeneralName;
-Lsun/security/x509/GeneralSubtree;->TAG_MAX:B
-Lsun/security/x509/GeneralSubtree;->TAG_MIN:B
-Lsun/security/x509/GeneralSubtrees;-><init>(Lsun/security/x509/GeneralSubtrees;)V
-Lsun/security/x509/GeneralSubtrees;->createWidestSubtree(Lsun/security/x509/GeneralNameInterface;)Lsun/security/x509/GeneralSubtree;
-Lsun/security/x509/GeneralSubtrees;->getGeneralNameInterface(I)Lsun/security/x509/GeneralNameInterface;
-Lsun/security/x509/GeneralSubtrees;->getGeneralNameInterface(Lsun/security/x509/GeneralSubtree;)Lsun/security/x509/GeneralNameInterface;
-Lsun/security/x509/GeneralSubtrees;->minimize()V
-Lsun/security/x509/GeneralSubtrees;->NAME_DIFF_TYPE:I
-Lsun/security/x509/GeneralSubtrees;->NAME_MATCH:I
-Lsun/security/x509/GeneralSubtrees;->NAME_NARROWS:I
-Lsun/security/x509/GeneralSubtrees;->NAME_SAME_TYPE:I
-Lsun/security/x509/GeneralSubtrees;->NAME_WIDENS:I
-Lsun/security/x509/GeneralSubtrees;->trees:Ljava/util/List;
-Lsun/security/x509/NameConstraintsExtension;->calcMinMax()V
-Lsun/security/x509/NameConstraintsExtension;->encodeThis()V
-Lsun/security/x509/NameConstraintsExtension;->excluded:Lsun/security/x509/GeneralSubtrees;
-Lsun/security/x509/NameConstraintsExtension;->hasMax:Z
-Lsun/security/x509/NameConstraintsExtension;->hasMin:Z
-Lsun/security/x509/NameConstraintsExtension;->minMaxValid:Z
-Lsun/security/x509/NameConstraintsExtension;->permitted:Lsun/security/x509/GeneralSubtrees;
-Lsun/security/x509/NameConstraintsExtension;->TAG_EXCLUDED:B
-Lsun/security/x509/NameConstraintsExtension;->TAG_PERMITTED:B
-Lsun/security/x509/RDN;-><init>(I)V
-Lsun/security/x509/RDN;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Lsun/security/x509/RDN;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
-Lsun/security/x509/RDN;-><init>(Lsun/security/util/DerValue;)V
-Lsun/security/x509/RDN;->assertion:[Lsun/security/x509/AVA;
-Lsun/security/x509/RDN;->avaList:Ljava/util/List;
-Lsun/security/x509/RDN;->canonicalString:Ljava/lang/String;
-Lsun/security/x509/RDN;->encode(Lsun/security/util/DerOutputStream;)V
-Lsun/security/x509/RDN;->findAttribute(Lsun/security/util/ObjectIdentifier;)Lsun/security/util/DerValue;
-Lsun/security/x509/RDN;->toRFC2253StringInternal(ZLjava/util/Map;)Ljava/lang/String;
-Lsun/security/x509/X500Name;->allAvaList:Ljava/util/List;
-Lsun/security/x509/X500Name;->canonicalDn:Ljava/lang/String;
-Lsun/security/x509/X500Name;->checkNoNewLinesNorTabsAtBeginningOfDN(Ljava/lang/String;)V
-Lsun/security/x509/X500Name;->commonName_data:[I
-Lsun/security/x509/X500Name;->countQuotes(Ljava/lang/String;II)I
-Lsun/security/x509/X500Name;->countryName_data:[I
-Lsun/security/x509/X500Name;->dn:Ljava/lang/String;
-Lsun/security/x509/X500Name;->DNQUALIFIER_DATA:[I
-Lsun/security/x509/X500Name;->DOMAIN_COMPONENT_DATA:[I
-Lsun/security/x509/X500Name;->encoded:[B
-Lsun/security/x509/X500Name;->escaped(IILjava/lang/String;)Z
-Lsun/security/x509/X500Name;->findAttribute(Lsun/security/util/ObjectIdentifier;)Lsun/security/util/DerValue;
-Lsun/security/x509/X500Name;->generateDN()V
-Lsun/security/x509/X500Name;->generateRFC1779DN(Ljava/util/Map;)Ljava/lang/String;
-Lsun/security/x509/X500Name;->generateRFC2253DN(Ljava/util/Map;)Ljava/lang/String;
-Lsun/security/x509/X500Name;->GENERATIONQUALIFIER_DATA:[I
-Lsun/security/x509/X500Name;->getString(Lsun/security/util/DerValue;)Ljava/lang/String;
-Lsun/security/x509/X500Name;->GIVENNAME_DATA:[I
-Lsun/security/x509/X500Name;->INITIALS_DATA:[I
-Lsun/security/x509/X500Name;->intern(Lsun/security/util/ObjectIdentifier;)Lsun/security/util/ObjectIdentifier;
-Lsun/security/x509/X500Name;->internedOIDs:Ljava/util/Map;
-Lsun/security/x509/X500Name;->ipAddress_data:[I
-Lsun/security/x509/X500Name;->isWithinSubtree(Lsun/security/x509/X500Name;)Z
-Lsun/security/x509/X500Name;->localityName_data:[I
-Lsun/security/x509/X500Name;->names:[Lsun/security/x509/RDN;
-Lsun/security/x509/X500Name;->orgName_data:[I
-Lsun/security/x509/X500Name;->orgUnitName_data:[I
-Lsun/security/x509/X500Name;->parseDER(Lsun/security/util/DerInputStream;)V
-Lsun/security/x509/X500Name;->parseDN(Ljava/lang/String;Ljava/util/Map;)V
-Lsun/security/x509/X500Name;->parseRFC2253DN(Ljava/lang/String;)V
-Lsun/security/x509/X500Name;->principalConstructor:Ljava/lang/reflect/Constructor;
-Lsun/security/x509/X500Name;->principalField:Ljava/lang/reflect/Field;
-Lsun/security/x509/X500Name;->rdnList:Ljava/util/List;
-Lsun/security/x509/X500Name;->rfc1779Dn:Ljava/lang/String;
-Lsun/security/x509/X500Name;->rfc2253Dn:Ljava/lang/String;
-Lsun/security/x509/X500Name;->SERIALNUMBER_DATA:[I
-Lsun/security/x509/X500Name;->stateName_data:[I
-Lsun/security/x509/X500Name;->streetAddress_data:[I
-Lsun/security/x509/X500Name;->SURNAME_DATA:[I
-Lsun/security/x509/X500Name;->title_data:[I
-Lsun/security/x509/X500Name;->userid_data:[I
-Lsun/security/x509/X500Name;->x500Principal:Ljavax/security/auth/x500/X500Principal;
-Lsun/util/locale/BaseLocale$Cache;-><init>()V
-Lsun/util/locale/BaseLocale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object;
-Lsun/util/locale/BaseLocale$Cache;->createObject(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale;
-Lsun/util/locale/BaseLocale$Cache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object;
-Lsun/util/locale/BaseLocale$Cache;->normalizeKey(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key;
-Lsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Lsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Lsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
-Lsun/util/locale/BaseLocale$Key;->hash:I
-Lsun/util/locale/BaseLocale$Key;->lang:Ljava/lang/ref/SoftReference;
-Lsun/util/locale/BaseLocale$Key;->normalize(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key;
-Lsun/util/locale/BaseLocale$Key;->normalized:Z
-Lsun/util/locale/BaseLocale$Key;->regn:Ljava/lang/ref/SoftReference;
-Lsun/util/locale/BaseLocale$Key;->scrt:Ljava/lang/ref/SoftReference;
-Lsun/util/locale/BaseLocale$Key;->vart:Ljava/lang/ref/SoftReference;
-Lsun/util/locale/BaseLocale;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Lsun/util/locale/BaseLocale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Lsun/util/locale/BaseLocale;->CACHE:Lsun/util/locale/BaseLocale$Cache;
-Lsun/util/locale/BaseLocale;->hash:I
-Lsun/util/locale/BaseLocale;->language:Ljava/lang/String;
-Lsun/util/locale/BaseLocale;->region:Ljava/lang/String;
-Lsun/util/locale/BaseLocale;->script:Ljava/lang/String;
-Lsun/util/locale/BaseLocale;->variant:Ljava/lang/String;
-Lsun/util/locale/Extension;-><init>(C)V
-Lsun/util/locale/Extension;-><init>(CLjava/lang/String;)V
-Lsun/util/locale/Extension;->getID()Ljava/lang/String;
-Lsun/util/locale/Extension;->getKey()C
-Lsun/util/locale/Extension;->getValue()Ljava/lang/String;
-Lsun/util/locale/Extension;->id:Ljava/lang/String;
-Lsun/util/locale/Extension;->key:C
-Lsun/util/locale/Extension;->setValue(Ljava/lang/String;)V
-Lsun/util/locale/Extension;->value:Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(C)V
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(Ljava/lang/String;)V
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->ch:C
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->lowerCh:C
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->value()C
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;-><init>(Ljava/lang/String;)V
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;->lowerStr:Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;->str:Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;->value()Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder;->checkVariants(Ljava/lang/String;Ljava/lang/String;)I
-Lsun/util/locale/InternalLocaleBuilder;->extensions:Ljava/util/Map;
-Lsun/util/locale/InternalLocaleBuilder;->language:Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder;->PRIVATEUSE_KEY:Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;
-Lsun/util/locale/InternalLocaleBuilder;->region:Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder;->removePrivateuseVariant(Ljava/lang/String;)Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder;->script:Ljava/lang/String;
-Lsun/util/locale/InternalLocaleBuilder;->setExtensions(Ljava/util/List;Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder;
-Lsun/util/locale/InternalLocaleBuilder;->setUnicodeLocaleExtension(Ljava/lang/String;)V
-Lsun/util/locale/InternalLocaleBuilder;->uattributes:Ljava/util/Set;
-Lsun/util/locale/InternalLocaleBuilder;->ukeywords:Ljava/util/Map;
-Lsun/util/locale/InternalLocaleBuilder;->variant:Ljava/lang/String;
-Lsun/util/locale/LanguageTag;-><init>()V
-Lsun/util/locale/LanguageTag;->extensions:Ljava/util/List;
-Lsun/util/locale/LanguageTag;->extlangs:Ljava/util/List;
-Lsun/util/locale/LanguageTag;->GRANDFATHERED:Ljava/util/Map;
-Lsun/util/locale/LanguageTag;->language:Ljava/lang/String;
-Lsun/util/locale/LanguageTag;->parseExtensions(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->parseExtlangs(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->parseLanguage(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->parsePrivateuse(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->parseRegion(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->parseScript(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->parseVariants(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-Lsun/util/locale/LanguageTag;->privateuse:Ljava/lang/String;
-Lsun/util/locale/LanguageTag;->region:Ljava/lang/String;
-Lsun/util/locale/LanguageTag;->script:Ljava/lang/String;
-Lsun/util/locale/LanguageTag;->variants:Ljava/util/List;
-Lsun/util/locale/LocaleExtensions;-><init>(Ljava/lang/String;Ljava/lang/Character;Lsun/util/locale/Extension;)V
-Lsun/util/locale/LocaleExtensions;-><init>(Ljava/util/Map;Ljava/util/Set;Ljava/util/Map;)V
-Lsun/util/locale/LocaleExtensions;->extensionMap:Ljava/util/Map;
-Lsun/util/locale/LocaleExtensions;->id:Ljava/lang/String;
-Lsun/util/locale/LocaleExtensions;->toID(Ljava/util/SortedMap;)Ljava/lang/String;
-Lsun/util/locale/LocaleObjectCache$CacheEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-Lsun/util/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object;
-Lsun/util/locale/LocaleObjectCache$CacheEntry;->key:Ljava/lang/Object;
-Lsun/util/locale/LocaleObjectCache;->cleanStaleEntries()V
-Lsun/util/locale/LocaleObjectCache;->map:Ljava/util/concurrent/ConcurrentMap;
-Lsun/util/locale/LocaleObjectCache;->queue:Ljava/lang/ref/ReferenceQueue;
-Lsun/util/locale/LocaleSyntaxException;->index:I
-Lsun/util/locale/ParseStatus;->errorIndex:I
-Lsun/util/locale/ParseStatus;->errorMsg:Ljava/lang/String;
-Lsun/util/locale/ParseStatus;->parseLength:I
-Lsun/util/locale/StringTokenIterator;->delimiterChar:C
-Lsun/util/locale/StringTokenIterator;->dlms:Ljava/lang/String;
-Lsun/util/locale/StringTokenIterator;->done:Z
-Lsun/util/locale/StringTokenIterator;->end:I
-Lsun/util/locale/StringTokenIterator;->nextDelimiter(I)I
-Lsun/util/locale/StringTokenIterator;->start:I
-Lsun/util/locale/StringTokenIterator;->text:Ljava/lang/String;
-Lsun/util/locale/StringTokenIterator;->token:Ljava/lang/String;
diff --git a/boot/hiddenapi/hiddenapi-unsupported-packages.txt b/boot/hiddenapi/hiddenapi-unsupported-packages.txt
index 986d259..145f0c22 100644
--- a/boot/hiddenapi/hiddenapi-unsupported-packages.txt
+++ b/boot/hiddenapi/hiddenapi-unsupported-packages.txt
@@ -11,33 +11,5 @@
 gov.nist.javax.sip.parser.extensions
 gov.nist.javax.sip.parser.ims
 gov.nist.javax.sip.stack
-org.apache.xalan
-org.apache.xalan.extensions
-org.apache.xalan.processor
-org.apache.xalan.res
-org.apache.xalan.serialize
-org.apache.xalan.templates
-org.apache.xalan.transformer
-org.apache.xalan.xslt
-org.apache.xml.dtm
-org.apache.xml.dtm.ref
-org.apache.xml.dtm.ref.dom2dtm
-org.apache.xml.dtm.ref.sax2dtm
-org.apache.xml.res
-org.apache.xml.serializer
-org.apache.xml.serializer.dom3
-org.apache.xml.serializer.utils
-org.apache.xml.utils
-org.apache.xml.utils.res
-org.apache.xpath
-org.apache.xpath.axes
-org.apache.xpath.compiler
-org.apache.xpath.domapi
-org.apache.xpath.functions
-org.apache.xpath.jaxp
-org.apache.xpath.objects
-org.apache.xpath.operations
-org.apache.xpath.patterns
-org.apache.xpath.res
 org.ccil.cowan.tagsoup
 org.ccil.cowan.tagsoup.jaxp
diff --git a/cmds/uiautomator/library/Android.bp b/cmds/uiautomator/library/Android.bp
index 469b452..cffc078 100644
--- a/cmds/uiautomator/library/Android.bp
+++ b/cmds/uiautomator/library/Android.bp
@@ -59,8 +59,8 @@
         "android.test.runner",
         "junit",
         "android.test.base",
-        "unsupportedappusage",
     ],
+    sdk_version: "current",
     installable: false,
     custom_template: "droiddoc-templates-sdk",
 }
diff --git a/core/api/current.txt b/core/api/current.txt
index 0420714..0639d72 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -592,6 +592,7 @@
     field public static final int editTextStyle = 16842862; // 0x101006e
     field @Deprecated public static final int editable = 16843115; // 0x101016b
     field public static final int editorExtras = 16843300; // 0x1010224
+    field public static final int effectColor;
     field public static final int elegantTextHeight = 16843869; // 0x101045d
     field public static final int elevation = 16843840; // 0x1010440
     field public static final int ellipsize = 16842923; // 0x10100ab
@@ -4022,6 +4023,7 @@
     method public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
     method @Deprecated public void onPictureInPictureModeChanged(boolean);
     method public boolean onPictureInPictureRequested();
+    method public void onPictureInPictureUiStateChanged(@NonNull android.app.PictureInPictureUiState);
     method @CallSuper protected void onPostCreate(@Nullable android.os.Bundle);
     method public void onPostCreate(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
     method @CallSuper protected void onPostResume();
@@ -6414,6 +6416,13 @@
     method public android.app.PictureInPictureParams.Builder setSourceRectHint(android.graphics.Rect);
   }
 
+  public final class PictureInPictureUiState implements android.os.Parcelable {
+    method public int describeContents();
+    method public boolean isStashed();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.PictureInPictureUiState> CREATOR;
+  }
+
   public class Presentation extends android.app.Dialog {
     ctor public Presentation(android.content.Context, android.view.Display);
     ctor public Presentation(android.content.Context, android.view.Display, int);
@@ -9607,12 +9616,12 @@
   }
 
   public final class BluetoothLeAdvertiser {
-    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_CONNECT}) public void startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback);
-    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_CONNECT}) public void startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback);
-    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_CONNECT}) public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertisingSetCallback);
-    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_CONNECT}) public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertisingSetCallback, android.os.Handler);
-    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_CONNECT}) public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, int, int, android.bluetooth.le.AdvertisingSetCallback);
-    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_CONNECT}) public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, int, int, android.bluetooth.le.AdvertisingSetCallback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void startAdvertising(android.bluetooth.le.AdvertiseSettings, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseCallback);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertisingSetCallback);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertisingSetCallback, android.os.Handler);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, int, int, android.bluetooth.le.AdvertisingSetCallback);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void startAdvertisingSet(android.bluetooth.le.AdvertisingSetParameters, android.bluetooth.le.AdvertiseData, android.bluetooth.le.AdvertiseData, android.bluetooth.le.PeriodicAdvertisingParameters, android.bluetooth.le.AdvertiseData, int, int, android.bluetooth.le.AdvertisingSetCallback, android.os.Handler);
     method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void stopAdvertising(android.bluetooth.le.AdvertiseCallback);
     method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void stopAdvertisingSet(android.bluetooth.le.AdvertisingSetCallback);
   }
@@ -12086,13 +12095,6 @@
     field public static final String ACTION_CAN_INTERACT_ACROSS_PROFILES_CHANGED = "android.content.pm.action.CAN_INTERACT_ACROSS_PROFILES_CHANGED";
   }
 
-  public class DataLoaderParams {
-    method @NonNull public static final android.content.pm.DataLoaderParams forStreaming(@NonNull android.content.ComponentName, @NonNull String);
-    method @NonNull public final String getArguments();
-    method @NonNull public final android.content.ComponentName getComponentName();
-    method @NonNull public final int getType();
-  }
-
   public final class FeatureGroupInfo implements android.os.Parcelable {
     ctor public FeatureGroupInfo();
     ctor public FeatureGroupInfo(android.content.pm.FeatureGroupInfo);
@@ -12127,14 +12129,6 @@
     field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstallSourceInfo> CREATOR;
   }
 
-  public final class InstallationFile {
-    method public long getLengthBytes();
-    method public int getLocation();
-    method @Nullable public byte[] getMetadata();
-    method @NonNull public String getName();
-    method @Nullable public byte[] getSignature();
-  }
-
   public class InstrumentationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
     ctor public InstrumentationInfo();
     ctor public InstrumentationInfo(android.content.pm.InstrumentationInfo);
@@ -12331,9 +12325,6 @@
     field public static final String ACTION_SESSION_COMMITTED = "android.content.pm.action.SESSION_COMMITTED";
     field public static final String ACTION_SESSION_DETAILS = "android.content.pm.action.SESSION_DETAILS";
     field public static final String ACTION_SESSION_UPDATED = "android.content.pm.action.SESSION_UPDATED";
-    field public static final int DATA_LOADER_TYPE_NONE = 0; // 0x0
-    field public static final int DATA_LOADER_TYPE_STREAMING = 1; // 0x1
-    field public static final String EXTRA_DATA_LOADER_TYPE = "android.content.pm.extra.DATA_LOADER_TYPE";
     field public static final String EXTRA_OTHER_PACKAGE_NAME = "android.content.pm.extra.OTHER_PACKAGE_NAME";
     field public static final String EXTRA_PACKAGE_NAME = "android.content.pm.extra.PACKAGE_NAME";
     field public static final String EXTRA_SESSION = "android.content.pm.extra.SESSION";
@@ -12341,9 +12332,6 @@
     field public static final String EXTRA_STATUS = "android.content.pm.extra.STATUS";
     field public static final String EXTRA_STATUS_MESSAGE = "android.content.pm.extra.STATUS_MESSAGE";
     field public static final String EXTRA_STORAGE_PATH = "android.content.pm.extra.STORAGE_PATH";
-    field public static final int LOCATION_DATA_APP = 0; // 0x0
-    field public static final int LOCATION_MEDIA_DATA = 2; // 0x2
-    field public static final int LOCATION_MEDIA_OBB = 1; // 0x1
     field public static final int STATUS_FAILURE = 1; // 0x1
     field public static final int STATUS_FAILURE_ABORTED = 3; // 0x3
     field public static final int STATUS_FAILURE_BLOCKED = 2; // 0x2
@@ -12351,7 +12339,6 @@
     field public static final int STATUS_FAILURE_INCOMPATIBLE = 7; // 0x7
     field public static final int STATUS_FAILURE_INVALID = 4; // 0x4
     field public static final int STATUS_FAILURE_STORAGE = 6; // 0x6
-    field public static final int STATUS_PENDING_STREAMING = -2; // 0xfffffffe
     field public static final int STATUS_PENDING_USER_ACTION = -1; // 0xffffffff
     field public static final int STATUS_SUCCESS = 0; // 0x0
   }
@@ -12359,12 +12346,10 @@
   public static class PackageInstaller.Session implements java.io.Closeable {
     method public void abandon();
     method public void addChildSessionId(int);
-    method public void addFile(int, @NonNull String, long, @NonNull byte[], @Nullable byte[]);
     method public void close();
     method public void commit(@NonNull android.content.IntentSender);
     method public void fsync(@NonNull java.io.OutputStream) throws java.io.IOException;
     method @NonNull public int[] getChildSessionIds();
-    method @Nullable public android.content.pm.DataLoaderParams getDataLoaderParams();
     method @NonNull public String[] getNames() throws java.io.IOException;
     method public int getParentSessionId();
     method public boolean isMultiPackage();
@@ -12372,7 +12357,6 @@
     method @NonNull public java.io.InputStream openRead(@NonNull String) throws java.io.IOException;
     method @NonNull public java.io.OutputStream openWrite(@NonNull String, long, long) throws java.io.IOException;
     method public void removeChildSessionId(int);
-    method public void removeFile(int, @NonNull String);
     method public void removeSplit(@NonNull String) throws java.io.IOException;
     method @Deprecated public void setChecksums(@NonNull String, @NonNull java.util.List<android.content.pm.Checksum>, @Nullable byte[]) throws java.io.IOException;
     method public void setStagingProgress(float);
@@ -12443,7 +12427,6 @@
     method public void setAppLabel(@Nullable CharSequence);
     method public void setAppPackageName(@Nullable String);
     method @Deprecated public void setAutoRevokePermissionsMode(boolean);
-    method public void setDataLoaderParams(@NonNull android.content.pm.DataLoaderParams);
     method public void setInstallLocation(int);
     method public void setInstallReason(int);
     method public void setInstallScenario(int);
@@ -16817,8 +16800,10 @@
 
   public class RippleDrawable extends android.graphics.drawable.LayerDrawable {
     ctor public RippleDrawable(@NonNull android.content.res.ColorStateList, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable);
+    method @NonNull public android.content.res.ColorStateList getEffectColor();
     method public int getRadius();
-    method public void setColor(android.content.res.ColorStateList);
+    method public void setColor(@NonNull android.content.res.ColorStateList);
+    method public void setEffectColor(@NonNull android.content.res.ColorStateList);
     method public void setRadius(int);
     field public static final int RADIUS_AUTO = -1; // 0xffffffff
   }
@@ -24637,7 +24622,6 @@
 package android.media.metrics {
 
   public abstract class Event {
-    ctor protected Event(long);
     method @NonNull public android.os.Bundle getMetricsBundle();
     method @IntRange(from=0xffffffff) public long getTimeSinceCreatedMillis();
   }
@@ -24647,7 +24631,7 @@
     field @NonNull public static final android.media.metrics.LogSessionId LOG_SESSION_ID_NONE;
   }
 
-  public class MediaMetricsManager {
+  public final class MediaMetricsManager {
     method @NonNull public android.media.metrics.PlaybackSession createPlaybackSession();
     method @NonNull public android.media.metrics.RecordingSession createRecordingSession();
     field public static final long INVALID_TIMESTAMP = -1L; // 0xffffffffffffffffL
@@ -38369,25 +38353,6 @@
 
 }
 
-package android.service.dataloader {
-
-  public abstract class DataLoaderService extends android.app.Service {
-    ctor public DataLoaderService();
-    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method @Nullable public android.service.dataloader.DataLoaderService.DataLoader onCreateDataLoader(@NonNull android.content.pm.DataLoaderParams);
-  }
-
-  public static interface DataLoaderService.DataLoader {
-    method public boolean onCreate(@NonNull android.content.pm.DataLoaderParams, @NonNull android.service.dataloader.DataLoaderService.FileSystemConnector);
-    method public boolean onPrepareImage(@NonNull java.util.Collection<android.content.pm.InstallationFile>, @NonNull java.util.Collection<java.lang.String>);
-  }
-
-  public static final class DataLoaderService.FileSystemConnector {
-    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void writeData(@NonNull String, long, long, @NonNull android.os.ParcelFileDescriptor) throws java.io.IOException;
-  }
-
-}
-
 package android.service.dreams {
 
   public class DreamService extends android.app.Service implements android.view.Window.Callback {
@@ -40334,7 +40299,6 @@
     field public static final int DURATION_MEDIUM = 2; // 0x2
     field public static final int DURATION_SHORT = 1; // 0x1
     field public static final int DURATION_VERY_SHORT = 0; // 0x0
-    field public static final long ENABLE_GET_CALL_STATE_PERMISSION_PROTECTION = 157233955L; // 0x95f3323L
     field public static final String EXTRA_CALL_BACK_NUMBER = "android.telecom.extra.CALL_BACK_NUMBER";
     field public static final String EXTRA_CALL_DISCONNECT_CAUSE = "android.telecom.extra.CALL_DISCONNECT_CAUSE";
     field public static final String EXTRA_CALL_DISCONNECT_MESSAGE = "android.telecom.extra.CALL_DISCONNECT_MESSAGE";
@@ -42609,7 +42573,7 @@
     method public String getNetworkOperator();
     method public String getNetworkOperatorName();
     method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public int getNetworkSelectionMode();
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getNetworkSlicingConfiguration(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.telephony.data.SlicingConfig,android.telephony.TelephonyManager.SlicingException>);
+    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getNetworkSlicingConfiguration(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.telephony.data.NetworkSlicingConfig,android.telephony.TelephonyManager.NetworkSlicingException>);
     method public String getNetworkSpecifier();
     method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getNetworkType();
     method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
@@ -42660,6 +42624,7 @@
     method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isModemEnabledForSlot(int);
     method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int isMultiSimSupported();
     method public boolean isNetworkRoaming();
+    method public boolean isRadioInterfaceCapabilitySupported(@NonNull String);
     method public boolean isRttSupported();
     method public boolean isSmsCapable();
     method @Deprecated public boolean isTtyModeSupported();
@@ -42859,11 +42824,13 @@
     field public static final int ERROR_TIMEOUT = 1; // 0x1
   }
 
-  public static class TelephonyManager.SlicingException extends java.lang.Exception {
-    ctor public TelephonyManager.SlicingException(int);
-    method public int getErrorCode();
-    field public static final int ERROR_MODEM_ERROR = 2; // 0x2
-    field public static final int ERROR_TIMEOUT = 1; // 0x1
+  public class TelephonyManager.ModemErrorException extends android.telephony.TelephonyManager.NetworkSlicingException {
+  }
+
+  public static class TelephonyManager.NetworkSlicingException extends java.lang.Exception {
+  }
+
+  public class TelephonyManager.TimeoutException extends android.telephony.TelephonyManager.NetworkSlicingException {
   }
 
   public abstract static class TelephonyManager.UssdResponseCallback {
@@ -43073,6 +43040,15 @@
     method @NonNull public android.telephony.data.NetworkSliceInfo.Builder setStatus(int);
   }
 
+  public final class NetworkSlicingConfig implements android.os.Parcelable {
+    ctor public NetworkSlicingConfig();
+    method public int describeContents();
+    method @NonNull public java.util.List<android.telephony.data.NetworkSliceInfo> getSliceInfo();
+    method @NonNull public java.util.List<android.telephony.data.UrspRule> getUrspRules();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.NetworkSlicingConfig> CREATOR;
+  }
+
   public final class RouteSelectionDescriptor implements android.os.Parcelable {
     method public int describeContents();
     method @NonNull public java.util.List<java.lang.String> getDataNetworkName();
@@ -43090,30 +43066,14 @@
     field public static final int SESSION_TYPE_IPV6 = 1; // 0x1
   }
 
-  public final class SlicingConfig implements android.os.Parcelable {
-    ctor public SlicingConfig();
-    method public int describeContents();
-    method @NonNull public java.util.List<android.telephony.data.NetworkSliceInfo> getSliceInfo();
-    method @NonNull public java.util.List<android.telephony.data.UrspRule> getUrspRules();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.SlicingConfig> CREATOR;
-  }
-
   public final class TrafficDescriptor implements android.os.Parcelable {
     method public int describeContents();
     method @Nullable public String getDataNetworkName();
-    method @Nullable public String getOsAppId();
+    method @Nullable public byte[] getOsAppId();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.TrafficDescriptor> CREATOR;
   }
 
-  public static final class TrafficDescriptor.Builder {
-    ctor public TrafficDescriptor.Builder();
-    method @NonNull public android.telephony.data.TrafficDescriptor build();
-    method @NonNull public android.telephony.data.TrafficDescriptor.Builder setDataNetworkName(@NonNull String);
-    method @NonNull public android.telephony.data.TrafficDescriptor.Builder setOsAppId(@NonNull String);
-  }
-
   public final class UrspRule implements android.os.Parcelable {
     method public int describeContents();
     method @IntRange(from=0x0, to=0xff) public int getPrecedence();
@@ -48567,7 +48527,7 @@
     method public android.view.View focusSearch(int);
     method public void forceHasOverlappingRendering(boolean);
     method public void forceLayout();
-    method @Nullable public void generateDisplayHash(@NonNull String, @Nullable android.graphics.Rect, @NonNull java.util.concurrent.Executor, @NonNull android.view.displayhash.DisplayHashResultCallback);
+    method public void generateDisplayHash(@NonNull String, @Nullable android.graphics.Rect, @NonNull java.util.concurrent.Executor, @NonNull android.view.displayhash.DisplayHashResultCallback);
     method public static int generateViewId();
     method public CharSequence getAccessibilityClassName();
     method public android.view.View.AccessibilityDelegate getAccessibilityDelegate();
@@ -52718,6 +52678,22 @@
     method public void onGetSuggestions(android.view.textservice.SuggestionsInfo[]);
   }
 
+  public static class SpellCheckerSession.SpellCheckerSessionParams {
+    method @NonNull public android.os.Bundle getExtras();
+    method @Nullable public java.util.Locale getLocale();
+    method public int getSupportedAttributes();
+    method public boolean shouldReferToSpellCheckerLanguageSettings();
+  }
+
+  public static final class SpellCheckerSession.SpellCheckerSessionParams.Builder {
+    ctor public SpellCheckerSession.SpellCheckerSessionParams.Builder();
+    method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams build();
+    method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams.Builder setExtras(@NonNull android.os.Bundle);
+    method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams.Builder setLocale(@Nullable java.util.Locale);
+    method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams.Builder setShouldReferToSpellCheckerLanguageSettings(boolean);
+    method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams.Builder setSupportedAttributes(int);
+  }
+
   public final class SpellCheckerSubtype implements android.os.Parcelable {
     ctor @Deprecated public SpellCheckerSubtype(int, String, String);
     method public boolean containsExtraValueKey(String);
@@ -52771,7 +52747,7 @@
     method @NonNull public java.util.List<android.view.textservice.SpellCheckerInfo> getEnabledSpellCheckerInfos();
     method public boolean isSpellCheckerEnabled();
     method @Nullable public android.view.textservice.SpellCheckerSession newSpellCheckerSession(@Nullable android.os.Bundle, @Nullable java.util.Locale, @NonNull android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener, boolean);
-    method @Nullable public android.view.textservice.SpellCheckerSession newSpellCheckerSession(@Nullable java.util.Locale, boolean, int, @Nullable android.os.Bundle, @NonNull java.util.concurrent.Executor, @NonNull android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener);
+    method @Nullable public android.view.textservice.SpellCheckerSession newSpellCheckerSession(@NonNull android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams, @NonNull java.util.concurrent.Executor, @NonNull android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener);
   }
 
 }
@@ -52912,7 +52888,7 @@
   public class Translator {
     method public void destroy();
     method public boolean isDestroyed();
-    method @Nullable public void translate(@NonNull android.view.translation.TranslationRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.view.translation.TranslationResponse>);
+    method @Nullable public void translate(@NonNull android.view.translation.TranslationRequest, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.view.translation.TranslationResponse>);
   }
 
   public final class UiTranslationManager {
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index e956dee..ee31e85 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -19,6 +19,7 @@
     field public static final String ACCESS_SHARED_LIBRARIES = "android.permission.ACCESS_SHARED_LIBRARIES";
     field public static final String ACCESS_SHORTCUTS = "android.permission.ACCESS_SHORTCUTS";
     field public static final String ACCESS_SURFACE_FLINGER = "android.permission.ACCESS_SURFACE_FLINGER";
+    field public static final String ACCESS_TUNED_INFO = "android.permission.ACCESS_TUNED_INFO";
     field public static final String ACCESS_TV_DESCRAMBLER = "android.permission.ACCESS_TV_DESCRAMBLER";
     field public static final String ACCESS_TV_TUNER = "android.permission.ACCESS_TV_TUNER";
     field public static final String ACCESS_VIBRATOR_STATE = "android.permission.ACCESS_VIBRATOR_STATE";
@@ -40,6 +41,7 @@
     field public static final String BIND_CONTENT_CAPTURE_SERVICE = "android.permission.BIND_CONTENT_CAPTURE_SERVICE";
     field public static final String BIND_CONTENT_SUGGESTIONS_SERVICE = "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE";
     field public static final String BIND_DIRECTORY_SEARCH = "android.permission.BIND_DIRECTORY_SEARCH";
+    field public static final String BIND_DISPLAY_HASHING_SERVICE = "android.permission.BIND_DISPLAY_HASHING_SERVICE";
     field public static final String BIND_DOMAIN_VERIFICATION_AGENT = "android.permission.BIND_DOMAIN_VERIFICATION_AGENT";
     field public static final String BIND_EUICC_SERVICE = "android.permission.BIND_EUICC_SERVICE";
     field public static final String BIND_EXTERNAL_STORAGE_SERVICE = "android.permission.BIND_EXTERNAL_STORAGE_SERVICE";
@@ -379,6 +381,7 @@
     field public static final int config_systemSpeechRecognizer;
     field public static final int config_systemTelevisionNotificationHandler;
     field public static final int config_systemTextIntelligence;
+    field public static final int config_systemUi;
     field public static final int config_systemUiIntelligence;
     field public static final int config_systemVisualIntelligence;
     field public static final int config_systemWellbeing;
@@ -437,7 +440,8 @@
   public class AlarmManager {
     method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.PendingIntent, android.os.WorkSource);
     method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.AlarmManager.OnAlarmListener, android.os.Handler, android.os.WorkSource);
-    method @RequiresPermission(android.Manifest.permission.SCHEDULE_PRIORITIZED_ALARM) public void setPrioritized(int, long, long, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.app.AlarmManager.OnAlarmListener);
+    method @RequiresPermission(allOf={android.Manifest.permission.UPDATE_DEVICE_STATS, android.Manifest.permission.SCHEDULE_EXACT_ALARM}, conditional=true) public void setExact(int, long, @Nullable String, @NonNull java.util.concurrent.Executor, @NonNull android.os.WorkSource, @NonNull android.app.AlarmManager.OnAlarmListener);
+    method @RequiresPermission(android.Manifest.permission.SCHEDULE_PRIORITIZED_ALARM) public void setPrioritized(int, long, long, @Nullable String, @NonNull java.util.concurrent.Executor, @NonNull android.app.AlarmManager.OnAlarmListener);
   }
 
   public class AppOpsManager {
@@ -1615,7 +1619,7 @@
     ctor public SmartspaceConfig.Builder(@NonNull android.content.Context, @NonNull String);
     method @NonNull public android.app.smartspace.SmartspaceConfig build();
     method @NonNull public android.app.smartspace.SmartspaceConfig.Builder setExtras(@NonNull android.os.Bundle);
-    method @NonNull public android.app.smartspace.SmartspaceConfig.Builder setSmartspaceTargetCount(int);
+    method @NonNull public android.app.smartspace.SmartspaceConfig.Builder setSmartspaceTargetCount(@IntRange(from=0, to=50) int);
   }
 
   public final class SmartspaceManager {
@@ -1623,23 +1627,22 @@
   }
 
   public final class SmartspaceSession implements java.lang.AutoCloseable {
+    method public void addOnTargetsAvailableListener(@NonNull java.util.concurrent.Executor, @NonNull android.app.smartspace.SmartspaceSession.OnTargetsAvailableListener);
     method public void close();
-    method public void destroy();
     method protected void finalize();
     method public void notifySmartspaceEvent(@NonNull android.app.smartspace.SmartspaceTargetEvent);
-    method public void registerSmartspaceUpdates(@NonNull java.util.concurrent.Executor, @NonNull android.app.smartspace.SmartspaceSession.Callback);
+    method public void removeOnTargetsAvailableListener(@NonNull android.app.smartspace.SmartspaceSession.OnTargetsAvailableListener);
     method public void requestSmartspaceUpdate();
-    method public void unregisterSmartspaceUpdates(@NonNull android.app.smartspace.SmartspaceSession.Callback);
   }
 
-  public static interface SmartspaceSession.Callback {
+  public static interface SmartspaceSession.OnTargetsAvailableListener {
     method public void onTargetsAvailable(@NonNull java.util.List<android.app.smartspace.SmartspaceTarget>);
   }
 
   public final class SmartspaceSessionId implements android.os.Parcelable {
     method public int describeContents();
     method @Nullable public String getId();
-    method @NonNull public int getUserId();
+    method @NonNull public android.os.UserHandle getUserHandle();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.SmartspaceSessionId> CREATOR;
   }
@@ -1650,19 +1653,19 @@
     method @Nullable public String getAssociatedSmartspaceTargetId();
     method @Nullable public android.app.smartspace.SmartspaceAction getBaseAction();
     method @NonNull public android.content.ComponentName getComponentName();
-    method @NonNull public long getCreationTimeMillis();
-    method @NonNull public long getExpiryTimeMillis();
-    method @NonNull public int getFeatureType();
+    method public long getCreationTimeMillis();
+    method public long getExpiryTimeMillis();
+    method public int getFeatureType();
     method @Nullable public android.app.smartspace.SmartspaceAction getHeaderAction();
     method @NonNull public java.util.List<android.app.smartspace.SmartspaceAction> getIconGrid();
-    method @NonNull public float getScore();
+    method public float getScore();
     method @Nullable public android.net.Uri getSliceUri();
     method @NonNull public String getSmartspaceTargetId();
     method @Nullable public String getSourceNotificationKey();
     method @NonNull public android.os.UserHandle getUserHandle();
-    method @Nullable public android.appwidget.AppWidgetProviderInfo getWidgetId();
-    method @NonNull public boolean isSensitive();
-    method @NonNull public boolean shouldShowExpanded();
+    method @Nullable public android.appwidget.AppWidgetProviderInfo getWidget();
+    method public boolean isSensitive();
+    method public boolean shouldShowExpanded();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.SmartspaceTarget> CREATOR;
     field public static final int FEATURE_ALARM = 7; // 0x7
@@ -1697,17 +1700,17 @@
     method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setActionChips(@NonNull java.util.List<android.app.smartspace.SmartspaceAction>);
     method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setAssociatedSmartspaceTargetId(@NonNull String);
     method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setBaseAction(@NonNull android.app.smartspace.SmartspaceAction);
-    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setCreationTimeMillis(@NonNull long);
-    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setExpiryTimeMillis(@NonNull long);
-    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setFeatureType(@NonNull int);
+    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setCreationTimeMillis(long);
+    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setExpiryTimeMillis(long);
+    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setFeatureType(int);
     method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setHeaderAction(@NonNull android.app.smartspace.SmartspaceAction);
     method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setIconGrid(@NonNull java.util.List<android.app.smartspace.SmartspaceAction>);
-    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setScore(@NonNull float);
-    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSensitive(@NonNull boolean);
-    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setShouldShowExpanded(@NonNull boolean);
+    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setScore(float);
+    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSensitive(boolean);
+    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setShouldShowExpanded(boolean);
     method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSliceUri(@NonNull android.net.Uri);
     method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSourceNotificationKey(@NonNull String);
-    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setWidgetId(@NonNull android.appwidget.AppWidgetProviderInfo);
+    method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setWidget(@NonNull android.appwidget.AppWidgetProviderInfo);
   }
 
   public final class SmartspaceTargetEvent implements android.os.Parcelable {
@@ -1719,11 +1722,11 @@
     field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.SmartspaceTargetEvent> CREATOR;
     field public static final int EVENT_TARGET_BLOCK = 5; // 0x5
     field public static final int EVENT_TARGET_DISMISS = 4; // 0x4
+    field public static final int EVENT_TARGET_HIDDEN = 3; // 0x3
     field public static final int EVENT_TARGET_INTERACTION = 1; // 0x1
-    field public static final int EVENT_TARGET_IN_VIEW = 2; // 0x2
-    field public static final int EVENT_TARGET_OUT_OF_VIEW = 3; // 0x3
-    field public static final int EVENT_UI_SURFACE_IN_VIEW = 6; // 0x6
-    field public static final int EVENT_UI_SURFACE_OUT_OF_VIEW = 7; // 0x7
+    field public static final int EVENT_TARGET_SHOWN = 2; // 0x2
+    field public static final int EVENT_UI_SURFACE_HIDDEN = 7; // 0x7
+    field public static final int EVENT_UI_SURFACE_SHOWN = 6; // 0x6
   }
 
   public static final class SmartspaceTargetEvent.Builder {
@@ -2321,7 +2324,7 @@
     field public static final String SYSTEM_CONFIG_SERVICE = "system_config";
     field public static final String SYSTEM_UPDATE_SERVICE = "system_update";
     field public static final String TETHERING_SERVICE = "tethering";
-    field public static final String TRANSLATION_MANAGER_SERVICE = "transformer";
+    field public static final String TRANSLATION_MANAGER_SERVICE = "translation";
     field public static final String UI_TRANSLATION_SERVICE = "ui_translation";
     field public static final String VR_SERVICE = "vrmanager";
     field public static final String WIFI_NL80211_SERVICE = "wifinl80211";
@@ -2527,6 +2530,18 @@
 
   public class DataLoaderParams {
     method @NonNull public static final android.content.pm.DataLoaderParams forIncremental(@NonNull android.content.ComponentName, @NonNull String);
+    method @NonNull public static final android.content.pm.DataLoaderParams forStreaming(@NonNull android.content.ComponentName, @NonNull String);
+    method @NonNull public final String getArguments();
+    method @NonNull public final android.content.ComponentName getComponentName();
+    method @NonNull public final int getType();
+  }
+
+  public final class InstallationFile {
+    method public long getLengthBytes();
+    method public int getLocation();
+    method @Nullable public byte[] getMetadata();
+    method @NonNull public String getName();
+    method @Nullable public byte[] getSignature();
   }
 
   public final class InstantAppInfo implements android.os.Parcelable {
@@ -2620,10 +2635,19 @@
   public class PackageInstaller {
     method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setPermissionsResult(int, boolean);
     field public static final int DATA_LOADER_TYPE_INCREMENTAL = 2; // 0x2
+    field public static final int DATA_LOADER_TYPE_NONE = 0; // 0x0
+    field public static final int DATA_LOADER_TYPE_STREAMING = 1; // 0x1
+    field public static final String EXTRA_DATA_LOADER_TYPE = "android.content.pm.extra.DATA_LOADER_TYPE";
+    field public static final int LOCATION_DATA_APP = 0; // 0x0
+    field public static final int LOCATION_MEDIA_DATA = 2; // 0x2
+    field public static final int LOCATION_MEDIA_OBB = 1; // 0x1
   }
 
   public static class PackageInstaller.Session implements java.io.Closeable {
+    method @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public void addFile(int, @NonNull String, long, @NonNull byte[], @Nullable byte[]);
     method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void commitTransferred(@NonNull android.content.IntentSender);
+    method @Nullable @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public android.content.pm.DataLoaderParams getDataLoaderParams();
+    method @RequiresPermission("com.android.permission.USE_INSTALLER_V2") public void removeFile(int, @NonNull String);
   }
 
   public static class PackageInstaller.SessionInfo implements android.os.Parcelable {
@@ -2644,6 +2668,7 @@
   public static class PackageInstaller.SessionParams implements android.os.Parcelable {
     method @RequiresPermission(android.Manifest.permission.ALLOCATE_AGGRESSIVE) public void setAllocateAggressive(boolean);
     method @Deprecated public void setAllowDowngrade(boolean);
+    method @RequiresPermission(allOf={android.Manifest.permission.INSTALL_PACKAGES, "com.android.permission.USE_INSTALLER_V2"}) public void setDataLoaderParams(@NonNull android.content.pm.DataLoaderParams);
     method public void setDontKillApp(boolean);
     method public void setEnableRollback(boolean);
     method public void setEnableRollback(boolean, int);
@@ -5611,8 +5636,9 @@
     method public int getAppType();
     method @Nullable public android.net.Uri getChannelUri();
     method @NonNull public String getInputId();
-    method public boolean isForeground();
+    method public boolean isMainSession();
     method public boolean isRecordingSession();
+    method public boolean isVisible();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field public static final int APP_TAG_SELF = 0; // 0x0
     field public static final int APP_TYPE_NON_SYSTEM = 3; // 0x3
@@ -5736,7 +5762,7 @@
     method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void addBlockedRating(@NonNull android.media.tv.TvContentRating);
     method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean captureFrame(String, android.view.Surface, android.media.tv.TvStreamConfig);
     method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public java.util.List<android.media.tv.TvStreamConfig> getAvailableTvStreamConfigList(String);
-    method @NonNull @RequiresPermission("com.android.providers.tv.permission.ACCESS_WATCHED_PROGRAMS") public java.util.List<android.media.tv.TunedInfo> getCurrentTunedInfos();
+    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_TUNED_INFO) public java.util.List<android.media.tv.TunedInfo> getCurrentTunedInfos();
     method @NonNull @RequiresPermission("android.permission.DVB_DEVICE") public java.util.List<android.media.tv.DvbDeviceInfo> getDvbDeviceList();
     method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public java.util.List<android.media.tv.TvInputHardwareInfo> getHardwareList();
     method @RequiresPermission(android.Manifest.permission.READ_CONTENT_RATING_SYSTEMS) public java.util.List<android.media.tv.TvContentRatingSystemInfo> getTvContentRatingSystemList();
@@ -5763,7 +5789,7 @@
   }
 
   public abstract static class TvInputManager.TvInputCallback {
-    method public void onCurrentTunedInfosUpdated(@NonNull java.util.List<android.media.tv.TunedInfo>);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_TUNED_INFO) public void onCurrentTunedInfosUpdated(@NonNull java.util.List<android.media.tv.TunedInfo>);
   }
 
   public abstract class TvInputService extends android.app.Service {
@@ -7298,10 +7324,6 @@
 
 package android.net {
 
-  public class DnsResolverServiceManager {
-    method @NonNull @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public static android.os.IBinder getService(@NonNull android.content.Context);
-  }
-
   public class EthernetManager {
     method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public android.net.EthernetManager.TetheredInterfaceRequest requestTetheredInterface(@NonNull java.util.concurrent.Executor, @NonNull android.net.EthernetManager.TetheredInterfaceCallback);
   }
@@ -7861,7 +7883,7 @@
     method @Nullable public android.net.wifi.nl80211.WifiNl80211Manager.TxPacketCounters getTxPacketCounters(@NonNull String);
     method @Nullable public static android.net.wifi.nl80211.WifiNl80211Manager.OemSecurityType parseOemSecurityTypeElement(int, int, @NonNull byte[]);
     method @Deprecated public boolean registerApCallback(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.SoftApCallback);
-    method public boolean registerCountryCodeChangeListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.CountryCodeChangeListener);
+    method public boolean registerCountryCodeChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.CountryCodeChangedListener);
     method public void sendMgmtFrame(@NonNull String, @NonNull byte[], int, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.SendMgmtFrameCallback);
     method public void setOnServiceDeadCallback(@NonNull Runnable);
     method public boolean setupInterfaceForClientMode(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.ScanEventCallback, @NonNull android.net.wifi.nl80211.WifiNl80211Manager.ScanEventCallback);
@@ -7874,7 +7896,7 @@
     method public boolean tearDownClientInterface(@NonNull String);
     method public boolean tearDownInterfaces();
     method public boolean tearDownSoftApInterface(@NonNull String);
-    method public void unregisterCountryCodeChangeListener(@NonNull android.net.wifi.nl80211.WifiNl80211Manager.CountryCodeChangeListener);
+    method public void unregisterCountryCodeChangedListener(@NonNull android.net.wifi.nl80211.WifiNl80211Manager.CountryCodeChangedListener);
     field public static final String SCANNING_PARAM_ENABLE_6GHZ_RNR = "android.net.wifi.nl80211.SCANNING_PARAM_ENABLE_6GHZ_RNR";
     field public static final int SCAN_TYPE_PNO_SCAN = 1; // 0x1
     field public static final int SCAN_TYPE_SINGLE_SCAN = 0; // 0x0
@@ -7885,8 +7907,8 @@
     field public static final int SEND_MGMT_FRAME_ERROR_UNKNOWN = 1; // 0x1
   }
 
-  public static interface WifiNl80211Manager.CountryCodeChangeListener {
-    method public void onChanged(@NonNull String);
+  public static interface WifiNl80211Manager.CountryCodeChangedListener {
+    method public void onCountryCodeChanged(@NonNull String);
   }
 
   public static class WifiNl80211Manager.OemSecurityType {
@@ -7944,16 +7966,16 @@
     method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean enableSecureNfc(boolean);
     method @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON) public boolean isControllerAlwaysOn();
     method @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON) public boolean isControllerAlwaysOnSupported();
-    method @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON) public void registerControllerAlwaysOnStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.nfc.NfcAdapter.ControllerAlwaysOnStateCallback);
+    method @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON) public void registerControllerAlwaysOnListener(@NonNull java.util.concurrent.Executor, @NonNull android.nfc.NfcAdapter.ControllerAlwaysOnListener);
     method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean removeNfcUnlockHandler(android.nfc.NfcAdapter.NfcUnlockHandler);
     method @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON) public boolean setControllerAlwaysOn(boolean);
     method public void setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, int);
-    method @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON) public void unregisterControllerAlwaysOnStateCallback(@NonNull android.nfc.NfcAdapter.ControllerAlwaysOnStateCallback);
+    method @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON) public void unregisterControllerAlwaysOnListener(@NonNull android.nfc.NfcAdapter.ControllerAlwaysOnListener);
     field public static final int FLAG_NDEF_PUSH_NO_CONFIRM = 1; // 0x1
   }
 
-  public static interface NfcAdapter.ControllerAlwaysOnStateCallback {
-    method public void onStateChanged(boolean);
+  public static interface NfcAdapter.ControllerAlwaysOnListener {
+    method public void onControllerAlwaysOnChanged(boolean);
   }
 
   public static interface NfcAdapter.NfcUnlockHandler {
@@ -8372,6 +8394,7 @@
     field public static final int REASON_ACCOUNT_TRANSFER = 104; // 0x68
     field public static final int REASON_ACTIVITY_RECOGNITION = 103; // 0x67
     field public static final int REASON_GEOFENCING = 100; // 0x64
+    field public static final int REASON_LOCATION_PROVIDER = 312; // 0x138
     field public static final int REASON_OTHER = 1; // 0x1
     field public static final int REASON_PUSH_MESSAGING = 101; // 0x65
     field public static final int REASON_PUSH_MESSAGING_OVER_QUOTA = 102; // 0x66
@@ -8424,6 +8447,7 @@
     field @Deprecated public static final int EVENT_UNSPECIFIED = 0; // 0x0
     field @Deprecated public static final int REASON_ACTIVITY_RECOGNITION = 103; // 0x67
     field @Deprecated public static final int REASON_GEOFENCING = 100; // 0x64
+    field @Deprecated public static final int REASON_LOCATION_PROVIDER = 312; // 0x138
     field @Deprecated public static final int REASON_OTHER = 1; // 0x1
     field @Deprecated public static final int REASON_PUSH_MESSAGING = 101; // 0x65
     field @Deprecated public static final int REASON_PUSH_MESSAGING_OVER_QUOTA = 102; // 0x66
@@ -9819,12 +9843,30 @@
 
 }
 
+package android.service.dataloader {
+
+  public abstract class DataLoaderService extends android.app.Service {
+    ctor public DataLoaderService();
+    method @Nullable public android.service.dataloader.DataLoaderService.DataLoader onCreateDataLoader(@NonNull android.content.pm.DataLoaderParams);
+  }
+
+  public static interface DataLoaderService.DataLoader {
+    method public boolean onCreate(@NonNull android.content.pm.DataLoaderParams, @NonNull android.service.dataloader.DataLoaderService.FileSystemConnector);
+    method public boolean onPrepareImage(@NonNull java.util.Collection<android.content.pm.InstallationFile>, @NonNull java.util.Collection<java.lang.String>);
+  }
+
+  public static final class DataLoaderService.FileSystemConnector {
+    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void writeData(@NonNull String, long, long, @NonNull android.os.ParcelFileDescriptor) throws java.io.IOException;
+  }
+
+}
+
 package android.service.displayhash {
 
   public final class DisplayHashParams implements android.os.Parcelable {
     method public int describeContents();
     method @Nullable public android.util.Size getBufferSize();
-    method public boolean isGrayscaleBuffer();
+    method public boolean isUseGrayscale();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.service.displayhash.DisplayHashParams> CREATOR;
   }
@@ -9833,17 +9875,17 @@
     ctor public DisplayHashParams.Builder();
     method @NonNull public android.service.displayhash.DisplayHashParams build();
     method @NonNull public android.service.displayhash.DisplayHashParams.Builder setBufferSize(int, int);
-    method @NonNull public android.service.displayhash.DisplayHashParams.Builder setGrayscaleBuffer(boolean);
+    method @NonNull public android.service.displayhash.DisplayHashParams.Builder setUseGrayscale(boolean);
   }
 
-  public abstract class DisplayHasherService extends android.app.Service {
-    ctor public DisplayHasherService();
+  public abstract class DisplayHashingService extends android.app.Service {
+    ctor public DisplayHashingService();
     method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
-    method @Nullable public abstract void onGenerateDisplayHash(@NonNull byte[], @NonNull android.hardware.HardwareBuffer, @NonNull android.graphics.Rect, @NonNull String, @NonNull android.view.displayhash.DisplayHashResultCallback);
+    method public abstract void onGenerateDisplayHash(@NonNull byte[], @NonNull android.hardware.HardwareBuffer, @NonNull android.graphics.Rect, @NonNull String, @NonNull android.view.displayhash.DisplayHashResultCallback);
     method @NonNull public abstract java.util.Map<java.lang.String,android.service.displayhash.DisplayHashParams> onGetDisplayHashAlgorithms();
     method @Nullable public abstract android.view.displayhash.VerifiedDisplayHash onVerifyDisplayHash(@NonNull byte[], @NonNull android.view.displayhash.DisplayHash);
-    field public static final String SERVICE_INTERFACE = "android.service.displayhash.DisplayHasherService";
-    field public static final String SERVICE_META_DATA = "android.displayhash.display_hasher_service";
+    field public static final String SERVICE_INTERFACE = "android.service.displayhash.DisplayHashingService";
+    field public static final String SERVICE_META_DATA = "android.displayhash.display_hashing_service";
   }
 
 }
@@ -10185,7 +10227,7 @@
     ctor public RotationResolutionRequest(@NonNull String, int, int, boolean, long);
     method public int describeContents();
     method public int getCurrentRotation();
-    method @NonNull public String getPackageName();
+    method @NonNull public String getForegroundPackageName();
     method public int getProposedRotation();
     method public long getTimeoutMillis();
     method public boolean shouldUseCamera();
@@ -10357,11 +10399,12 @@
     ctor public TranslationService();
     method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
     method public void onConnected();
-    method public abstract void onCreateTranslationSession(@NonNull android.view.translation.TranslationContext, int);
+    method public void onCreateTranslationSession(@NonNull android.view.translation.TranslationContext, int, @NonNull java.util.function.Consumer<java.lang.Boolean>);
+    method @Deprecated public abstract void onCreateTranslationSession(@NonNull android.view.translation.TranslationContext, int);
     method public void onDisconnected();
     method public abstract void onFinishTranslationSession(int);
     method public abstract void onTranslationCapabilitiesRequest(int, int, @NonNull java.util.function.Consumer<java.util.Set<android.view.translation.TranslationCapability>>);
-    method public abstract void onTranslationRequest(@NonNull android.view.translation.TranslationRequest, int, @NonNull android.os.CancellationSignal, @NonNull android.service.translation.TranslationService.OnTranslationResultCallback);
+    method public abstract void onTranslationRequest(@NonNull android.view.translation.TranslationRequest, int, @Nullable android.os.CancellationSignal, @NonNull android.service.translation.TranslationService.OnTranslationResultCallback);
     field public static final String SERVICE_INTERFACE = "android.service.translation.TranslationService";
     field public static final String SERVICE_META_DATA = "android.translation_service";
   }
@@ -11042,17 +11085,6 @@
     field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR;
   }
 
-  public final class CarrierBandwidth implements android.os.Parcelable {
-    ctor public CarrierBandwidth(int, int, int, int);
-    method public int describeContents();
-    method public int getPrimaryDownlinkCapacityKbps();
-    method public int getPrimaryUplinkCapacityKbps();
-    method public int getSecondaryDownlinkCapacityKbps();
-    method public int getSecondaryUplinkCapacityKbps();
-    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CarrierBandwidth> CREATOR;
-    field public static final int INVALID = -1; // 0xffffffff
-  }
-
   public class CarrierConfigManager {
     method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultCarrierServicePackageName();
     method @NonNull public static android.os.PersistableBundle getDefaultConfig();
@@ -11069,10 +11101,6 @@
     field public static final String KEY_SUPPORT_CDMA_1X_VOICE_CALLS_BOOL = "support_cdma_1x_voice_calls_bool";
   }
 
-  public static final class CarrierConfigManager.Ims {
-    field public static final String KEY_PUBLISH_SERVICE_DESC_FEATURE_TAG_MAP_OVERRIDE_STRING_ARRAY = "ims.publish_service_desc_feature_tag_map_override_string_array";
-  }
-
   public static final class CarrierConfigManager.Wifi {
     field public static final String KEY_AVOID_5GHZ_SOFTAP_FOR_LAA_BOOL = "wifi.avoid_5ghz_softap_for_laa_bool";
     field public static final String KEY_AVOID_5GHZ_WIFI_DIRECT_FOR_LAA_BOOL = "wifi.avoid_5ghz_wifi_direct_for_laa_bool";
@@ -11938,7 +11966,6 @@
     method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isOffhook();
     method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isOpportunisticNetworkEnabled();
     method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isPotentialEmergencyNumber(@NonNull String);
-    method public boolean isRadioInterfaceCapabilitySupported(@NonNull String);
     method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRadioOn();
     method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging();
     method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isTetheringApnRequired();
@@ -14122,6 +14149,7 @@
     method @NonNull public java.io.File getFile();
     method @Nullable public String getFontFamilyName();
     method @NonNull public String getFontVariationSettings();
+    method @NonNull public String getPostScriptName();
     method @NonNull public android.graphics.fonts.FontStyle getStyle();
     method public int getTtcIndex();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 0541934..06ce037 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -161,6 +161,7 @@
     method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS) public void moveTaskToRootTask(int, int, boolean);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS) public void removeRootTasksInWindowingModes(@NonNull int[]);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS) public void removeRootTasksWithActivityTypes(@NonNull int[]);
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS) public boolean removeTask(int);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS) public void resizeTask(int, android.graphics.Rect);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS) public void startSystemLockTaskMode(int);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS) public void stopSystemLockTaskMode();
@@ -346,6 +347,10 @@
     method public boolean isSeamlessResizeEnabled();
   }
 
+  public final class PictureInPictureUiState implements android.os.Parcelable {
+    ctor public PictureInPictureUiState(boolean);
+  }
+
   public class StatusBarManager {
     method public void clickNotification(@Nullable String, int, int, boolean);
     method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void collapsePanels();
@@ -656,6 +661,16 @@
     ctor public UsageStats();
   }
 
+  public static final class UsageStats.Builder {
+    ctor public UsageStats.Builder();
+    method @NonNull public android.app.usage.UsageStats build();
+    method @NonNull public android.app.usage.UsageStats.Builder setFirstTimeStamp(long);
+    method @NonNull public android.app.usage.UsageStats.Builder setLastTimeStamp(long);
+    method @NonNull public android.app.usage.UsageStats.Builder setLastTimeUsed(long);
+    method @NonNull public android.app.usage.UsageStats.Builder setPackageName(@Nullable String);
+    method @NonNull public android.app.usage.UsageStats.Builder setTotalTimeInForeground(long);
+  }
+
   public final class UsageStatsManager {
     method public void forceUsageSourceSettingRead();
   }
@@ -772,8 +787,10 @@
 
   public class ActivityInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
     method public static boolean isTranslucentOrFloating(android.content.res.TypedArray);
+    field public static final long ALWAYS_SANDBOX_DISPLAY_APIS = 185004937L; // 0xb06f389L
     field public static final long FORCE_NON_RESIZE_APP = 181136395L; // 0xacbec0bL
     field public static final long FORCE_RESIZE_APP = 174042936L; // 0xa5faf38L
+    field public static final long NEVER_SANDBOX_DISPLAY_APIS = 184838306L; // 0xb0468a2L
     field public static final long OVERRIDE_MIN_ASPECT_RATIO = 174042980L; // 0xa5faf64L
     field public static final long OVERRIDE_MIN_ASPECT_RATIO_LARGE = 180326787L; // 0xabf9183L
     field public static final float OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE = 1.7777778f;
@@ -998,7 +1015,7 @@
   }
 
   public class Typeface {
-    method @NonNull public static java.util.Map<java.lang.String,android.graphics.Typeface> deserializeFontMap(@NonNull java.nio.ByteBuffer) throws java.io.IOException;
+    method @NonNull public static long[] deserializeFontMap(@NonNull java.nio.ByteBuffer, @NonNull java.util.Map<java.lang.String,android.graphics.Typeface>) throws java.io.IOException;
     method @Nullable public static android.os.SharedMemory getSystemFontMapSharedMemory();
     method @NonNull public static android.os.SharedMemory serializeFontMap(@NonNull java.util.Map<java.lang.String,android.graphics.Typeface>) throws android.system.ErrnoException, java.io.IOException;
   }
@@ -1574,6 +1591,10 @@
     method public static void setServiceForTest(@Nullable android.os.IBinder);
   }
 
+  public class NetworkWatchlistManager {
+    method @Nullable public byte[] getWatchlistConfigHash();
+  }
+
   public class TrafficStats {
     method public static long getLoopbackRxBytes();
     method public static long getLoopbackRxPackets();
@@ -1897,6 +1918,16 @@
     method public String getPath();
   }
 
+  public static final class StorageVolume.Builder {
+    ctor public StorageVolume.Builder(@NonNull String, @NonNull java.io.File, @NonNull String, @NonNull android.os.UserHandle, @NonNull String);
+    method @NonNull public android.os.storage.StorageVolume build();
+    method @NonNull public android.os.storage.StorageVolume.Builder setEmulated(boolean);
+    method @NonNull public android.os.storage.StorageVolume.Builder setPrimary(boolean);
+    method @NonNull public android.os.storage.StorageVolume.Builder setRemovable(boolean);
+    method @NonNull public android.os.storage.StorageVolume.Builder setStorageUuid(@Nullable java.util.UUID);
+    method @NonNull public android.os.storage.StorageVolume.Builder setUuid(@Nullable String);
+  }
+
 }
 
 package android.os.strictmode {
@@ -2009,6 +2040,7 @@
 
   public final class PermissionManager {
     method @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.permission.PermGroupUsage> getIndicatorAppOpUsageData();
+    method @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.permission.PermGroupUsage> getIndicatorAppOpUsageData(boolean);
     method @NonNull public android.content.AttributionSource registerAttributionSource(@NonNull android.content.AttributionSource);
   }
 
@@ -2315,6 +2347,14 @@
 
 }
 
+package android.service.voice {
+
+  public class AlwaysOnHotwordDetector implements android.service.voice.HotwordDetector {
+    method @RequiresPermission(allOf={android.Manifest.permission.RECORD_AUDIO, android.Manifest.permission.CAPTURE_AUDIO_HOTWORD}) public void triggerHardwareRecognitionEventForTest(int, int, boolean, int, int, int, boolean, @NonNull android.media.AudioFormat, @Nullable byte[]);
+  }
+
+}
+
 package android.service.watchdog {
 
   public abstract class ExplicitHealthCheckService extends android.app.Service {
@@ -2487,6 +2527,7 @@
     method @NonNull public java.io.File getFile();
     method @Nullable public String getFontFamilyName();
     method @NonNull public String getFontVariationSettings();
+    method @NonNull public String getPostScriptName();
     method @NonNull public android.graphics.fonts.FontStyle getStyle();
     method public int getTtcIndex();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
@@ -2739,6 +2780,7 @@
   public interface WindowManager extends android.view.ViewManager {
     method public default int getDisplayImePolicy(int);
     method public default void holdLock(android.os.IBinder, int);
+    method public default boolean isTaskSnapshotSupported();
     method public default void setDisplayImePolicy(int, int);
     method public default void setForceCrossWindowBlurDisabled(boolean);
     method public default void setShouldShowSystemDecors(int, boolean);
diff --git a/core/java/Android.bp b/core/java/Android.bp
index 1d290de..c8a8d36 100644
--- a/core/java/Android.bp
+++ b/core/java/Android.bp
@@ -70,6 +70,7 @@
         "android/annotation/Nullable.java",
         "android/annotation/PluralsRes.java",
         "android/annotation/RawRes.java",
+        "android/annotation/RequiresNoPermission.java",
         "android/annotation/RequiresPermission.java",
         "android/annotation/SdkConstant.java",
         "android/annotation/Size.java",
diff --git a/core/java/android/annotation/RequiresNoPermission.java b/core/java/android/annotation/RequiresNoPermission.java
new file mode 100644
index 0000000..6ff4d6e3
--- /dev/null
+++ b/core/java/android/annotation/RequiresNoPermission.java
@@ -0,0 +1,36 @@
+/*
+ * 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 android.annotation;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.CLASS;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Denotes that the annotated element requires no permissions.
+ *
+ * @hide
+ */
+@Retention(CLASS)
+@Target({ANNOTATION_TYPE,METHOD,CONSTRUCTOR,FIELD,PARAMETER})
+public @interface RequiresNoPermission {
+}
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 45120b6..198fa65 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -2813,6 +2813,29 @@
     }
 
     /**
+     * Called by the system when the activity is in PiP and has state changes.
+     *
+     * Compare to {@link #onPictureInPictureModeChanged(boolean, Configuration)}, which is only
+     * called when PiP mode changes (meaning, enters or exits PiP), this can be called at any time
+     * while the activity is in PiP mode. Therefore, all invocation can only happen after
+     * {@link #onPictureInPictureModeChanged(boolean, Configuration)} is called with true, and
+     * before {@link #onPictureInPictureModeChanged(boolean, Configuration)} is called with false.
+     * You would not need to worry about cases where this is called and the activity is not in
+     * Picture-In-Picture mode. For managing cases where the activity enters/exits
+     * Picture-in-Picture (e.g. resources clean-up on exit), use
+     * {@link #onPictureInPictureModeChanged(boolean, Configuration)}.
+     *
+     * The default state is everything declared in {@link PictureInPictureUiState} is false, such as
+     * {@link PictureInPictureUiState#isStashed()}.
+     *
+     * @param pipState the new Picture-in-Picture state.
+     */
+    public void onPictureInPictureUiStateChanged(@NonNull PictureInPictureUiState pipState) {
+        // Left deliberately empty. There should be no side effects if a direct
+        // subclass of Activity does not call super.
+    }
+
+    /**
      * Called by the system when the activity changes to and from picture-in-picture mode.
      *
      * @see android.R.attr#supportsPictureInPicture
@@ -8792,11 +8815,11 @@
      * @hide
      */
     public void updateUiTranslationState(int state, TranslationSpec sourceSpec,
-            TranslationSpec destSpec, List<AutofillId> viewIds) {
+            TranslationSpec targetSpec, List<AutofillId> viewIds) {
         if (mUiTranslationController == null) {
             mUiTranslationController = new UiTranslationController(this, getApplicationContext());
         }
-        mUiTranslationController.updateUiTranslationState(state, sourceSpec, destSpec, viewIds);
+        mUiTranslationController.updateUiTranslationState(state, sourceSpec, targetSpec, viewIds);
     }
 
     class HostCallbacks extends FragmentHostCallback<Activity> {
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index a7d5b05..0803524 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -570,4 +570,9 @@
 
     /** Unregister an {@link AnrController} */
     public abstract void unregisterAnrController(AnrController controller);
+
+    /**
+     * Is the FGS started from an uid temporarily allowed to have while-in-use permission?
+     */
+    public abstract boolean isTempAllowlistedForFgsWhileInUse(int uid);
 }
diff --git a/core/java/android/app/ActivityTaskManager.java b/core/java/android/app/ActivityTaskManager.java
index 627017c..28d6fbb 100644
--- a/core/java/android/app/ActivityTaskManager.java
+++ b/core/java/android/app/ActivityTaskManager.java
@@ -469,7 +469,8 @@
         }
     }
 
-    /** @hide */
+    /** Removes task by a given taskId */
+    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS)
     public boolean removeTask(int taskId) {
         try {
             return getService().removeTask(taskId);
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 98fee9c..3a1961a 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -39,7 +39,6 @@
 import android.app.assist.AssistContent;
 import android.app.assist.AssistStructure;
 import android.app.backup.BackupAgent;
-import android.app.backup.BackupManager;
 import android.app.servertransaction.ActivityLifecycleItem;
 import android.app.servertransaction.ActivityLifecycleItem.LifecycleState;
 import android.app.servertransaction.ActivityRelaunchItem;
@@ -1587,9 +1586,17 @@
 
         @Override
         public void dumpGfxInfo(ParcelFileDescriptor pfd, String[] args) {
-            nDumpGraphicsInfo(pfd.getFileDescriptor());
-            WindowManagerGlobal.getInstance().dumpGfxInfo(pfd.getFileDescriptor(), args);
-            IoUtils.closeQuietly(pfd);
+            DumpComponentInfo data = new DumpComponentInfo();
+            try {
+                data.fd = pfd.dup();
+                data.token = null;
+                data.args = args;
+                sendMessage(H.DUMP_GFXINFO, data, 0, 0, true /*async*/);
+            } catch (IOException e) {
+                Slog.w(TAG, "dumpGfxInfo failed", e);
+            } finally {
+                IoUtils.closeQuietly(pfd);
+            }
         }
 
         @Override
@@ -1835,12 +1842,12 @@
 
         @Override
         public void updateUiTranslationState(IBinder activityToken, int state,
-                TranslationSpec sourceSpec, TranslationSpec destSpec, List<AutofillId> viewIds) {
+                TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds) {
             SomeArgs args = SomeArgs.obtain();
             args.arg1 = activityToken;
             args.arg2 = state;
             args.arg3 = sourceSpec;
-            args.arg4 = destSpec;
+            args.arg4 = targetSpec;
             args.arg5 = viewIds;
             sendMessage(H.UPDATE_UI_TRANSLATION_STATE, args);
         }
@@ -1961,6 +1968,7 @@
         public static final int ATTACH_STARTUP_AGENTS = 162;
         public static final int UPDATE_UI_TRANSLATION_STATE = 163;
         public static final int SET_CONTENT_CAPTURE_OPTIONS_CALLBACK = 164;
+        public static final int DUMP_GFXINFO = 165;
 
         public static final int INSTRUMENT_WITHOUT_RESTART = 170;
         public static final int FINISH_INSTRUMENTATION_WITHOUT_RESTART = 171;
@@ -2010,6 +2018,7 @@
                     case UPDATE_UI_TRANSLATION_STATE: return "UPDATE_UI_TRANSLATION_STATE";
                     case SET_CONTENT_CAPTURE_OPTIONS_CALLBACK:
                         return "SET_CONTENT_CAPTURE_OPTIONS_CALLBACK";
+                    case DUMP_GFXINFO: return "DUMP GFXINFO";
                     case INSTRUMENT_WITHOUT_RESTART: return "INSTRUMENT_WITHOUT_RESTART";
                     case FINISH_INSTRUMENTATION_WITHOUT_RESTART:
                         return "FINISH_INSTRUMENTATION_WITHOUT_RESTART";
@@ -2083,6 +2092,9 @@
                 case DUMP_SERVICE:
                     handleDumpService((DumpComponentInfo)msg.obj);
                     break;
+                case DUMP_GFXINFO:
+                    handleDumpGfxInfo((DumpComponentInfo) msg.obj);
+                    break;
                 case LOW_MEMORY:
                     Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "lowMemory");
                     handleLowMemory();
@@ -3987,6 +3999,12 @@
         }
     }
 
+    @Override
+    public void handlePictureInPictureStateChanged(@NonNull ActivityClientRecord r,
+            PictureInPictureUiState pipState) {
+        r.activity.onPictureInPictureUiStateChanged(pipState);
+    }
+
     /**
      * Register a splash screen manager to this process.
      */
@@ -4169,13 +4187,13 @@
     }
 
     private void updateUiTranslationState(IBinder activityToken, int state,
-            TranslationSpec sourceSpec, TranslationSpec destSpec, List<AutofillId> viewIds) {
+            TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds) {
         final ActivityClientRecord r = mActivities.get(activityToken);
         if (r == null) {
             Log.w(TAG, "updateUiTranslationState(): no activity for " + activityToken);
             return;
         }
-        r.activity.updateUiTranslationState(state, sourceSpec, destSpec, viewIds);
+        r.activity.updateUiTranslationState(state, sourceSpec, targetSpec, viewIds);
     }
 
     private static final ThreadLocal<Intent> sCurrentBroadcastIntent = new ThreadLocal<Intent>();
@@ -4483,6 +4501,17 @@
         }
     }
 
+    private void handleDumpGfxInfo(DumpComponentInfo info) {
+        try {
+            nDumpGraphicsInfo(info.fd.getFileDescriptor());
+            WindowManagerGlobal.getInstance().dumpGfxInfo(info.fd.getFileDescriptor(), info.args);
+        } catch (Exception e) {
+            Log.w(TAG, "Caught exception from dumpGfxInfo()", e);
+        } finally {
+            IoUtils.closeQuietly(info.fd);
+        }
+    }
+
     private void handleDumpService(DumpComponentInfo info) {
         final StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
         try {
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java
index df9530f..1cb46b1 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -6475,7 +6475,7 @@
                     historicalDiscreteAccesses.add(other.mDiscreteAccesses.get(i++));
                 }
             }
-            mDiscreteAccesses = historicalDiscreteAccesses;
+            mDiscreteAccesses = deduplicateDiscreteEvents(historicalDiscreteAccesses);
         }
 
         private void increaseAccessCount(@UidState int uidState, @OpFlags int flags,
@@ -6996,7 +6996,7 @@
             }
             result.add(entry);
         }
-        return result;
+        return deduplicateDiscreteEvents(result);
     }
 
     /**
@@ -9819,4 +9819,52 @@
             }
         }
     }
+
+    private static List<AttributedOpEntry> deduplicateDiscreteEvents(List<AttributedOpEntry> list) {
+        int n = list.size();
+        int i = 0;
+        for (int j = 0, k = 0; j < n; i++, j = k) {
+            long currentAccessTime = list.get(j).getLastAccessTime(OP_FLAGS_ALL);
+            k = j + 1;
+            while(k < n && list.get(k).getLastAccessTime(OP_FLAGS_ALL) == currentAccessTime) {
+                k++;
+            }
+            list.set(i, mergeAttributedOpEntries(list.subList(j, k)));
+        }
+        for (; i < n; i++) {
+            list.remove(list.size() - 1);
+        }
+        return list;
+    }
+
+    private static AttributedOpEntry mergeAttributedOpEntries(List<AttributedOpEntry> opEntries) {
+        if (opEntries.size() == 1) {
+            return opEntries.get(0);
+        }
+        LongSparseArray<AppOpsManager.NoteOpEvent> accessEvents = new LongSparseArray<>();
+        LongSparseArray<AppOpsManager.NoteOpEvent> rejectEvents = new LongSparseArray<>();
+        int opCount = opEntries.size();
+        for (int i = 0; i < opCount; i++) {
+            AttributedOpEntry a = opEntries.get(i);
+            ArraySet<Long> keys = a.collectKeys();
+            final int keyCount = keys.size();
+            for (int k = 0; k < keyCount; k++) {
+                final long key = keys.valueAt(k);
+
+                final int uidState = extractUidStateFromKey(key);
+                final int flags = extractFlagsFromKey(key);
+
+                NoteOpEvent access = a.getLastAccessEvent(uidState, uidState, flags);
+                NoteOpEvent reject = a.getLastRejectEvent(uidState, uidState, flags);
+
+                if (access != null) {
+                    accessEvents.append(key, access);
+                }
+                if (reject != null) {
+                    rejectEvents.append(key, reject);
+                }
+            }
+        }
+        return new AttributedOpEntry(opEntries.get(0).mOp, false, accessEvents, rejectEvents);
+    }
 }
diff --git a/core/java/android/app/ApplicationExitInfo.java b/core/java/android/app/ApplicationExitInfo.java
index dfc105a..8574678 100644
--- a/core/java/android/app/ApplicationExitInfo.java
+++ b/core/java/android/app/ApplicationExitInfo.java
@@ -614,7 +614,7 @@
      * tombstone traces will be returned for
      * {@link #REASON_CRASH_NATIVE}, with an InputStream containing a protobuf with
      * <a href="https://android.googlesource.com/platform/system/core/+/refs/heads/master/debuggerd/proto/tombstone.proto">this schema</a>.
-     * Note thatbecause these traces are kept in a separate global circular buffer, crashes may be
+     * Note that because these traces are kept in a separate global circular buffer, crashes may be
      * overwritten by newer crashes (including from other applications), so this may still return
      * null.
      *
diff --git a/core/java/android/app/ClientTransactionHandler.java b/core/java/android/app/ClientTransactionHandler.java
index cf5fd14..c752f34 100644
--- a/core/java/android/app/ClientTransactionHandler.java
+++ b/core/java/android/app/ClientTransactionHandler.java
@@ -159,6 +159,10 @@
     /** Request that an activity enter picture-in-picture. */
     public abstract void handlePictureInPictureRequested(@NonNull ActivityClientRecord r);
 
+    /** Signal to an activity (that is currently in PiP) of PiP state changes. */
+    public abstract void handlePictureInPictureStateChanged(@NonNull ActivityClientRecord r,
+            PictureInPictureUiState pipState);
+
     /** Whether the activity want to handle splash screen exit animation */
     public abstract boolean isHandleSplashScreenExit(@NonNull IBinder token);
 
diff --git a/core/java/android/app/IActivityClientController.aidl b/core/java/android/app/IActivityClientController.aidl
index ed4836e..09b0c2f 100644
--- a/core/java/android/app/IActivityClientController.aidl
+++ b/core/java/android/app/IActivityClientController.aidl
@@ -37,7 +37,11 @@
 interface IActivityClientController {
     oneway void activityIdle(in IBinder token, in Configuration config, in boolean stopProfiling);
     oneway void activityResumed(in IBinder token, in boolean handleSplashScreenExit);
-    oneway void activityTopResumedStateLost();
+    /**
+     * This call is not one-way because {@link #activityPaused()) is not one-way, or
+     * the top-resumed-lost could be reported after activity paused.
+     */
+    void activityTopResumedStateLost();
     /**
      * Notifies that the activity has completed paused. This call is not one-way because it can make
      * consecutive launch in the same process more coherent. About the order of binder call, it
diff --git a/core/java/android/app/IActivityTaskManager.aidl b/core/java/android/app/IActivityTaskManager.aidl
index 346882e..2f1f14e 100644
--- a/core/java/android/app/IActivityTaskManager.aidl
+++ b/core/java/android/app/IActivityTaskManager.aidl
@@ -36,6 +36,7 @@
 import android.app.IUserSwitchObserver;
 import android.app.Notification;
 import android.app.PendingIntent;
+import android.app.PictureInPictureUiState;
 import android.app.ProfilerInfo;
 import android.app.WaitResult;
 import android.app.assist.AssistContent;
@@ -330,4 +331,9 @@
      */
     void onSplashScreenViewCopyFinished(int taskId,
             in SplashScreenView.SplashScreenViewParcelable material);
+
+    /**
+     * When the Picture-in-picture state has changed.
+     */
+    void onPictureInPictureStateChanged(in PictureInPictureUiState pipState);
 }
diff --git a/core/java/android/app/IApplicationThread.aidl b/core/java/android/app/IApplicationThread.aidl
index 78e7ce8..918309e 100644
--- a/core/java/android/app/IApplicationThread.aidl
+++ b/core/java/android/app/IApplicationThread.aidl
@@ -160,5 +160,5 @@
             IUiAutomationConnection instrumentationUiConnection,
             in ApplicationInfo targetInfo);
     void updateUiTranslationState(IBinder activityToken, int state, in TranslationSpec sourceSpec,
-            in TranslationSpec destSpec, in List<AutofillId> viewIds);
+            in TranslationSpec targetSpec, in List<AutofillId> viewIds);
 }
diff --git a/core/java/android/app/IWallpaperManager.aidl b/core/java/android/app/IWallpaperManager.aidl
index e83557c..4f7c684 100644
--- a/core/java/android/app/IWallpaperManager.aidl
+++ b/core/java/android/app/IWallpaperManager.aidl
@@ -190,4 +190,18 @@
      * Called from SystemUI when it shows the AoD UI.
      */
     oneway void setInAmbientMode(boolean inAmbientMode, long animationDuration);
+
+    /**
+     * Called from SystemUI when the device is waking up.
+     *
+     * @hide
+     */
+    oneway void notifyWakingUp(int x, int y, in Bundle extras);
+
+    /**
+     * Called from SystemUI when the device is going to sleep.
+     *
+     * @hide
+     */
+    void notifyGoingToSleep(int x, int y, in Bundle extras);
 }
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 7ce0c70..d255616 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -6103,6 +6103,9 @@
                     button.setImageViewIcon(R.id.action0, action.getIcon());
                     boolean priority = action.getExtras().getBoolean(CallStyle.KEY_ACTION_PRIORITY);
                     button.setBoolean(R.id.action0, "setWrapModePriority", priority);
+                    int minWidthDimen =
+                            priority ? R.dimen.call_notification_system_action_min_width : 0;
+                    button.setIntDimen(R.id.action0, "setMinimumWidth", minWidthDimen);
                 }
             } else {
                 button.setTextViewText(R.id.action0, processTextSpans(
diff --git a/telephony/java/android/telephony/data/SlicingConfig.aidl b/core/java/android/app/PictureInPictureUiState.aidl
similarity index 75%
copy from telephony/java/android/telephony/data/SlicingConfig.aidl
copy to core/java/android/app/PictureInPictureUiState.aidl
index ad93d8c..ca81fb6 100644
--- a/telephony/java/android/telephony/data/SlicingConfig.aidl
+++ b/core/java/android/app/PictureInPictureUiState.aidl
@@ -1,11 +1,11 @@
-/*
- * Copyright 2021 The Android Open Source Project
+/**
+ * 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
+ *     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,
@@ -14,6 +14,6 @@
  * limitations under the License.
  */
 
-package android.telephony.data;
+package android.app;
 
-parcelable SlicingConfig;
+parcelable PictureInPictureUiState;
\ No newline at end of file
diff --git a/core/java/android/app/PictureInPictureUiState.java b/core/java/android/app/PictureInPictureUiState.java
new file mode 100644
index 0000000..3d2cb3f
--- /dev/null
+++ b/core/java/android/app/PictureInPictureUiState.java
@@ -0,0 +1,83 @@
+/*
+ * 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 android.app;
+
+import android.annotation.NonNull;
+import android.annotation.TestApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Objects;
+
+/**
+ * Used by {@link Activity#onPictureInPictureUiStateChanged(PictureInPictureUiState)}.
+ */
+public final class PictureInPictureUiState implements Parcelable {
+
+    private boolean mIsStashed;
+
+    /** {@hide} */
+    PictureInPictureUiState(Parcel in) {
+        mIsStashed = in.readBoolean();
+    }
+
+    /** {@hide} */
+    @TestApi
+    public PictureInPictureUiState(boolean isStashed) {
+        mIsStashed = isStashed;
+    }
+
+    /**
+     * Returns whether Picture-in-Picture is stashed or not.
+     */
+    public boolean isStashed() {
+        return mIsStashed;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof PictureInPictureUiState)) return false;
+        PictureInPictureUiState that = (PictureInPictureUiState) o;
+        return Objects.equals(mIsStashed, that.mIsStashed);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mIsStashed);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel out, int flags) {
+        out.writeBoolean(mIsStashed);
+    }
+
+    public static final @android.annotation.NonNull Creator<PictureInPictureUiState> CREATOR =
+            new Creator<PictureInPictureUiState>() {
+                public PictureInPictureUiState createFromParcel(Parcel in) {
+                    return new PictureInPictureUiState(in);
+                }
+                public PictureInPictureUiState[] newArray(int size) {
+                    return new PictureInPictureUiState[size];
+                }
+            };
+}
diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java
index 6a71c92..8d332ab 100644
--- a/core/java/android/app/WallpaperManager.java
+++ b/core/java/android/app/WallpaperManager.java
@@ -190,6 +190,30 @@
     public static final String COMMAND_DROP = "android.home.drop";
 
     /**
+     * Command for {@link #sendWallpaperCommand}: reported by System UI when the device is waking
+     * up. The x and y arguments are a location (possibly very roughly) corresponding to the action
+     * that caused the device to wake up. For example, if the power button was pressed, this will be
+     * the location on the screen nearest the power button.
+     *
+     * If the location is unknown or not applicable, x and y will be -1.
+     *
+     * @hide
+     */
+    public static final String COMMAND_WAKING_UP = "android.wallpaper.wakingup";
+
+    /**
+     * Command for {@link #sendWallpaperCommand}: reported by System UI when the device is going to
+     * sleep. The x and y arguments are a location (possibly very roughly) corresponding to the
+     * action that caused the device to go to sleep. For example, if the power button was pressed,
+     * this will be the location on the screen nearest the power button.
+     *
+     * If the location is unknown or not applicable, x and y will be -1.
+     *
+     * @hide
+     */
+    public static final String COMMAND_GOING_TO_SLEEP = "android.wallpaper.goingtosleep";
+
+    /**
      * Command for {@link #sendWallpaperCommand}: reported when the wallpaper that was already
      * set is re-applied by the user.
      * @hide
diff --git a/core/java/android/app/servertransaction/PipStateTransactionItem.java b/core/java/android/app/servertransaction/PipStateTransactionItem.java
new file mode 100644
index 0000000..167f5a4
--- /dev/null
+++ b/core/java/android/app/servertransaction/PipStateTransactionItem.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 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 android.app.servertransaction;
+
+import android.annotation.Nullable;
+import android.app.ActivityThread.ActivityClientRecord;
+import android.app.ClientTransactionHandler;
+import android.app.PictureInPictureUiState;
+import android.os.Parcel;
+
+/**
+ * Request an activity to enter picture-in-picture mode.
+ * @hide
+ */
+public final class PipStateTransactionItem extends ActivityTransactionItem {
+
+    private PictureInPictureUiState mPipState;
+
+    @Override
+    public void execute(ClientTransactionHandler client, ActivityClientRecord r,
+            PendingTransactionActions pendingActions) {
+        client.handlePictureInPictureStateChanged(r, mPipState);
+    }
+
+    // ObjectPoolItem implementation
+
+    private PipStateTransactionItem() {}
+
+    /** Obtain an instance initialized with provided params. */
+    public static PipStateTransactionItem obtain(PictureInPictureUiState pipState) {
+        PipStateTransactionItem instance = ObjectPool.obtain(PipStateTransactionItem.class);
+        if (instance == null) {
+            instance = new PipStateTransactionItem();
+        }
+        instance.mPipState = pipState;
+
+        return instance;
+    }
+
+    @Override
+    public void recycle() {
+        mPipState = null;
+        ObjectPool.recycle(this);
+    }
+
+    // Parcelable implementation
+
+    /** Write to Parcel. */
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        mPipState.writeToParcel(dest, flags);
+    }
+
+    /** Read from Parcel. */
+    private PipStateTransactionItem(Parcel in) {
+        mPipState = PictureInPictureUiState.CREATOR.createFromParcel(in);
+    }
+
+    public static final @android.annotation.NonNull Creator<PipStateTransactionItem> CREATOR =
+            new Creator<PipStateTransactionItem>() {
+                public PipStateTransactionItem createFromParcel(Parcel in) {
+                    return new PipStateTransactionItem(in);
+                }
+
+                public PipStateTransactionItem[] newArray(int size) {
+                    return new PipStateTransactionItem[size];
+                }
+            };
+
+    @Override
+    public boolean equals(@Nullable Object o) {
+        return this == o;
+    }
+
+    @Override
+    public String toString() {
+        return "PipStateTransactionItem{}";
+    }
+}
diff --git a/core/java/android/app/smartspace/SmartspaceConfig.java b/core/java/android/app/smartspace/SmartspaceConfig.java
index 07d7bf0..0897b5f 100644
--- a/core/java/android/app/smartspace/SmartspaceConfig.java
+++ b/core/java/android/app/smartspace/SmartspaceConfig.java
@@ -15,6 +15,7 @@
  */
 package android.app.smartspace;
 
+import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SuppressLint;
@@ -41,6 +42,7 @@
      * The least number of smartspace targets expected to be predicted by the backend. The backend
      * will always try to satisfy this threshold but it is not guaranteed to always meet it.
      */
+    @IntRange(from = 0, to = 50)
     private final int mSmartspaceTargetCount;
 
     /**
@@ -54,13 +56,15 @@
     @NonNull
     private String mPackageName;
 
-    /** Send other client UI configurations in extras.
+    /**
+     * Send other client UI configurations in extras.
      *
      * This can include:
      *
-     *  - Desired maximum update frequency
-     *  - Request to get periodic updates
-     *  - Request to support multiple clients for the same UISurface.
+     * - Desired maximum update frequency (For example 1 minute update frequency for AoD, 1 second
+     * update frequency for home screen etc).
+     * - Request to get periodic updates
+     * - Request to support multiple clients for the same UISurface.
      */
     @Nullable
     private final Bundle mExtras;
@@ -165,7 +169,7 @@
         private Bundle mExtras = Bundle.EMPTY;
 
         /**
-         * @param context The {@link Context} which is used to fetch the package name.
+         * @param context   The {@link Context} which is used to fetch the package name.
          * @param uiSurface the UI Surface name associated with this context.
          * @hide
          */
@@ -179,7 +183,8 @@
          * Used to set the expected number of cards for this context.
          */
         @NonNull
-        public Builder setSmartspaceTargetCount(int smartspaceTargetCount) {
+        public Builder setSmartspaceTargetCount(
+                @IntRange(from = 0, to = 50) int smartspaceTargetCount) {
             this.mSmartspaceTargetCount = smartspaceTargetCount;
             return this;
         }
diff --git a/core/java/android/app/smartspace/SmartspaceSession.java b/core/java/android/app/smartspace/SmartspaceSession.java
index 16def61..9199581 100644
--- a/core/java/android/app/smartspace/SmartspaceSession.java
+++ b/core/java/android/app/smartspace/SmartspaceSession.java
@@ -63,7 +63,7 @@
  *
  *    void onDestroy() {
  *        mSmartspaceSession.unregisterPredictionUpdates()
- *        mSmartspaceSession.destroy();
+ *        mSmartspaceSession.close();
  *    }
  *
  * }</pre>
@@ -81,7 +81,8 @@
     private final AtomicBoolean mIsClosed = new AtomicBoolean(false);
 
     private final SmartspaceSessionId mSessionId;
-    private final ArrayMap<Callback, CallbackWrapper> mRegisteredCallbacks = new ArrayMap<>();
+    private final ArrayMap<OnTargetsAvailableListener, CallbackWrapper> mRegisteredCallbacks =
+            new ArrayMap<>();
     private final IBinder mToken = new Binder();
 
     /**
@@ -98,11 +99,11 @@
         IBinder b = ServiceManager.getService(Context.SMARTSPACE_SERVICE);
         mInterface = android.app.smartspace.ISmartspaceManager.Stub.asInterface(b);
         mSessionId = new SmartspaceSessionId(
-                context.getPackageName() + ":" + UUID.randomUUID().toString(), context.getUserId());
+                context.getPackageName() + ":" + UUID.randomUUID().toString(), context.getUser());
         try {
             mInterface.createSmartspaceSession(smartspaceConfig, mSessionId, mToken);
         } catch (RemoteException e) {
-            Log.e(TAG, "Failed to cerate Smartspace session", e);
+            Log.e(TAG, "Failed to create Smartspace session", e);
             e.rethrowFromSystemServer();
         }
 
@@ -145,24 +146,24 @@
      * Requests the smartspace service provide continuous updates of smartspace cards via the
      * provided callback, until the given callback is unregistered.
      *
-     * @param callbackExecutor The callback executor to use when calling the callback.
-     * @param callback         The Callback to be called when updates of Smartspace targets are
+     * @param listenerExecutor The listener executor to use when firing the listener.
+     * @param listener         The listener to be called when updates of Smartspace targets are
      *                         available.
      */
-    public void registerSmartspaceUpdates(@NonNull @CallbackExecutor Executor callbackExecutor,
-            @NonNull Callback callback) {
+    public void addOnTargetsAvailableListener(@NonNull @CallbackExecutor Executor listenerExecutor,
+            @NonNull OnTargetsAvailableListener listener) {
         if (mIsClosed.get()) {
             throw new IllegalStateException("This client has already been destroyed.");
         }
 
-        if (mRegisteredCallbacks.containsKey(callback)) {
+        if (mRegisteredCallbacks.containsKey(listener)) {
             // Skip if this callback is already registered
             return;
         }
         try {
-            final CallbackWrapper callbackWrapper = new CallbackWrapper(callbackExecutor,
-                    callback::onTargetsAvailable);
-            mRegisteredCallbacks.put(callback, callbackWrapper);
+            final CallbackWrapper callbackWrapper = new CallbackWrapper(listenerExecutor,
+                    listener::onTargetsAvailable);
+            mRegisteredCallbacks.put(listener, callbackWrapper);
             mInterface.registerSmartspaceUpdates(mSessionId, callbackWrapper);
             mInterface.requestSmartspaceUpdate(mSessionId);
         } catch (RemoteException e) {
@@ -175,21 +176,21 @@
      * Requests the smartspace service to stop providing continuous updates to the provided
      * callback until the callback is re-registered.
      *
-     * @see {@link SmartspaceSession#registerSmartspaceUpdates(Executor, Callback)}.
-     *
-     * @param callback The callback to be unregistered.
+     * @param listener The callback to be unregistered.
+     * @see {@link SmartspaceSession#addOnTargetsAvailableListener(Executor,
+     * OnTargetsAvailableListener)}.
      */
-    public void unregisterSmartspaceUpdates(@NonNull Callback callback) {
+    public void removeOnTargetsAvailableListener(@NonNull OnTargetsAvailableListener listener) {
         if (mIsClosed.get()) {
             throw new IllegalStateException("This client has already been destroyed.");
         }
 
-        if (!mRegisteredCallbacks.containsKey(callback)) {
+        if (!mRegisteredCallbacks.containsKey(listener)) {
             // Skip if this callback was never registered
             return;
         }
         try {
-            final CallbackWrapper callbackWrapper = mRegisteredCallbacks.remove(callback);
+            final CallbackWrapper callbackWrapper = mRegisteredCallbacks.remove(listener);
             mInterface.unregisterSmartspaceUpdates(mSessionId, callbackWrapper);
         } catch (RemoteException e) {
             Log.e(TAG, "Failed to unregister for smartspace updates", e);
@@ -201,7 +202,7 @@
      * Destroys the client and unregisters the callback. Any method on this class after this call
      * will throw {@link IllegalStateException}.
      */
-    public void destroy() {
+    private void destroy() {
         if (!mIsClosed.getAndSet(true)) {
             mCloseGuard.close();
 
@@ -238,6 +239,7 @@
     @Override
     public void close() {
         try {
+            destroy();
             finalize();
         } catch (Throwable throwable) {
             throwable.printStackTrace();
@@ -245,14 +247,14 @@
     }
 
     /**
-     * Callback for receiving smartspace updates.
+     * Listener to receive smartspace targets from the service.
      */
-    public interface Callback {
+    public interface OnTargetsAvailableListener {
 
         /**
          * Called when a new set of smartspace targets are available.
          *
-         * @param targets Sorted list of smartspace targets.
+         * @param targets Ranked list of smartspace targets.
          */
         void onTargetsAvailable(@NonNull List<SmartspaceTarget> targets);
     }
diff --git a/core/java/android/app/smartspace/SmartspaceSessionId.java b/core/java/android/app/smartspace/SmartspaceSessionId.java
index 5220c35..4040cb3 100644
--- a/core/java/android/app/smartspace/SmartspaceSessionId.java
+++ b/core/java/android/app/smartspace/SmartspaceSessionId.java
@@ -21,6 +21,7 @@
 import android.annotation.SystemApi;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.os.UserHandle;
 
 import java.util.Objects;
 
@@ -36,21 +37,21 @@
     private final String mId;
 
     @NonNull
-    private final int mUserId;
+    private final UserHandle mUserHandle;
 
     /**
      * Creates a new id for a Smartspace session.
      *
      * @hide
      */
-    public SmartspaceSessionId(@NonNull final String id, @NonNull final int userId) {
+    public SmartspaceSessionId(@NonNull final String id, @NonNull final UserHandle userHandle) {
         mId = id;
-        mUserId = userId;
+        mUserHandle = userHandle;
     }
 
     private SmartspaceSessionId(Parcel p) {
         mId = p.readString();
-        mUserId = p.readInt();
+        mUserHandle = p.readTypedObject(UserHandle.CREATOR);
     }
 
     /**
@@ -65,8 +66,8 @@
      * Returns the userId associated with this sessionId.
      */
     @NonNull
-    public int getUserId() {
-        return mUserId;
+    public UserHandle getUserHandle() {
+        return mUserHandle;
     }
 
     @Override
@@ -74,20 +75,20 @@
         if (!getClass().equals(o != null ? o.getClass() : null)) return false;
 
         SmartspaceSessionId other = (SmartspaceSessionId) o;
-        return mId.equals(other.mId) && mUserId == other.mUserId;
+        return mId.equals(other.mId) && mUserHandle == other.mUserHandle;
     }
 
     @Override
     public String toString() {
         return "SmartspaceSessionId{"
                 + "mId='" + mId + '\''
-                + ", mUserId=" + mUserId
+                + ", mUserId=" + mUserHandle.getIdentifier()
                 + '}';
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mId, mUserId);
+        return Objects.hash(mId, mUserHandle);
     }
 
     @Override
@@ -98,7 +99,7 @@
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
         dest.writeString(mId);
-        dest.writeInt(mUserId);
+        dest.writeTypedObject(this.mUserHandle, flags);
     }
 
     public static final @NonNull Creator<SmartspaceSessionId> CREATOR =
diff --git a/core/java/android/app/smartspace/SmartspaceTarget.java b/core/java/android/app/smartspace/SmartspaceTarget.java
index ce5040e..8e98535 100644
--- a/core/java/android/app/smartspace/SmartspaceTarget.java
+++ b/core/java/android/app/smartspace/SmartspaceTarget.java
@@ -15,6 +15,7 @@
  */
 package android.app.smartspace;
 
+import android.annotation.CurrentTimeMillisLong;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -39,7 +40,7 @@
  * {@link SmartspaceAction} as their type because they can have associated actions.
  *
  * <p><b>NOTE: </b>
- * If {@link mWidgetId} is set, it should be preferred over all other properties.
+ * If {@link mWidget} is set, it should be preferred over all other properties.
  * Else, if {@link mSliceUri} is set, it should be preferred over all other data properties.
  * Otherwise, the instance should be treated as a data object.
  *
@@ -61,18 +62,17 @@
     private final SmartspaceAction mBaseAction;
 
     /** A timestamp indicating when the card was created. */
-    @NonNull
+    @CurrentTimeMillisLong
     private final long mCreationTimeMillis;
 
     /**
      * A timestamp indicating when the card should be removed from view, in case the service
      * disconnects or restarts.
      */
-    @NonNull
+    @CurrentTimeMillisLong
     private final long mExpiryTimeMillis;
 
     /** A score assigned to a target. */
-    @NonNull
     private final float mScore;
 
     /** A {@link List<SmartspaceAction>} containing all action chips. */
@@ -89,18 +89,15 @@
      * @see FeatureType
      */
     @FeatureType
-    @NonNull
     private final int mFeatureType;
 
     /**
      * Indicates whether the content is sensitive. Certain UI surfaces may choose to skip rendering
      * real content until the device is unlocked.
      */
-    @NonNull
     private final boolean mSensitive;
 
     /** Indicating if the UI should show this target in its expanded state. */
-    @NonNull
     private final boolean mShouldShowExpanded;
 
     /** A Notification key if the target was generated using a notification. */
@@ -115,7 +112,14 @@
     @NonNull
     private final UserHandle mUserHandle;
 
-    /** Target Ids of other {@link SmartspaceTarget}s if they are associated with this target. */
+    /**
+     * Target Id of other {@link SmartspaceTarget}s if it is associated with this target. This
+     * association is added to tell the UI that a card would be more useful if displayed with the
+     * associated smartspace target. This field is supposed to be taken as a suggestion and the
+     * association can be ignored based on the situation in the UI. It is possible to have a one way
+     * card association. In other words, Card B can be associated with Card A but not the other way
+     * around.
+     */
     @Nullable
     private final String mAssociatedSmartspaceTargetId;
 
@@ -125,7 +129,7 @@
 
     /** {@link AppWidgetProviderInfo} if this target is a widget. */
     @Nullable
-    private final AppWidgetProviderInfo mWidgetId;
+    private final AppWidgetProviderInfo mWidget;
 
     public static final int FEATURE_UNDEFINED = 0;
     public static final int FEATURE_WEATHER = 1;
@@ -202,7 +206,7 @@
         this.mUserHandle = in.readTypedObject(UserHandle.CREATOR);
         this.mAssociatedSmartspaceTargetId = in.readString();
         this.mSliceUri = in.readTypedObject(Uri.CREATOR);
-        this.mWidgetId = in.readTypedObject(AppWidgetProviderInfo.CREATOR);
+        this.mWidget = in.readTypedObject(AppWidgetProviderInfo.CREATOR);
     }
 
     private SmartspaceTarget(String smartspaceTargetId,
@@ -213,7 +217,7 @@
             boolean shouldShowExpanded, String sourceNotificationKey,
             ComponentName componentName, UserHandle userHandle,
             String associatedSmartspaceTargetId, Uri sliceUri,
-            AppWidgetProviderInfo widgetId) {
+            AppWidgetProviderInfo widget) {
         mSmartspaceTargetId = smartspaceTargetId;
         mHeaderAction = headerAction;
         mBaseAction = baseAction;
@@ -230,7 +234,7 @@
         mUserHandle = userHandle;
         mAssociatedSmartspaceTargetId = associatedSmartspaceTargetId;
         mSliceUri = sliceUri;
-        mWidgetId = widgetId;
+        mWidget = widget;
     }
 
     /**
@@ -260,7 +264,7 @@
     /**
      * Returns the creation time of the target.
      */
-    @NonNull
+    @CurrentTimeMillisLong
     public long getCreationTimeMillis() {
         return mCreationTimeMillis;
     }
@@ -268,7 +272,7 @@
     /**
      * Returns the expiry time of the target.
      */
-    @NonNull
+    @CurrentTimeMillisLong
     public long getExpiryTimeMillis() {
         return mExpiryTimeMillis;
     }
@@ -276,7 +280,6 @@
     /**
      * Returns the score of the target.
      */
-    @NonNull
     public float getScore() {
         return mScore;
     }
@@ -300,7 +303,7 @@
     /**
      * Returns the feature type of the target.
      */
-    @NonNull
+    @FeatureType
     public int getFeatureType() {
         return mFeatureType;
     }
@@ -308,7 +311,6 @@
     /**
      * Returns whether the target is sensitive or not.
      */
-    @NonNull
     public boolean isSensitive() {
         return mSensitive;
     }
@@ -316,7 +318,6 @@
     /**
      * Returns whether the target should be shown in expanded state.
      */
-    @NonNull
     public boolean shouldShowExpanded() {
         return mShouldShowExpanded;
     }
@@ -365,8 +366,8 @@
      * Returns the AppWidgetProviderInfo, if the target is a widget.
      */
     @Nullable
-    public AppWidgetProviderInfo getWidgetId() {
-        return mWidgetId;
+    public AppWidgetProviderInfo getWidget() {
+        return mWidget;
     }
 
     /**
@@ -403,7 +404,7 @@
         dest.writeTypedObject(this.mUserHandle, flags);
         dest.writeString(this.mAssociatedSmartspaceTargetId);
         dest.writeTypedObject(this.mSliceUri, flags);
-        dest.writeTypedObject(this.mWidgetId, flags);
+        dest.writeTypedObject(this.mWidget, flags);
     }
 
     @Override
@@ -430,7 +431,7 @@
                 + ", mUserHandle=" + mUserHandle
                 + ", mAssociatedSmartspaceTargetId='" + mAssociatedSmartspaceTargetId + '\''
                 + ", mSliceUri=" + mSliceUri
-                + ", mWidgetId=" + mWidgetId
+                + ", mWidget=" + mWidget
                 + '}';
     }
 
@@ -456,7 +457,7 @@
                 && Objects.equals(mAssociatedSmartspaceTargetId,
                 that.mAssociatedSmartspaceTargetId)
                 && Objects.equals(mSliceUri, that.mSliceUri)
-                && Objects.equals(mWidgetId, that.mWidgetId);
+                && Objects.equals(mWidget, that.mWidget);
     }
 
     @Override
@@ -464,7 +465,7 @@
         return Objects.hash(mSmartspaceTargetId, mHeaderAction, mBaseAction, mCreationTimeMillis,
                 mExpiryTimeMillis, mScore, mActionChips, mIconGrid, mFeatureType, mSensitive,
                 mShouldShowExpanded, mSourceNotificationKey, mComponentName, mUserHandle,
-                mAssociatedSmartspaceTargetId, mSliceUri, mWidgetId);
+                mAssociatedSmartspaceTargetId, mSliceUri, mWidget);
     }
 
     /**
@@ -490,7 +491,7 @@
         private final UserHandle mUserHandle;
         private String mAssociatedSmartspaceTargetId;
         private Uri mSliceUri;
-        private AppWidgetProviderInfo mWidgetId;
+        private AppWidgetProviderInfo mWidget;
 
         /**
          * A builder for {@link SmartspaceTarget}.
@@ -528,7 +529,7 @@
          * Sets the creation time.
          */
         @NonNull
-        public Builder setCreationTimeMillis(@NonNull long creationTimeMillis) {
+        public Builder setCreationTimeMillis(@CurrentTimeMillisLong long creationTimeMillis) {
             this.mCreationTimeMillis = creationTimeMillis;
             return this;
         }
@@ -537,7 +538,7 @@
          * Sets the expiration time.
          */
         @NonNull
-        public Builder setExpiryTimeMillis(@NonNull long expiryTimeMillis) {
+        public Builder setExpiryTimeMillis(@CurrentTimeMillisLong long expiryTimeMillis) {
             this.mExpiryTimeMillis = expiryTimeMillis;
             return this;
         }
@@ -546,7 +547,7 @@
          * Sets the score.
          */
         @NonNull
-        public Builder setScore(@NonNull float score) {
+        public Builder setScore(float score) {
             this.mScore = score;
             return this;
         }
@@ -573,7 +574,7 @@
          * Sets the feature type.
          */
         @NonNull
-        public Builder setFeatureType(@NonNull int featureType) {
+        public Builder setFeatureType(int featureType) {
             this.mFeatureType = featureType;
             return this;
         }
@@ -582,7 +583,7 @@
          * Sets whether the contents are sensitive.
          */
         @NonNull
-        public Builder setSensitive(@NonNull boolean sensitive) {
+        public Builder setSensitive(boolean sensitive) {
             this.mSensitive = sensitive;
             return this;
         }
@@ -591,7 +592,7 @@
          * Sets whether to show the card as expanded.
          */
         @NonNull
-        public Builder setShouldShowExpanded(@NonNull boolean shouldShowExpanded) {
+        public Builder setShouldShowExpanded(boolean shouldShowExpanded) {
             this.mShouldShowExpanded = shouldShowExpanded;
             return this;
         }
@@ -618,7 +619,7 @@
         /**
          * Sets the slice uri.
          *
-         * <p><b>NOTE: </b> If {@link mWidgetId} is also set, {@link mSliceUri} should be ignored.
+         * <p><b>NOTE: </b> If {@link mWidget} is also set, {@link mSliceUri} should be ignored.
          */
         @NonNull
         public Builder setSliceUri(@NonNull Uri sliceUri) {
@@ -629,12 +630,12 @@
         /**
          * Sets the widget id.
          *
-         * <p><b>NOTE: </b> If {@link mWidgetId} is set, all other @Nullable params should be
+         * <p><b>NOTE: </b> If {@link mWidget} is set, all other @Nullable params should be
          * ignored.
          */
         @NonNull
-        public Builder setWidgetId(@NonNull AppWidgetProviderInfo widgetId) {
-            this.mWidgetId = widgetId;
+        public Builder setWidget(@NonNull AppWidgetProviderInfo widget) {
+            this.mWidget = widget;
             return this;
         }
 
@@ -654,7 +655,7 @@
                     mHeaderAction, mBaseAction, mCreationTimeMillis, mExpiryTimeMillis, mScore,
                     mActionChips, mIconGrid, mFeatureType, mSensitive, mShouldShowExpanded,
                     mSourceNotificationKey, mComponentName, mUserHandle,
-                    mAssociatedSmartspaceTargetId, mSliceUri, mWidgetId);
+                    mAssociatedSmartspaceTargetId, mSliceUri, mWidget);
         }
     }
 }
diff --git a/core/java/android/app/smartspace/SmartspaceTargetEvent.java b/core/java/android/app/smartspace/SmartspaceTargetEvent.java
index 920b9fe..61f8723 100644
--- a/core/java/android/app/smartspace/SmartspaceTargetEvent.java
+++ b/core/java/android/app/smartspace/SmartspaceTargetEvent.java
@@ -41,11 +41,11 @@
     /**
      * Smartspace target was brought into view.
      */
-    public static final int EVENT_TARGET_IN_VIEW = 2;
+    public static final int EVENT_TARGET_SHOWN = 2;
     /**
      * Smartspace target went out of view.
      */
-    public static final int EVENT_TARGET_OUT_OF_VIEW = 3;
+    public static final int EVENT_TARGET_HIDDEN = 3;
     /**
      * A dismiss action was issued by the user.
      */
@@ -57,11 +57,11 @@
     /**
      * The Ui surface came into view.
      */
-    public static final int EVENT_UI_SURFACE_IN_VIEW = 6;
+    public static final int EVENT_UI_SURFACE_SHOWN = 6;
     /**
      * The Ui surface went out of view.
      */
-    public static final int EVENT_UI_SURFACE_OUT_OF_VIEW = 7;
+    public static final int EVENT_UI_SURFACE_HIDDEN = 7;
 
     /**
      * @see Parcelable.Creator
@@ -152,12 +152,12 @@
      */
     @IntDef(prefix = {"EVENT_"}, value = {
             EVENT_TARGET_INTERACTION,
-            EVENT_TARGET_IN_VIEW,
-            EVENT_TARGET_OUT_OF_VIEW,
+            EVENT_TARGET_SHOWN,
+            EVENT_TARGET_HIDDEN,
             EVENT_TARGET_DISMISS,
             EVENT_TARGET_BLOCK,
-            EVENT_UI_SURFACE_IN_VIEW,
-            EVENT_UI_SURFACE_OUT_OF_VIEW
+            EVENT_UI_SURFACE_SHOWN,
+            EVENT_UI_SURFACE_HIDDEN
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface EventType {
diff --git a/core/java/android/app/time/TimeZoneCapabilities.java b/core/java/android/app/time/TimeZoneCapabilities.java
index 433b420..895a8e4 100644
--- a/core/java/android/app/time/TimeZoneCapabilities.java
+++ b/core/java/android/app/time/TimeZoneCapabilities.java
@@ -207,6 +207,17 @@
             mUserHandle = Objects.requireNonNull(userHandle);
         }
 
+        public Builder(@NonNull TimeZoneCapabilities capabilitiesToCopy) {
+            Objects.requireNonNull(capabilitiesToCopy);
+            mUserHandle = capabilitiesToCopy.mUserHandle;
+            mConfigureAutoDetectionEnabledCapability =
+                capabilitiesToCopy.mConfigureAutoDetectionEnabledCapability;
+            mConfigureGeoDetectionEnabledCapability =
+                capabilitiesToCopy.mConfigureGeoDetectionEnabledCapability;
+            mSuggestManualTimeZoneCapability =
+                capabilitiesToCopy.mSuggestManualTimeZoneCapability;
+        }
+
         /** Sets the state for the automatic time zone detection enabled config. */
         public Builder setConfigureAutoDetectionEnabledCapability(@CapabilityState int value) {
             this.mConfigureAutoDetectionEnabledCapability = value;
diff --git a/core/java/android/app/timedetector/TimeDetector.java b/core/java/android/app/timedetector/TimeDetector.java
index 52016b6..a356230 100644
--- a/core/java/android/app/timedetector/TimeDetector.java
+++ b/core/java/android/app/timedetector/TimeDetector.java
@@ -32,6 +32,18 @@
 public interface TimeDetector {
 
     /**
+     * The name of the service for shell commands.
+     * @hide
+     */
+    String SHELL_COMMAND_SERVICE_NAME = "time_detector";
+
+    /**
+     * A shell command that prints the current "auto time detection" global setting value.
+     * @hide
+     */
+    String SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED = "is_auto_detection_enabled";
+
+    /**
      * A shared utility method to create a {@link ManualTimeSuggestion}.
      *
      * @hide
diff --git a/core/java/android/app/usage/UsageStats.java b/core/java/android/app/usage/UsageStats.java
index cda4634..b723140 100644
--- a/core/java/android/app/usage/UsageStats.java
+++ b/core/java/android/app/usage/UsageStats.java
@@ -31,6 +31,8 @@
 import static android.app.usage.UsageEvents.Event.USER_INTERACTION;
 
 import android.annotation.CurrentTimeMillisLong;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -760,4 +762,48 @@
             return new UsageStats[size];
         }
     };
+
+    /** @hide */
+    // This class is used by the mainline test suite, so we have to keep these APIs around across
+    // releases. Consider making this class public to help external developers to write tests as
+    // well.
+    @TestApi
+    public static final class Builder {
+        private final UsageStats mUsageStats = new UsageStats();
+
+        @NonNull
+        public UsageStats build() {
+            return mUsageStats;
+        }
+
+        @NonNull
+        public Builder setPackageName(@Nullable String packageName) {
+            mUsageStats.mPackageName = packageName;
+            return this;
+        }
+
+        @NonNull
+        public Builder setFirstTimeStamp(long firstTimeStamp) {
+            mUsageStats.mBeginTimeStamp = firstTimeStamp;
+            return this;
+        }
+
+        @NonNull
+        public Builder setLastTimeStamp(long lastTimeStamp) {
+            mUsageStats.mEndTimeStamp = lastTimeStamp;
+            return this;
+        }
+
+        @NonNull
+        public Builder setTotalTimeInForeground(long totalTimeInForeground) {
+            mUsageStats.mTotalTimeInForeground = totalTimeInForeground;
+            return this;
+        }
+
+        @NonNull
+        public Builder setLastTimeUsed(long lastTimeUsed) {
+            mUsageStats.mLastTimeUsed = lastTimeUsed;
+            return this;
+        }
+    }
 }
diff --git a/core/java/android/appwidget/AppWidgetHost.java b/core/java/android/appwidget/AppWidgetHost.java
index a72877e..fe81df0 100644
--- a/core/java/android/appwidget/AppWidgetHost.java
+++ b/core/java/android/appwidget/AppWidgetHost.java
@@ -320,6 +320,15 @@
     }
 
     /**
+     * Set the host's interaction handler.
+     *
+     * @hide
+     */
+    public void setInteractionHandler(InteractionHandler interactionHandler) {
+        mInteractionHandler = interactionHandler;
+    }
+
+    /**
      * Gets a list of all the appWidgetIds that are bound to the current host
      */
     public int[] getAppWidgetIds() {
diff --git a/core/java/android/bluetooth/BluetoothA2dp.java b/core/java/android/bluetooth/BluetoothA2dp.java
index a268e16..0d21e09 100644
--- a/core/java/android/bluetooth/BluetoothA2dp.java
+++ b/core/java/android/bluetooth/BluetoothA2dp.java
@@ -20,8 +20,10 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.RequiresNoPermission;
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
+import android.annotation.SuppressLint;
 import android.annotation.SdkConstant.SdkConstantType;
 import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
 import android.bluetooth.annotations.RequiresLegacyBluetoothAdminPermission;
@@ -512,6 +514,7 @@
      * @return true if priority is set, false on error
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -534,6 +537,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -624,6 +628,7 @@
      * @return true if device supports absolute volume
      * @hide
      */
+    @RequiresNoPermission
     public boolean isAvrcpAbsoluteVolumeSupported() {
         if (DBG) Log.d(TAG, "isAvrcpAbsoluteVolumeSupported");
         try {
@@ -690,6 +695,7 @@
      *
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean shouldSendVolumeKeys(BluetoothDevice device) {
         if (isEnabled() && isValidDevice(device)) {
diff --git a/core/java/android/bluetooth/BluetoothA2dpSink.java b/core/java/android/bluetooth/BluetoothA2dpSink.java
index d81316e..280e8bc 100755
--- a/core/java/android/bluetooth/BluetoothA2dpSink.java
+++ b/core/java/android/bluetooth/BluetoothA2dpSink.java
@@ -187,6 +187,8 @@
      * @hide
      */
     @Override
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getConnectedDevices() {
         if (VDBG) log("getConnectedDevices()");
         final IBluetoothA2dpSink service = getService();
@@ -208,6 +210,8 @@
      * @hide
      */
     @Override
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
         if (VDBG) log("getDevicesMatchingStates()");
         final IBluetoothA2dpSink service = getService();
@@ -229,6 +233,8 @@
      * @hide
      */
     @Override
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public int getConnectionState(BluetoothDevice device) {
         if (VDBG) log("getState(" + device + ")");
         final IBluetoothA2dpSink service = getService();
@@ -256,6 +262,8 @@
      * @hide
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public BluetoothAudioConfig getAudioConfig(BluetoothDevice device) {
         if (VDBG) log("getAudioConfig(" + device + ")");
         final IBluetoothA2dpSink service = getService();
@@ -282,6 +290,7 @@
      * @return true if priority is set, false on error
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -304,6 +313,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index 972e9e6..052a773 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -21,6 +21,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.RequiresNoPermission;
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
@@ -716,6 +717,7 @@
      * Bluetooth metadata listener. Overrides the default BluetoothMetadataListener
      * implementation.
      */
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private static final IBluetoothMetadataListener sBluetoothMetadataListener =
             new IBluetoothMetadataListener.Stub() {
         @Override
@@ -747,6 +749,7 @@
      * @return the default local adapter, or null if Bluetooth is not supported on this hardware
      * platform
      */
+    @RequiresNoPermission
     public static synchronized BluetoothAdapter getDefaultAdapter() {
         if (sAdapter == null) {
             IBinder b = ServiceManager.getService(BLUETOOTH_MANAGER_SERVICE);
@@ -792,6 +795,7 @@
      * @param address valid Bluetooth MAC address
      * @throws IllegalArgumentException if address is invalid
      */
+    @RequiresNoPermission
     public BluetoothDevice getRemoteDevice(String address) {
         return new BluetoothDevice(address);
     }
@@ -807,6 +811,7 @@
      * @param address Bluetooth MAC address (6 bytes)
      * @throws IllegalArgumentException if address is invalid
      */
+    @RequiresNoPermission
     public BluetoothDevice getRemoteDevice(byte[] address) {
         if (address == null || address.length != 6) {
             throw new IllegalArgumentException("Bluetooth address must have 6 bytes");
@@ -824,6 +829,7 @@
      * Use {@link #isMultipleAdvertisementSupported()} to check whether LE Advertising is supported
      * on this device before calling this method.
      */
+    @RequiresNoPermission
     public BluetoothLeAdvertiser getBluetoothLeAdvertiser() {
         if (!getLeAccess()) {
             return null;
@@ -846,6 +852,7 @@
      *
      * @hide
      */
+    @RequiresNoPermission
     public PeriodicAdvertisingManager getPeriodicAdvertisingManager() {
         if (!getLeAccess()) {
             return null;
@@ -866,6 +873,7 @@
     /**
      * Returns a {@link BluetoothLeScanner} object for Bluetooth LE scan operations.
      */
+    @RequiresNoPermission
     public BluetoothLeScanner getBluetoothLeScanner() {
         if (!getLeAccess()) {
             return null;
@@ -887,6 +895,7 @@
      * @return true if the local adapter is turned on
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public boolean isEnabled() {
         return getState() == BluetoothAdapter.STATE_ON;
     }
@@ -900,6 +909,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresNoPermission
     public boolean isLeEnabled() {
         final int state = getLeState();
         if (DBG) {
@@ -937,6 +947,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean disableBLE() {
         if (!isBleScanAlwaysAvailable()) {
@@ -983,6 +994,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean enableBLE() {
         if (!isBleScanAlwaysAvailable()) {
@@ -1015,6 +1027,7 @@
             };
 
     /** @hide */
+    @RequiresNoPermission
     public void disableBluetoothGetStateCache() {
         mBluetoothGetStateCache.disableLocal();
     }
@@ -1059,6 +1072,7 @@
      * @return current state of Bluetooth adapter
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     @AdapterState
     public int getState() {
         int state = getStateInternal();
@@ -1095,6 +1109,7 @@
      * @hide
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     @AdapterState
     @UnsupportedAppUsage(publicAlternatives = "Use {@link #getState()} instead to determine "
             + "whether you can use BLE & BT classic.")
@@ -1251,6 +1266,18 @@
         return null;
     }
 
+    /** {@hide} */
+    @RequiresBluetoothAdvertisePermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE)
+    public int getNameLengthForAdvertise() {
+        try {
+            return mService.getNameLengthForAdvertise();
+        } catch (RemoteException e) {
+            Log.e(TAG, "", e);
+        }
+        return -1;
+    }
+
     /**
      * Factory reset bluetooth settings.
      *
@@ -1637,6 +1664,7 @@
 
     /** @hide */
     @UnsupportedAppUsage
+    @RequiresBluetoothScanPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_SCAN)
     public int getDiscoverableTimeout() {
         if (getState() != STATE_ON) {
@@ -1657,6 +1685,7 @@
 
     /** @hide */
     @UnsupportedAppUsage
+    @RequiresBluetoothScanPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_SCAN)
     public void setDiscoverableTimeout(int timeout) {
         if (getState() != STATE_ON) {
@@ -1702,6 +1731,7 @@
      * Set the context for this BluetoothAdapter (only called from BluetoothManager)
      * @hide
      */
+    @RequiresNoPermission
     public void setContext(Context context) {
         mContext = context;
     }
@@ -1860,6 +1890,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -1904,6 +1935,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -1952,6 +1984,7 @@
      *
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -1984,6 +2017,7 @@
      *
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -2009,6 +2043,7 @@
      * @return true if Multiple Advertisement feature is supported
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public boolean isMultipleAdvertisementSupported() {
         if (getState() != STATE_ON) {
             return false;
@@ -2037,6 +2072,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresNoPermission
     public boolean isBleScanAlwaysAvailable() {
         try {
             return mManagerService.isBleScanAlwaysAvailable();
@@ -2070,6 +2106,7 @@
             };
 
     /** @hide */
+    @RequiresNoPermission
     public void disableIsOffloadedFilteringSupportedCache() {
         mBluetoothFilteringCache.disableLocal();
     }
@@ -2085,6 +2122,7 @@
      * @return true if chipset supports on-chip filtering
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public boolean isOffloadedFilteringSupported() {
         if (!getLeAccess()) {
             return false;
@@ -2098,6 +2136,7 @@
      * @return true if chipset supports on-chip scan batching
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public boolean isOffloadedScanBatchingSupported() {
         if (!getLeAccess()) {
             return false;
@@ -2121,6 +2160,7 @@
      * @return true if chipset supports LE 2M PHY feature
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public boolean isLe2MPhySupported() {
         if (!getLeAccess()) {
             return false;
@@ -2144,6 +2184,7 @@
      * @return true if chipset supports LE Coded PHY feature
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public boolean isLeCodedPhySupported() {
         if (!getLeAccess()) {
             return false;
@@ -2167,6 +2208,7 @@
      * @return true if chipset supports LE Extended Advertising feature
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public boolean isLeExtendedAdvertisingSupported() {
         if (!getLeAccess()) {
             return false;
@@ -2190,6 +2232,7 @@
      * @return true if chipset supports LE Periodic Advertising feature
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public boolean isLePeriodicAdvertisingSupported() {
         if (!getLeAccess()) {
             return false;
@@ -2214,6 +2257,7 @@
      * @return the maximum LE advertising data length.
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public int getLeMaximumAdvertisingDataLength() {
         if (!getLeAccess()) {
             return 0;
@@ -2236,6 +2280,7 @@
      *
      * @return true if phone supports Hearing Aid Profile
      */
+    @RequiresNoPermission
     private boolean isHearingAidProfileSupported() {
         try {
             return mManagerService.isHearingAidProfileSupported();
@@ -2274,6 +2319,7 @@
      * @return true if there are hw entries available for matching beacons
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean isHardwareTrackingFiltersAvailable() {
         if (!getLeAccess()) {
@@ -2420,6 +2466,7 @@
      * BluetoothProfile}.
      * @hide
      */
+    @RequiresNoPermission
     public @NonNull List<Integer> getSupportedProfiles() {
         final ArrayList<Integer> supportedProfiles = new ArrayList<Integer>();
 
@@ -2467,6 +2514,7 @@
             };
 
     /** @hide */
+    @RequiresNoPermission
     public void disableGetAdapterConnectionStateCache() {
         mBluetoothGetAdapterConnectionStateCache.disableLocal();
     }
@@ -2491,6 +2539,7 @@
      */
     @UnsupportedAppUsage
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public int getConnectionState() {
         if (getState() != STATE_ON) {
             return BluetoothAdapter.STATE_DISCONNECTED;
@@ -2541,6 +2590,7 @@
             };
 
     /** @hide */
+    @RequiresNoPermission
     public void disableGetProfileConnectionStateCache() {
         mGetProfileConnectionStateCache.disableLocal();
     }
@@ -2741,6 +2791,7 @@
         return createNewRfcommSocketAndRecord(name, uuid, false, true);
     }
 
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     private BluetoothServerSocket createNewRfcommSocketAndRecord(String name, UUID uuid,
             boolean auth, boolean encrypt) throws IOException {
@@ -2767,6 +2818,7 @@
      * permissions.
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public BluetoothServerSocket listenUsingInsecureRfcommOn(int port) throws IOException {
         BluetoothServerSocket socket =
@@ -2799,6 +2851,7 @@
      * permissions.
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public BluetoothServerSocket listenUsingL2capOn(int port, boolean mitm, boolean min16DigitPin)
             throws IOException {
@@ -2832,6 +2885,7 @@
      * permissions.
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public BluetoothServerSocket listenUsingL2capOn(int port) throws IOException {
         return listenUsingL2capOn(port, false, false);
@@ -2849,6 +2903,7 @@
      * permissions.
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public BluetoothServerSocket listenUsingInsecureL2capOn(int port) throws IOException {
         Log.d(TAG, "listenUsingInsecureL2capOn: port=" + port);
@@ -2904,6 +2959,10 @@
      * BluetoothProfile#HEARING_AID} or {@link BluetoothProfile#GATT_SERVER}.
      * @return true on success, false on error
      */
+    @SuppressLint({
+        "AndroidFrameworkRequiresPermission",
+        "AndroidFrameworkBluetoothPermission"
+    })
     public boolean getProfileProxy(Context context, BluetoothProfile.ServiceListener listener,
             int profile) {
         if (context == null || listener == null) {
@@ -2973,7 +3032,10 @@
      * @param profile
      * @param proxy Profile proxy object
      */
-    @SuppressLint("AndroidFrameworkRequiresPermission")
+    @SuppressLint({
+            "AndroidFrameworkRequiresPermission",
+            "AndroidFrameworkBluetoothPermission"
+    })
     public void closeProfileProxy(int profile, BluetoothProfile proxy) {
         if (proxy == null) {
             return;
@@ -3046,6 +3108,7 @@
         }
     }
 
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private final IBluetoothManagerCallback mManagerCallback =
             new IBluetoothManagerCallback.Stub() {
                 @SuppressLint("AndroidFrameworkRequiresPermission")
@@ -3368,7 +3431,6 @@
     /**
      * @hide
      */
-    @SuppressLint("AndroidFrameworkRequiresPermission")
     public class StateChangeCallbackWrapper extends IBluetoothStateChangeCallback.Stub {
         private BluetoothStateChangeCallback mCallback;
 
@@ -3619,6 +3681,7 @@
                     return false;
                 }
 
+                @SuppressLint("AndroidFrameworkBluetoothPermission")
                 ScanCallback scanCallback = new ScanCallback() {
                     @Override
                     public void onScanResult(int callbackType, ScanResult result) {
@@ -3949,6 +4012,7 @@
                 @Nullable byte[] value);
     }
 
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private final IBluetoothConnectionCallback mConnectionCallback =
             new IBluetoothConnectionCallback.Stub() {
         @Override
diff --git a/core/java/android/bluetooth/BluetoothAvrcpController.java b/core/java/android/bluetooth/BluetoothAvrcpController.java
index 887cf3f..5148d5b 100644
--- a/core/java/android/bluetooth/BluetoothAvrcpController.java
+++ b/core/java/android/bluetooth/BluetoothAvrcpController.java
@@ -117,6 +117,8 @@
      * {@inheritDoc}
      */
     @Override
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getConnectedDevices() {
         if (VDBG) log("getConnectedDevices()");
         final IBluetoothAvrcpController service =
@@ -137,6 +139,8 @@
      * {@inheritDoc}
      */
     @Override
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
         if (VDBG) log("getDevicesMatchingStates()");
         final IBluetoothAvrcpController service =
@@ -157,6 +161,8 @@
      * {@inheritDoc}
      */
     @Override
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public int getConnectionState(BluetoothDevice device) {
         if (VDBG) log("getState(" + device + ")");
         final IBluetoothAvrcpController service =
@@ -178,6 +184,8 @@
      *
      * @return the {@link BluetoothAvrcpPlayerSettings} or {@link null} if there is an error.
      */
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public BluetoothAvrcpPlayerSettings getPlayerSettings(BluetoothDevice device) {
         if (DBG) Log.d(TAG, "getPlayerSettings");
         BluetoothAvrcpPlayerSettings settings = null;
@@ -198,6 +206,8 @@
      * Sets the player app setting for current player.
      * returns true in case setting is supported by remote, false otherwise
      */
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean setPlayerApplicationSetting(BluetoothAvrcpPlayerSettings plAppSetting) {
         if (DBG) Log.d(TAG, "setPlayerApplicationSetting");
         final IBluetoothAvrcpController service =
@@ -218,6 +228,8 @@
      * Send Group Navigation Command to Remote.
      * possible keycode values: next_grp, previous_grp defined above
      */
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void sendGroupNavigationCmd(BluetoothDevice device, int keyCode, int keyState) {
         Log.d(TAG, "sendGroupNavigationCmd dev = " + device + " key " + keyCode + " State = "
                 + keyState);
diff --git a/core/java/android/bluetooth/BluetoothGatt.java b/core/java/android/bluetooth/BluetoothGatt.java
index 942f843..9d3eed8 100644
--- a/core/java/android/bluetooth/BluetoothGatt.java
+++ b/core/java/android/bluetooth/BluetoothGatt.java
@@ -16,15 +16,12 @@
 
 package android.bluetooth;
 
-import android.compat.annotation.UnsupportedAppUsage;
+import android.annotation.RequiresNoPermission;
 import android.annotation.RequiresPermission;
 import android.annotation.SuppressLint;
-import android.annotation.RequiresPermission;
-import android.bluetooth.annotations.RequiresLegacyBluetoothAdminPermission;
 import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
-import android.bluetooth.annotations.RequiresBluetoothLocationPermission;
 import android.bluetooth.annotations.RequiresLegacyBluetoothPermission;
-import android.bluetooth.annotations.RequiresBluetoothScanPermission;
+import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Build;
 import android.os.Handler;
 import android.os.ParcelUuid;
@@ -158,6 +155,7 @@
     /**
      * Bluetooth GATT callbacks. Overrides the default BluetoothGattCallback implementation.
      */
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private final IBluetoothGattCallback mBluetoothGattCallback =
             new IBluetoothGattCallback.Stub() {
                 /**
@@ -747,6 +745,7 @@
      * Application should call this method as early as possible after it is done with
      * this GATT client.
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void close() {
         if (DBG) Log.d(TAG, "close()");
@@ -881,6 +880,7 @@
      * Unregister the current application and callbacks.
      */
     @UnsupportedAppUsage
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     private void unregisterApp() {
         if (DBG) Log.d(TAG, "unregisterApp() - mClientIf=" + mClientIf);
@@ -973,6 +973,7 @@
      *
      * @return true, if the connection attempt was initiated successfully
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean connect() {
         try {
@@ -1003,6 +1004,7 @@
      * of {@link BluetoothDevice#PHY_OPTION_NO_PREFERRED}, {@link BluetoothDevice#PHY_OPTION_S2} or
      * {@link BluetoothDevice#PHY_OPTION_S8}
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void setPreferredPhy(int txPhy, int rxPhy, int phyOptions) {
         try {
@@ -1017,6 +1019,7 @@
      * Read the current transmitter PHY and receiver PHY of the connection. The values are returned
      * in {@link BluetoothGattCallback#onPhyRead}
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void readPhy() {
         try {
@@ -1031,6 +1034,7 @@
      *
      * @return remote bluetooth device
      */
+    @RequiresNoPermission
     public BluetoothDevice getDevice() {
         return mDevice;
     }
@@ -1101,6 +1105,7 @@
      * not yet been performed.
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public List<BluetoothGattService> getServices() {
         List<BluetoothGattService> result =
                 new ArrayList<BluetoothGattService>();
@@ -1129,6 +1134,7 @@
      * the remote device.
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public BluetoothGattService getService(UUID uuid) {
         for (BluetoothGattService service : mServices) {
             if (service.getDevice().equals(mDevice) && service.getUuid().equals(uuid)) {
@@ -1444,6 +1450,7 @@
      * @deprecated Use {@link #abortReliableWrite()}
      */
     @Deprecated
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void abortReliableWrite(BluetoothDevice mDevice) {
         abortReliableWrite();
@@ -1496,6 +1503,7 @@
      * @hide
      */
     @UnsupportedAppUsage
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean refresh() {
         if (DBG) Log.d(TAG, "refresh() - device: " + mDevice.getAddress());
@@ -1579,6 +1587,7 @@
      * or {@link BluetoothGatt#CONNECTION_PRIORITY_LOW_POWER}.
      * @throws IllegalArgumentException If the parameters are outside of their specified range.
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean requestConnectionPriority(int connectionPriority) {
         if (connectionPriority < CONNECTION_PRIORITY_BALANCED
@@ -1607,6 +1616,7 @@
      * @return true, if the request is send to the Bluetooth stack.
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean requestLeConnectionUpdate(int minConnectionInterval, int maxConnectionInterval,
                                              int slaveLatency, int supervisionTimeout,
@@ -1641,6 +1651,7 @@
      * @throws UnsupportedOperationException
      */
     @Override
+    @RequiresNoPermission
     public int getConnectionState(BluetoothDevice device) {
         throw new UnsupportedOperationException("Use BluetoothManager#getConnectionState instead.");
     }
@@ -1652,6 +1663,7 @@
      * @throws UnsupportedOperationException
      */
     @Override
+    @RequiresNoPermission
     public List<BluetoothDevice> getConnectedDevices() {
         throw new UnsupportedOperationException(
                 "Use BluetoothManager#getConnectedDevices instead.");
@@ -1665,6 +1677,7 @@
      * @throws UnsupportedOperationException
      */
     @Override
+    @RequiresNoPermission
     public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
         throw new UnsupportedOperationException(
                 "Use BluetoothManager#getDevicesMatchingConnectionStates instead.");
diff --git a/core/java/android/bluetooth/BluetoothGattServer.java b/core/java/android/bluetooth/BluetoothGattServer.java
index fdb8018..865f476 100644
--- a/core/java/android/bluetooth/BluetoothGattServer.java
+++ b/core/java/android/bluetooth/BluetoothGattServer.java
@@ -16,7 +16,9 @@
 
 package android.bluetooth;
 
+import android.annotation.RequiresNoPermission;
 import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
 import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
 import android.bluetooth.annotations.RequiresLegacyBluetoothPermission;
 import android.os.ParcelUuid;
@@ -58,6 +60,7 @@
     /**
      * Bluetooth GATT interface callbacks
      */
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private final IBluetoothGattServerCallback mBluetoothGattServerCallback =
             new IBluetoothGattServerCallback.Stub() {
                 /**
@@ -428,6 +431,7 @@
      * Application should call this method as early as possible after it is done with
      * this GATT server.
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void close() {
         if (DBG) Log.d(TAG, "close()");
@@ -510,6 +514,7 @@
     /**
      * Unregister the current application and callbacks.
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     private void unregisterCallback() {
         if (DBG) Log.d(TAG, "unregisterCallback() - mServerIf=" + mServerIf);
@@ -618,6 +623,7 @@
      * of {@link BluetoothDevice#PHY_OPTION_NO_PREFERRED}, {@link BluetoothDevice#PHY_OPTION_S2} or
      * {@link BluetoothDevice#PHY_OPTION_S8}
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void setPreferredPhy(BluetoothDevice device, int txPhy, int rxPhy, int phyOptions) {
         try {
@@ -634,6 +640,7 @@
      *
      * @param device The remote device to send this response to
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void readPhy(BluetoothDevice device) {
         try {
@@ -814,6 +821,7 @@
      * @return List of services. Returns an empty list if no services have been added yet.
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public List<BluetoothGattService> getServices() {
         return mServices;
     }
@@ -830,6 +838,7 @@
      * this device.
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresNoPermission
     public BluetoothGattService getService(UUID uuid) {
         for (BluetoothGattService service : mServices) {
             if (service.getUuid().equals(uuid)) {
@@ -848,6 +857,7 @@
      * @throws UnsupportedOperationException
      */
     @Override
+    @RequiresNoPermission
     public int getConnectionState(BluetoothDevice device) {
         throw new UnsupportedOperationException("Use BluetoothManager#getConnectionState instead.");
     }
@@ -859,6 +869,7 @@
      * @throws UnsupportedOperationException
      */
     @Override
+    @RequiresNoPermission
     public List<BluetoothDevice> getConnectedDevices() {
         throw new UnsupportedOperationException(
                 "Use BluetoothManager#getConnectedDevices instead.");
@@ -872,6 +883,7 @@
      * @throws UnsupportedOperationException
      */
     @Override
+    @RequiresNoPermission
     public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
         throw new UnsupportedOperationException(
                 "Use BluetoothManager#getDevicesMatchingConnectionStates instead.");
diff --git a/core/java/android/bluetooth/BluetoothHeadset.java b/core/java/android/bluetooth/BluetoothHeadset.java
index 84e8c51..a1ece7f 100644
--- a/core/java/android/bluetooth/BluetoothHeadset.java
+++ b/core/java/android/bluetooth/BluetoothHeadset.java
@@ -21,6 +21,7 @@
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
+import android.annotation.SuppressLint;
 import android.annotation.SdkConstant.SdkConstantType;
 import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
 import android.bluetooth.annotations.RequiresLegacyBluetoothAdminPermission;
@@ -339,6 +340,7 @@
     private volatile IBluetoothHeadset mService;
     private BluetoothAdapter mAdapter;
 
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private final IBluetoothStateChangeCallback mBluetoothStateChangeCallback =
             new IBluetoothStateChangeCallback.Stub() {
                 public void onBluetoothStateChange(boolean up) {
@@ -509,6 +511,7 @@
      * {@inheritDoc}
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getConnectedDevices() {
         if (VDBG) log("getConnectedDevices()");
@@ -529,6 +532,7 @@
      * {@inheritDoc}
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
         if (VDBG) log("getDevicesMatchingStates()");
@@ -549,6 +553,7 @@
      * {@inheritDoc}
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public int getConnectionState(BluetoothDevice device) {
         if (VDBG) log("getConnectionState(" + device + ")");
@@ -620,6 +625,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -858,6 +864,7 @@
      * @hide
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public int getAudioState(BluetoothDevice device) {
         if (VDBG) log("getAudioState");
@@ -885,6 +892,7 @@
      * @param allowed {@code true} if the profile can reroute audio, {@code false} otherwise.
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void setAudioRouteAllowed(boolean allowed) {
         if (VDBG) log("setAudioRouteAllowed");
@@ -907,6 +915,7 @@
      *
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean getAudioRouteAllowed() {
         if (VDBG) log("getAudioRouteAllowed");
@@ -931,6 +940,7 @@
      * False to use SCO audio in normal manner
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void setForceScoAudio(boolean forced) {
         if (VDBG) log("setForceScoAudio " + String.valueOf(forced));
@@ -991,6 +1001,7 @@
      * @hide
      */
     @UnsupportedAppUsage
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean connectAudio() {
         final IBluetoothHeadset service = mService;
@@ -1019,6 +1030,7 @@
      * @hide
      */
     @UnsupportedAppUsage
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean disconnectAudio() {
         final IBluetoothHeadset service = mService;
@@ -1123,6 +1135,7 @@
      * @hide
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.MODIFY_PHONE_STATE,
@@ -1147,6 +1160,7 @@
      *
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.MODIFY_PHONE_STATE,
@@ -1320,6 +1334,7 @@
                 com.android.internal.R.bool.config_bluetooth_hfp_inband_ringing_support);
     }
 
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private final IBluetoothProfileServiceConnection mConnection =
             new IBluetoothProfileServiceConnection.Stub() {
         @Override
@@ -1356,6 +1371,7 @@
         Log.d(TAG, msg);
     }
 
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private final Handler mHandler = new Handler(Looper.getMainLooper()) {
         @Override
         public void handleMessage(Message msg) {
diff --git a/core/java/android/bluetooth/BluetoothHeadsetClient.java b/core/java/android/bluetooth/BluetoothHeadsetClient.java
index 092130d..eef42d1 100644
--- a/core/java/android/bluetooth/BluetoothHeadsetClient.java
+++ b/core/java/android/bluetooth/BluetoothHeadsetClient.java
@@ -16,7 +16,6 @@
 
 package android.bluetooth;
 
-import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
 import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
@@ -449,6 +448,7 @@
      * @hide
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean connect(BluetoothDevice device) {
         if (DBG) log("connect(" + device + ")");
@@ -476,6 +476,7 @@
      * @hide
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean disconnect(BluetoothDevice device) {
         if (DBG) log("disconnect(" + device + ")");
@@ -499,6 +500,7 @@
      * @return list of connected devices; empty list if nothing is connected.
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getConnectedDevices() {
         if (VDBG) log("getConnectedDevices()");
@@ -524,6 +526,7 @@
      * list if nothing matches the <code>states</code>
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
         if (VDBG) log("getDevicesMatchingStates()");
@@ -548,6 +551,7 @@
      * @return the state of connection of the device
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public int getConnectionState(BluetoothDevice device) {
         if (VDBG) log("getConnectionState(" + device + ")");
@@ -576,6 +580,7 @@
      * @return true if priority is set, false on error
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean setPriority(BluetoothDevice device, int priority) {
         if (DBG) log("setPriority(" + device + ", " + priority + ")");
@@ -594,6 +599,7 @@
      * @return true if connectionPolicy is set, false on error
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean setConnectionPolicy(@NonNull BluetoothDevice device,
             @ConnectionPolicy int connectionPolicy) {
@@ -675,6 +681,7 @@
      * #EXTRA_AG_FEATURE_VOICE_RECOGNITION}. This method invocation will fail silently when feature
      * is not supported.</p>
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean startVoiceRecognition(BluetoothDevice device) {
         if (DBG) log("startVoiceRecognition()");
@@ -700,6 +707,7 @@
      * @return <code>true</code> if command has been issued successfully; <code>false</code>
      * otherwise.
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean sendVendorAtCommand(BluetoothDevice device, int vendorId,
                                              String atCommand) {
@@ -728,6 +736,7 @@
      * #EXTRA_AG_FEATURE_VOICE_RECOGNITION}. This method invocation will fail silently when feature
      * is not supported.</p>
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean stopVoiceRecognition(BluetoothDevice device) {
         if (DBG) log("stopVoiceRecognition()");
@@ -750,6 +759,7 @@
      * @param device remote device
      * @return list of calls; empty list if none call exists
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothHeadsetClientCall> getCurrentCalls(BluetoothDevice device) {
         if (DBG) log("getCurrentCalls()");
@@ -772,6 +782,7 @@
      * @param device remote device
      * @return bundle of AG  indicators; null if device is not in CONNECTED state
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public Bundle getCurrentAgEvents(BluetoothDevice device) {
         if (DBG) log("getCurrentCalls()");
@@ -798,6 +809,7 @@
      * otherwise; upon completion HFP sends {@link #ACTION_CALL_CHANGED} intent.
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean acceptCall(BluetoothDevice device, int flag) {
         if (DBG) log("acceptCall()");
@@ -821,6 +833,7 @@
      * @return <code>true</code> if command has been issued successfully; <code>false</code>
      * otherwise; upon completion HFP sends {@link #ACTION_CALL_CHANGED} intent.
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean holdCall(BluetoothDevice device) {
         if (DBG) log("holdCall()");
@@ -849,6 +862,7 @@
      * supported.</p>
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean rejectCall(BluetoothDevice device) {
         if (DBG) log("rejectCall()");
@@ -881,6 +895,7 @@
      * #EXTRA_AG_FEATURE_ECC}. This method invocation will fail silently when feature is not
      * supported.</p>
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean terminateCall(BluetoothDevice device, BluetoothHeadsetClientCall call) {
         if (DBG) log("terminateCall()");
@@ -911,6 +926,7 @@
      * #EXTRA_AG_FEATURE_ECC}. This method invocation will fail silently when feature is not
      * supported.</p>
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean enterPrivateMode(BluetoothDevice device, int index) {
         if (DBG) log("enterPrivateMode()");
@@ -940,6 +956,7 @@
      * #EXTRA_AG_FEATURE_MERGE_AND_DETACH}. This method invocation will fail silently when feature
      * is not supported.</p>
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean explicitCallTransfer(BluetoothDevice device) {
         if (DBG) log("explicitCallTransfer()");
@@ -965,6 +982,7 @@
      * successfully; <code>{@link null}</code> otherwise; upon completion HFP sends {@link
      * #ACTION_CALL_CHANGED} intent in case of success; {@link #ACTION_RESULT} is sent otherwise;
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public BluetoothHeadsetClientCall dial(BluetoothDevice device, String number) {
         if (DBG) log("dial()");
@@ -991,6 +1009,7 @@
      * @return <code>true</code> if command has been issued successfully; <code>false</code>
      * otherwise; upon completion HFP sends {@link #ACTION_RESULT} intent;
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean sendDTMF(BluetoothDevice device, byte code) {
         if (DBG) log("sendDTMF()");
@@ -1019,6 +1038,8 @@
      * #EXTRA_AG_FEATURE_ATTACH_NUMBER_TO_VT}. This method invocation will fail silently when
      * feature is not supported.</p>
      */
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean getLastVoiceTagNumber(BluetoothDevice device) {
         if (DBG) log("getLastVoiceTagNumber()");
         final IBluetoothHeadsetClient service =
@@ -1040,6 +1061,8 @@
      * Note: This is an internal function and shouldn't be exposed
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public int getAudioState(BluetoothDevice device) {
         if (VDBG) log("getAudioState");
         final IBluetoothHeadsetClient service =
@@ -1064,6 +1087,8 @@
      * @param allowed if routing is allowed to the device Note: This is an internal function and
      * shouldn't be exposed
      */
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void setAudioRouteAllowed(BluetoothDevice device, boolean allowed) {
         if (VDBG) log("setAudioRouteAllowed");
         final IBluetoothHeadsetClient service =
@@ -1087,6 +1112,8 @@
      * @return whether the command succeeded Note: This is an internal function and shouldn't be
      * exposed
      */
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean getAudioRouteAllowed(BluetoothDevice device) {
         if (VDBG) log("getAudioRouteAllowed");
         final IBluetoothHeadsetClient service =
@@ -1113,6 +1140,7 @@
      * @return <code>true</code> if command has been issued successfully; <code>false</code>
      * otherwise; upon completion HFP sends {@link #ACTION_AUDIO_STATE_CHANGED} intent;
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean connectAudio(BluetoothDevice device) {
         final IBluetoothHeadsetClient service =
@@ -1139,6 +1167,7 @@
      * @return <code>true</code> if command has been issued successfully; <code>false</code>
      * otherwise; upon completion HFP sends {@link #ACTION_AUDIO_STATE_CHANGED} intent;
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean disconnectAudio(BluetoothDevice device) {
         final IBluetoothHeadsetClient service =
@@ -1162,6 +1191,7 @@
      * @param device remote device
      * @return bundle of AG features; null if no service or AG not connected
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public Bundle getCurrentAgFeatures(BluetoothDevice device) {
         final IBluetoothHeadsetClient service =
diff --git a/core/java/android/bluetooth/BluetoothHearingAid.java b/core/java/android/bluetooth/BluetoothHearingAid.java
index 8ceeff5..fa52eda 100644
--- a/core/java/android/bluetooth/BluetoothHearingAid.java
+++ b/core/java/android/bluetooth/BluetoothHearingAid.java
@@ -21,6 +21,7 @@
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
+import android.annotation.SuppressLint;
 import android.annotation.SdkConstant.SdkConstantType;
 import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
 import android.bluetooth.annotations.RequiresLegacyBluetoothAdminPermission;
@@ -170,6 +171,7 @@
      * @return false on immediate error, true otherwise
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -231,6 +233,7 @@
      * {@inheritDoc}
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public @NonNull List<BluetoothDevice> getConnectedDevices() {
         if (VDBG) log("getConnectedDevices()");
@@ -251,6 +254,7 @@
      * {@inheritDoc}
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public @NonNull List<BluetoothDevice> getDevicesMatchingConnectionStates(
     @NonNull int[] states) {
@@ -272,6 +276,7 @@
      * {@inheritDoc}
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public @BluetoothProfile.BtProfileState int getConnectionState(
     @NonNull BluetoothDevice device) {
@@ -368,6 +373,7 @@
      * @return true if priority is set, false on error
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -390,6 +396,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -490,6 +497,8 @@
      * @param volume Absolute volume to be set on remote
      * @hide
      */
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void setVolume(int volume) {
         if (DBG) Log.d(TAG, "setVolume(" + volume + ")");
 
@@ -549,6 +558,8 @@
      * @hide
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public int getDeviceSide(BluetoothDevice device) {
         if (VDBG) {
             log("getDeviceSide(" + device + ")");
@@ -575,6 +586,8 @@
      * @hide
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public int getDeviceMode(BluetoothDevice device) {
         if (VDBG) {
             log("getDeviceMode(" + device + ")");
diff --git a/core/java/android/bluetooth/BluetoothHidDevice.java b/core/java/android/bluetooth/BluetoothHidDevice.java
index c214d2b..6565ec0 100644
--- a/core/java/android/bluetooth/BluetoothHidDevice.java
+++ b/core/java/android/bluetooth/BluetoothHidDevice.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
+import android.annotation.SuppressLint;
 import android.annotation.SdkConstant.SdkConstantType;
 import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
 import android.bluetooth.annotations.RequiresLegacyBluetoothPermission;
@@ -439,6 +440,7 @@
 
     /** {@inheritDoc} */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getConnectedDevices() {
         final IBluetoothHidDevice service = getService();
@@ -457,6 +459,7 @@
 
     /** {@inheritDoc} */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
         final IBluetoothHidDevice service = getService();
@@ -475,6 +478,7 @@
 
     /** {@inheritDoc} */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public int getConnectionState(BluetoothDevice device) {
         final IBluetoothHidDevice service = getService();
@@ -514,6 +518,7 @@
      *     object is required.
      * @return true if the command is successfully sent; otherwise false.
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean registerApp(
             BluetoothHidDeviceAppSdpSettings sdp,
@@ -560,6 +565,7 @@
      *
      * @return true if the command is successfully sent; otherwise false.
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean unregisterApp() {
         boolean result = false;
@@ -586,6 +592,7 @@
      * @param data Report data, not including Report Id.
      * @return true if the command is successfully sent; otherwise false.
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean sendReport(BluetoothDevice device, int id, byte[] data) {
         boolean result = false;
@@ -613,6 +620,7 @@
      * @param data Report data, not including Report Id.
      * @return true if the command is successfully sent; otherwise false.
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean replyReport(BluetoothDevice device, byte type, byte id, byte[] data) {
         boolean result = false;
@@ -638,6 +646,7 @@
      * @param error Error to be sent for SET_REPORT via HANDSHAKE.
      * @return true if the command is successfully sent; otherwise false.
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean reportError(BluetoothDevice device, byte error) {
         boolean result = false;
@@ -662,6 +671,7 @@
      * @return the current user name, or empty string if cannot get the name
      * {@hide}
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public String getUserAppName() {
         final IBluetoothHidDevice service = getService();
@@ -687,6 +697,7 @@
      *
      * @return true if the command is successfully sent; otherwise false.
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean connect(BluetoothDevice device) {
         boolean result = false;
@@ -712,6 +723,7 @@
      *
      * @return true if the command is successfully sent; otherwise false.
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean disconnect(BluetoothDevice device) {
         boolean result = false;
@@ -748,6 +760,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
diff --git a/core/java/android/bluetooth/BluetoothHidHost.java b/core/java/android/bluetooth/BluetoothHidHost.java
index 70e3809..bef4472 100644
--- a/core/java/android/bluetooth/BluetoothHidHost.java
+++ b/core/java/android/bluetooth/BluetoothHidHost.java
@@ -331,6 +331,7 @@
      */
     @SystemApi
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public @NonNull List<BluetoothDevice> getConnectedDevices() {
         if (VDBG) log("getConnectedDevices()");
@@ -353,6 +354,7 @@
      * @hide
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
         if (VDBG) log("getDevicesMatchingStates()");
@@ -376,6 +378,7 @@
      */
     @SystemApi
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public int getConnectionState(@NonNull BluetoothDevice device) {
         if (VDBG) log("getState(" + device + ")");
diff --git a/core/java/android/bluetooth/BluetoothInputStream.java b/core/java/android/bluetooth/BluetoothInputStream.java
index 8eb79b2..95f9229 100644
--- a/core/java/android/bluetooth/BluetoothInputStream.java
+++ b/core/java/android/bluetooth/BluetoothInputStream.java
@@ -16,6 +16,8 @@
 
 package android.bluetooth;
 
+import android.annotation.SuppressLint;
+
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -26,6 +28,7 @@
  *
  * @hide
  */
+@SuppressLint("AndroidFrameworkBluetoothPermission")
 /*package*/ final class BluetoothInputStream extends InputStream {
     private BluetoothSocket mSocket;
 
diff --git a/core/java/android/bluetooth/BluetoothLeAudio.java b/core/java/android/bluetooth/BluetoothLeAudio.java
index 4f095f6..462c7b7 100644
--- a/core/java/android/bluetooth/BluetoothLeAudio.java
+++ b/core/java/android/bluetooth/BluetoothLeAudio.java
@@ -155,6 +155,7 @@
      * @return false on immediate error, true otherwise
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean connect(@Nullable BluetoothDevice device) {
         if (DBG) log("connect(" + device + ")");
@@ -194,6 +195,7 @@
      * @return false on immediate error, true otherwise
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean disconnect(@Nullable BluetoothDevice device) {
         if (DBG) log("disconnect(" + device + ")");
@@ -214,6 +216,7 @@
      * {@inheritDoc}
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public @NonNull List<BluetoothDevice> getConnectedDevices() {
         if (VDBG) log("getConnectedDevices()");
@@ -234,6 +237,7 @@
      * {@inheritDoc}
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public @NonNull List<BluetoothDevice> getDevicesMatchingConnectionStates(
             @NonNull int[] states) {
@@ -294,6 +298,7 @@
      * @return false on immediate error, true otherwise
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean setActiveDevice(@Nullable BluetoothDevice device) {
         if (DBG) log("setActiveDevice(" + device + ")");
@@ -320,6 +325,8 @@
      */
     @NonNull
     @RequiresLegacyBluetoothPermission
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getActiveDevices() {
         if (VDBG) log("getActiveDevices()");
         try {
@@ -343,6 +350,8 @@
      * @hide
      */
     @RequiresLegacyBluetoothPermission
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public int getGroupId(@NonNull BluetoothDevice device) {
         if (VDBG) log("getGroupId()");
         try {
@@ -370,6 +379,7 @@
      * @return true if connectionPolicy is set, false on error
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -406,6 +416,7 @@
      * @return connection policy of the device
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public @ConnectionPolicy int getConnectionPolicy(@Nullable BluetoothDevice device) {
         if (VDBG) log("getConnectionPolicy(" + device + ")");
diff --git a/core/java/android/bluetooth/BluetoothManager.java b/core/java/android/bluetooth/BluetoothManager.java
index a1e1b63..2374f1c 100644
--- a/core/java/android/bluetooth/BluetoothManager.java
+++ b/core/java/android/bluetooth/BluetoothManager.java
@@ -18,7 +18,9 @@
 
 import android.Manifest;
 import android.annotation.RequiresFeature;
+import android.annotation.RequiresNoPermission;
 import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
 import android.annotation.SystemService;
 import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
 import android.bluetooth.annotations.RequiresLegacyBluetoothPermission;
@@ -93,6 +95,7 @@
      *
      * @return the BLUETOOTH Adapter
      */
+    @RequiresNoPermission
     public BluetoothAdapter getAdapter() {
         return mAdapter;
     }
@@ -218,6 +221,7 @@
      * @param callback GATT server callback handler that will receive asynchronous callbacks.
      * @return BluetoothGattServer instance
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public BluetoothGattServer openGattServer(Context context,
             BluetoothGattServerCallback callback) {
@@ -238,6 +242,7 @@
      * @return BluetoothGattServer instance
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public BluetoothGattServer openGattServer(Context context,
             BluetoothGattServerCallback callback, boolean eatt_support) {
@@ -259,6 +264,7 @@
      * @return BluetoothGattServer instance
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public BluetoothGattServer openGattServer(Context context,
             BluetoothGattServerCallback callback, int transport) {
@@ -281,6 +287,7 @@
      * @return BluetoothGattServer instance
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public BluetoothGattServer openGattServer(Context context,
             BluetoothGattServerCallback callback, int transport, boolean eatt_support) {
diff --git a/core/java/android/bluetooth/BluetoothMap.java b/core/java/android/bluetooth/BluetoothMap.java
index 3e7b75a..998fde0 100644
--- a/core/java/android/bluetooth/BluetoothMap.java
+++ b/core/java/android/bluetooth/BluetoothMap.java
@@ -18,9 +18,11 @@
 
 import android.Manifest;
 import android.annotation.NonNull;
+import android.annotation.RequiresNoPermission;
 import android.annotation.RequiresPermission;
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
+import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.os.Binder;
@@ -126,6 +128,7 @@
      *
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public int getState() {
         if (VDBG) log("getState()");
@@ -151,6 +154,7 @@
      *
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public BluetoothDevice getClient() {
         if (VDBG) log("getClient()");
@@ -175,6 +179,7 @@
      *
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean isConnected(BluetoothDevice device) {
         if (VDBG) log("isConnected(" + device + ")");
@@ -198,6 +203,7 @@
      *
      * @hide
      */
+    @RequiresNoPermission
     public boolean connect(BluetoothDevice device) {
         if (DBG) log("connect(" + device + ")" + "not supported for MAPS");
         return false;
@@ -212,6 +218,7 @@
      * @hide
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean disconnect(BluetoothDevice device) {
         if (DBG) log("disconnect(" + device + ")");
@@ -259,6 +266,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -285,6 +293,7 @@
      *
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
         if (DBG) log("getDevicesMatchingStates()");
@@ -308,6 +317,7 @@
      *
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public int getConnectionState(BluetoothDevice device) {
         if (DBG) log("getConnectionState(" + device + ")");
@@ -335,6 +345,7 @@
      * @return true if priority is set, false on error
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -357,6 +368,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -391,6 +403,7 @@
      * @return priority of the device
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -412,6 +425,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
diff --git a/core/java/android/bluetooth/BluetoothMapClient.java b/core/java/android/bluetooth/BluetoothMapClient.java
index db74a90..f20b533 100644
--- a/core/java/android/bluetooth/BluetoothMapClient.java
+++ b/core/java/android/bluetooth/BluetoothMapClient.java
@@ -20,8 +20,10 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.app.PendingIntent;
+import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.net.Uri;
@@ -192,6 +194,7 @@
      * currently connected to the Map service.
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean isConnected(BluetoothDevice device) {
         if (VDBG) Log.d(TAG, "isConnected(" + device + ")");
@@ -215,6 +218,7 @@
      *
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -243,6 +247,7 @@
      *
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -268,6 +273,7 @@
      * @hide
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getConnectedDevices() {
         if (DBG) Log.d(TAG, "getConnectedDevices()");
@@ -291,6 +297,7 @@
      * @hide
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
         if (DBG) Log.d(TAG, "getDevicesMatchingStates()");
@@ -314,6 +321,7 @@
      * @hide
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public int getConnectionState(BluetoothDevice device) {
         if (DBG) Log.d(TAG, "getConnectionState(" + device + ")");
@@ -341,6 +349,7 @@
      * @return true if priority is set, false on error
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -362,6 +371,7 @@
      * @return true if connectionPolicy is set, false on error
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -396,6 +406,7 @@
      * @return priority of the device
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -416,6 +427,7 @@
      * @return connection policy of the device
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -449,6 +461,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.SEND_SMS,
@@ -484,6 +497,7 @@
      * @hide
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.SEND_SMS,
@@ -510,6 +524,7 @@
      * @return true if the message is enqueued, false on error
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.READ_SMS,
@@ -536,6 +551,7 @@
      *         MapSupportedFeatures field is set. False is returned otherwise.
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean isUploadingSupported(BluetoothDevice device) {
         final IBluetoothMapClient service = getService();
@@ -564,6 +580,7 @@
      * @return <code>true</code> if request has been sent, <code>false</code> on error
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.READ_SMS,
diff --git a/core/java/android/bluetooth/BluetoothOutputStream.java b/core/java/android/bluetooth/BluetoothOutputStream.java
index a0aa2de..ac2b3ed 100644
--- a/core/java/android/bluetooth/BluetoothOutputStream.java
+++ b/core/java/android/bluetooth/BluetoothOutputStream.java
@@ -16,6 +16,8 @@
 
 package android.bluetooth;
 
+import android.annotation.SuppressLint;
+
 import java.io.IOException;
 import java.io.OutputStream;
 
@@ -26,6 +28,7 @@
  *
  * @hide
  */
+@SuppressLint("AndroidFrameworkBluetoothPermission")
 /*package*/ final class BluetoothOutputStream extends OutputStream {
     private BluetoothSocket mSocket;
 
diff --git a/core/java/android/bluetooth/BluetoothPan.java b/core/java/android/bluetooth/BluetoothPan.java
index b3924b1f..c41c9de 100644
--- a/core/java/android/bluetooth/BluetoothPan.java
+++ b/core/java/android/bluetooth/BluetoothPan.java
@@ -240,6 +240,7 @@
      * @hide
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -282,6 +283,7 @@
      * @hide
      */
     @UnsupportedAppUsage
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean disconnect(BluetoothDevice device) {
         if (DBG) log("disconnect(" + device + ")");
@@ -311,6 +313,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -342,6 +345,7 @@
      */
     @SystemApi
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -416,6 +420,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -441,6 +446,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean isTetheringOn() {
         if (VDBG) log("isTetheringOn()");
diff --git a/core/java/android/bluetooth/BluetoothPbap.java b/core/java/android/bluetooth/BluetoothPbap.java
index 6c2e5bf..e41eb4f 100644
--- a/core/java/android/bluetooth/BluetoothPbap.java
+++ b/core/java/android/bluetooth/BluetoothPbap.java
@@ -110,6 +110,7 @@
      */
     public static final int RESULT_CANCELED = 2;
 
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private final IBluetoothStateChangeCallback mBluetoothStateChangeCallback =
             new IBluetoothStateChangeCallback.Stub() {
                 public void onBluetoothStateChange(boolean up) {
@@ -217,6 +218,7 @@
      * @hide
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getConnectedDevices() {
         log("getConnectedDevices()");
@@ -264,6 +266,7 @@
      * @hide
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
         log("getDevicesMatchingConnectionStates: states=" + Arrays.toString(states));
@@ -297,6 +300,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -330,6 +334,7 @@
      * @hide
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean disconnect(BluetoothDevice device) {
         log("disconnect()");
@@ -347,6 +352,7 @@
         return false;
     }
 
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private final ServiceConnection mConnection = new ServiceConnection() {
         public void onServiceConnected(ComponentName className, IBinder service) {
             log("Proxy object connected");
diff --git a/core/java/android/bluetooth/BluetoothPbapClient.java b/core/java/android/bluetooth/BluetoothPbapClient.java
index 2c8fbc2..85b8650 100644
--- a/core/java/android/bluetooth/BluetoothPbapClient.java
+++ b/core/java/android/bluetooth/BluetoothPbapClient.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
 import android.annotation.SuppressLint;
+import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
 import android.content.Context;
 import android.os.Binder;
 import android.os.IBinder;
@@ -161,6 +162,7 @@
      * @return list of connected devices
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getConnectedDevices() {
         if (DBG) {
@@ -187,6 +189,7 @@
      * @return list of matching devices
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
         if (DBG) {
@@ -213,6 +216,7 @@
      * @return device connection state
      */
     @Override
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public int getConnectionState(BluetoothDevice device) {
         if (DBG) {
diff --git a/core/java/android/bluetooth/BluetoothProfile.java b/core/java/android/bluetooth/BluetoothProfile.java
index 70053ee..161c843 100644
--- a/core/java/android/bluetooth/BluetoothProfile.java
+++ b/core/java/android/bluetooth/BluetoothProfile.java
@@ -17,6 +17,7 @@
 package android.bluetooth;
 
 import android.annotation.IntDef;
+import android.annotation.RequiresNoPermission;
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -333,6 +334,7 @@
          * @param profile - One of {@link #HEADSET} or {@link #A2DP}
          * @param proxy - One of {@link BluetoothHeadset} or {@link BluetoothA2dp}
          */
+        @RequiresNoPermission
         public void onServiceConnected(int profile, BluetoothProfile proxy);
 
         /**
@@ -341,6 +343,7 @@
          *
          * @param profile - One of {@link #HEADSET} or {@link #A2DP}
          */
+        @RequiresNoPermission
         public void onServiceDisconnected(int profile);
     }
 
diff --git a/core/java/android/bluetooth/BluetoothProfileConnector.java b/core/java/android/bluetooth/BluetoothProfileConnector.java
index 12abcc4..b20ab75 100644
--- a/core/java/android/bluetooth/BluetoothProfileConnector.java
+++ b/core/java/android/bluetooth/BluetoothProfileConnector.java
@@ -16,7 +16,6 @@
 
 package android.bluetooth;
 
-import android.annotation.RequiresPermission;
 import android.annotation.SuppressLint;
 import android.content.ComponentName;
 import android.content.Context;
@@ -33,6 +32,7 @@
  * @param <T> The Bluetooth profile interface for this connection.
  * @hide
  */
+@SuppressLint("AndroidFrameworkBluetoothPermission")
 public abstract class BluetoothProfileConnector<T> {
     private final int mProfileId;
     private BluetoothProfile.ServiceListener mServiceListener;
diff --git a/core/java/android/bluetooth/BluetoothSap.java b/core/java/android/bluetooth/BluetoothSap.java
index c85494c..87da22c 100644
--- a/core/java/android/bluetooth/BluetoothSap.java
+++ b/core/java/android/bluetooth/BluetoothSap.java
@@ -17,6 +17,7 @@
 package android.bluetooth;
 
 import android.Manifest;
+import android.annotation.RequiresNoPermission;
 import android.annotation.RequiresPermission;
 import android.annotation.SuppressLint;
 import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
@@ -143,6 +144,7 @@
      * connected to the Sap service.
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public int getState() {
         if (VDBG) log("getState()");
@@ -167,6 +169,7 @@
      * this proxy object is not connected to the Sap service.
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public BluetoothDevice getClient() {
         if (VDBG) log("getClient()");
@@ -191,6 +194,7 @@
      *
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean isConnected(BluetoothDevice device) {
         if (VDBG) log("isConnected(" + device + ")");
@@ -214,6 +218,7 @@
      *
      * @hide
      */
+    @RequiresNoPermission
     public boolean connect(BluetoothDevice device) {
         if (DBG) log("connect(" + device + ")" + "not supported for SAPS");
         return false;
@@ -227,6 +232,7 @@
      * @hide
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public boolean disconnect(BluetoothDevice device) {
         if (DBG) log("disconnect(" + device + ")");
@@ -249,6 +255,7 @@
      * @return list of connected devices
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getConnectedDevices() {
         if (DBG) log("getConnectedDevices()");
@@ -271,6 +278,7 @@
      * @return list of matching devices
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
         if (DBG) log("getDevicesMatchingStates()");
@@ -293,6 +301,7 @@
      * @return device connection state
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
     public int getConnectionState(BluetoothDevice device) {
         if (DBG) log("getConnectionState(" + device + ")");
@@ -320,6 +329,7 @@
      * @return true if priority is set, false on error
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -341,6 +351,7 @@
      * @return true if connectionPolicy is set, false on error
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -375,6 +386,7 @@
      * @return priority of the device
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
@@ -395,6 +407,7 @@
      * @return connection policy of the device
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(allOf = {
             android.Manifest.permission.BLUETOOTH_CONNECT,
             android.Manifest.permission.BLUETOOTH_PRIVILEGED,
diff --git a/core/java/android/bluetooth/BluetoothServerSocket.java b/core/java/android/bluetooth/BluetoothServerSocket.java
index 5082235..bb4e354 100644
--- a/core/java/android/bluetooth/BluetoothServerSocket.java
+++ b/core/java/android/bluetooth/BluetoothServerSocket.java
@@ -16,6 +16,7 @@
 
 package android.bluetooth;
 
+import android.annotation.SuppressLint;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Handler;
 import android.os.ParcelUuid;
@@ -70,6 +71,7 @@
  *
  * {@see BluetoothSocket}
  */
+@SuppressLint("AndroidFrameworkBluetoothPermission")
 public final class BluetoothServerSocket implements Closeable {
 
     private static final String TAG = "BluetoothServerSocket";
diff --git a/core/java/android/bluetooth/BluetoothSocket.java b/core/java/android/bluetooth/BluetoothSocket.java
index ef88147..bb409d5 100644
--- a/core/java/android/bluetooth/BluetoothSocket.java
+++ b/core/java/android/bluetooth/BluetoothSocket.java
@@ -16,8 +16,10 @@
 
 package android.bluetooth;
 
+import android.annotation.RequiresNoPermission;
 import android.annotation.RequiresPermission;
 import android.annotation.SuppressLint;
+import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.net.LocalSocket;
 import android.os.Build;
@@ -198,7 +200,6 @@
      * @throws IOException On error, for example Bluetooth not available, or insufficient
      * privileges
      */
-    @SuppressLint("AndroidFrameworkRequiresPermission")
     /*package*/ BluetoothSocket(int type, int fd, boolean auth, boolean encrypt,
             BluetoothDevice device, int port, ParcelUuid uuid, boolean mitm, boolean min16DigitPin)
             throws IOException {
@@ -326,6 +327,7 @@
      *
      * @return remote device
      */
+    @RequiresNoPermission
     public BluetoothDevice getRemoteDevice() {
         return mDevice;
     }
@@ -338,6 +340,7 @@
      *
      * @return InputStream
      */
+    @RequiresNoPermission
     public InputStream getInputStream() throws IOException {
         return mInputStream;
     }
@@ -350,6 +353,7 @@
      *
      * @return OutputStream
      */
+    @RequiresNoPermission
     public OutputStream getOutputStream() throws IOException {
         return mOutputStream;
     }
@@ -360,6 +364,7 @@
      *
      * @return true if connected false if not connected
      */
+    @RequiresNoPermission
     public boolean isConnected() {
         return mSocketState == SocketState.CONNECTED;
     }
@@ -386,6 +391,7 @@
      *
      * @throws IOException on error, for example connection failure
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void connect() throws IOException {
         if (mDevice == null) throw new IOException("Connect is called on null device");
@@ -637,6 +643,7 @@
      *
      * @return the maximum supported Transmit packet size for the underlying transport.
      */
+    @RequiresNoPermission
     public int getMaxTransmitPacketSize() {
         return mMaxTxPacketSize;
     }
@@ -649,6 +656,7 @@
      *
      * @return the maximum supported Receive packet size for the underlying transport.
      */
+    @RequiresNoPermission
     public int getMaxReceivePacketSize() {
         return mMaxRxPacketSize;
     }
@@ -658,6 +666,7 @@
      *
      * @return one of {@link #TYPE_RFCOMM}, {@link #TYPE_SCO} or {@link #TYPE_L2CAP}
      */
+    @RequiresNoPermission
     public int getConnectionType() {
         if (mType == TYPE_L2CAP_LE) {
             // Treat the LE CoC to be the same type as L2CAP.
@@ -674,6 +683,7 @@
      * generate SPP SDP record.
      * @hide
      */
+    @RequiresNoPermission
     public void setExcludeSdp(boolean excludeSdp) {
         mExcludeSdp = excludeSdp;
     }
@@ -684,6 +694,7 @@
      * connection. This function is currently used for testing only.
      * @hide
      */
+    @RequiresBluetoothConnectPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
     public void requestMaximumTxDataLength() throws IOException {
         if (mDevice == null) {
diff --git a/core/java/android/bluetooth/BluetoothUuid.java b/core/java/android/bluetooth/BluetoothUuid.java
index d82cf19..bc3754a 100644
--- a/core/java/android/bluetooth/BluetoothUuid.java
+++ b/core/java/android/bluetooth/BluetoothUuid.java
@@ -18,6 +18,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.ParcelUuid;
@@ -34,6 +35,7 @@
  * @hide
  */
 @SystemApi
+@SuppressLint("AndroidFrameworkBluetoothPermission")
 public final class BluetoothUuid {
 
     /* See Bluetooth Assigned Numbers document - SDP section, to get the values of UUIDs
diff --git a/core/java/android/bluetooth/le/AdvertisingSet.java b/core/java/android/bluetooth/le/AdvertisingSet.java
index 54a18e6..d7e48ca 100644
--- a/core/java/android/bluetooth/le/AdvertisingSet.java
+++ b/core/java/android/bluetooth/le/AdvertisingSet.java
@@ -16,7 +16,9 @@
 
 package android.bluetooth.le;
 
+import android.annotation.RequiresNoPermission;
 import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.IBluetoothGatt;
 import android.bluetooth.IBluetoothManager;
@@ -216,6 +218,7 @@
      *
      * @hide
      */
+    @RequiresNoPermission
     public int getAdvertiserId() {
         return mAdvertiserId;
     }
diff --git a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java
index de11869..ff279d8 100644
--- a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java
+++ b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java
@@ -16,6 +16,7 @@
 
 package android.bluetooth.le;
 
+import android.annotation.RequiresNoPermission;
 import android.annotation.RequiresPermission;
 import android.annotation.SuppressLint;
 import android.bluetooth.BluetoothAdapter;
@@ -89,10 +90,7 @@
      */
     @RequiresLegacyBluetoothAdminPermission
     @RequiresBluetoothAdvertisePermission
-    @RequiresPermission(allOf = {
-            android.Manifest.permission.BLUETOOTH_ADVERTISE,
-            android.Manifest.permission.BLUETOOTH_CONNECT,
-    })
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE)
     public void startAdvertising(AdvertiseSettings settings,
             AdvertiseData advertiseData, final AdvertiseCallback callback) {
         startAdvertising(settings, advertiseData, null, callback);
@@ -111,10 +109,7 @@
      */
     @RequiresLegacyBluetoothAdminPermission
     @RequiresBluetoothAdvertisePermission
-    @RequiresPermission(allOf = {
-            android.Manifest.permission.BLUETOOTH_ADVERTISE,
-            android.Manifest.permission.BLUETOOTH_CONNECT,
-    })
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE)
     public void startAdvertising(AdvertiseSettings settings,
             AdvertiseData advertiseData, AdvertiseData scanResponse,
             final AdvertiseCallback callback) {
@@ -169,11 +164,13 @@
         }
     }
 
-    @SuppressLint("AndroidFrameworkRequiresPermission")
+    @SuppressLint({
+            "AndroidFrameworkBluetoothPermission",
+            "AndroidFrameworkRequiresPermission",
+    })
     AdvertisingSetCallback wrapOldCallback(AdvertiseCallback callback, AdvertiseSettings settings) {
         return new AdvertisingSetCallback() {
             @Override
-            @SuppressLint("AndroidFrameworkRequiresPermission")
             public void onAdvertisingSetStarted(AdvertisingSet advertisingSet, int txPower,
                     int status) {
                 if (status != AdvertisingSetCallback.ADVERTISE_SUCCESS) {
@@ -186,7 +183,6 @@
 
             /* Legacy advertiser is disabled on timeout */
             @Override
-            @SuppressLint("AndroidFrameworkRequiresPermission")
             public void onAdvertisingEnabled(AdvertisingSet advertisingSet, boolean enabled,
                     int status) {
                 if (enabled) {
@@ -247,10 +243,7 @@
      */
     @RequiresLegacyBluetoothAdminPermission
     @RequiresBluetoothAdvertisePermission
-    @RequiresPermission(allOf = {
-            android.Manifest.permission.BLUETOOTH_ADVERTISE,
-            android.Manifest.permission.BLUETOOTH_CONNECT,
-    })
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE)
     public void startAdvertisingSet(AdvertisingSetParameters parameters,
             AdvertiseData advertiseData, AdvertiseData scanResponse,
             PeriodicAdvertisingParameters periodicParameters,
@@ -283,10 +276,7 @@
      */
     @RequiresLegacyBluetoothAdminPermission
     @RequiresBluetoothAdvertisePermission
-    @RequiresPermission(allOf = {
-            android.Manifest.permission.BLUETOOTH_ADVERTISE,
-            android.Manifest.permission.BLUETOOTH_CONNECT,
-    })
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE)
     public void startAdvertisingSet(AdvertisingSetParameters parameters,
             AdvertiseData advertiseData, AdvertiseData scanResponse,
             PeriodicAdvertisingParameters periodicParameters,
@@ -324,10 +314,7 @@
      */
     @RequiresLegacyBluetoothAdminPermission
     @RequiresBluetoothAdvertisePermission
-    @RequiresPermission(allOf = {
-            android.Manifest.permission.BLUETOOTH_ADVERTISE,
-            android.Manifest.permission.BLUETOOTH_CONNECT,
-    })
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE)
     public void startAdvertisingSet(AdvertisingSetParameters parameters,
             AdvertiseData advertiseData, AdvertiseData scanResponse,
             PeriodicAdvertisingParameters periodicParameters,
@@ -370,10 +357,7 @@
      */
     @RequiresLegacyBluetoothAdminPermission
     @RequiresBluetoothAdvertisePermission
-    @RequiresPermission(allOf = {
-            android.Manifest.permission.BLUETOOTH_ADVERTISE,
-            android.Manifest.permission.BLUETOOTH_CONNECT,
-    })
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE)
     public void startAdvertisingSet(AdvertisingSetParameters parameters,
             AdvertiseData advertiseData, AdvertiseData scanResponse,
             PeriodicAdvertisingParameters periodicParameters,
@@ -509,6 +493,7 @@
      *
      * @hide
      */
+    @RequiresNoPermission
     public void cleanup() {
         mLegacyAdvertisers.clear();
         mCallbackWrappers.clear();
@@ -516,7 +501,8 @@
     }
 
     // Compute the size of advertisement data or scan resp
-    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
+    @RequiresBluetoothAdvertisePermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE)
     private int totalBytes(AdvertiseData data, boolean isFlagsIncluded) {
         if (data == null) return 0;
         // Flags field is omitted if the advertising is not connectable.
@@ -587,8 +573,11 @@
         if (data.getIncludeTxPowerLevel()) {
             size += OVERHEAD_BYTES_PER_FIELD + 1; // tx power level value is one byte.
         }
-        if (data.getIncludeDeviceName() && mBluetoothAdapter.getName() != null) {
-            size += OVERHEAD_BYTES_PER_FIELD + mBluetoothAdapter.getName().length();
+        if (data.getIncludeDeviceName()) {
+            final int length = mBluetoothAdapter.getNameLengthForAdvertise();
+            if (length >= 0) {
+                size += OVERHEAD_BYTES_PER_FIELD + length;
+            }
         }
         return size;
     }
@@ -597,6 +586,7 @@
         return array == null ? 0 : array.length;
     }
 
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     IAdvertisingSetCallback wrap(AdvertisingSetCallback callback, Handler handler) {
         return new IAdvertisingSetCallback.Stub() {
             @Override
@@ -721,6 +711,7 @@
         };
     }
 
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private void postStartSetFailure(Handler handler, final AdvertisingSetCallback callback,
             final int error) {
         handler.post(new Runnable() {
@@ -731,6 +722,7 @@
         });
     }
 
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private void postStartFailure(final AdvertiseCallback callback, final int error) {
         mHandler.post(new Runnable() {
             @Override
@@ -740,6 +732,7 @@
         });
     }
 
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private void postStartSuccess(final AdvertiseCallback callback,
             final AdvertiseSettings settings) {
         mHandler.post(new Runnable() {
diff --git a/core/java/android/bluetooth/le/BluetoothLeScanner.java b/core/java/android/bluetooth/le/BluetoothLeScanner.java
index 4271a90..f27f22b 100644
--- a/core/java/android/bluetooth/le/BluetoothLeScanner.java
+++ b/core/java/android/bluetooth/le/BluetoothLeScanner.java
@@ -16,9 +16,9 @@
 
 package android.bluetooth.le;
 
-import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.RequiresNoPermission;
 import android.annotation.RequiresPermission;
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
@@ -357,6 +357,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresBluetoothScanPermission
     @RequiresPermission(android.Manifest.permission.BLUETOOTH_SCAN)
     public void startTruncatedScan(List<TruncatedFilter> truncatedFilters, ScanSettings settings,
             final ScanCallback callback) {
@@ -376,6 +377,7 @@
      *
      * @hide
      */
+    @RequiresNoPermission
     public void cleanup() {
         mLeScanClients.clear();
     }
@@ -383,6 +385,7 @@
     /**
      * Bluetooth GATT interface callbacks
      */
+    @SuppressLint("AndroidFrameworkRequiresPermission")
     private class BleScanCallbackWrapper extends IScannerCallback.Stub {
         private static final int REGISTRATION_CALLBACK_TIMEOUT_MILLIS = 2000;
 
@@ -412,8 +415,6 @@
             mResultStorages = resultStorages;
         }
 
-        @SuppressLint("AndroidFrameworkRequiresPermission")
-        @RequiresPermission(android.Manifest.permission.BLUETOOTH_SCAN)
         public void startRegistration() {
             synchronized (this) {
                 // Scan stopped.
@@ -441,7 +442,6 @@
             }
         }
 
-        @SuppressLint("AndroidFrameworkRequiresPermission")
         @RequiresPermission(android.Manifest.permission.BLUETOOTH_SCAN)
         public void stopLeScan() {
             synchronized (this) {
@@ -459,7 +459,6 @@
             }
         }
 
-        @SuppressLint("AndroidFrameworkRequiresPermission")
         @RequiresPermission(android.Manifest.permission.BLUETOOTH_SCAN)
         void flushPendingBatchResults() {
             synchronized (this) {
@@ -479,7 +478,6 @@
          * Application interface registered - app is ready to go
          */
         @Override
-        @SuppressLint("AndroidFrameworkRequiresPermission")
         public void onScannerRegistered(int status, int scannerId) {
             Log.d(TAG, "onScannerRegistered() - status=" + status
                     + " scannerId=" + scannerId + " mScannerId=" + mScannerId);
@@ -592,6 +590,7 @@
         }
     }
 
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private void postCallbackError(final ScanCallback callback, final int errorCode) {
         mHandler.post(new Runnable() {
             @Override
diff --git a/core/java/android/bluetooth/le/PeriodicAdvertisingManager.java b/core/java/android/bluetooth/le/PeriodicAdvertisingManager.java
index 9ea6c48..26978e3 100644
--- a/core/java/android/bluetooth/le/PeriodicAdvertisingManager.java
+++ b/core/java/android/bluetooth/le/PeriodicAdvertisingManager.java
@@ -17,6 +17,7 @@
 package android.bluetooth.le;
 
 import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
 import android.bluetooth.IBluetoothGatt;
@@ -208,6 +209,7 @@
         }
     }
 
+    @SuppressLint("AndroidFrameworkBluetoothPermission")
     private IPeriodicAdvertisingCallback wrap(PeriodicAdvertisingCallback callback,
             Handler handler) {
         return new IPeriodicAdvertisingCallback.Stub() {
diff --git a/core/java/android/bluetooth/le/ScanFilter.java b/core/java/android/bluetooth/le/ScanFilter.java
index 27c579b..c5c4277 100644
--- a/core/java/android/bluetooth/le/ScanFilter.java
+++ b/core/java/android/bluetooth/le/ScanFilter.java
@@ -16,7 +16,6 @@
 
 package android.bluetooth.le;
 
-import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
diff --git a/core/java/android/bluetooth/le/ScanRecord.java b/core/java/android/bluetooth/le/ScanRecord.java
index 794b512..9b8c2ea 100644
--- a/core/java/android/bluetooth/le/ScanRecord.java
+++ b/core/java/android/bluetooth/le/ScanRecord.java
@@ -18,6 +18,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SuppressLint;
 import android.bluetooth.BluetoothUuid;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.ParcelUuid;
@@ -34,6 +35,7 @@
 /**
  * Represents a scan record from Bluetooth LE scan.
  */
+@SuppressLint("AndroidFrameworkBluetoothPermission")
 public final class ScanRecord {
 
     private static final String TAG = "ScanRecord";
diff --git a/core/java/android/bluetooth/le/TruncatedFilter.java b/core/java/android/bluetooth/le/TruncatedFilter.java
index a753aa6..93f526b 100644
--- a/core/java/android/bluetooth/le/TruncatedFilter.java
+++ b/core/java/android/bluetooth/le/TruncatedFilter.java
@@ -16,6 +16,7 @@
 
 package android.bluetooth.le;
 
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 
 import java.util.List;
@@ -26,6 +27,7 @@
  * @hide
  */
 @SystemApi
+@SuppressLint("AndroidFrameworkBluetoothPermission")
 public final class TruncatedFilter {
     private final ScanFilter mFilter;
     private final List<ResultStorageDescriptor> mStorageDescriptors;
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 318913f..a88c9ed 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -4705,10 +4705,9 @@
      * @hide
      * @see #getSystemService(String)
      */
-    // TODO(b/176208267): change it back to translation before S release.
     @SystemApi
     @SuppressLint("ServiceName")
-    public static final String TRANSLATION_MANAGER_SERVICE = "transformer";
+    public static final String TRANSLATION_MANAGER_SERVICE = "translation";
 
     /**
      * Official published name of the translation service which supports ui translation function.
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index f8d407d..3cc7ff8 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -5368,8 +5368,8 @@
     public static final String EXTRA_ATTRIBUTION_TAGS = "android.intent.extra.ATTRIBUTION_TAGS";
 
     /**
-     * A long representing the start timestamp (in millis) of the permission usage when used with
-     * {@link #ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD}
+     * A long representing the start timestamp (epoch time in millis) of the permission usage
+     * when used with {@link #ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD}
      *
      * @hide
      */
@@ -5377,8 +5377,8 @@
     public static final String EXTRA_START_TIME = "android.intent.extra.START_TIME";
 
     /**
-     * A long representing the end timestamp (in millis) of the permission usage when used with
-     * {@link #ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD}
+     * A long representing the end timestamp (epoch time in millis) of the permission usage when
+     * used with {@link #ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD}
      *
      * @hide
      */
diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java
index fa9142c..fc0e214 100644
--- a/core/java/android/content/pm/ActivityInfo.java
+++ b/core/java/android/content/pm/ActivityInfo.java
@@ -961,6 +961,29 @@
     public @interface SizeChangesSupportMode {}
 
     /**
+     * This change id forces the packages it is applied to never have Display API sandboxing
+     * applied for a letterbox or SCM activity. The Display APIs will continue to provide
+     * DisplayArea bounds.
+     * @hide
+     */
+    @ChangeId
+    @Overridable
+    @Disabled
+    @TestApi
+    public static final long NEVER_SANDBOX_DISPLAY_APIS = 184838306L; // buganizer id
+
+    /**
+     * This change id forces the packages it is applied to always have Display API sandboxing
+     * applied, regardless of windowing mode. The Display APIs will always provide the app bounds.
+     * @hide
+     */
+    @ChangeId
+    @Overridable
+    @Disabled
+    @TestApi
+    public static final long ALWAYS_SANDBOX_DISPLAY_APIS = 185004937L; // buganizer id
+
+    /**
      * This change id is the gatekeeper for all treatments that force a given min aspect ratio.
      * Enabling this change will allow the following min aspect ratio treatments to be applied:
      * OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
@@ -1325,6 +1348,26 @@
         return SIZE_CHANGES_UNSUPPORTED_METADATA;
     }
 
+    /**
+     * Returns if the activity should never be sandboxed to the activity window bounds.
+     * @hide
+     */
+    public boolean neverSandboxDisplayApis() {
+        return CompatChanges.isChangeEnabled(NEVER_SANDBOX_DISPLAY_APIS,
+                applicationInfo.packageName,
+                UserHandle.getUserHandleForUid(applicationInfo.uid));
+    }
+
+    /**
+     * Returns if the activity should always be sandboxed to the activity window bounds.
+     * @hide
+     */
+    public boolean alwaysSandboxDisplayApis() {
+        return CompatChanges.isChangeEnabled(ALWAYS_SANDBOX_DISPLAY_APIS,
+                applicationInfo.packageName,
+                UserHandle.getUserHandleForUid(applicationInfo.uid));
+    }
+
     /** @hide */
     public void setMaxAspectRatio(float maxAspectRatio) {
         this.mMaxAspectRatio = maxAspectRatio;
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java
index 6ad204e..9934b2a 100644
--- a/core/java/android/content/pm/ApplicationInfo.java
+++ b/core/java/android/content/pm/ApplicationInfo.java
@@ -2130,6 +2130,7 @@
      *
      * @hide
      */
+    @SuppressWarnings("AutoBoxing")
     @SystemApi
     @Nullable
     public Boolean hasRequestRawExternalStorageAccess() {
diff --git a/core/java/android/content/pm/DataLoaderParams.java b/core/java/android/content/pm/DataLoaderParams.java
index f808cfd..a6d3b45 100644
--- a/core/java/android/content/pm/DataLoaderParams.java
+++ b/core/java/android/content/pm/DataLoaderParams.java
@@ -24,7 +24,9 @@
  * This class represents the parameters used to configure a DataLoader.
  *
  * {@see android.service.dataloader.DataLoaderService.DataLoader}
+ * @hide
  */
+@SystemApi
 public class DataLoaderParams {
     @NonNull
     private final DataLoaderParamsParcel mData;
diff --git a/core/java/android/content/pm/InstallationFile.java b/core/java/android/content/pm/InstallationFile.java
index e764020..7e07c45 100644
--- a/core/java/android/content/pm/InstallationFile.java
+++ b/core/java/android/content/pm/InstallationFile.java
@@ -18,16 +18,18 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SystemApi;
 
 /**
  * Definition of a file in a streaming installation session.
  * You can use this class to retrieve the information of such a file, such as its name, size and
  * metadata. These file attributes will be consistent with those used in:
- * {@code android.content.pm.PackageInstaller.Session#addFile}, when the file was first added
- * into the session.
+ * {@code PackageInstaller.Session#addFile}, when the file was first added into the session.
  *
  * @see android.content.pm.PackageInstaller.Session#addFile
+ * @hide
  */
+@SystemApi
 public final class InstallationFile {
     private final @NonNull InstallationFileParcel mParcel;
 
diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java
index 8b380b7..5157e08 100644
--- a/core/java/android/content/pm/PackageInstaller.java
+++ b/core/java/android/content/pm/PackageInstaller.java
@@ -229,12 +229,15 @@
 
     /**
      * Type of DataLoader for this session. Will be one of
-     * {@link #DATA_LOADER_TYPE_NONE}, {@link #DATA_LOADER_TYPE_STREAMING}.
+     * {@link #DATA_LOADER_TYPE_NONE}, {@link #DATA_LOADER_TYPE_STREAMING},
+     * {@link #DATA_LOADER_TYPE_INCREMENTAL}.
      * <p>
      * See the individual types documentation for details.
      *
      * @see Intent#getIntExtra(String, int)
+     * {@hide}
      */
+    @SystemApi
     public static final String EXTRA_DATA_LOADER_TYPE = "android.content.pm.extra.DATA_LOADER_TYPE";
 
     /**
@@ -242,6 +245,7 @@
      * Caller should make sure DataLoader is able to prepare image and reinitiate the operation.
      *
      * @see #EXTRA_SESSION_ID
+     * {@hide}
      */
     public static final int STATUS_PENDING_STREAMING = -2;
 
@@ -344,21 +348,25 @@
      * Default value, non-streaming installation session.
      *
      * @see #EXTRA_DATA_LOADER_TYPE
+     * {@hide}
      */
+    @SystemApi
     public static final int DATA_LOADER_TYPE_NONE = DataLoaderType.NONE;
 
     /**
      * Streaming installation using data loader.
      *
      * @see #EXTRA_DATA_LOADER_TYPE
+     * {@hide}
      */
+    @SystemApi
     public static final int DATA_LOADER_TYPE_STREAMING = DataLoaderType.STREAMING;
 
     /**
      * Streaming installation using Incremental FileSystem.
      *
      * @see #EXTRA_DATA_LOADER_TYPE
-     * @hide
+     * {@hide}
      */
     @SystemApi
     public static final int DATA_LOADER_TYPE_INCREMENTAL = DataLoaderType.INCREMENTAL;
@@ -366,13 +374,18 @@
     /**
      * Target location for the file in installation session is /data/app/<packageName>-<id>.
      * This is the intended location for APKs.
+     * Requires permission to install packages.
+     * {@hide}
      */
+    @SystemApi
     public static final int LOCATION_DATA_APP = InstallationFileLocation.DATA_APP;
 
     /**
      * Target location for the file in installation session is
      * /data/media/<userid>/Android/obb/<packageName>. This is the intended location for OBBs.
+     * {@hide}
      */
+    @SystemApi
     public static final int LOCATION_MEDIA_OBB = InstallationFileLocation.MEDIA_OBB;
 
     /**
@@ -380,7 +393,9 @@
      * /data/media/<userid>/Android/data/<packageName>.
      * This is the intended location for application data.
      * Can only be used by an app itself running under specific user.
+     * {@hide}
      */
+    @SystemApi
     public static final int LOCATION_MEDIA_DATA = InstallationFileLocation.MEDIA_DATA;
 
     /** @hide */
@@ -1152,7 +1167,10 @@
 
         /**
          * @return data loader params or null if the session is not using one.
+         * {@hide}
          */
+        @SystemApi
+        @RequiresPermission(android.Manifest.permission.USE_INSTALLER_V2)
         public @Nullable DataLoaderParams getDataLoaderParams() {
             try {
                 DataLoaderParamsParcel data = mSession.getDataLoaderParams();
@@ -1189,7 +1207,11 @@
          * @throws IllegalStateException if called for non-streaming session
          *
          * @see android.content.pm.InstallationFile
+         *
+         * {@hide}
          */
+        @SystemApi
+        @RequiresPermission(android.Manifest.permission.USE_INSTALLER_V2)
         public void addFile(@FileLocation int location, @NonNull String name, long lengthBytes,
                 @NonNull byte[] metadata, @Nullable byte[] signature) {
             try {
@@ -1209,8 +1231,11 @@
          * @param name name of a file, e.g. split.
          * @throws SecurityException if called after the session has been
          *             sealed or abandoned
-         * @throws IllegalStateException if called for non-streaming session
+         * @throws IllegalStateException if called for non-DataLoader session
+         * {@hide}
          */
+        @SystemApi
+        @RequiresPermission(android.Manifest.permission.USE_INSTALLER_V2)
         public void removeFile(@FileLocation int location, @NonNull String name) {
             try {
                 mSession.removeFile(location, name);
@@ -2026,7 +2051,13 @@
          * staging folder.
          *
          * @see android.service.dataloader.DataLoaderService.DataLoader
+         *
+         * {@hide}
          */
+        @SystemApi
+        @RequiresPermission(allOf = {
+                Manifest.permission.INSTALL_PACKAGES,
+                Manifest.permission.USE_INSTALLER_V2})
         public void setDataLoaderParams(@NonNull DataLoaderParams dataLoaderParams) {
             this.dataLoaderParams = dataLoaderParams;
         }
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index bba2fd0..746aaee 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -7775,6 +7775,9 @@
      * {@link #SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_VISIBLE} or its installation state (via
      * {@link #SYSTEM_APP_STATE_INSTALLED} and {@link #SYSTEM_APP_STATE_UNINSTALLED}.
      *
+     * This API may only be called from {@link android.os.Process#SYSTEM_UID} or
+     * {@link android.os.Process#PHONE_UID}.
+     *
      * @param packageName Package name of the app.
      * @param state State of the app.
      * @hide
diff --git a/core/java/android/content/pm/PackagePartitions.java b/core/java/android/content/pm/PackagePartitions.java
index 98a20f7..52ee4de 100644
--- a/core/java/android/content/pm/PackagePartitions.java
+++ b/core/java/android/content/pm/PackagePartitions.java
@@ -47,7 +47,7 @@
     public static final int PARTITION_PRODUCT = 4;
     public static final int PARTITION_SYSTEM_EXT = 5;
 
-    @IntDef(flag = true, prefix = { "PARTITION_" }, value = {
+    @IntDef(prefix = { "PARTITION_" }, value = {
         PARTITION_SYSTEM,
         PARTITION_VENDOR,
         PARTITION_ODM,
diff --git a/core/java/android/content/pm/parsing/ParsingPackageUtils.java b/core/java/android/content/pm/parsing/ParsingPackageUtils.java
index c2ca384..0fc6b2b 100644
--- a/core/java/android/content/pm/parsing/ParsingPackageUtils.java
+++ b/core/java/android/content/pm/parsing/ParsingPackageUtils.java
@@ -2807,7 +2807,15 @@
         }
     }
 
+    @SuppressWarnings("AndroidFrameworkCompatChange")
     private void convertSplitPermissions(ParsingPackage pkg) {
+        // STOPSHIP(b/183905675): REMOVE THIS TERRIBLE, HORRIBLE, NO GOOD, VERY BAD HACK
+        if ("com.android.chrome".equals(pkg.getPackageName())
+                && pkg.getVersionCode() <= 445500399
+                && pkg.getTargetSdkVersion() > Build.VERSION_CODES.R) {
+            pkg.setTargetSdkVersion(Build.VERSION_CODES.R);
+        }
+
         final int listSize = mSplitPermissionInfos.size();
         for (int is = 0; is < listSize; is++) {
             final PermissionManager.SplitPermissionInfo spi = mSplitPermissionInfos.get(is);
diff --git a/core/java/android/hardware/biometrics/CryptoObject.java b/core/java/android/hardware/biometrics/CryptoObject.java
index 0af18df..7648cf2 100644
--- a/core/java/android/hardware/biometrics/CryptoObject.java
+++ b/core/java/android/hardware/biometrics/CryptoObject.java
@@ -18,7 +18,7 @@
 
 import android.annotation.NonNull;
 import android.security.identity.IdentityCredential;
-import android.security.keystore.AndroidKeyStoreProvider;
+import android.security.keystore2.AndroidKeyStoreProvider;
 
 import java.security.Signature;
 
diff --git a/core/java/android/hardware/hdmi/HdmiAudioSystemClient.java b/core/java/android/hardware/hdmi/HdmiAudioSystemClient.java
index bdd5ab6..e7d76f6 100644
--- a/core/java/android/hardware/hdmi/HdmiAudioSystemClient.java
+++ b/core/java/android/hardware/hdmi/HdmiAudioSystemClient.java
@@ -63,7 +63,6 @@
      *
      * @hide
      */
-    // TODO(b/110094868): unhide and add @SystemApi for Q
     public interface SetSystemAudioModeCallback {
         /**
          * Called when the input was changed.
@@ -74,7 +73,6 @@
     }
 
     /** @hide */
-    // TODO(b/110094868): unhide and add @SystemApi for Q
     @Override
     public int getDeviceType() {
         return HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM;
@@ -143,7 +141,6 @@
      *
      * @hide
      */
-    // TODO(b/110094868): unhide and add @SystemApi for Q
     public void setSystemAudioMode(boolean state, @NonNull SetSystemAudioModeCallback callback) {
         // TODO(amyjojo): implement this when needed.
     }
@@ -156,7 +153,6 @@
      *
      * @hide
      */
-    // TODO(b/110094868): unhide and add @SystemApi for Q
     public void setSystemAudioModeOnForAudioOnlySource() {
         try {
             mService.setSystemAudioModeOnForAudioOnlySource();
diff --git a/core/java/android/hardware/hdmi/HdmiClient.java b/core/java/android/hardware/hdmi/HdmiClient.java
index a921215..0c21746 100644
--- a/core/java/android/hardware/hdmi/HdmiClient.java
+++ b/core/java/android/hardware/hdmi/HdmiClient.java
@@ -65,7 +65,6 @@
      * @param isPressed true if this is key press event
      *
      * @hide
-     * TODO(b/110094868): unhide for Q
      */
     public void sendVolumeKeyEvent(int keyCode, boolean isPressed) {
         try {
diff --git a/core/java/android/hardware/hdmi/HdmiControlManager.java b/core/java/android/hardware/hdmi/HdmiControlManager.java
index ad71f15..6079c57 100644
--- a/core/java/android/hardware/hdmi/HdmiControlManager.java
+++ b/core/java/android/hardware/hdmi/HdmiControlManager.java
@@ -1009,7 +1009,6 @@
      *
      * @return {@link HdmiAudioSystemClient} instance. {@code null} on failure.
      *
-     * TODO(b/110094868): unhide for Q
      * @hide
      */
     @Nullable
diff --git a/core/java/android/hardware/hdmi/HdmiUtils.java b/core/java/android/hardware/hdmi/HdmiUtils.java
index 8c94b78..2f4378e 100644
--- a/core/java/android/hardware/hdmi/HdmiUtils.java
+++ b/core/java/android/hardware/hdmi/HdmiUtils.java
@@ -24,7 +24,6 @@
 /**
  * Various utilities related to HDMI CEC.
  *
- * TODO(b/110094868): unhide for Q
  * @hide
  */
 public final class HdmiUtils {
@@ -84,7 +83,6 @@
     }
 
     /**
-     * TODO(b/110094868): unhide for Q
      * @hide
      */
     @Retention(RetentionPolicy.SOURCE)
@@ -95,49 +93,49 @@
     public @interface HdmiAddressRelativePosition {}
     /**
      * HDMI relative position is not determined.
-     * TODO(b/110094868): unhide for Q
+     *
      * @hide
      */
     public static final int HDMI_RELATIVE_POSITION_UNKNOWN = 0;
     /**
      * HDMI relative position: directly blow the device.
-     * TODO(b/110094868): unhide for Q
+     *
      * @hide
      */
     public static final int HDMI_RELATIVE_POSITION_DIRECTLY_BELOW = 1;
     /**
      * HDMI relative position: indirectly below the device.
-     * TODO(b/110094868): unhide for Q
+     *
      * @hide
      */
     public static final int HDMI_RELATIVE_POSITION_BELOW = 2;
     /**
      * HDMI relative position: the same device.
-     * TODO(b/110094868): unhide for Q
+     *
      * @hide
      */
     public static final int HDMI_RELATIVE_POSITION_SAME = 3;
     /**
      * HDMI relative position: directly above the device.
-     * TODO(b/110094868): unhide for Q
+     *
      * @hide
      */
     public static final int HDMI_RELATIVE_POSITION_DIRECTLY_ABOVE = 4;
     /**
      * HDMI relative position: indirectly above the device.
-     * TODO(b/110094868): unhide for Q
+     *
      * @hide
      */
     public static final int HDMI_RELATIVE_POSITION_ABOVE = 5;
     /**
      * HDMI relative position: directly below a same device.
-     * TODO(b/110094868): unhide for Q
+     *
      * @hide
      */
     public static final int HDMI_RELATIVE_POSITION_SIBLING = 6;
     /**
      * HDMI relative position: different branch.
-     * TODO(b/110094868): unhide for Q
+     *
      * @hide
      */
     public static final int HDMI_RELATIVE_POSITION_DIFFERENT_BRANCH = 7;
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 4ee5383..4b8e37c 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -718,7 +718,7 @@
         public final void dispatchStartInputWithToken(@Nullable InputConnection inputConnection,
                 @NonNull EditorInfo editorInfo, boolean restarting,
                 @NonNull IBinder startInputToken) {
-            mPrivOps.reportStartInput(startInputToken);
+            mPrivOps.reportStartInputAsync(startInputToken);
 
             if (restarting) {
                 restartInput(inputConnection, editorInfo);
@@ -819,10 +819,9 @@
             if (dispatchOnShowInputRequested(flags, false)) {
                 showWindow(true);
                 applyVisibilityInInsetsConsumerIfNecessary(true /* setVisible */);
-            } else {
-                // If user uses hard keyboard, IME button should always be shown.
-                setImeWindowStatus(mapToImeWindowStatus(), mBackDisposition);
             }
+            setImeWindowStatus(mapToImeWindowStatus(), mBackDisposition);
+
             final boolean isVisible = isInputViewShown();
             final boolean visibilityChanged = isVisible != wasVisible;
             if (resultReceiver != null) {
diff --git a/core/java/android/net/DnsResolverServiceManager.java b/core/java/android/net/DnsResolverServiceManager.java
deleted file mode 100644
index 1597322..0000000
--- a/core/java/android/net/DnsResolverServiceManager.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.net;
-
-import android.annotation.NonNull;
-import android.annotation.RequiresPermission;
-import android.annotation.SystemApi;
-import android.content.Context;
-import android.os.IBinder;
-import android.os.ServiceManager;
-
-import java.util.Objects;
-
-/**
- * Provides a way to obtain the DnsResolver binder objects.
- *
- * @hide
- */
-@SystemApi
-public class DnsResolverServiceManager {
-    /**
-     * Name to retrieve a {@link android.net.IDnsResolver} IBinder.
-     */
-    private static final String DNS_RESOLVER_SERVICE = "dnsresolver";
-
-    private DnsResolverServiceManager() {}
-
-    /**
-     * Get an {@link IBinder} representing the DnsResolver stable AIDL interface
-     *
-     * @param context the context for permission check.
-     * @return {@link android.net.IDnsResolver} IBinder.
-     */
-    @NonNull
-    @RequiresPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK)
-    public static IBinder getService(@NonNull final Context context) {
-        Objects.requireNonNull(context);
-        context.enforceCallingOrSelfPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
-                "DnsResolverServiceManager");
-        try {
-            return ServiceManager.getServiceOrThrow(DNS_RESOLVER_SERVICE);
-        } catch (ServiceManager.ServiceNotFoundException e) {
-            // Catch ServiceManager#ServiceNotFoundException and rethrow IllegalStateException
-            // because ServiceManager#ServiceNotFoundException is @hide so that it can't be listed
-            // on the system api. Thus, rethrow IllegalStateException if dns resolver service cannot
-            // be found.
-            throw new IllegalStateException("Cannot find dns resolver service.");
-        }
-    }
-}
diff --git a/core/java/android/net/NetworkPolicyManager.java b/core/java/android/net/NetworkPolicyManager.java
index ec83c4e..053856b 100644
--- a/core/java/android/net/NetworkPolicyManager.java
+++ b/core/java/android/net/NetworkPolicyManager.java
@@ -479,7 +479,8 @@
      * @param overrideMask the bitmask that specifies which of the overrides is being
      *            set or cleared.
      * @param overrideValue the override values to set or clear.
-     * @param networkTypes the network types this override applies to.
+     * @param networkTypes the network types this override applies to. If no
+     *            network types are specified, override values will be ignored.
      *            {@see TelephonyManager#getAllNetworkTypes()}
      * @param timeoutMillis the timeout after which the requested override will
      *            be automatically cleared, or {@code 0} to leave in the
diff --git a/core/java/android/net/NetworkWatchlistManager.java b/core/java/android/net/NetworkWatchlistManager.java
index 8f6510e..da01dcb 100644
--- a/core/java/android/net/NetworkWatchlistManager.java
+++ b/core/java/android/net/NetworkWatchlistManager.java
@@ -19,6 +19,7 @@
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
+import android.annotation.TestApi;
 import android.content.Context;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -31,6 +32,7 @@
  * Class that manage network watchlist in system.
  * @hide
  */
+@TestApi
 @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
 @SystemService(Context.NETWORK_WATCHLIST_SERVICE)
 public class NetworkWatchlistManager {
diff --git a/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java b/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java
index 9d3462c..8950c4b 100644
--- a/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java
+++ b/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java
@@ -83,7 +83,7 @@
     /** Serializes an IkeSessionParams to a PersistableBundle. */
     @NonNull
     public static PersistableBundle toPersistableBundle(@NonNull IkeSessionParams params) {
-        if (params.getConfiguredNetwork() != null || params.getIke3gppExtension() != null) {
+        if (params.getNetwork() != null || params.getIke3gppExtension() != null) {
             throw new IllegalStateException(
                     "Cannot convert a IkeSessionParams with a caller configured network or with"
                             + " 3GPP extension enabled");
diff --git a/core/java/android/nfc/INfcAdapter.aidl b/core/java/android/nfc/INfcAdapter.aidl
index d5cc01a..cb9a3e4 100644
--- a/core/java/android/nfc/INfcAdapter.aidl
+++ b/core/java/android/nfc/INfcAdapter.aidl
@@ -24,7 +24,7 @@
 import android.nfc.TechListParcel;
 import android.nfc.IAppCallback;
 import android.nfc.INfcAdapterExtras;
-import android.nfc.INfcControllerAlwaysOnStateCallback;
+import android.nfc.INfcControllerAlwaysOnListener;
 import android.nfc.INfcTag;
 import android.nfc.INfcCardEmulation;
 import android.nfc.INfcFCardEmulation;
@@ -76,6 +76,6 @@
     boolean setControllerAlwaysOn(boolean value);
     boolean isControllerAlwaysOn();
     boolean isControllerAlwaysOnSupported();
-    void registerControllerAlwaysOnStateCallback(in INfcControllerAlwaysOnStateCallback callback);
-    void unregisterControllerAlwaysOnStateCallback(in INfcControllerAlwaysOnStateCallback callback);
+    void registerControllerAlwaysOnListener(in INfcControllerAlwaysOnListener listener);
+    void unregisterControllerAlwaysOnListener(in INfcControllerAlwaysOnListener listener);
 }
diff --git a/core/java/android/nfc/INfcControllerAlwaysOnStateCallback.aidl b/core/java/android/nfc/INfcControllerAlwaysOnListener.aidl
similarity index 87%
rename from core/java/android/nfc/INfcControllerAlwaysOnStateCallback.aidl
rename to core/java/android/nfc/INfcControllerAlwaysOnListener.aidl
index 1e4fdd7..1bb7680 100644
--- a/core/java/android/nfc/INfcControllerAlwaysOnStateCallback.aidl
+++ b/core/java/android/nfc/INfcControllerAlwaysOnListener.aidl
@@ -19,11 +19,11 @@
 /**
  * @hide
  */
-oneway interface INfcControllerAlwaysOnStateCallback {
+oneway interface INfcControllerAlwaysOnListener {
   /**
    * Called whenever the controller always on state changes
    *
    * @param isEnabled true if the state is enabled, false otherwise
    */
-  void onControllerAlwaysOnStateChanged(boolean isEnabled);
+  void onControllerAlwaysOnChanged(boolean isEnabled);
 }
diff --git a/core/java/android/nfc/NfcAdapter.java b/core/java/android/nfc/NfcAdapter.java
index bbf802c..64c1211 100644
--- a/core/java/android/nfc/NfcAdapter.java
+++ b/core/java/android/nfc/NfcAdapter.java
@@ -67,7 +67,7 @@
 public final class NfcAdapter {
     static final String TAG = "NFC";
 
-    private final NfcControllerAlwaysOnStateListener mControllerAlwaysOnStateListener;
+    private final NfcControllerAlwaysOnListener mControllerAlwaysOnListener;
 
     /**
      * Intent to start an activity when a tag with NDEF payload is discovered.
@@ -418,19 +418,19 @@
     }
 
     /**
-     * A callback to be invoked when NFC controller always on state changes.
-     * <p>Register your {@code ControllerAlwaysOnStateCallback} implementation with {@link
-     * NfcAdapter#registerControllerAlwaysOnStateCallback} and disable it with {@link
-     * NfcAdapter#unregisterControllerAlwaysOnStateCallback}.
-     * @see #registerControllerAlwaysOnStateCallback
+     * A listener to be invoked when NFC controller always on state changes.
+     * <p>Register your {@code ControllerAlwaysOnListener} implementation with {@link
+     * NfcAdapter#registerControllerAlwaysOnListener} and disable it with {@link
+     * NfcAdapter#unregisterControllerAlwaysOnListener}.
+     * @see #registerControllerAlwaysOnListener
      * @hide
      */
     @SystemApi
-    public interface ControllerAlwaysOnStateCallback {
+    public interface ControllerAlwaysOnListener {
         /**
          * Called on NFC controller always on state changes
          */
-        void onStateChanged(boolean isEnabled);
+        void onControllerAlwaysOnChanged(boolean isEnabled);
     }
 
     /**
@@ -748,7 +748,7 @@
         mNfcUnlockHandlers = new HashMap<NfcUnlockHandler, INfcUnlockHandler>();
         mTagRemovedListener = null;
         mLock = new Object();
-        mControllerAlwaysOnStateListener = new NfcControllerAlwaysOnStateListener(getService());
+        mControllerAlwaysOnListener = new NfcControllerAlwaysOnListener(getService());
     }
 
     /**
@@ -2246,12 +2246,12 @@
      * <p>This API is for the NFCC internal state management. It allows to discriminate
      * the controller function from the NFC function by keeping the NFC controller on without
      * any NFC RF enabled if necessary.
-     * <p>This call is asynchronous. Register a callback {@link #ControllerAlwaysOnStateCallback}
-     * by {@link #registerControllerAlwaysOnStateCallback} to find out when the operation is
+     * <p>This call is asynchronous. Register a listener {@link #ControllerAlwaysOnListener}
+     * by {@link #registerControllerAlwaysOnListener} to find out when the operation is
      * complete.
      * <p>If this returns true, then either NFCC always on state has been set based on the value,
-     * or a {@link ControllerAlwaysOnStateCallback#onStateChanged(boolean)} will be invoked to
-     * indicate the state change.
+     * or a {@link ControllerAlwaysOnListener#onControllerAlwaysOnChanged(boolean)} will be invoked
+     * to indicate the state change.
      * If this returns false, then there is some problem that prevents an attempt to turn NFCC
      * always on.
      * @param value if true the NFCC will be kept on (with no RF enabled if NFC adapter is
@@ -2344,37 +2344,37 @@
     }
 
     /**
-     * Register a {@link ControllerAlwaysOnStateCallback} to listen for NFC controller always on
+     * Register a {@link ControllerAlwaysOnListener} to listen for NFC controller always on
      * state changes
-     * <p>The provided callback will be invoked by the given {@link Executor}.
+     * <p>The provided listener will be invoked by the given {@link Executor}.
      *
-     * @param executor an {@link Executor} to execute given callback
-     * @param callback user implementation of the {@link ControllerAlwaysOnStateCallback}
+     * @param executor an {@link Executor} to execute given listener
+     * @param listener user implementation of the {@link ControllerAlwaysOnListener}
      * @hide
      */
     @SystemApi
     @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON)
-    public void registerControllerAlwaysOnStateCallback(
+    public void registerControllerAlwaysOnListener(
             @NonNull @CallbackExecutor Executor executor,
-            @NonNull ControllerAlwaysOnStateCallback callback) {
-        mControllerAlwaysOnStateListener.register(executor, callback);
+            @NonNull ControllerAlwaysOnListener listener) {
+        mControllerAlwaysOnListener.register(executor, listener);
     }
 
     /**
-     * Unregister the specified {@link ControllerAlwaysOnStateCallback}
-     * <p>The same {@link ControllerAlwaysOnStateCallback} object used when calling
-     * {@link #registerControllerAlwaysOnStateCallback(Executor, ControllerAlwaysOnStateCallback)}
+     * Unregister the specified {@link ControllerAlwaysOnListener}
+     * <p>The same {@link ControllerAlwaysOnListener} object used when calling
+     * {@link #registerControllerAlwaysOnListener(Executor, ControllerAlwaysOnListener)}
      * must be used.
      *
-     * <p>Callbacks are automatically unregistered when application process goes away
+     * <p>Listeners are automatically unregistered when application process goes away
      *
-     * @param callback user implementation of the {@link ControllerAlwaysOnStateCallback}
+     * @param listener user implementation of the {@link ControllerAlwaysOnListener}
      * @hide
      */
     @SystemApi
     @RequiresPermission(android.Manifest.permission.NFC_SET_CONTROLLER_ALWAYS_ON)
-    public void unregisterControllerAlwaysOnStateCallback(
-            @NonNull ControllerAlwaysOnStateCallback callback) {
-        mControllerAlwaysOnStateListener.unregister(callback);
+    public void unregisterControllerAlwaysOnListener(
+            @NonNull ControllerAlwaysOnListener listener) {
+        mControllerAlwaysOnListener.unregister(listener);
     }
 }
diff --git a/core/java/android/nfc/NfcControllerAlwaysOnListener.java b/core/java/android/nfc/NfcControllerAlwaysOnListener.java
new file mode 100644
index 0000000..96707bb
--- /dev/null
+++ b/core/java/android/nfc/NfcControllerAlwaysOnListener.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright 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 android.nfc;
+
+import android.annotation.NonNull;
+import android.nfc.NfcAdapter.ControllerAlwaysOnListener;
+import android.os.Binder;
+import android.os.RemoteException;
+import android.util.Log;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.Executor;
+
+/**
+ * @hide
+ */
+public class NfcControllerAlwaysOnListener extends INfcControllerAlwaysOnListener.Stub {
+    private static final String TAG = NfcControllerAlwaysOnListener.class.getSimpleName();
+
+    private final INfcAdapter mAdapter;
+
+    private final Map<ControllerAlwaysOnListener, Executor> mListenerMap = new HashMap<>();
+
+    private boolean mCurrentState = false;
+    private boolean mIsRegistered = false;
+
+    public NfcControllerAlwaysOnListener(@NonNull INfcAdapter adapter) {
+        mAdapter = adapter;
+    }
+
+    /**
+     * Register a {@link ControllerAlwaysOnListener} with this
+     * {@link NfcControllerAlwaysOnListener}
+     *
+     * @param executor an {@link Executor} to execute given listener
+     * @param listener user implementation of the {@link ControllerAlwaysOnListener}
+     */
+    public void register(@NonNull Executor executor,
+            @NonNull ControllerAlwaysOnListener listener) {
+        synchronized (this) {
+            if (mListenerMap.containsKey(listener)) {
+                return;
+            }
+
+            mListenerMap.put(listener, executor);
+            if (!mIsRegistered) {
+                try {
+                    mAdapter.registerControllerAlwaysOnListener(this);
+                    mIsRegistered = true;
+                } catch (RemoteException e) {
+                    Log.w(TAG, "Failed to register");
+                }
+            }
+        }
+    }
+
+    /**
+     * Unregister the specified {@link ControllerAlwaysOnListener}
+     *
+     * @param listener user implementation of the {@link ControllerAlwaysOnListener}
+     */
+    public void unregister(@NonNull ControllerAlwaysOnListener listener) {
+        synchronized (this) {
+            if (!mListenerMap.containsKey(listener)) {
+                return;
+            }
+
+            mListenerMap.remove(listener);
+
+            if (mListenerMap.isEmpty() && mIsRegistered) {
+                try {
+                    mAdapter.unregisterControllerAlwaysOnListener(this);
+                } catch (RemoteException e) {
+                    Log.w(TAG, "Failed to unregister");
+                }
+                mIsRegistered = false;
+            }
+        }
+    }
+
+    private void sendCurrentState(@NonNull ControllerAlwaysOnListener listener) {
+        synchronized (this) {
+            Executor executor = mListenerMap.get(listener);
+
+            final long identity = Binder.clearCallingIdentity();
+            try {
+                executor.execute(() -> listener.onControllerAlwaysOnChanged(
+                        mCurrentState));
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
+        }
+    }
+
+    @Override
+    public void onControllerAlwaysOnChanged(boolean isEnabled) {
+        synchronized (this) {
+            mCurrentState = isEnabled;
+            for (ControllerAlwaysOnListener cb : mListenerMap.keySet()) {
+                sendCurrentState(cb);
+            }
+        }
+    }
+}
+
diff --git a/core/java/android/nfc/NfcControllerAlwaysOnStateListener.java b/core/java/android/nfc/NfcControllerAlwaysOnStateListener.java
deleted file mode 100644
index 69a9ec7..0000000
--- a/core/java/android/nfc/NfcControllerAlwaysOnStateListener.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright 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 android.nfc;
-
-import android.annotation.NonNull;
-import android.nfc.NfcAdapter.ControllerAlwaysOnStateCallback;
-import android.os.Binder;
-import android.os.RemoteException;
-import android.util.Log;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.Executor;
-
-/**
- * @hide
- */
-public class NfcControllerAlwaysOnStateListener extends INfcControllerAlwaysOnStateCallback.Stub {
-    private static final String TAG = "NfcControllerAlwaysOnStateListener";
-
-    private final INfcAdapter mAdapter;
-
-    private final Map<ControllerAlwaysOnStateCallback, Executor> mCallbackMap = new HashMap<>();
-
-    private boolean mCurrentState = false;
-    private boolean mIsRegistered = false;
-
-    public NfcControllerAlwaysOnStateListener(@NonNull INfcAdapter adapter) {
-        mAdapter = adapter;
-    }
-
-    /**
-     * Register a {@link ControllerAlwaysOnStateCallback} with this
-     * {@link NfcControllerAlwaysOnStateListener}
-     *
-     * @param executor an {@link Executor} to execute given callback
-     * @param callback user implementation of the {@link ControllerAlwaysOnStateCallback}
-     */
-    public void register(@NonNull Executor executor,
-            @NonNull ControllerAlwaysOnStateCallback callback) {
-        synchronized (this) {
-            if (mCallbackMap.containsKey(callback)) {
-                return;
-            }
-
-            mCallbackMap.put(callback, executor);
-            if (!mIsRegistered) {
-                try {
-                    mAdapter.registerControllerAlwaysOnStateCallback(this);
-                    mIsRegistered = true;
-                } catch (RemoteException e) {
-                    Log.w(TAG, "Failed to register ControllerAlwaysOnStateListener");
-                }
-            }
-        }
-    }
-
-    /**
-     * Unregister the specified {@link ControllerAlwaysOnStateCallback}
-     *
-     * @param callback user implementation of the {@link ControllerAlwaysOnStateCallback}
-     */
-    public void unregister(@NonNull ControllerAlwaysOnStateCallback callback) {
-        synchronized (this) {
-            if (!mCallbackMap.containsKey(callback)) {
-                return;
-            }
-
-            mCallbackMap.remove(callback);
-
-            if (mCallbackMap.isEmpty() && mIsRegistered) {
-                try {
-                    mAdapter.unregisterControllerAlwaysOnStateCallback(this);
-                } catch (RemoteException e) {
-                    Log.w(TAG, "Failed to unregister ControllerAlwaysOnStateListener");
-                }
-                mIsRegistered = false;
-            }
-        }
-    }
-
-    private void sendCurrentState(@NonNull ControllerAlwaysOnStateCallback callback) {
-        synchronized (this) {
-            Executor executor = mCallbackMap.get(callback);
-
-            final long identity = Binder.clearCallingIdentity();
-            try {
-                executor.execute(() -> callback.onStateChanged(
-                        mCurrentState));
-            } finally {
-                Binder.restoreCallingIdentity(identity);
-            }
-        }
-    }
-
-    @Override
-    public void onControllerAlwaysOnStateChanged(boolean isEnabled) {
-        synchronized (this) {
-            mCurrentState = isEnabled;
-            for (ControllerAlwaysOnStateCallback cb : mCallbackMap.keySet()) {
-                sendCurrentState(cb);
-            }
-        }
-    }
-}
-
diff --git a/core/java/android/nfc/TEST_MAPPING b/core/java/android/nfc/TEST_MAPPING
new file mode 100644
index 0000000..71ad687
--- /dev/null
+++ b/core/java/android/nfc/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "NfcManagerTests"
+    }
+  ]
+}
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index c47fc57..043a22b 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -21,6 +21,7 @@
 import static android.os.BatteryStatsManager.NUM_WIFI_SUPPL_STATES;
 
 import android.annotation.IntDef;
+import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.app.job.JobParameters;
@@ -2622,6 +2623,15 @@
      */
     public abstract @Nullable long[] getCustomConsumerMeasuredBatteryConsumptionUC();
 
+    /**
+     * Returns the names of all {@link android.hardware.power.stats.EnergyConsumer}'s
+     * of (custom) energy consumer type
+     * {@link android.hardware.power.stats.EnergyConsumerType#OTHER}).
+     *
+     * {@hide}
+     */
+    public abstract @NonNull String[] getCustomEnergyConsumerNames();
+
     public static final BitDescription[] HISTORY_STATE_DESCRIPTIONS = new BitDescription[] {
         new BitDescription(HistoryItem.STATE_CPU_RUNNING_FLAG, "running", "r"),
         new BitDescription(HistoryItem.STATE_WAKE_LOCK_FLAG, "wake_lock", "w"),
diff --git a/core/java/android/os/BinderProxy.java b/core/java/android/os/BinderProxy.java
index 16d041a..d026e95 100644
--- a/core/java/android/os/BinderProxy.java
+++ b/core/java/android/os/BinderProxy.java
@@ -34,6 +34,9 @@
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
 
 /**
  * Java proxy for a native IBinder object.
@@ -262,27 +265,45 @@
                 Log.e(Binder.TAG, "RemoteException while disabling app freezer");
             }
 
-            for (WeakReference<BinderProxy> weakRef : proxiesToQuery) {
-                BinderProxy bp = weakRef.get();
-                String key;
-                if (bp == null) {
-                    key = "<cleared weak-ref>";
-                } else {
-                    try {
-                        key = bp.getInterfaceDescriptor();
-                        if ((key == null || key.isEmpty()) && !bp.isBinderAlive()) {
-                            key = "<proxy to dead node>";
+            // We run the dump on a separate thread, because there are known cases where
+            // a process overrides getInterfaceDescriptor() and somehow blocks on it, causing
+            // the calling thread (usually AMS) to hit the watchdog.
+            // Do the dumping on a separate thread instead, and give up after a while.
+            ExecutorService executorService = Executors.newSingleThreadExecutor();
+            executorService.submit(() -> {
+                for (WeakReference<BinderProxy> weakRef : proxiesToQuery) {
+                    BinderProxy bp = weakRef.get();
+                    String key;
+                    if (bp == null) {
+                        key = "<cleared weak-ref>";
+                    } else {
+                        try {
+                            key = bp.getInterfaceDescriptor();
+                            if ((key == null || key.isEmpty()) && !bp.isBinderAlive()) {
+                                key = "<proxy to dead node>";
+                            }
+                        } catch (Throwable t) {
+                            key = "<exception during getDescriptor>";
                         }
-                    } catch (Throwable t) {
-                        key = "<exception during getDescriptor>";
+                    }
+                    Integer i = counts.get(key);
+                    if (i == null) {
+                        counts.put(key, 1);
+                    } else {
+                        counts.put(key, i + 1);
                     }
                 }
-                Integer i = counts.get(key);
-                if (i == null) {
-                    counts.put(key, 1);
-                } else {
-                    counts.put(key, i + 1);
+            });
+
+            try {
+                executorService.shutdown();
+                boolean dumpDone = executorService.awaitTermination(20, TimeUnit.SECONDS);
+                if (!dumpDone) {
+                    Log.e(Binder.TAG, "Failed to complete binder proxy dump,"
+                            + " dumping what we have so far.");
                 }
+            } catch (InterruptedException e) {
+                // Ignore
             }
             try {
                 ActivityManager.getService().enableAppFreezer(true);
diff --git a/core/java/android/os/CountDownTimer.java b/core/java/android/os/CountDownTimer.java
index c7bf0fd..51faa85 100644
--- a/core/java/android/os/CountDownTimer.java
+++ b/core/java/android/os/CountDownTimer.java
@@ -22,7 +22,22 @@
  *
  * Example of showing a 30 second countdown in a text field:
  *
- * <pre class="prettyprint">
+ * <div>
+ * <div class="ds-selector-tabs"><section><h3 id="kotlin">Kotlin</h3>
+ * <pre class="prettyprint lang-kotlin">
+ * object : CountDownTimer(30000, 1000) {
+ *
+ *     override fun onTick(millisUntilFinished: Long) {
+ *         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000)
+ *     }
+ *
+ *     override fun onFinish() {
+ *         mTextField.setText("done!")
+ *     }
+ * }.start()
+ * </pre>
+ * </section><section><h3 id="java">Java</h3>
+ * <pre class="prettyprint lang-java">
  * new CountDownTimer(30000, 1000) {
  *
  *     public void onTick(long millisUntilFinished) {
@@ -32,8 +47,8 @@
  *     public void onFinish() {
  *         mTextField.setText("done!");
  *     }
- *  }.start();
- * </pre>
+ * }.start();
+ * </pre></section></div></div>
  *
  * The calls to {@link #onTick(long)} are synchronized to this object so that
  * one call to {@link #onTick(long)} won't ever occur before the previous
diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java
index e3b13f4..b8bb353 100644
--- a/core/java/android/os/Debug.java
+++ b/core/java/android/os/Debug.java
@@ -623,7 +623,7 @@
        *         </tr>
        *         <tr>
        *             <td>summary.total-pss</td>
-       *             <td>Total PPS memory usage in kB.</td>
+       *             <td>Total PSS memory usage in kB.</td>
        *             <td>{@code 1442}</td>
        *             <td>23</td>
        *         </tr>
diff --git a/core/java/android/os/Parcelable.java b/core/java/android/os/Parcelable.java
index 7a624e1..a537c98 100644
--- a/core/java/android/os/Parcelable.java
+++ b/core/java/android/os/Parcelable.java
@@ -27,10 +27,39 @@
  * and restored from a {@link Parcel}.  Classes implementing the Parcelable
  * interface must also have a non-null static field called <code>CREATOR</code>
  * of a type that implements the {@link Parcelable.Creator} interface.
- * 
+ *
  * <p>A typical implementation of Parcelable is:</p>
- * 
- * <pre>
+ *
+ * <div>
+ * <div class="ds-selector-tabs"><section><h3 id="kotlin">Kotlin</h3>
+ * <pre class="prettyprint lang-kotlin">
+ * class MyParcelable private constructor(`in`: Parcel) : Parcelable {
+ *     private val mData: Int = `in`.readInt()
+ *
+ *     override fun describeContents(): Int {
+ *         return 0
+ *     }
+ *
+ *     override fun writeToParcel(out: Parcel, flags: Int) {
+ *         out.writeInt(mData)
+ *     }
+ *
+ *     companion object {
+ *         val CREATOR: Parcelable.Creator&lt;MyParcelable?&gt;
+ *                 = object : Parcelable.Creator&lt;MyParcelable?&gt; {
+ *             override fun createFromParcel(`in`: Parcel): MyParcelable? {
+ *                 return MyParcelable(`in`)
+ *             }
+ *
+ *             override fun newArray(size: Int): Array&lt;MyParcelable?&gt; {
+ *                 return arrayOfNulls(size)
+ *             }
+ *         }
+ *     }
+ * }
+ * </pre>
+ * </section><section><h3 id="java">Java</h3>
+ * <pre class="prettyprint lang-java">
  * public class MyParcelable implements Parcelable {
  *     private int mData;
  *
@@ -52,11 +81,11 @@
  *             return new MyParcelable[size];
  *         }
  *     };
- *     
+ *
  *     private MyParcelable(Parcel in) {
  *         mData = in.readInt();
  *     }
- * }</pre>
+ * }</pre></section></div></div>
  */
 public interface Parcelable {
     /** @hide */
diff --git a/core/java/android/os/incremental/V4Signature.java b/core/java/android/os/incremental/V4Signature.java
index 77d8664..688e3e9 100644
--- a/core/java/android/os/incremental/V4Signature.java
+++ b/core/java/android/os/incremental/V4Signature.java
@@ -41,6 +41,8 @@
     public static final int HASHING_ALGORITHM_SHA256 = 1;
     public static final byte LOG2_BLOCK_SIZE_4096_BYTES = 12;
 
+    public static final int INCFS_MAX_SIGNATURE_SIZE = 8096;  // incrementalfs.h
+
     /**
      * IncFS hashing data.
      */
@@ -191,8 +193,12 @@
 
     private static V4Signature readFrom(InputStream stream) throws IOException {
         final int version = readIntLE(stream);
-        final byte[] hashingInfo = readBytes(stream);
-        final byte[] signingInfo = readBytes(stream);
+        int maxSize = INCFS_MAX_SIGNATURE_SIZE;
+        final byte[] hashingInfo = readBytes(stream, maxSize);
+        if (hashingInfo != null) {
+            maxSize -= hashingInfo.length;
+        }
+        final byte[] signingInfo = readBytes(stream, maxSize);
         return new V4Signature(version, hashingInfo, signingInfo);
     }
 
@@ -231,9 +237,13 @@
         stream.write(buffer);
     }
 
-    private static byte[] readBytes(InputStream stream) throws IOException {
+    private static byte[] readBytes(InputStream stream, int maxSize) throws IOException {
         try {
             final int size = readIntLE(stream);
+            if (size > maxSize) {
+                throw new IOException(
+                        "Signature is too long. Max allowed is " + INCFS_MAX_SIGNATURE_SIZE);
+            }
             final byte[] bytes = new byte[size];
             readFully(stream, bytes);
             return bytes;
diff --git a/core/java/android/os/storage/StorageVolume.java b/core/java/android/os/storage/StorageVolume.java
index 36177c4..2adcbc3 100644
--- a/core/java/android/os/storage/StorageVolume.java
+++ b/core/java/android/os/storage/StorageVolume.java
@@ -20,6 +20,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -551,4 +552,82 @@
         parcel.writeString8(mFsUuid);
         parcel.writeString8(mState);
     }
+
+    /** @hide */
+    // This class is used by the mainline test suite, so we have to keep these APIs around across
+    // releases. Consider making this class public to help external developers to write tests as
+    // well.
+    @TestApi
+    public static final class Builder {
+        private String mId;
+        private File mPath;
+        private String mDescription;
+        private boolean mPrimary;
+        private boolean mRemovable;
+        private boolean mEmulated;
+        private UserHandle mOwner;
+        private UUID mStorageUuid;
+        private String mUuid;
+        private String mState;
+
+        @SuppressLint("StreamFiles")
+        public Builder(
+                @NonNull String id, @NonNull File path, @NonNull String description,
+                @NonNull UserHandle owner, @NonNull String state) {
+            mId = id;
+            mPath = path;
+            mDescription = description;
+            mOwner = owner;
+            mState = state;
+        }
+
+        @NonNull
+        public Builder setStorageUuid(@Nullable UUID storageUuid) {
+            mStorageUuid = storageUuid;
+            return this;
+        }
+
+        @NonNull
+        public Builder setUuid(@Nullable String uuid) {
+            mUuid = uuid;
+            return this;
+        }
+
+        @NonNull
+        public Builder setPrimary(boolean primary) {
+            mPrimary = primary;
+            return this;
+        }
+
+        @NonNull
+        public Builder setRemovable(boolean removable) {
+            mRemovable = removable;
+            return this;
+        }
+
+        @NonNull
+        public Builder setEmulated(boolean emulated) {
+            mEmulated = emulated;
+            return this;
+        }
+
+        @NonNull
+        public StorageVolume build() {
+            return new StorageVolume(
+                    mId,
+                    mPath,
+                    /* internalPath= */ mPath,
+                    mDescription,
+                    mPrimary,
+                    mRemovable,
+                    mEmulated,
+                    /* allowMassStorage= */ false,
+                    /* maxFileSize= */ 0,
+                    mOwner,
+                    mStorageUuid,
+                    mUuid,
+                    mState);
+        }
+    }
+
 }
diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java
index 1a40f06..17c90d6 100644
--- a/core/java/android/permission/PermissionManager.java
+++ b/core/java/android/permission/PermissionManager.java
@@ -886,6 +886,24 @@
     }
 
     /**
+     * @param micMuted whether to consider the microphone muted when retrieving audio ops
+     * @return A list of permission groups currently or recently used by all apps by all users in
+     * the current profile group.
+     *
+     * @hide
+     */
+    @TestApi
+    @NonNull
+    @RequiresPermission(Manifest.permission.GET_APP_OPS_STATS)
+    public List<PermGroupUsage> getIndicatorAppOpUsageData(boolean micMuted) {
+        // Lazily initialize the usage helper
+        if (mUsageHelper == null) {
+            mUsageHelper = new PermissionUsageHelper(mContext);
+        }
+        return mUsageHelper.getOpUsageData(micMuted);
+    }
+
+    /**
      * Determine if a package should be shown in indicators. Only a select few roles, and the
      * system app itself, are hidden. These values are updated at most every 15 seconds.
      * @hide
diff --git a/core/java/android/service/dataloader/DataLoaderService.java b/core/java/android/service/dataloader/DataLoaderService.java
index 63ec252..7e8acde 100644
--- a/core/java/android/service/dataloader/DataLoaderService.java
+++ b/core/java/android/service/dataloader/DataLoaderService.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
+import android.annotation.SystemApi;
 import android.app.Service;
 import android.content.Intent;
 import android.content.pm.DataLoaderParams;
@@ -48,14 +49,19 @@
  *
  * @see android.content.pm.DataLoaderParams
  * @see android.content.pm.PackageInstaller.SessionParams#setDataLoaderParams
+ *
+ * @hide
  */
+@SystemApi
 public abstract class DataLoaderService extends Service {
     private static final String TAG = "DataLoaderService";
     private final DataLoaderBinderService mBinder = new DataLoaderBinderService();
 
     /**
      * DataLoader interface. Each instance corresponds to a single installation session.
+     * @hide
      */
+    @SystemApi
     public interface DataLoader {
         /**
          * A virtual constructor.
@@ -112,7 +118,9 @@
     /**
      * DataLoader factory method.
      * An installation session uses it to create an instance of DataLoader.
+     * @hide
      */
+    @SystemApi
     public @Nullable DataLoader onCreateDataLoader(@NonNull DataLoaderParams dataLoaderParams) {
         return null;
     }
@@ -178,7 +186,10 @@
 
     /**
      * Provides access to the installation image.
+     *
+     * @hide
      */
+    @SystemApi
     public static final class FileSystemConnector {
         /**
          * Create a wrapper for a native instance.
diff --git a/core/java/android/service/displayhash/DisplayHashParams.java b/core/java/android/service/displayhash/DisplayHashParams.java
index fcce91a..2ec9d5d 100644
--- a/core/java/android/service/displayhash/DisplayHashParams.java
+++ b/core/java/android/service/displayhash/DisplayHashParams.java
@@ -28,7 +28,7 @@
 import com.android.internal.util.DataClass;
 
 /**
- * Information passed from the {@link DisplayHasherService} to system server about how to get the
+ * Information passed from the {@link DisplayHashingService} to system server about how to get the
  * display data that will be used to generate the {@link android.view.displayhash.DisplayHash}
  *
  * @hide
@@ -38,9 +38,9 @@
 public final class DisplayHashParams implements Parcelable {
     /**
      * The size to scale the buffer to so the hash algorithm can properly generate the hash. The
-     * buffer given to the {@link DisplayHasherService#onGenerateDisplayHash(byte[], HardwareBuffer,
-     * Rect, String, DisplayHashResultCallback)} will be stretched based on the value set here.
-     * If {@code null}, the buffer size will not be changed.
+     * buffer given to the {@link DisplayHashingService#onGenerateDisplayHash(byte[],
+     * HardwareBuffer, Rect, String, DisplayHashResultCallback)} will be stretched based on the
+     * value set here. If {@code null}, the buffer size will not be changed.
      */
     @Nullable
     private final Size mBufferSize;
@@ -48,7 +48,7 @@
     /**
      * Whether the content will be captured in grayscale or color.
      */
-    private final boolean mGrayscaleBuffer;
+    private final boolean mUseGrayscale;
 
     /**
      * A builder for {@link DisplayHashParams}
@@ -56,7 +56,7 @@
     public static final class Builder {
         @Nullable
         private Size mBufferSize;
-        private boolean mGrayscaleBuffer;
+        private boolean mUseGrayscale;
 
         /**
          * Creates a new Builder.
@@ -68,8 +68,8 @@
          * The size to scale the buffer to so the hash algorithm can properly generate the hash.
          */
         @NonNull
-        public Builder setBufferSize(int w, int h) {
-            mBufferSize = new Size(w, h);
+        public Builder setBufferSize(int width, int height) {
+            mBufferSize = new Size(width, height);
             return this;
         }
 
@@ -77,15 +77,15 @@
          * Whether the content will be captured in grayscale or color.
          */
         @NonNull
-        public Builder setGrayscaleBuffer(boolean value) {
-            mGrayscaleBuffer = value;
+        public Builder setUseGrayscale(boolean useGrayscale) {
+            mUseGrayscale = useGrayscale;
             return this;
         }
 
         /** Builds the instance. This builder should not be touched after calling this! */
         @NonNull
         public DisplayHashParams build() {
-            return new DisplayHashParams(mBufferSize, mGrayscaleBuffer);
+            return new DisplayHashParams(mBufferSize, mUseGrayscale);
         }
     }
 
@@ -109,28 +109,28 @@
      *
      * @param bufferSize
      *   The size to scale the buffer to so the hash algorithm can properly generate the hash. The
-     *   buffer given to the {@link DisplayHasherService#onGenerateDisplayHash(byte[], HardwareBuffer,
-     *   Rect, String, DisplayHashResultCallback)} will be stretched based on the value set here.
-     *   If {@code null}, the buffer size will not be changed.
-     * @param grayscaleBuffer
+     *   buffer given to the {@link DisplayHashingService#onGenerateDisplayHash(byte[],
+     *   HardwareBuffer, Rect, String, DisplayHashResultCallback)} will be stretched based on the
+     *   value set here. If {@code null}, the buffer size will not be changed.
+     * @param useGrayscale
      *   Whether the content will be captured in grayscale or color.
      * @hide
      */
     @DataClass.Generated.Member
     public DisplayHashParams(
             @Nullable Size bufferSize,
-            boolean grayscaleBuffer) {
+            boolean useGrayscale) {
         this.mBufferSize = bufferSize;
-        this.mGrayscaleBuffer = grayscaleBuffer;
+        this.mUseGrayscale = useGrayscale;
 
         // onConstructed(); // You can define this method to get a callback
     }
 
     /**
      * The size to scale the buffer to so the hash algorithm can properly generate the hash. The
-     * buffer given to the {@link DisplayHasherService#onGenerateDisplayHash(byte[], HardwareBuffer,
-     * Rect, String, DisplayHashResultCallback)} will be stretched based on the value set here.
-     * If {@code null}, the buffer size will not be changed.
+     * buffer given to the {@link DisplayHashingService#onGenerateDisplayHash(byte[],
+     * HardwareBuffer, Rect, String, DisplayHashResultCallback)} will be stretched based on the
+     * value set here. If {@code null}, the buffer size will not be changed.
      */
     @DataClass.Generated.Member
     public @Nullable Size getBufferSize() {
@@ -141,8 +141,8 @@
      * Whether the content will be captured in grayscale or color.
      */
     @DataClass.Generated.Member
-    public boolean isGrayscaleBuffer() {
-        return mGrayscaleBuffer;
+    public boolean isUseGrayscale() {
+        return mUseGrayscale;
     }
 
     @Override
@@ -153,7 +153,7 @@
 
         return "DisplayHashParams { " +
                 "bufferSize = " + mBufferSize + ", " +
-                "grayscaleBuffer = " + mGrayscaleBuffer +
+                "useGrayscale = " + mUseGrayscale +
         " }";
     }
 
@@ -164,7 +164,7 @@
         // void parcelFieldName(Parcel dest, int flags) { ... }
 
         byte flg = 0;
-        if (mGrayscaleBuffer) flg |= 0x2;
+        if (mUseGrayscale) flg |= 0x2;
         if (mBufferSize != null) flg |= 0x1;
         dest.writeByte(flg);
         if (mBufferSize != null) dest.writeSize(mBufferSize);
@@ -182,11 +182,11 @@
         // static FieldType unparcelFieldName(Parcel in) { ... }
 
         byte flg = in.readByte();
-        boolean grayscaleBuffer = (flg & 0x2) != 0;
+        boolean useGrayscale = (flg & 0x2) != 0;
         Size bufferSize = (flg & 0x1) == 0 ? null : (Size) in.readSize();
 
         this.mBufferSize = bufferSize;
-        this.mGrayscaleBuffer = grayscaleBuffer;
+        this.mUseGrayscale = useGrayscale;
 
         // onConstructed(); // You can define this method to get a callback
     }
@@ -206,10 +206,10 @@
     };
 
     @DataClass.Generated(
-            time = 1617735166254L,
+            time = 1618436855096L,
             codegenVersion = "1.0.23",
             sourceFile = "frameworks/base/core/java/android/service/displayhash/DisplayHashParams.java",
-            inputSignatures = "private final @android.annotation.Nullable android.util.Size mBufferSize\nprivate final  boolean mGrayscaleBuffer\nclass DisplayHashParams extends java.lang.Object implements [android.os.Parcelable]\nprivate @android.annotation.Nullable android.util.Size mBufferSize\nprivate  boolean mGrayscaleBuffer\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams.Builder setBufferSize(int,int)\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams.Builder setGrayscaleBuffer(boolean)\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams build()\nclass Builder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genAidl=true, genToString=true, genParcelable=true, genHiddenConstructor=true)")
+            inputSignatures = "private final @android.annotation.Nullable android.util.Size mBufferSize\nprivate final  boolean mUseGrayscale\nclass DisplayHashParams extends java.lang.Object implements [android.os.Parcelable]\nprivate @android.annotation.Nullable android.util.Size mBufferSize\nprivate  boolean mUseGrayscale\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams.Builder setBufferSize(int,int)\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams.Builder setUseGrayscale(boolean)\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams build()\nclass Builder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genAidl=true, genToString=true, genParcelable=true, genHiddenConstructor=true)")
     @Deprecated
     private void __metadata() {}
 
diff --git a/core/java/android/service/displayhash/DisplayHasherService.java b/core/java/android/service/displayhash/DisplayHashingService.java
similarity index 84%
rename from core/java/android/service/displayhash/DisplayHasherService.java
rename to core/java/android/service/displayhash/DisplayHashingService.java
index d300cf1..e8bb485 100644
--- a/core/java/android/service/displayhash/DisplayHasherService.java
+++ b/core/java/android/service/displayhash/DisplayHashingService.java
@@ -45,21 +45,21 @@
  * @hide
  */
 @SystemApi
-public abstract class DisplayHasherService extends Service {
+public abstract class DisplayHashingService extends Service {
 
     /** @hide **/
     public static final String EXTRA_VERIFIED_DISPLAY_HASH =
             "android.service.displayhash.extra.VERIFIED_DISPLAY_HASH";
 
     /**
-     * Name under which a DisplayHasherService component publishes information
+     * Name under which a DisplayHashingService component publishes information
      * about itself.  This meta-data must reference an XML resource containing a
-     * {@link com.android.internal.R.styleable#DisplayHasherService} tag.
+     * {@link com.android.internal.R.styleable#DisplayHashingService} tag.
      *
      * @hide
      */
     @SystemApi
-    public static final String SERVICE_META_DATA = "android.displayhash.display_hasher_service";
+    public static final String SERVICE_META_DATA = "android.displayhash.display_hashing_service";
 
     /**
      * The {@link Intent} action that must be declared as handled by a service in its manifest
@@ -69,18 +69,18 @@
      */
     @SystemApi
     public static final String SERVICE_INTERFACE =
-            "android.service.displayhash.DisplayHasherService";
+            "android.service.displayhash.DisplayHashingService";
 
-    private DisplayHasherServiceWrapper mWrapper;
+    private DisplayHashingServiceWrapper mWrapper;
     private Handler mHandler;
 
-    public DisplayHasherService() {
+    public DisplayHashingService() {
     }
 
     @Override
     public void onCreate() {
         super.onCreate();
-        mWrapper = new DisplayHasherServiceWrapper();
+        mWrapper = new DisplayHashingServiceWrapper();
         mHandler = new Handler(Looper.getMainLooper(), null, true);
     }
 
@@ -105,7 +105,6 @@
      *                      if successfully generated a DisplayHash or {@link
      *                      DisplayHashResultCallback#onDisplayHashError(int)} if failed.
      */
-    @Nullable
     public abstract void onGenerateDisplayHash(@NonNull byte[] salt,
             @NonNull HardwareBuffer buffer, @NonNull Rect bounds,
             @NonNull String hashAlgorithm, @NonNull DisplayHashResultCallback callback);
@@ -125,8 +124,8 @@
      *                    HardwareBuffer, Rect, String, DisplayHashResultCallback)} to
      *                    generate the token.
      * @param displayHash The token to verify that it was generated by the system.
-     * @return a {@link VerifiedDisplayHash} if the token was generated by the system or null
-     * if the token cannot be verified.
+     * @return a {@link VerifiedDisplayHash} if the provided display hash was originally generated
+     * by the system or null if the system did not generate the display hash.
      */
     @Nullable
     public abstract VerifiedDisplayHash onVerifyDisplayHash(@NonNull byte[] salt,
@@ -150,13 +149,13 @@
         callback.sendResult(data);
     }
 
-    private final class DisplayHasherServiceWrapper extends IDisplayHasherService.Stub {
+    private final class DisplayHashingServiceWrapper extends IDisplayHashingService.Stub {
         @Override
         public void generateDisplayHash(byte[] salt, HardwareBuffer buffer, Rect bounds,
                 String hashAlgorithm, RemoteCallback callback) {
             mHandler.sendMessage(
-                    obtainMessage(DisplayHasherService::onGenerateDisplayHash,
-                            DisplayHasherService.this, salt, buffer, bounds,
+                    obtainMessage(DisplayHashingService::onGenerateDisplayHash,
+                            DisplayHashingService.this, salt, buffer, bounds,
                             hashAlgorithm, new DisplayHashResultCallback() {
                                 @Override
                                 public void onDisplayHashResult(
@@ -179,14 +178,14 @@
         public void verifyDisplayHash(byte[] salt, DisplayHash displayHash,
                 RemoteCallback callback) {
             mHandler.sendMessage(
-                    obtainMessage(DisplayHasherService::verifyDisplayHash,
-                            DisplayHasherService.this, salt, displayHash, callback));
+                    obtainMessage(DisplayHashingService::verifyDisplayHash,
+                            DisplayHashingService.this, salt, displayHash, callback));
         }
 
         @Override
         public void getDisplayHashAlgorithms(RemoteCallback callback) {
-            mHandler.sendMessage(obtainMessage(DisplayHasherService::getDisplayHashAlgorithms,
-                    DisplayHasherService.this, callback));
+            mHandler.sendMessage(obtainMessage(DisplayHashingService::getDisplayHashAlgorithms,
+                    DisplayHashingService.this, callback));
         }
     }
 }
diff --git a/core/java/android/service/displayhash/IDisplayHasherService.aidl b/core/java/android/service/displayhash/IDisplayHashingService.aidl
similarity index 98%
rename from core/java/android/service/displayhash/IDisplayHasherService.aidl
rename to core/java/android/service/displayhash/IDisplayHashingService.aidl
index d9dcdca..56e1e0a 100644
--- a/core/java/android/service/displayhash/IDisplayHasherService.aidl
+++ b/core/java/android/service/displayhash/IDisplayHashingService.aidl
@@ -26,7 +26,7 @@
  *
  * @hide
  */
-oneway interface IDisplayHasherService {
+oneway interface IDisplayHashingService {
     /**
      * Generates the DisplayHash that can be used to validate that the system generated the token.
      *
diff --git a/core/java/android/service/rotationresolver/RotationResolutionRequest.java b/core/java/android/service/rotationresolver/RotationResolutionRequest.java
index 8c7db40..9b9244bd 100644
--- a/core/java/android/service/rotationresolver/RotationResolutionRequest.java
+++ b/core/java/android/service/rotationresolver/RotationResolutionRequest.java
@@ -42,7 +42,7 @@
 )
 public final class RotationResolutionRequest implements Parcelable {
     /** The Name of the package of the current fore-ground activity. */
-    @NonNull private final String mPackageName;
+    @NonNull private final String mForegroundPackageName;
 
     /** The current rotation of the screen. */
     @Surface.Rotation private final int mCurrentRotation;
@@ -75,7 +75,7 @@
     /**
      * Creates a new RotationResolutionRequest.
      *
-     * @param packageName
+     * @param foregroundPackageName
      *   The Name of the package of the current fore-ground activity.
      * @param currentRotation
      *   The current rotation of the screen.
@@ -88,14 +88,14 @@
      */
     @DataClass.Generated.Member
     public RotationResolutionRequest(
-            @NonNull String packageName,
+            @NonNull String foregroundPackageName,
             @Surface.Rotation int currentRotation,
             @Surface.Rotation int proposedRotation,
             boolean shouldUseCamera,
             @DurationMillisLong long timeoutMillis) {
-        this.mPackageName = packageName;
+        this.mForegroundPackageName = foregroundPackageName;
         com.android.internal.util.AnnotationValidations.validate(
-                NonNull.class, null, mPackageName);
+                NonNull.class, null, mForegroundPackageName);
         this.mCurrentRotation = currentRotation;
         com.android.internal.util.AnnotationValidations.validate(
                 Surface.Rotation.class, null, mCurrentRotation);
@@ -114,8 +114,8 @@
      * The Name of the package of the current fore-ground activity.
      */
     @DataClass.Generated.Member
-    public @NonNull String getPackageName() {
-        return mPackageName;
+    public @NonNull String getForegroundPackageName() {
+        return mForegroundPackageName;
     }
 
     /**
@@ -157,7 +157,7 @@
         // String fieldNameToString() { ... }
 
         return "RotationResolutionRequest { " +
-                "packageName = " + mPackageName + ", " +
+                "foregroundPackageName = " + mForegroundPackageName + ", " +
                 "currentRotation = " + mCurrentRotation + ", " +
                 "proposedRotation = " + mProposedRotation + ", " +
                 "shouldUseCamera = " + mShouldUseCamera + ", " +
@@ -174,7 +174,7 @@
         byte flg = 0;
         if (mShouldUseCamera) flg |= 0x8;
         dest.writeByte(flg);
-        dest.writeString(mPackageName);
+        dest.writeString(mForegroundPackageName);
         dest.writeInt(mCurrentRotation);
         dest.writeInt(mProposedRotation);
         dest.writeLong(mTimeoutMillis);
@@ -193,14 +193,14 @@
 
         byte flg = in.readByte();
         boolean shouldUseCamera = (flg & 0x8) != 0;
-        String packageName = in.readString();
+        String foregroundPackageName = in.readString();
         int currentRotation = in.readInt();
         int proposedRotation = in.readInt();
         long timeoutMillis = in.readLong();
 
-        this.mPackageName = packageName;
+        this.mForegroundPackageName = foregroundPackageName;
         com.android.internal.util.AnnotationValidations.validate(
-                NonNull.class, null, mPackageName);
+                NonNull.class, null, mForegroundPackageName);
         this.mCurrentRotation = currentRotation;
         com.android.internal.util.AnnotationValidations.validate(
                 Surface.Rotation.class, null, mCurrentRotation);
@@ -230,10 +230,10 @@
     };
 
     @DataClass.Generated(
-            time = 1617213094231L,
+            time = 1618447759819L,
             codegenVersion = "1.0.23",
             sourceFile = "frameworks/base/core/java/android/service/rotationresolver/RotationResolutionRequest.java",
-            inputSignatures = "private final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.view.Surface.Rotation int mCurrentRotation\nprivate final @android.view.Surface.Rotation int mProposedRotation\nprivate final  boolean mShouldUseCamera\nprivate final @android.annotation.DurationMillisLong long mTimeoutMillis\nclass RotationResolutionRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genToString=true)")
+            inputSignatures = "private final @android.annotation.NonNull java.lang.String mForegroundPackageName\nprivate final @android.view.Surface.Rotation int mCurrentRotation\nprivate final @android.view.Surface.Rotation int mProposedRotation\nprivate final  boolean mShouldUseCamera\nprivate final @android.annotation.DurationMillisLong long mTimeoutMillis\nclass RotationResolutionRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genToString=true)")
     @Deprecated
     private void __metadata() {}
 
diff --git a/core/java/android/service/textservice/SpellCheckerService.java b/core/java/android/service/textservice/SpellCheckerService.java
index e492584..45f9743 100644
--- a/core/java/android/service/textservice/SpellCheckerService.java
+++ b/core/java/android/service/textservice/SpellCheckerService.java
@@ -421,7 +421,8 @@
             final ArrayList<SentenceWordItem> wordItems = new ArrayList<SentenceWordItem>();
             wordIterator.setCharSequence(originalText, 0, originalText.length());
             int wordEnd = wordIterator.following(start);
-            int wordStart = wordIterator.getBeginning(wordEnd);
+            int wordStart = wordEnd == BreakIterator.DONE ? BreakIterator.DONE
+                    : wordIterator.getBeginning(wordEnd);
             if (DBG) {
                 Log.d(TAG, "iterator: break: ---- 1st word start = " + wordStart + ", end = "
                         + wordEnd + "\n" + originalText);
diff --git a/core/java/android/service/translation/TranslationService.java b/core/java/android/service/translation/TranslationService.java
index 7edf2e2..fe86c0b 100644
--- a/core/java/android/service/translation/TranslationService.java
+++ b/core/java/android/service/translation/TranslationService.java
@@ -16,6 +16,8 @@
 
 package android.service.translation;
 
+import static android.view.translation.TranslationManager.STATUS_SYNC_CALL_FAIL;
+import static android.view.translation.TranslationManager.STATUS_SYNC_CALL_SUCCESS;
 import static android.view.translation.Translator.EXTRA_SERVICE_BINDER;
 import static android.view.translation.Translator.EXTRA_SESSION_ID;
 
@@ -32,6 +34,7 @@
 import android.os.CancellationSignal;
 import android.os.Handler;
 import android.os.IBinder;
+import android.os.ICancellationSignal;
 import android.os.Looper;
 import android.os.RemoteException;
 import android.os.ResultReceiver;
@@ -149,18 +152,15 @@
      */
     private final ITranslationDirectManager mClientInterface =
             new ITranslationDirectManager.Stub() {
-                // TODO: Implement cancellation signal
-                @NonNull
-                private final CancellationSignal mCancellationSignal = new CancellationSignal();
-
                 @Override
                 public void onTranslationRequest(TranslationRequest request, int sessionId,
-                        ITranslationCallback callback)
+                        ICancellationSignal transport, ITranslationCallback callback)
                         throws RemoteException {
                     final OnTranslationResultCallback translationResultCallback =
                             new OnTranslationResultCallbackWrapper(callback);
                     mHandler.sendMessage(obtainMessage(TranslationService::onTranslationRequest,
-                            TranslationService.this, request, sessionId, mCancellationSignal,
+                            TranslationService.this, request, sessionId,
+                            CancellationSignal.fromTransport(transport),
                             translationResultCallback));
                 }
 
@@ -209,13 +209,33 @@
     }
 
     /**
-     * TODO: fill in javadoc.
+     * Called to notify the service that a session was created
+     * (see {@link android.view.translation.Translator}).
      *
-     * @param translationContext
-     * @param sessionId
+     * <p>The service must call {@code callback.accept()} to acknowledge whether the session is
+     * supported and created successfully. If the translation context is not supported, the service
+     * should call back with {@code false}.</p>
+     *
+     * @param translationContext the {@link TranslationContext} of the session being created.
+     * @param sessionId the int id of the session.
+     * @param callback {@link Consumer} to notify whether the session was successfully created.
      */
     // TODO(b/176464808): the session id won't be unique cross client/server process. Need to find
     // solution to make it's safe.
+    // TODO: make abstract once aiai is implemented.
+    public void onCreateTranslationSession(@NonNull TranslationContext translationContext,
+            int sessionId, @NonNull Consumer<Boolean> callback) {
+        onCreateTranslationSession(translationContext, sessionId);
+        callback.accept(true);
+    }
+
+    /**
+     * TODO: fill in javadoc.
+     *
+     * @deprecated use {@link #onCreateTranslationSession(TranslationContext, int, Consumer)}
+     * instead.
+     */
+    @Deprecated
     public abstract void onCreateTranslationSession(@NonNull TranslationContext translationContext,
             int sessionId);
 
@@ -235,7 +255,7 @@
      * @param cancellationSignal
      */
     public abstract void onTranslationRequest(@NonNull TranslationRequest request, int sessionId,
-            @NonNull CancellationSignal cancellationSignal,
+            @Nullable CancellationSignal cancellationSignal,
             @NonNull OnTranslationResultCallback callback);
 
     /**
@@ -255,19 +275,30 @@
 
     // TODO(b/176464808): Need to handle client dying case
 
-    // TODO(b/176464808): Need to handle the failure case. e.g. if the context is not supported.
-
     private void handleOnCreateTranslationSession(@NonNull TranslationContext translationContext,
             int sessionId, IResultReceiver resultReceiver) {
-        try {
-            final Bundle extras = new Bundle();
-            extras.putBinder(EXTRA_SERVICE_BINDER, mClientInterface.asBinder());
-            extras.putInt(EXTRA_SESSION_ID, sessionId);
-            resultReceiver.send(0, extras);
-        } catch (RemoteException e) {
-            Log.w(TAG, "RemoteException sending client interface: " + e);
-        }
-        onCreateTranslationSession(translationContext, sessionId);
+        onCreateTranslationSession(translationContext, sessionId,
+                new Consumer<Boolean>() {
+                    @Override
+                    public void accept(Boolean created) {
+                        try {
+                            if (!created) {
+                                Log.w(TAG, "handleOnCreateTranslationSession(): context="
+                                        + translationContext + " not supported by service.");
+                                resultReceiver.send(STATUS_SYNC_CALL_FAIL, null);
+                                return;
+                            }
+
+                            final Bundle extras = new Bundle();
+                            extras.putBinder(EXTRA_SERVICE_BINDER, mClientInterface.asBinder());
+                            extras.putInt(EXTRA_SESSION_ID, sessionId);
+                            resultReceiver.send(STATUS_SYNC_CALL_SUCCESS, extras);
+                        } catch (RemoteException e) {
+                            Log.w(TAG, "RemoteException sending client interface: " + e);
+                        }
+                    }
+                });
+
     }
 
     private void handleOnTranslationCapabilitiesRequest(
@@ -282,9 +313,8 @@
                         final Bundle bundle = new Bundle();
                         bundle.putParcelableArray(TranslationManager.EXTRA_CAPABILITIES,
                                 capabilities.toArray(new TranslationCapability[0]));
-                        resultReceiver.send(TranslationManager.STATUS_SYNC_CALL_SUCCESS, bundle);
+                        resultReceiver.send(STATUS_SYNC_CALL_SUCCESS, bundle);
                     }
                 });
-
     }
 }
diff --git a/core/java/android/service/voice/AlwaysOnHotwordDetector.java b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
index 8ca0e7c..0b410a2 100644
--- a/core/java/android/service/voice/AlwaysOnHotwordDetector.java
+++ b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
@@ -24,6 +24,7 @@
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
+import android.annotation.TestApi;
 import android.app.ActivityThread;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
@@ -49,6 +50,7 @@
 import android.os.RemoteException;
 import android.os.SharedMemory;
 import android.service.voice.HotwordDetectionService.InitializationStatus;
+import android.util.Log;
 import android.util.Slog;
 
 import com.android.internal.app.IHotwordRecognitionStatusCallback;
@@ -628,6 +630,34 @@
     }
 
     /**
+     * Test API to simulate to trigger hardware recognition event for test.
+     *
+     * @hide
+     */
+    @TestApi
+    @RequiresPermission(allOf = {RECORD_AUDIO, CAPTURE_AUDIO_HOTWORD})
+    public void triggerHardwareRecognitionEventForTest(int status, int soundModelHandle,
+            boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs,
+            boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data) {
+        Log.d(TAG, "triggerHardwareRecognitionEventForTest()");
+        synchronized (mLock) {
+            if (mAvailability == STATE_INVALID || mAvailability == STATE_ERROR) {
+                throw new IllegalStateException("triggerHardwareRecognitionEventForTest called on"
+                        + " an invalid detector or error state");
+            }
+            try {
+                mModelManagementService.triggerHardwareRecognitionEventForTest(
+                        new KeyphraseRecognitionEvent(status, soundModelHandle, captureAvailable,
+                                captureSession, captureDelayMs, capturePreambleMs, triggerInData,
+                                captureFormat, data, null /* keyphraseExtras */),
+                        mInternalCallback);
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
+        }
+    }
+
+    /**
      * Gets the recognition modes supported by the associated keyphrase.
      *
      * @see #RECOGNITION_MODE_USER_IDENTIFICATION
diff --git a/core/java/android/service/voice/HotwordDetectionService.java b/core/java/android/service/voice/HotwordDetectionService.java
index 23b2103..ea854e8 100644
--- a/core/java/android/service/voice/HotwordDetectionService.java
+++ b/core/java/android/service/voice/HotwordDetectionService.java
@@ -24,8 +24,11 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SdkConstant;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.app.Service;
+import android.content.ContentCaptureOptions;
+import android.content.Context;
 import android.content.Intent;
 import android.media.AudioFormat;
 import android.os.Bundle;
@@ -38,6 +41,8 @@
 import android.os.RemoteException;
 import android.os.SharedMemory;
 import android.util.Log;
+import android.view.contentcapture.ContentCaptureManager;
+import android.view.contentcapture.IContentCaptureManager;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.Retention;
@@ -122,6 +127,9 @@
 
     private Handler mHandler;
 
+    @Nullable
+    private ContentCaptureManager mContentCaptureManager;
+
     private final IHotwordDetectionService mInterface = new IHotwordDetectionService.Stub() {
         @Override
         public void detectFromDspSource(
@@ -187,6 +195,13 @@
                     Log.i(TAG, "Unsupported audio source " + audioSource);
             }
         }
+
+        @Override
+        public void updateContentCaptureManager(IContentCaptureManager manager,
+                ContentCaptureOptions options) {
+            mContentCaptureManager = new ContentCaptureManager(
+                    HotwordDetectionService.this, manager, options);
+        }
     };
 
     @CallSuper
@@ -207,6 +222,16 @@
         return null;
     }
 
+    @Override
+    @SuppressLint("OnNameExpected")
+    public @Nullable Object getSystemService(@ServiceName @NonNull String name) {
+        if (Context.CONTENT_CAPTURE_MANAGER_SERVICE.equals(name)) {
+            return mContentCaptureManager;
+        } else {
+            return super.getSystemService(name);
+        }
+    }
+
     /**
      * Called when the device hardware (such as a DSP) detected the hotword, to request second stage
      * validation before handing over the audio to the {@link AlwaysOnHotwordDetector}.
diff --git a/core/java/android/service/voice/IHotwordDetectionService.aidl b/core/java/android/service/voice/IHotwordDetectionService.aidl
index d242160..2ffe787 100644
--- a/core/java/android/service/voice/IHotwordDetectionService.aidl
+++ b/core/java/android/service/voice/IHotwordDetectionService.aidl
@@ -22,6 +22,8 @@
 import android.os.PersistableBundle;
 import android.os.SharedMemory;
 import android.service.voice.IDspHotwordDetectionCallback;
+import android.view.contentcapture.IContentCaptureManager;
+import android.content.ContentCaptureOptions;
 
 /**
  * Provide the interface to communicate with hotword detection service.
@@ -42,6 +44,12 @@
         in PersistableBundle options,
         in IDspHotwordDetectionCallback callback);
 
-    void updateState(in PersistableBundle options, in SharedMemory sharedMemory,
-            in IRemoteCallback callback);
+    void updateState(
+        in PersistableBundle options,
+        in SharedMemory sharedMemory,
+        in IRemoteCallback callback);
+
+    void updateContentCaptureManager(
+        in IContentCaptureManager contentCaptureManager,
+        in ContentCaptureOptions options);
 }
diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java
index d89c29a..87fb611 100644
--- a/core/java/android/service/wallpaper/WallpaperService.java
+++ b/core/java/android/service/wallpaper/WallpaperService.java
@@ -37,6 +37,7 @@
 import android.content.Intent;
 import android.content.res.Configuration;
 import android.content.res.TypedArray;
+import android.graphics.BLASTBufferQueue;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Matrix;
@@ -208,8 +209,8 @@
         int mCurHeight;
         float mZoom = 0f;
         int mWindowFlags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
-        int mWindowPrivateFlags =
-                WindowManager.LayoutParams.PRIVATE_FLAG_WANTS_OFFSET_NOTIFICATIONS;
+        int mWindowPrivateFlags = WindowManager.LayoutParams.PRIVATE_FLAG_WANTS_OFFSET_NOTIFICATIONS
+                | WindowManager.LayoutParams.PRIVATE_FLAG_USE_BLAST;
         int mCurWindowFlags = mWindowFlags;
         int mCurWindowPrivateFlags = mWindowPrivateFlags;
         Rect mPreviewSurfacePosition;
@@ -253,6 +254,7 @@
         private int mDisplayState;
 
         SurfaceControl mSurfaceControl = new SurfaceControl();
+        BLASTBufferQueue mBlastBufferQueue;
 
         final BaseSurfaceHolder mSurfaceHolder = new BaseSurfaceHolder() {
             {
@@ -974,7 +976,14 @@
                             View.VISIBLE, 0, -1, mWinFrames, mMergedConfiguration, mSurfaceControl,
                             mInsetsState, mTempControls, mSurfaceSize);
                     if (mSurfaceControl.isValid()) {
-                        mSurfaceHolder.mSurface.copyFrom(mSurfaceControl);
+                        Surface blastSurface = getOrCreateBLASTSurface(mSurfaceSize.x,
+                                mSurfaceSize.y, mFormat);
+                        // If blastSurface == null that means it hasn't changed since the last
+                        // time we called. In this situation, avoid calling transferFrom as we
+                        // would then inc the generation ID and cause EGL resources to be recreated.
+                        if (blastSurface != null) {
+                            mSurfaceHolder.mSurface.transferFrom(blastSurface);
+                        }
                     }
                     if (!mLastSurfaceSize.equals(mSurfaceSize)) {
                         mLastSurfaceSize.set(mSurfaceSize.x, mSurfaceSize.y);
@@ -1455,13 +1464,12 @@
                 return;
             }
             Surface surface = mSurfaceHolder.getSurface();
-            boolean widthIsLarger =
-                    mSurfaceControl.getWidth() > mSurfaceControl.getHeight();
-            int smaller = widthIsLarger ? mSurfaceControl.getWidth()
-                    : mSurfaceControl.getHeight();
+            boolean widthIsLarger = mSurfaceSize.x > mSurfaceSize.y;
+            int smaller = widthIsLarger ? mSurfaceSize.x
+                    : mSurfaceSize.y;
             float ratio = (float) MIN_BITMAP_SCREENSHOT_WIDTH / (float) smaller;
-            int width = (int) (ratio * mSurfaceControl.getWidth());
-            int height = (int) (ratio * mSurfaceControl.getHeight());
+            int width = (int) (ratio * mSurfaceSize.x);
+            int height = (int) (ratio * mSurfaceSize.y);
             if (width <= 0 || height <= 0) {
                 Log.e(TAG, "wrong width and height values of bitmap " + width + " " + height);
                 return;
@@ -1842,6 +1850,21 @@
             public void onDisplayAdded(int displayId) {
             }
         };
+
+        private Surface getOrCreateBLASTSurface(int width, int height, int format) {
+            Surface ret = null;
+            if (mBlastBufferQueue == null) {
+                mBlastBufferQueue = new BLASTBufferQueue("Wallpaper", mSurfaceControl, width,
+                        height, format);
+                // We only return the Surface the first time, as otherwise
+                // it hasn't changed and there is no need to update.
+                ret = mBlastBufferQueue.createSurface();
+            } else {
+                mBlastBufferQueue.update(mSurfaceControl, width, height, format);
+            }
+
+            return ret;
+        }
     }
 
     private boolean isValid(RectF area) {
diff --git a/core/java/android/speech/RecognitionListener.java b/core/java/android/speech/RecognitionListener.java
index 07bd9ea..c94b60f 100644
--- a/core/java/android/speech/RecognitionListener.java
+++ b/core/java/android/speech/RecognitionListener.java
@@ -62,7 +62,8 @@
     /**
      * A network or recognition error occurred.
      * 
-     * @param error code is defined in {@link SpeechRecognizer}
+     * @param error code is defined in {@link SpeechRecognizer}. Implementations need to handle any
+     *              integer error constant to be passed here beyond constants prefixed with ERROR_.
      */
     void onError(@SpeechRecognizer.RecognitionError int error);
 
diff --git a/core/java/android/telephony/TelephonyRegistryManager.java b/core/java/android/telephony/TelephonyRegistryManager.java
index 340fa40..4b18c5a 100644
--- a/core/java/android/telephony/TelephonyRegistryManager.java
+++ b/core/java/android/telephony/TelephonyRegistryManager.java
@@ -796,13 +796,14 @@
     /**
      * Notify {@link PhysicalChannelConfig} has changed for a specific subscription.
      *
+     * @param slotIndex for which physical channel configs changed.
      * @param subId the subId
      * @param configs a list of {@link PhysicalChannelConfig}, the configs of physical channel.
      */
-    public void notifyPhysicalChannelConfigForSubscriber(
-            int subId, List<PhysicalChannelConfig> configs) {
+    public void notifyPhysicalChannelConfigForSubscriber(int slotIndex, int subId,
+            List<PhysicalChannelConfig> configs) {
         try {
-            sRegistry.notifyPhysicalChannelConfigForSubscriber(subId, configs);
+            sRegistry.notifyPhysicalChannelConfigForSubscriber(slotIndex, subId, configs);
         } catch (RemoteException ex) {
             // system server crash
         }
diff --git a/core/java/android/text/FontConfig.java b/core/java/android/text/FontConfig.java
index 33b7c75..2f7fb2f 100644
--- a/core/java/android/text/FontConfig.java
+++ b/core/java/android/text/FontConfig.java
@@ -194,6 +194,7 @@
     public static final class Font implements Parcelable {
         private final @NonNull File mFile;
         private final @Nullable File mOriginalFile;
+        private final @NonNull String mPostScriptName;
         private final @NonNull FontStyle mStyle;
         private final @IntRange(from = 0) int mIndex;
         private final @NonNull String mFontVariationSettings;
@@ -204,11 +205,12 @@
          *
          * @hide Only system server can create this instance and passed via IPC.
          */
-        public Font(@NonNull File file, @Nullable File originalFile, @NonNull FontStyle style,
-                @IntRange(from = 0) int index, @NonNull String fontVariationSettings,
-                @Nullable String fontFamilyName) {
+        public Font(@NonNull File file, @Nullable File originalFile, @NonNull String postScriptName,
+                @NonNull FontStyle style, @IntRange(from = 0) int index,
+                @NonNull String fontVariationSettings, @Nullable String fontFamilyName) {
             mFile = file;
             mOriginalFile = originalFile;
+            mPostScriptName = postScriptName;
             mStyle = style;
             mIndex = index;
             mFontVariationSettings = fontVariationSettings;
@@ -224,6 +226,7 @@
         public void writeToParcel(@NonNull Parcel dest, int flags) {
             dest.writeString8(mFile.getAbsolutePath());
             dest.writeString8(mOriginalFile == null ? null : mOriginalFile.getAbsolutePath());
+            dest.writeString8(mPostScriptName);
             dest.writeInt(mStyle.getWeight());
             dest.writeInt(mStyle.getSlant());
             dest.writeInt(mIndex);
@@ -238,14 +241,15 @@
                 File path = new File(source.readString8());
                 String originalPathStr = source.readString8();
                 File originalPath = originalPathStr == null ? null : new File(originalPathStr);
+                String postScriptName = source.readString8();
                 int weight = source.readInt();
                 int slant = source.readInt();
                 int index = source.readInt();
                 String varSettings = source.readString8();
                 String fallback = source.readString8();
 
-                return new Font(path, originalPath, new FontStyle(weight, slant), index,
-                        varSettings, fallback);
+                return new Font(path, originalPath, postScriptName, new FontStyle(weight, slant),
+                        index, varSettings, fallback);
             }
 
             @Override
@@ -314,6 +318,13 @@
         }
 
         /**
+         * Returns the PostScript name of this font.
+         */
+        public @NonNull String getPostScriptName() {
+            return mPostScriptName;
+        }
+
+        /**
          * Returns the list of axes associated to this font.
          * @deprecated Use getFontVariationSettings
          * @hide
diff --git a/core/java/android/text/method/TranslationTransformationMethod.java b/core/java/android/text/method/TranslationTransformationMethod.java
index 7db999a8..54c0ffc 100644
--- a/core/java/android/text/method/TranslationTransformationMethod.java
+++ b/core/java/android/text/method/TranslationTransformationMethod.java
@@ -78,24 +78,11 @@
         if (TextUtils.isEmpty(translatedText) || isWhitespace(translatedText.toString())) {
             return source;
         } else {
-            // TODO(b/179693024): Remove this once we have the fix to pad the view text instead.
-            translatedText = ellipsize(translatedText, ((TextView) view).getText().length());
             // TODO(b/174283799): apply the spans to the text
             return translatedText;
         }
     }
 
-    private static CharSequence ellipsize(CharSequence text, int newLength) {
-        if (text.length() <= newLength) {
-            return text;
-        }
-        String ellipsis = String.valueOf('\u2026');
-        if (newLength == 1) {
-            return ellipsis;
-        }
-        return TextUtils.concat(TextUtils.trimToSize(text, newLength - 1), ellipsis);
-    }
-
     @Override
     public void onFocusChanged(View view, CharSequence sourceText,
             boolean focused, int direction,
diff --git a/core/java/android/view/Choreographer.java b/core/java/android/view/Choreographer.java
index 0a3963d..be172f7 100644
--- a/core/java/android/view/Choreographer.java
+++ b/core/java/android/view/Choreographer.java
@@ -693,71 +693,79 @@
         ThreadedRenderer.setFPSDivisor(divisor);
     }
 
+    private void traceMessage(String msg) {
+        Trace.traceBegin(Trace.TRACE_TAG_VIEW, msg);
+        Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+    }
+
     void doFrame(long frameTimeNanos, int frame,
             DisplayEventReceiver.VsyncEventData vsyncEventData) {
         final long startNanos;
         final long frameIntervalNanos = vsyncEventData.frameInterval;
-        synchronized (mLock) {
-            if (!mFrameScheduled) {
-                return; // no work to do
-            }
-
-            if (DEBUG_JANK && mDebugPrintNextFrameTimeDelta) {
-                mDebugPrintNextFrameTimeDelta = false;
-                Log.d(TAG, "Frame time delta: "
-                        + ((frameTimeNanos - mLastFrameTimeNanos) * 0.000001f) + " ms");
-            }
-
-            long intendedFrameTimeNanos = frameTimeNanos;
-            startNanos = System.nanoTime();
-            final long jitterNanos = startNanos - frameTimeNanos;
-            if (jitterNanos >= frameIntervalNanos) {
-                final long skippedFrames = jitterNanos / frameIntervalNanos;
-                if (skippedFrames >= SKIPPED_FRAME_WARNING_LIMIT) {
-                    Log.i(TAG, "Skipped " + skippedFrames + " frames!  "
-                            + "The application may be doing too much work on its main thread.");
-                }
-                final long lastFrameOffset = jitterNanos % frameIntervalNanos;
-                if (DEBUG_JANK) {
-                    Log.d(TAG, "Missed vsync by " + (jitterNanos * 0.000001f) + " ms "
-                            + "which is more than the frame interval of "
-                            + (frameIntervalNanos * 0.000001f) + " ms!  "
-                            + "Skipping " + skippedFrames + " frames and setting frame "
-                            + "time to " + (lastFrameOffset * 0.000001f) + " ms in the past.");
-                }
-                frameTimeNanos = startNanos - lastFrameOffset;
-            }
-
-            if (frameTimeNanos < mLastFrameTimeNanos) {
-                if (DEBUG_JANK) {
-                    Log.d(TAG, "Frame time appears to be going backwards.  May be due to a "
-                            + "previously skipped frame.  Waiting for next vsync.");
-                }
-                scheduleVsyncLocked();
-                return;
-            }
-
-            if (mFPSDivisor > 1) {
-                long timeSinceVsync = frameTimeNanos - mLastFrameTimeNanos;
-                if (timeSinceVsync < (frameIntervalNanos * mFPSDivisor) && timeSinceVsync > 0) {
-                    scheduleVsyncLocked();
-                    return;
-                }
-            }
-
-            mFrameInfo.setVsync(intendedFrameTimeNanos, frameTimeNanos, vsyncEventData.id,
-                    vsyncEventData.frameDeadline, startNanos, vsyncEventData.frameInterval);
-            mFrameScheduled = false;
-            mLastFrameTimeNanos = frameTimeNanos;
-            mLastFrameIntervalNanos = frameIntervalNanos;
-            mLastVsyncEventData = vsyncEventData;
-        }
-
         try {
             if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) {
                 Trace.traceBegin(Trace.TRACE_TAG_VIEW,
                         "Choreographer#doFrame " + vsyncEventData.id);
             }
+            synchronized (mLock) {
+                if (!mFrameScheduled) {
+                    traceMessage("Frame not scheduled");
+                    return; // no work to do
+                }
+
+                if (DEBUG_JANK && mDebugPrintNextFrameTimeDelta) {
+                    mDebugPrintNextFrameTimeDelta = false;
+                    Log.d(TAG, "Frame time delta: "
+                            + ((frameTimeNanos - mLastFrameTimeNanos) * 0.000001f) + " ms");
+                }
+
+                long intendedFrameTimeNanos = frameTimeNanos;
+                startNanos = System.nanoTime();
+                final long jitterNanos = startNanos - frameTimeNanos;
+                if (jitterNanos >= frameIntervalNanos) {
+                    final long skippedFrames = jitterNanos / frameIntervalNanos;
+                    if (skippedFrames >= SKIPPED_FRAME_WARNING_LIMIT) {
+                        Log.i(TAG, "Skipped " + skippedFrames + " frames!  "
+                                + "The application may be doing too much work on its main thread.");
+                    }
+                    final long lastFrameOffset = jitterNanos % frameIntervalNanos;
+                    if (DEBUG_JANK) {
+                        Log.d(TAG, "Missed vsync by " + (jitterNanos * 0.000001f) + " ms "
+                                + "which is more than the frame interval of "
+                                + (frameIntervalNanos * 0.000001f) + " ms!  "
+                                + "Skipping " + skippedFrames + " frames and setting frame "
+                                + "time to " + (lastFrameOffset * 0.000001f) + " ms in the past.");
+                    }
+                    frameTimeNanos = startNanos - lastFrameOffset;
+                }
+
+                if (frameTimeNanos < mLastFrameTimeNanos) {
+                    if (DEBUG_JANK) {
+                        Log.d(TAG, "Frame time appears to be going backwards.  May be due to a "
+                                + "previously skipped frame.  Waiting for next vsync.");
+                    }
+                    traceMessage("Frame time goes backward");
+                    scheduleVsyncLocked();
+                    return;
+                }
+
+                if (mFPSDivisor > 1) {
+                    long timeSinceVsync = frameTimeNanos - mLastFrameTimeNanos;
+                    if (timeSinceVsync < (frameIntervalNanos * mFPSDivisor) && timeSinceVsync > 0) {
+                        traceMessage("Frame skipped due to FPSDivisor");
+                        scheduleVsyncLocked();
+                        return;
+                    }
+                }
+
+                mFrameInfo.setVsync(intendedFrameTimeNanos, frameTimeNanos, vsyncEventData.id,
+                        vsyncEventData.frameDeadline, startNanos, vsyncEventData.frameInterval);
+                mFrameScheduled = false;
+                mLastFrameTimeNanos = frameTimeNanos;
+                mLastFrameIntervalNanos = frameIntervalNanos;
+                mLastVsyncEventData = vsyncEventData;
+            }
+
             AnimationUtils.lockAnimationClock(frameTimeNanos / TimeUtils.NANOS_PER_MS);
 
             mFrameInfo.markInputHandlingStart();
@@ -870,7 +878,12 @@
 
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     private void scheduleVsyncLocked() {
-        mDisplayEventReceiver.scheduleVsync();
+        try {
+            Trace.traceBegin(Trace.TRACE_TAG_VIEW, "Choreographer#scheduleVsyncLocked");
+            mDisplayEventReceiver.scheduleVsync();
+        } finally {
+            Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+        }
     }
 
     private boolean isRunningOnLooperThreadLocked() {
@@ -967,32 +980,40 @@
         @Override
         public void onVsync(long timestampNanos, long physicalDisplayId, int frame,
                 VsyncEventData vsyncEventData) {
-            // Post the vsync event to the Handler.
-            // The idea is to prevent incoming vsync events from completely starving
-            // the message queue.  If there are no messages in the queue with timestamps
-            // earlier than the frame time, then the vsync event will be processed immediately.
-            // Otherwise, messages that predate the vsync event will be handled first.
-            long now = System.nanoTime();
-            if (timestampNanos > now) {
-                Log.w(TAG, "Frame time is " + ((timestampNanos - now) * 0.000001f)
-                        + " ms in the future!  Check that graphics HAL is generating vsync "
-                        + "timestamps using the correct timebase.");
-                timestampNanos = now;
-            }
+            try {
+                if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) {
+                    Trace.traceBegin(Trace.TRACE_TAG_VIEW,
+                            "Choreographer#onVsync " + vsyncEventData.id);
+                }
+                // Post the vsync event to the Handler.
+                // The idea is to prevent incoming vsync events from completely starving
+                // the message queue.  If there are no messages in the queue with timestamps
+                // earlier than the frame time, then the vsync event will be processed immediately.
+                // Otherwise, messages that predate the vsync event will be handled first.
+                long now = System.nanoTime();
+                if (timestampNanos > now) {
+                    Log.w(TAG, "Frame time is " + ((timestampNanos - now) * 0.000001f)
+                            + " ms in the future!  Check that graphics HAL is generating vsync "
+                            + "timestamps using the correct timebase.");
+                    timestampNanos = now;
+                }
 
-            if (mHavePendingVsync) {
-                Log.w(TAG, "Already have a pending vsync event.  There should only be "
-                        + "one at a time.");
-            } else {
-                mHavePendingVsync = true;
-            }
+                if (mHavePendingVsync) {
+                    Log.w(TAG, "Already have a pending vsync event.  There should only be "
+                            + "one at a time.");
+                } else {
+                    mHavePendingVsync = true;
+                }
 
-            mTimestampNanos = timestampNanos;
-            mFrame = frame;
-            mLastVsyncEventData = vsyncEventData;
-            Message msg = Message.obtain(mHandler, this);
-            msg.setAsynchronous(true);
-            mHandler.sendMessageAtTime(msg, timestampNanos / TimeUtils.NANOS_PER_MS);
+                mTimestampNanos = timestampNanos;
+                mFrame = frame;
+                mLastVsyncEventData = vsyncEventData;
+                Message msg = Message.obtain(mHandler, this);
+                msg.setAsynchronous(true);
+                mHandler.sendMessageAtTime(msg, timestampNanos / TimeUtils.NANOS_PER_MS);
+            } finally {
+                Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+            }
         }
 
         @Override
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index 0f032e9..88406ff 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -858,4 +858,6 @@
     void unregisterCrossWindowBlurEnabledListener(ICrossWindowBlurEnabledListener listener);
 
     void setForceCrossWindowBlurDisabled(boolean disable);
+
+    boolean isTaskSnapshotSupported();
 }
diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java
index c201e3b..def9ca4 100644
--- a/core/java/android/view/InsetsController.java
+++ b/core/java/android/view/InsetsController.java
@@ -541,9 +541,6 @@
 
     private final SparseArray<InsetsSourceControl> mTmpControlArray = new SparseArray<>();
     private final ArrayList<RunningAnimation> mRunningAnimations = new ArrayList<>();
-    private final ArrayList<WindowInsetsAnimation> mTmpRunningAnims = new ArrayList<>();
-    private final List<WindowInsetsAnimation> mUnmodifiableTmpRunningAnims =
-            Collections.unmodifiableList(mTmpRunningAnims);
     private final ArrayList<InsetsAnimationControlImpl> mTmpFinishedControls = new ArrayList<>();
     private final ArraySet<InsetsSourceConsumer> mRequestedVisibilityChanged = new ArraySet<>();
     private WindowInsets mLastInsets;
@@ -601,9 +598,8 @@
                 return;
             }
 
-            mTmpFinishedControls.clear();
-            mTmpRunningAnims.clear();
-            InsetsState state = new InsetsState(mState, true /* copySources */);
+            final List<WindowInsetsAnimation> runningAnimations = new ArrayList<>();
+            final InsetsState state = new InsetsState(mState, true /* copySources */);
             for (int i = mRunningAnimations.size() - 1; i >= 0; i--) {
                 RunningAnimation runningAnimation = mRunningAnimations.get(i);
                 if (DEBUG) Log.d(TAG, "Running animation type: " + runningAnimation.type);
@@ -615,7 +611,7 @@
                     // if it gets finished within applyChangeInsets we still dispatch it to
                     // onProgress.
                     if (runningAnimation.startDispatched) {
-                        mTmpRunningAnims.add(control.getAnimation());
+                        runningAnimations.add(control.getAnimation());
                     }
 
                     if (control.applyChangeInsets(state)) {
@@ -628,9 +624,10 @@
                     mLastInsets.isRound(), mLastInsets.shouldAlwaysConsumeSystemBars(),
                     mLastLegacySoftInputMode, mLastLegacyWindowFlags, mLastLegacySystemUiFlags,
                     mWindowType, mLastWindowingMode, null /* typeSideMap */);
-            mHost.dispatchWindowInsetsAnimationProgress(insets, mUnmodifiableTmpRunningAnims);
+            mHost.dispatchWindowInsetsAnimationProgress(insets,
+                    Collections.unmodifiableList(runningAnimations));
             if (DEBUG) {
-                for (WindowInsetsAnimation anim : mUnmodifiableTmpRunningAnims) {
+                for (WindowInsetsAnimation anim : runningAnimations) {
                     Log.d(TAG, String.format("Running animation type: %d, progress: %f",
                             anim.getTypeMask(), anim.getInterpolatedFraction()));
                 }
@@ -639,6 +636,7 @@
             for (int i = mTmpFinishedControls.size() - 1; i >= 0; i--) {
                 dispatchAnimationEnd(mTmpFinishedControls.get(i).getAnimation());
             }
+            mTmpFinishedControls.clear();
         };
     }
 
@@ -1441,7 +1439,7 @@
     }
 
     void dump(String prefix, PrintWriter pw) {
-        pw.println(prefix); pw.println("InsetsController:");
+        pw.print(prefix); pw.println("InsetsController:");
         mState.dump(prefix + "  ", pw);
     }
 
diff --git a/core/java/android/view/ScrollCaptureConnection.java b/core/java/android/view/ScrollCaptureConnection.java
index a6d786e..5fcb011 100644
--- a/core/java/android/view/ScrollCaptureConnection.java
+++ b/core/java/android/view/ScrollCaptureConnection.java
@@ -185,7 +185,8 @@
             }
             Log.w(TAG, "close(): capture session still active! Ending now.");
             // -> UiThread
-            mUiThread.execute(() -> mLocal.onScrollCaptureEnd(() -> { /* ignore */ }));
+            final ScrollCaptureCallback callback = mLocal;
+            mUiThread.execute(() -> callback.onScrollCaptureEnd(() -> { /* ignore */ }));
             mActive = false;
         }
         mActive = false;
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index 21f75d4..83669fa 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -34,7 +34,9 @@
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.graphics.Bitmap;
+import android.graphics.BLASTBufferQueue;
 import android.graphics.ColorSpace;
+import android.graphics.GraphicBuffer;
 import android.graphics.Matrix;
 import android.graphics.PixelFormat;
 import android.graphics.Point;
@@ -94,6 +96,7 @@
     private static native void nativeWriteToParcel(long nativeObject, Parcel out);
     private static native void nativeRelease(long nativeObject);
     private static native void nativeDisconnect(long nativeObject);
+    private static native void nativeUpdateDefaultBufferSize(long nativeObject, int width, int height);
     private static native int nativeCaptureDisplay(DisplayCaptureArgs captureArgs,
             ScreenCaptureListener captureListener);
     private static native int nativeCaptureLayers(LayerCaptureArgs captureArgs,
@@ -188,6 +191,10 @@
             IBinder displayToken, int mode);
     private static native void nativeReparent(long transactionObj, long nativeObject,
             long newParentNativeObject);
+    private static native void nativeSetBuffer(long transactionObj, long nativeObject,
+            GraphicBuffer buffer);
+    private static native void nativeSetColorSpace(long transactionObj, long nativeObject,
+            int colorSpace);
 
     private static native void nativeOverrideHdrTypes(IBinder displayToken, int[] modes);
 
@@ -1078,6 +1085,11 @@
                 throw new IllegalStateException(
                         "Only buffer layers can set a valid buffer size.");
             }
+            boolean isBqLayer = isBufferQueueLayer();
+            if (isBqLayer) {
+                setBLASTLayer();
+            }
+
             return new SurfaceControl(
                     mSession, mName, mWidth, mHeight, mFormat, mFlags, mParent, mMetadata,
                     mLocalOwnerView, mCallsite);
@@ -1134,9 +1146,6 @@
             return setFlags(FX_SURFACE_NORMAL, FX_SURFACE_MASK);
         }
 
-        /**
-         * Set the initial size of the controlled surface's buffers in pixels.
-         */
         private void unsetBufferSize() {
             mWidth = 0;
             mHeight = 0;
@@ -1301,11 +1310,14 @@
             return  (mFlags & FX_SURFACE_EFFECT) == FX_SURFACE_EFFECT;
         }
 
+        private boolean isBufferQueueLayer() {
+            return (mFlags & FX_SURFACE_NORMAL) == FX_SURFACE_NORMAL;
+        }
+
         /**
          * @hide
          */
         public Builder setBLASTLayer() {
-            unsetBufferSize();
             return setFlags(FX_SURFACE_BLAST, FX_SURFACE_MASK);
         }
 
@@ -2590,6 +2602,16 @@
                 = sRegistry.registerNativeAllocation(this, mNativeObject);
         }
 
+        /**
+         * Create a transaction object that wraps a native peer.
+         * @hide
+         */
+        Transaction(long nativeObject) {
+            mNativeObject = nativeObject;
+            mFreeNativeResources =
+                sRegistry.registerNativeAllocation(this, mNativeObject);
+        }
+
         private Transaction(Parcel in) {
             readFromParcel(in);
         }
@@ -2644,8 +2666,7 @@
                 final Point size = mResizedSurfaces.valueAt(i);
                 final SurfaceControl surfaceControl = mResizedSurfaces.keyAt(i);
                 synchronized (surfaceControl.mLock) {
-                    surfaceControl.mWidth = size.x;
-                    surfaceControl.mHeight = size.y;
+                    surfaceControl.resize(size.x, size.y);
                 }
             }
             mResizedSurfaces.clear();
@@ -3362,6 +3383,31 @@
             return this;
         }
 
+        /**
+         * Set a buffer for a SurfaceControl. This can only be used for SurfaceControls that were
+         * created as type {@link #FX_SURFACE_BLAST}
+         *
+         * @hide
+         */
+        public Transaction setBuffer(SurfaceControl sc, GraphicBuffer buffer) {
+            checkPreconditions(sc);
+            nativeSetBuffer(mNativeObject, sc.mNativeObject, buffer);
+            return this;
+        }
+
+        /**
+         * Set the color space for the SurfaceControl. The supported color spaces are SRGB
+         * and Display P3, other color spaces will be treated as SRGB. This can only be used for
+         * SurfaceControls that were created as type {@link #FX_SURFACE_BLAST}
+         *
+         * @hide
+         */
+        public Transaction setColorSpace(SurfaceControl sc, ColorSpace colorSpace) {
+            checkPreconditions(sc);
+            nativeSetColorSpace(mNativeObject, sc.mNativeObject, colorSpace.getId());
+            return this;
+        }
+
          /**
          * Merge the other transaction into this transaction, clearing the
          * other transaction as if it had been applied.
@@ -3536,4 +3582,13 @@
     public static Transaction getGlobalTransaction() {
         return sGlobalTransaction;
     }
+
+    /**
+     * @hide
+     */
+    public void resize(int w, int h) {
+        mWidth = w;
+        mHeight = h;
+        nativeUpdateDefaultBufferSize(mNativeObject, w, h);
+    }
 }
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index d6b5a2c..bed5eea 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -1494,7 +1494,7 @@
     public static final int SCROLL_CAPTURE_HINT_AUTO = 0;
 
     /**
-     * Explicitly exclcude this view as a potential scroll capture target. The system will not
+     * Explicitly exclude this view as a potential scroll capture target. The system will not
      * consider it. Mutually exclusive with {@link #SCROLL_CAPTURE_HINT_INCLUDE}, which this flag
      * takes precedence over.
      *
@@ -26005,6 +26005,7 @@
      *
      * @attr ref android.R.styleable#View_minWidth
      */
+    @RemotableViewMethod
     public void setMinimumWidth(int minWidth) {
         mMinWidth = minWidth;
         requestLayout();
@@ -30143,6 +30144,10 @@
      */
     public void setScrollCaptureHint(@ScrollCaptureHint int hint) {
         mPrivateFlags4 &= ~PFLAG4_SCROLL_CAPTURE_HINT_MASK;
+        // Since include/exclude are mutually exclusive, exclude takes precedence.
+        if ((hint & SCROLL_CAPTURE_HINT_EXCLUDE) != 0) {
+            hint &= ~SCROLL_CAPTURE_HINT_INCLUDE;
+        }
         mPrivateFlags4 |= ((hint << PFLAG4_SCROLL_CAPTURE_HINT_SHIFT)
                 & PFLAG4_SCROLL_CAPTURE_HINT_MASK);
     }
@@ -30927,7 +30932,6 @@
      * @param executor The executor that the callback should be invoked on.
      * @param callback The callback to handle the results of generating the display hash
      */
-    @Nullable
     public void generateDisplayHash(@NonNull String hashAlgorithm,
             @Nullable Rect bounds, @NonNull Executor executor,
             @NonNull DisplayHashResultCallback callback) {
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 04e2cde..a02281b 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -7490,12 +7490,9 @@
             @NonNull Rect localVisibleRect, @NonNull Point windowOffset,
             @NonNull Consumer<ScrollCaptureTarget> targets) {
 
-        // copy local visible rect for modification and dispatch
-        final Rect rect = getTempRect();
-        rect.set(localVisibleRect);
-
-        if (getClipToPadding()) {
-            rect.inset(mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom);
+        if (getClipToPadding() && !localVisibleRect.intersect(mPaddingLeft, mPaddingTop,
+                    (mRight - mLeft)  - mPaddingRight, (mBottom - mTop) - mPaddingBottom)) {
+            return;
         }
 
         // Dispatch to self first.
@@ -7506,6 +7503,7 @@
             return;
         }
 
+        final Rect tmpRect = getTempRect();
         final int childCount = getChildCount();
         for (int i = 0; i < childCount; i++) {
             View child = getChildAt(i);
@@ -7518,8 +7516,7 @@
             // If the resulting rectangle is not empty, the request is forwarded to the child.
 
             // copy local visible rect for modification and dispatch
-            final Rect childVisibleRect = getTempRect();
-            childVisibleRect.set(localVisibleRect);
+            tmpRect.set(localVisibleRect);
 
             // transform to child coords
             final Point childWindowOffset = getTempPoint();
@@ -7528,20 +7525,18 @@
             final int dx = child.mLeft - mScrollX;
             final int dy = child.mTop - mScrollY;
 
-            childVisibleRect.offset(-dx, -dy);
+            tmpRect.offset(-dx, -dy);
             childWindowOffset.offset(dx, dy);
 
             boolean rectIsVisible = true;
 
             // Clip to child bounds
             if (getClipChildren()) {
-                rectIsVisible = childVisibleRect.intersect(0, 0, child.getWidth(),
-                        child.getHeight());
+                rectIsVisible = tmpRect.intersect(0, 0, child.getWidth(), child.getHeight());
             }
 
-            // Clip to child padding.
             if (rectIsVisible) {
-                child.dispatchScrollCaptureSearch(childVisibleRect, childWindowOffset, targets);
+                child.dispatchScrollCaptureSearch(tmpRect, childWindowOffset, targets);
             }
         }
     }
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 76eb882..3cfda57 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -1355,6 +1355,16 @@
         }
     }
 
+    private void addASurfaceTransactionCallback() {
+        HardwareRenderer.ASurfaceTransactionCallback callback = (nativeTransactionObj,
+                                                                 nativeSurfaceControlObj,
+                                                                 frameNr) -> {
+            Transaction t = new Transaction(nativeTransactionObj);
+            mergeWithNextTransaction(t, frameNr);
+        };
+        mAttachInfo.mThreadedRenderer.setASurfaceTransactionCallback(callback);
+    }
+
     @UnsupportedAppUsage
     private void enableHardwareAcceleration(WindowManager.LayoutParams attrs) {
         mAttachInfo.mHardwareAccelerated = false;
@@ -1391,6 +1401,7 @@
                 final boolean translucent = attrs.format != PixelFormat.OPAQUE || hasSurfaceInsets;
                 mAttachInfo.mThreadedRenderer = ThreadedRenderer.create(mContext, translucent,
                         attrs.getTitle().toString());
+                addASurfaceTransactionCallback();
                 mAttachInfo.mThreadedRenderer.setSurfaceControl(mSurfaceControl);
                 updateColorModeIfNeeded(attrs.getColorMode());
                 updateForceDarkMode();
@@ -9309,11 +9320,11 @@
      * Handles an inbound request for scroll capture from the system. A search will be
      * dispatched through the view tree to locate scrolling content.
      * <p>
-     * A call to {@link IScrollCaptureCallbacks#onScrollCaptureResponse(ScrollCaptureResponse)}
-     * will follow.
+     * A call to
+     * {@link IScrollCaptureResponseListener#onScrollCaptureResponse} will follow.
      *
      * @param listener to receive responses
-     * @see ScrollCaptureTargetSelector
+     * @see ScrollCaptureSearchResults
      */
     public void handleScrollCaptureRequest(@NonNull IScrollCaptureResponseListener listener) {
         ScrollCaptureSearchResults results =
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index cca8257..60516eb 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -4568,4 +4568,13 @@
     default void holdLock(IBinder token, int durationMs) {
         throw new UnsupportedOperationException();
     }
+
+    /**
+     * Used for testing to check if the system supports TaskSnapshot mechanism.
+     * @hide
+     */
+    @TestApi
+    default boolean isTaskSnapshotSupported() {
+        return false;
+    }
 }
diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java
index 2bed311..07eeb03 100644
--- a/core/java/android/view/WindowManagerImpl.java
+++ b/core/java/android/view/WindowManagerImpl.java
@@ -335,4 +335,13 @@
         } catch (RemoteException e) {
         }
     }
+
+    @Override
+    public boolean isTaskSnapshotSupported() {
+        try {
+            return WindowManagerGlobal.getWindowManagerService().isTaskSnapshotSupported();
+        } catch (RemoteException e) {
+        }
+        return false;
+    }
 }
diff --git a/core/java/android/view/contentcapture/ContentCaptureEvent.java b/core/java/android/view/contentcapture/ContentCaptureEvent.java
index ce01469..ac45541 100644
--- a/core/java/android/view/contentcapture/ContentCaptureEvent.java
+++ b/core/java/android/view/contentcapture/ContentCaptureEvent.java
@@ -428,10 +428,11 @@
         }
         if (mNode != null) {
             final String className = mNode.getClassName();
-            if (mNode != null) {
-                string.append(", class=").append(className);
-            }
+            string.append(", class=").append(className);
             string.append(", id=").append(mNode.getAutofillId());
+            if (mNode.getText() != null) {
+                string.append(", text=").append(getSanitizedString(mNode.getText()));
+            }
         }
         if (mText != null) {
             string.append(", text=").append(getSanitizedString(mText));
diff --git a/core/java/android/view/displayhash/DisplayHash.java b/core/java/android/view/displayhash/DisplayHash.java
index 4148486..4ec0a59 100644
--- a/core/java/android/view/displayhash/DisplayHash.java
+++ b/core/java/android/view/displayhash/DisplayHash.java
@@ -16,6 +16,7 @@
 
 package android.view.displayhash;
 
+import android.annotation.CurrentTimeMillisLong;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
 import android.graphics.Rect;
@@ -31,6 +32,7 @@
     /**
      * The timestamp when the hash was generated.
      */
+    @CurrentTimeMillisLong
     private final long mTimeMillis;
 
     /**
@@ -73,7 +75,7 @@
      * @hide
      */
     @SystemApi
-    public DisplayHash(long timeMillis, @NonNull Rect boundsInWindow,
+    public DisplayHash(@CurrentTimeMillisLong long timeMillis, @NonNull Rect boundsInWindow,
             @NonNull String hashAlgorithm, @NonNull byte[] imageHash, @NonNull byte[] hmac) {
         mTimeMillis = timeMillis;
         mBoundsInWindow = boundsInWindow;
@@ -92,6 +94,7 @@
      * @hide
      */
     @SystemApi
+    @CurrentTimeMillisLong
     public long getTimeMillis() {
         return mTimeMillis;
     }
diff --git a/core/java/android/view/displayhash/DisplayHashManager.java b/core/java/android/view/displayhash/DisplayHashManager.java
index 69dfc38..4f5fef6 100644
--- a/core/java/android/view/displayhash/DisplayHashManager.java
+++ b/core/java/android/view/displayhash/DisplayHashManager.java
@@ -35,7 +35,8 @@
 import java.util.Set;
 
 /**
- * Utility class for DisplayHash requests.
+ * Manages DisplayHash requests. The manager object can be retrieved by calling
+ * {@code Context.getSystemService(Context.DISPLAY_HASH_SERVICE)}
  */
 @SystemService(DISPLAY_HASH_SERVICE)
 public final class DisplayHashManager {
@@ -75,7 +76,7 @@
                 return sSupportedHashAlgorithms;
             } catch (RemoteException e) {
                 Log.e(TAG, "Failed to send request getSupportedHashingAlgorithms", e);
-                return Collections.emptySet();
+                throw e.rethrowFromSystemServer();
             }
         }
     }
@@ -93,7 +94,7 @@
             return WindowManagerGlobal.getWindowManagerService().verifyDisplayHash(displayHash);
         } catch (RemoteException e) {
             Log.e(TAG, "Failed to send request verifyImpressionToken", e);
-            return null;
+            throw e.rethrowFromSystemServer();
         }
     }
 
diff --git a/core/java/android/view/displayhash/VerifiedDisplayHash.java b/core/java/android/view/displayhash/VerifiedDisplayHash.java
index 16a428e..b17c068 100644
--- a/core/java/android/view/displayhash/VerifiedDisplayHash.java
+++ b/core/java/android/view/displayhash/VerifiedDisplayHash.java
@@ -16,6 +16,7 @@
 
 package android.view.displayhash;
 
+import android.annotation.CurrentTimeMillisLong;
 import android.annotation.NonNull;
 import android.graphics.Rect;
 import android.os.Parcelable;
@@ -30,6 +31,7 @@
     /**
      * The timestamp when the hash was generated.
      */
+    @CurrentTimeMillisLong
     private final long mTimeMillis;
 
     /**
@@ -78,7 +80,7 @@
 
 
 
-    // Code below generated by codegen v1.0.22.
+    // Code below generated by codegen v1.0.23.
     //
     // DO NOT MODIFY!
     // CHECKSTYLE:OFF Generated code
@@ -106,11 +108,13 @@
      */
     @DataClass.Generated.Member
     public VerifiedDisplayHash(
-            long timeMillis,
+            @CurrentTimeMillisLong long timeMillis,
             @NonNull Rect boundsInWindow,
             @NonNull String hashAlgorithm,
             @NonNull byte[] imageHash) {
         this.mTimeMillis = timeMillis;
+        com.android.internal.util.AnnotationValidations.validate(
+                CurrentTimeMillisLong.class, null, mTimeMillis);
         this.mBoundsInWindow = boundsInWindow;
         com.android.internal.util.AnnotationValidations.validate(
                 NonNull.class, null, mBoundsInWindow);
@@ -128,7 +132,7 @@
      * The timestamp when the hash was generated.
      */
     @DataClass.Generated.Member
-    public long getTimeMillis() {
+    public @CurrentTimeMillisLong long getTimeMillis() {
         return mTimeMillis;
     }
 
@@ -200,6 +204,8 @@
         byte[] imageHash = in.createByteArray();
 
         this.mTimeMillis = timeMillis;
+        com.android.internal.util.AnnotationValidations.validate(
+                CurrentTimeMillisLong.class, null, mTimeMillis);
         this.mBoundsInWindow = boundsInWindow;
         com.android.internal.util.AnnotationValidations.validate(
                 NonNull.class, null, mBoundsInWindow);
@@ -228,10 +234,10 @@
     };
 
     @DataClass.Generated(
-            time = 1613168749684L,
-            codegenVersion = "1.0.22",
+            time = 1617747271440L,
+            codegenVersion = "1.0.23",
             sourceFile = "frameworks/base/core/java/android/view/displayhash/VerifiedDisplayHash.java",
-            inputSignatures = "private final  long mTimeMillis\nprivate final @android.annotation.NonNull android.graphics.Rect mBoundsInWindow\nprivate final @android.annotation.NonNull java.lang.String mHashAlgorithm\nprivate final @android.annotation.NonNull byte[] mImageHash\nprivate  java.lang.String imageHashToString()\nprivate  java.lang.String byteArrayToString(byte[])\nclass VerifiedDisplayHash extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genAidl=true)")
+            inputSignatures = "private final @android.annotation.CurrentTimeMillisLong long mTimeMillis\nprivate final @android.annotation.NonNull android.graphics.Rect mBoundsInWindow\nprivate final @android.annotation.NonNull java.lang.String mHashAlgorithm\nprivate final @android.annotation.NonNull byte[] mImageHash\nprivate  java.lang.String imageHashToString()\nprivate  java.lang.String byteArrayToString(byte[])\nclass VerifiedDisplayHash extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genAidl=true)")
     @Deprecated
     private void __metadata() {}
 
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 616910a..d6292ca 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -581,7 +581,7 @@
      */
     public void reportPerceptible(IBinder windowToken, boolean perceptible) {
         try {
-            mService.reportPerceptible(windowToken, perceptible);
+            mService.reportPerceptibleAsync(windowToken, perceptible);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/view/textservice/SpellCheckerSession.java b/core/java/android/view/textservice/SpellCheckerSession.java
index a449cf1..6cfb938 100644
--- a/core/java/android/view/textservice/SpellCheckerSession.java
+++ b/core/java/android/view/textservice/SpellCheckerSession.java
@@ -17,10 +17,13 @@
 package android.view.textservice;
 
 import android.annotation.BinderThread;
+import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SuppressLint;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Binder;
 import android.os.Build;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Message;
@@ -37,6 +40,7 @@
 import dalvik.system.CloseGuard;
 
 import java.util.LinkedList;
+import java.util.Locale;
 import java.util.Queue;
 import java.util.concurrent.Executor;
 
@@ -525,6 +529,161 @@
         }
     }
 
+    /** Parameters used to create a {@link SpellCheckerSession}. */
+    public static class SpellCheckerSessionParams {
+        @Nullable
+        private final Locale mLocale;
+        private final boolean mShouldReferToSpellCheckerLanguageSettings;
+        private final @SuggestionsInfo.ResultAttrs int mSupportedAttributes;
+        private final Bundle mExtras;
+
+        private SpellCheckerSessionParams(Locale locale,
+                boolean referToSpellCheckerLanguageSettings, int supportedAttributes,
+                Bundle extras) {
+            mLocale = locale;
+            mShouldReferToSpellCheckerLanguageSettings = referToSpellCheckerLanguageSettings;
+            mSupportedAttributes = supportedAttributes;
+            mExtras = extras;
+        }
+
+        /**
+         * Returns the locale in which the spell checker should operate.
+         *
+         * @see android.service.textservice.SpellCheckerService.Session#getLocale()
+         */
+        @SuppressLint("UseIcu")
+        @Nullable
+        public Locale getLocale() {
+            return mLocale;
+        }
+
+        /**
+         * Returns true if the user's spell checker language settings should be used to determine
+         * the spell checker locale.
+         */
+        public boolean shouldReferToSpellCheckerLanguageSettings() {
+            return mShouldReferToSpellCheckerLanguageSettings;
+        }
+
+        /**
+         * Returns a bitmask of {@link SuggestionsInfo} attributes that the spell checker can set
+         * in {@link SuggestionsInfo} it returns.
+         *
+         * @see android.service.textservice.SpellCheckerService.Session#getSupportedAttributes()
+         */
+        public @SuggestionsInfo.ResultAttrs int getSupportedAttributes() {
+            return mSupportedAttributes;
+        }
+
+        /**
+         * Returns a bundle containing extra parameters for the spell checker.
+         *
+         * <p>This bundle can be used to pass implementation-specific parameters to the
+         * {@link android.service.textservice.SpellCheckerService} implementation.
+         *
+         * @see android.service.textservice.SpellCheckerService.Session#getBundle()
+         */
+        @NonNull
+        public Bundle getExtras() {
+            return mExtras;
+        }
+
+        /** Builder of {@link SpellCheckerSessionParams}. */
+        public static final class Builder {
+            @Nullable
+            private Locale mLocale;
+            private boolean mShouldReferToSpellCheckerLanguageSettings = false;
+            private @SuggestionsInfo.ResultAttrs int mSupportedAttributes = 0;
+            private Bundle mExtras = Bundle.EMPTY;
+
+            /** Constructs a {@code Builder}. */
+            public Builder() {
+            }
+
+            /**
+             * Returns constructed {@link SpellCheckerSession} instance.
+             *
+             * <p>Before calling this method, either {@link #setLocale(Locale)} should be called
+             * with a non-null locale or
+             * {@link #setShouldReferToSpellCheckerLanguageSettings(boolean)} should be called with
+             * {@code true}.
+             */
+            @NonNull
+            public SpellCheckerSessionParams build() {
+                if (mLocale == null && !mShouldReferToSpellCheckerLanguageSettings) {
+                    throw new IllegalArgumentException("mLocale should not be null if "
+                            + " mShouldReferToSpellCheckerLanguageSettings is false.");
+                }
+                return new SpellCheckerSessionParams(mLocale,
+                        mShouldReferToSpellCheckerLanguageSettings, mSupportedAttributes, mExtras);
+            }
+
+            /**
+             * Sets the locale in which the spell checker should operate.
+             *
+             * @see android.service.textservice.SpellCheckerService.Session#getLocale()
+             */
+            @NonNull
+            public Builder setLocale(@SuppressLint("UseIcu") @Nullable Locale locale) {
+                mLocale = locale;
+                return this;
+            }
+
+            /**
+             * Sets whether or not the user's spell checker language settings should be used to
+             * determine spell checker locale.
+             *
+             * <p>If {@code shouldReferToSpellCheckerLanguageSettings} is true, the exact way of
+             * determining spell checker locale differs based on {@code locale} specified in
+             * {@link #setLocale(Locale)}.
+             * If {@code shouldReferToSpellCheckerLanguageSettings} is true and {@code locale} is
+             * null, the locale specified in Settings will be used. If
+             * {@code shouldReferToSpellCheckerLanguageSettings} is true and {@code locale} is not
+             * null, {@link SpellCheckerSession} can be created only when the locale specified in
+             * Settings is the same as {@code locale}. Exceptionally, if
+             * {@code shouldReferToSpellCheckerLanguageSettings} is true and {@code locale} is
+             * language only (e.g. "en"), the specified locale in Settings (e.g. "en_US") will be
+             * used.
+             *
+             * @see #setLocale(Locale)
+             */
+            @NonNull
+            public Builder setShouldReferToSpellCheckerLanguageSettings(
+                    boolean shouldReferToSpellCheckerLanguageSettings) {
+                mShouldReferToSpellCheckerLanguageSettings =
+                        shouldReferToSpellCheckerLanguageSettings;
+                return this;
+            }
+
+            /**
+             * Sets a bitmask of {@link SuggestionsInfo} attributes that the spell checker can set
+             * in {@link SuggestionsInfo} it returns.
+             *
+             * @see android.service.textservice.SpellCheckerService.Session#getSupportedAttributes()
+             */
+            @NonNull
+            public Builder setSupportedAttributes(
+                    @SuggestionsInfo.ResultAttrs int supportedAttributes) {
+                mSupportedAttributes = supportedAttributes;
+                return this;
+            }
+
+            /**
+             * Sets a bundle containing extra parameters for the spell checker.
+             *
+             * <p>This bundle can be used to pass implementation-specific parameters to the
+             * {@link android.service.textservice.SpellCheckerService} implementation.
+             *
+             * @see android.service.textservice.SpellCheckerService.Session#getBundle()
+             */
+            @NonNull
+            public Builder setExtras(@NonNull Bundle extras) {
+                mExtras = extras;
+                return this;
+            }
+        }
+    }
+
     /**
      * Callback for getting results from text services
      */
diff --git a/core/java/android/view/textservice/TextServicesManager.java b/core/java/android/view/textservice/TextServicesManager.java
index bf91cca..ae927cf 100644
--- a/core/java/android/view/textservice/TextServicesManager.java
+++ b/core/java/android/view/textservice/TextServicesManager.java
@@ -19,7 +19,6 @@
 import android.annotation.CallbackExecutor;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.SuppressLint;
 import android.annotation.SystemService;
 import android.annotation.UserIdInt;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -35,6 +34,7 @@
 import android.util.Log;
 import android.view.inputmethod.InputMethodManager;
 import android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener;
+import android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams;
 
 import com.android.internal.textservice.ISpellCheckerSessionListener;
 import com.android.internal.textservice.ITextServicesManager;
@@ -166,15 +166,17 @@
      * {@link SuggestionsInfo#RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS} will be passed to the spell
      * checker as supported attributes.
      *
-     * @see #newSpellCheckerSession(Locale, boolean, int, Bundle, Executor,
-     *      SpellCheckerSessionListener)
-     * @param bundle A bundle to pass to the spell checker.
-     * @param locale The locale for the spell checker.
-     * @param listener A spell checker session lister for getting results from the spell checker.
-     *                 The listener will be called on the calling thread.
-     * @param referToSpellCheckerLanguageSettings If true, the session for one of enabled
-     *                                            languages in settings will be used.
-     * @return A spell checker session from the spell checker.
+     * @param locale the locale for the spell checker. If {@code locale} is null and
+     * referToSpellCheckerLanguageSettings is true, the locale specified in Settings will be
+     * returned. If {@code locale} is not null and referToSpellCheckerLanguageSettings is true,
+     * the locale specified in Settings will be returned only when it is same as {@code locale}.
+     * Exceptionally, when referToSpellCheckerLanguageSettings is true and {@code locale} is
+     * only language (e.g. "en"), the specified locale in Settings (e.g. "en_US") will be
+     * selected.
+     * @param listener a spell checker session lister for getting results from the spell checker.
+     * @param referToSpellCheckerLanguageSettings if true, the session for one of enabled
+     * languages in settings will be returned.
+     * @return a spell checker session of the spell checker
      */
     @Nullable
     public SpellCheckerSession newSpellCheckerSession(@Nullable Bundle bundle,
@@ -186,51 +188,40 @@
         int supportedAttributes = SuggestionsInfo.RESULT_ATTR_IN_THE_DICTIONARY
                 | SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO
                 | SuggestionsInfo.RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS;
+        SpellCheckerSessionParams.Builder paramsBuilder = new SpellCheckerSessionParams.Builder()
+                .setLocale(locale)
+                .setShouldReferToSpellCheckerLanguageSettings(referToSpellCheckerLanguageSettings)
+                .setSupportedAttributes(supportedAttributes);
+        if (bundle != null) {
+            paramsBuilder.setExtras(bundle);
+        }
         // Using the implicit looper to preserve the old behavior.
         Executor executor = new HandlerExecutor(new Handler());
-        return newSpellCheckerSession(locale, referToSpellCheckerLanguageSettings,
-                supportedAttributes, bundle, executor, listener);
+        return newSpellCheckerSession(paramsBuilder.build(), executor, listener);
     }
 
     /**
      * Get a spell checker session from the spell checker.
      *
-     * <p>If {@code locale} is null and {@code referToSpellCheckerLanguageSettings} is true, the
-     * locale specified in Settings will be used. If {@code locale} is not null and
-     * {@code referToSpellCheckerLanguageSettings} is true, the locale specified in Settings will be
-     * returned only when it is same as {@code locale}.
-     * Exceptionally, when {@code referToSpellCheckerLanguageSettings} is true and {@code locale} is
-     * language only (e.g. "en"), the specified locale in Settings (e.g. "en_US") will be
-     * selected.
-     *
-     * @param locale The locale for the spell checker.
-     * @param referToSpellCheckerLanguageSettings If true, the session for one of enabled
-     *                                            languages in settings will be used.
-     * @param supportedAttributes A union of {@link SuggestionsInfo} attributes that the spell
-     *                            checker can set in the spell checking results.
-     * @param bundle A bundle for passing implementation-specific extra parameters for the spell
-     *               checker. You can check the current spell checker package by
-     *               {@link #getCurrentSpellCheckerInfo()}.
-     * @param executor An executor to call the listener on.
-     * @param listener A spell checker session lister for getting results from a spell checker.
+     * @param params The parameters passed to the spell checker.
+     * @param executor The executor on which {@code listener} will be called back.
+     * @param listener a spell checker session lister for getting results from the spell checker.
      * @return The spell checker session of the spell checker.
      */
     @Nullable
     public SpellCheckerSession newSpellCheckerSession(
-            @SuppressLint("UseIcu") @Nullable Locale locale,
-            boolean referToSpellCheckerLanguageSettings,
-            @SuggestionsInfo.ResultAttrs int supportedAttributes,
-            @Nullable Bundle bundle,
+            @NonNull SpellCheckerSessionParams params,
             @NonNull @CallbackExecutor Executor executor,
             @NonNull SpellCheckerSessionListener listener) {
         Objects.requireNonNull(executor);
         Objects.requireNonNull(listener);
-        if (!referToSpellCheckerLanguageSettings && locale == null) {
+        Locale locale = params.getLocale();
+        if (!params.shouldReferToSpellCheckerLanguageSettings() && locale == null) {
             throw new IllegalArgumentException("Locale should not be null if you don't refer"
                     + " settings.");
         }
 
-        if (referToSpellCheckerLanguageSettings && !isSpellCheckerEnabled()) {
+        if (params.shouldReferToSpellCheckerLanguageSettings() && !isSpellCheckerEnabled()) {
             return null;
         }
 
@@ -244,7 +235,7 @@
             return null;
         }
         SpellCheckerSubtype subtypeInUse = null;
-        if (referToSpellCheckerLanguageSettings) {
+        if (params.shouldReferToSpellCheckerLanguageSettings()) {
             subtypeInUse = getCurrentSpellCheckerSubtype(true);
             if (subtypeInUse == null) {
                 return null;
@@ -278,7 +269,8 @@
         try {
             mService.getSpellCheckerService(mUserId, sci.getId(), subtypeInUse.getLocale(),
                     session.getTextServicesSessionListener(),
-                    session.getSpellCheckerSessionListener(), bundle, supportedAttributes);
+                    session.getSpellCheckerSessionListener(),
+                    params.getExtras(), params.getSupportedAttributes());
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/view/translation/ITranslationDirectManager.aidl b/core/java/android/view/translation/ITranslationDirectManager.aidl
index 525a779..6b00c07 100644
--- a/core/java/android/view/translation/ITranslationDirectManager.aidl
+++ b/core/java/android/view/translation/ITranslationDirectManager.aidl
@@ -16,6 +16,7 @@
 
 package android.view.translation;
 
+import android.os.ICancellationSignal;
 import android.view.translation.TranslationRequest;
 import android.service.translation.ITranslationCallback;
 
@@ -27,6 +28,6 @@
   */
 oneway interface ITranslationDirectManager {
     void onTranslationRequest(in TranslationRequest request, int sessionId,
-         in ITranslationCallback callback);
+         in ICancellationSignal transport, in ITranslationCallback callback);
     void onFinishTranslationSession(int sessionId);
 }
diff --git a/core/java/android/view/translation/TranslationResponse.java b/core/java/android/view/translation/TranslationResponse.java
index f9b7012..eef283d 100644
--- a/core/java/android/view/translation/TranslationResponse.java
+++ b/core/java/android/view/translation/TranslationResponse.java
@@ -87,7 +87,7 @@
         /**
          * Adds {@link TranslationResponseValue} to be translated. The input
          * TranslationResponseValue format should match those provided by the
-         * {@link android.view.translation.Translator}'s destSpec.
+         * {@link android.view.translation.Translator}'s targetSpec.
          *
          * @param value the translated value.
          * @return this Builder.
@@ -109,7 +109,7 @@
         /**
          * Sets the list of {@link ViewTranslationResponse} to be translated. The input
          * ViewTranslationResponse contains {@link TranslationResponseValue}s whose  format should
-         * match those provided by the {@link android.view.translation.Translator}'s destSpec.
+         * match those provided by the {@link android.view.translation.Translator}'s targetSpec.
          *
          * @param response the translated response.
          * @return this Builder.
diff --git a/core/java/android/view/translation/Translator.java b/core/java/android/view/translation/Translator.java
index 6b26e06..188d562 100644
--- a/core/java/android/view/translation/Translator.java
+++ b/core/java/android/view/translation/Translator.java
@@ -26,8 +26,10 @@
 import android.content.Context;
 import android.os.Binder;
 import android.os.Bundle;
+import android.os.CancellationSignal;
 import android.os.Handler;
 import android.os.IBinder;
+import android.os.ICancellationSignal;
 import android.os.RemoteException;
 import android.service.translation.ITranslationCallback;
 import android.util.Log;
@@ -227,11 +229,13 @@
      *
      * @param request {@link TranslationRequest} request to be translate.
      *
-     * @return {@link TranslationRequest} containing translated request,
-     *         or null if translation could not be done.
-     * @throws IllegalStateException if this TextClassification session was destroyed when calls
+     * @throws IllegalStateException if this Translator session was destroyed when called.
+     *
+     * @deprecated use {@link #translate(TranslationRequest, CancellationSignal,
+     *             Executor, Consumer)} instead.
+     * @hide
      */
-    //TODO: Add cancellation signal
+    @Deprecated
     @Nullable
     public void translate(@NonNull TranslationRequest request,
             @NonNull @CallbackExecutor Executor executor,
@@ -250,7 +254,52 @@
         final ITranslationCallback responseCallback =
                 new TranslationResponseCallbackImpl(callback, executor);
         try {
-            mDirectServiceBinder.onTranslationRequest(request, mId, responseCallback);
+            mDirectServiceBinder.onTranslationRequest(request, mId,
+                    CancellationSignal.createTransport(), responseCallback);
+        } catch (RemoteException e) {
+            Log.w(TAG, "RemoteException calling requestTranslate(): " + e);
+        }
+    }
+
+    /**
+     * Requests a translation for the provided {@link TranslationRequest} using the Translator's
+     * source spec and destination spec.
+     *
+     * @param request {@link TranslationRequest} request to be translate.
+     * @param cancellationSignal signal to cancel the operation in progress.
+     * @param executor Executor to run callback operations
+     * @param callback {@link Consumer} to receive the translation response. Multiple responses may
+     *                 be received if {@link TranslationRequest#FLAG_PARTIAL_RESPONSES} is set.
+     *
+     * @throws IllegalStateException if this Translator session was destroyed when called.
+     */
+    @Nullable
+    public void translate(@NonNull TranslationRequest request,
+            @Nullable CancellationSignal cancellationSignal,
+            @NonNull @CallbackExecutor Executor executor,
+            @NonNull Consumer<TranslationResponse> callback) {
+        Objects.requireNonNull(request, "Translation request cannot be null");
+        Objects.requireNonNull(executor, "Executor cannot be null");
+        Objects.requireNonNull(callback, "Callback cannot be null");
+
+        if (isDestroyed()) {
+            // TODO(b/176464808): Disallow multiple Translator now, it will throw
+            //  IllegalStateException. Need to discuss if we can allow multiple Translators.
+            throw new IllegalStateException(
+                    "This translator has been destroyed");
+        }
+
+        ICancellationSignal transport = null;
+        if (cancellationSignal != null) {
+            transport = CancellationSignal.createTransport();
+            cancellationSignal.setRemote(transport);
+        }
+        final ITranslationCallback responseCallback =
+                new TranslationResponseCallbackImpl(callback, executor);
+
+        try {
+            mDirectServiceBinder.onTranslationRequest(request, mId, transport,
+                    responseCallback);
         } catch (RemoteException e) {
             Log.w(TAG, "RemoteException calling requestTranslate(): " + e);
         }
@@ -298,7 +347,8 @@
         final ITranslationCallback translationCallback =
                 new TranslationResponseCallbackImpl(callback, executor);
         try {
-            mDirectServiceBinder.onTranslationRequest(request, mId, translationCallback);
+            mDirectServiceBinder.onTranslationRequest(request, mId,
+                    CancellationSignal.createTransport(), translationCallback);
         } catch (RemoteException e) {
             Log.w(TAG, "RemoteException calling flushRequest");
         }
diff --git a/core/java/android/view/translation/UiTranslationController.java b/core/java/android/view/translation/UiTranslationController.java
index c09e8bd..b6d3d09 100644
--- a/core/java/android/view/translation/UiTranslationController.java
+++ b/core/java/android/view/translation/UiTranslationController.java
@@ -100,7 +100,7 @@
      * Update the Ui translation state.
      */
     public void updateUiTranslationState(@UiTranslationState int state, TranslationSpec sourceSpec,
-            TranslationSpec destSpec, List<AutofillId> views) {
+            TranslationSpec targetSpec, List<AutofillId> views) {
         if (!mActivity.isResumed() && (state == STATE_UI_TRANSLATION_STARTED
                 || state == STATE_UI_TRANSLATION_RESUMED)) {
             return;
@@ -113,11 +113,11 @@
         switch (state) {
             case STATE_UI_TRANSLATION_STARTED:
                 final Pair<TranslationSpec, TranslationSpec> specs =
-                        new Pair<>(sourceSpec, destSpec);
+                        new Pair<>(sourceSpec, targetSpec);
                 if (!mTranslators.containsKey(specs)) {
                     mWorkerHandler.sendMessage(PooledLambda.obtainMessage(
                             UiTranslationController::createTranslatorAndStart,
-                            UiTranslationController.this, sourceSpec, destSpec, views));
+                            UiTranslationController.this, sourceSpec, targetSpec, views));
                 } else {
                     onUiTranslationStarted(mTranslators.get(specs), views);
                 }
@@ -362,17 +362,20 @@
                     continue;
                 }
                 mActivity.runOnUiThread(() -> {
-                    if (view.getViewTranslationCallback() == null) {
+                    final ViewTranslationCallback callback = view.getViewTranslationCallback();
+                    if (callback == null) {
                         if (DEBUG) {
                             Log.d(TAG, view + " doesn't support showing translation because of "
                                     + "null ViewTranslationCallback.");
                         }
                         return;
                     }
+
+                    // TODO: Do this for specific views on request only.
+                    callback.enableContentPadding();
+
                     view.onTranslationResponse(response);
-                    if (view.getViewTranslationCallback() != null) {
-                        view.getViewTranslationCallback().onShowTranslation(view);
-                    }
+                    callback.onShowTranslation(view);
                 });
             }
         }
@@ -383,12 +386,13 @@
      * translation when the Translator is created successfully.
      */
     @WorkerThread
-    private void createTranslatorAndStart(TranslationSpec sourceSpec, TranslationSpec destSpec,
+    private void createTranslatorAndStart(TranslationSpec sourceSpec, TranslationSpec targetSpec,
             List<AutofillId> views) {
-        final Translator translator = createTranslatorIfNeeded(sourceSpec, destSpec);
+        // Create Translator
+        final Translator translator = createTranslatorIfNeeded(sourceSpec, targetSpec);
         if (translator == null) {
-            Log.w(TAG, "Can not create Translator for sourceSpec:" + sourceSpec + " destSpec:"
-                    + destSpec);
+            Log.w(TAG, "Can not create Translator for sourceSpec:" + sourceSpec + " targetSpec:"
+                    + targetSpec);
             return;
         }
         onUiTranslationStarted(translator, views);
diff --git a/core/java/android/view/translation/UiTranslationManager.java b/core/java/android/view/translation/UiTranslationManager.java
index 62868ac..130e078 100644
--- a/core/java/android/view/translation/UiTranslationManager.java
+++ b/core/java/android/view/translation/UiTranslationManager.java
@@ -124,7 +124,7 @@
      * ActivityId)} instead.
      *
      * @param sourceSpec {@link TranslationSpec} for the data to be translated.
-     * @param destSpec {@link TranslationSpec} for the translated data.
+     * @param targetSpec {@link TranslationSpec} for the translated data.
      * @param viewIds A list of the {@link View}'s {@link AutofillId} which needs to be translated
      * @param taskId the Activity Task id which needs ui translation
      * @deprecated Use {@code startTranslation(TranslationSpec, TranslationSpec, List<AutofillId>,
@@ -137,17 +137,17 @@
     @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION)
     @SystemApi
     public void startTranslation(@NonNull TranslationSpec sourceSpec,
-            @NonNull TranslationSpec destSpec, @NonNull List<AutofillId> viewIds,
+            @NonNull TranslationSpec targetSpec, @NonNull List<AutofillId> viewIds,
             int taskId) {
         Objects.requireNonNull(sourceSpec);
-        Objects.requireNonNull(destSpec);
+        Objects.requireNonNull(targetSpec);
         Objects.requireNonNull(viewIds);
         if (viewIds.size() == 0) {
             throw new IllegalArgumentException("Invalid empty views: " + viewIds);
         }
         try {
             mService.updateUiTranslationStateByTaskId(STATE_UI_TRANSLATION_STARTED, sourceSpec,
-                    destSpec, viewIds, taskId, mContext.getUserId());
+                    targetSpec, viewIds, taskId, mContext.getUserId());
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -157,11 +157,11 @@
      * Request ui translation for a given Views.
      *
      * @param sourceSpec {@link TranslationSpec} for the data to be translated.
-     * @param destSpec {@link TranslationSpec} for the translated data.
+     * @param targetSpec {@link TranslationSpec} for the translated data.
      * @param viewIds A list of the {@link View}'s {@link AutofillId} which needs to be translated
      * @param activityId the identifier for the Activity which needs ui translation
      * @throws IllegalArgumentException if the no {@link View}'s {@link AutofillId} in the list
-     * @throws NullPointerException the sourceSpec, destSpec, viewIds, activityId or
+     * @throws NullPointerException the sourceSpec, targetSpec, viewIds, activityId or
      *         {@link android.app.assist.ActivityId#getToken()} is {@code null}
      *
      * @hide
@@ -169,11 +169,11 @@
     @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION)
     @SystemApi
     public void startTranslation(@NonNull TranslationSpec sourceSpec,
-            @NonNull TranslationSpec destSpec, @NonNull List<AutofillId> viewIds,
+            @NonNull TranslationSpec targetSpec, @NonNull List<AutofillId> viewIds,
             @NonNull ActivityId activityId) {
         // TODO(b/177789967): Return result code or find a way to notify the status.
         Objects.requireNonNull(sourceSpec);
-        Objects.requireNonNull(destSpec);
+        Objects.requireNonNull(targetSpec);
         Objects.requireNonNull(viewIds);
         Objects.requireNonNull(activityId);
         Objects.requireNonNull(activityId.getToken());
@@ -182,7 +182,7 @@
         }
         try {
             mService.updateUiTranslationState(STATE_UI_TRANSLATION_STARTED, sourceSpec,
-                    destSpec, viewIds, activityId.getToken(), activityId.getTaskId(),
+                    targetSpec, viewIds, activityId.getToken(), activityId.getTaskId(),
                     mContext.getUserId());
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
@@ -208,7 +208,7 @@
     public void finishTranslation(int taskId) {
         try {
             mService.updateUiTranslationStateByTaskId(STATE_UI_TRANSLATION_FINISHED,
-                    null /* sourceSpec */, null /* destSpec*/, null /* viewIds */, taskId,
+                    null /* sourceSpec */, null /* targetSpec */, null /* viewIds */, taskId,
                     mContext.getUserId());
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
@@ -232,7 +232,7 @@
             Objects.requireNonNull(activityId);
             Objects.requireNonNull(activityId.getToken());
             mService.updateUiTranslationState(STATE_UI_TRANSLATION_FINISHED,
-                    null /* sourceSpec */, null /* destSpec*/, null /* viewIds */,
+                    null /* sourceSpec */, null /* targetSpec */, null /* viewIds */,
                     activityId.getToken(), activityId.getTaskId(), mContext.getUserId());
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
@@ -257,7 +257,7 @@
     public void pauseTranslation(int taskId) {
         try {
             mService.updateUiTranslationStateByTaskId(STATE_UI_TRANSLATION_PAUSED,
-                    null /* sourceSpec */, null /* destSpec*/, null /* viewIds */, taskId,
+                    null /* sourceSpec */, null /* targetSpec */, null /* viewIds */, taskId,
                     mContext.getUserId());
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
@@ -281,7 +281,7 @@
             Objects.requireNonNull(activityId);
             Objects.requireNonNull(activityId.getToken());
             mService.updateUiTranslationState(STATE_UI_TRANSLATION_PAUSED,
-                    null /* sourceSpec */, null /* destSpec*/, null /* viewIds */,
+                    null /* sourceSpec */, null /* targetSpec */, null /* viewIds */,
                     activityId.getToken(), activityId.getTaskId(), mContext.getUserId());
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
@@ -306,7 +306,7 @@
     public void resumeTranslation(int taskId) {
         try {
             mService.updateUiTranslationStateByTaskId(STATE_UI_TRANSLATION_RESUMED,
-                    null /* sourceSpec */, null /* destSpec*/, null /* viewIds */,
+                    null /* sourceSpec */, null /* targetSpec */, null /* viewIds */,
                     taskId, mContext.getUserId());
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
@@ -330,7 +330,7 @@
             Objects.requireNonNull(activityId);
             Objects.requireNonNull(activityId.getToken());
             mService.updateUiTranslationState(STATE_UI_TRANSLATION_RESUMED,
-                    null /* sourceSpec */, null /* destSpec*/, null /* viewIds */,
+                    null /* sourceSpec */, null /* targetSpec */, null /* viewIds */,
                     activityId.getToken(), activityId.getTaskId(), mContext.getUserId());
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
diff --git a/core/java/android/view/translation/ViewTranslationCallback.java b/core/java/android/view/translation/ViewTranslationCallback.java
index c895984..78b4855 100644
--- a/core/java/android/view/translation/ViewTranslationCallback.java
+++ b/core/java/android/view/translation/ViewTranslationCallback.java
@@ -48,4 +48,16 @@
      * @return {@code true} if the View handles clearing the translation.
      */
     boolean onClearTranslation(@NonNull View view);
+
+    /**
+     * Enables padding on the view's original content.
+     * <p>
+     * This is useful when we do not modify the content directly, rather use a mechanism like
+     * {@link android.text.method.TransformationMethod}. If the app misbehaves when the displayed
+     * translation and the underlying content have different sizes, the platform intelligence can
+     * request that the original content be padded to make the sizes match.
+     *
+     * @hide
+     */
+    default void enableContentPadding() {}
 }
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index b13cfc0..e47129e 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -943,6 +943,13 @@
             View target = root.findViewById(viewId);
             if (target == null) return;
 
+            // Ensure that we are applying to an AppWidget root
+            if (!(rootParent instanceof AppWidgetHostView)) {
+                Log.e(LOG_TAG, "setRemoteAdapter can only be used for "
+                        + "AppWidgets (root id: " + viewId + ")");
+                return;
+            }
+
             if (!(target instanceof AdapterView)) {
                 Log.e(LOG_TAG, "Cannot call setRemoteAdapter on a view which is not "
                         + "an AdapterView (id: " + viewId + ")");
@@ -1008,14 +1015,15 @@
 
             // Ensure that we are applying to an AppWidget root
             if (!(rootParent instanceof AppWidgetHostView)) {
-                Log.e(LOG_TAG, "SetRemoteViewsAdapterIntent action can only be used for " +
-                        "AppWidgets (root id: " + viewId + ")");
+                Log.e(LOG_TAG, "setRemoteAdapter can only be used for "
+                        + "AppWidgets (root id: " + viewId + ")");
                 return;
             }
+
             // Ensure that we are calling setRemoteAdapter on an AdapterView that supports it
             if (!(target instanceof AbsListView) && !(target instanceof AdapterViewAnimator)) {
-                Log.e(LOG_TAG, "Cannot setRemoteViewsAdapter on a view which is not " +
-                        "an AbsListView or AdapterViewAnimator (id: " + viewId + ")");
+                Log.e(LOG_TAG, "Cannot setRemoteAdapter on a view which is not "
+                        + "an AbsListView or AdapterViewAnimator (id: " + viewId + ")");
                 return;
             }
 
@@ -1897,31 +1905,49 @@
         }
 
         @Override
-        protected @NonNull Object getParameterValue(View view) throws ActionException {
+        protected Object getParameterValue(View view) throws ActionException {
             Resources resources = view.getContext().getResources();
             try {
                 switch (this.mResourceType) {
                     case DIMEN_RESOURCE:
-                        if (this.type == BaseReflectionAction.INT) {
-                            return resources.getDimensionPixelSize(this.mResId);
-                        }
-                        return resources.getDimension(this.mResId);
-                    case COLOR_RESOURCE:
-                        switch(this.type) {
+                        switch (this.type) {
                             case BaseReflectionAction.INT:
-                                return view.getContext().getColor(this.mResId);
-                            case BaseReflectionAction.COLOR_STATE_LIST:
-                                return view.getContext().getColorStateList(this.mResId);
+                                return mResId == 0 ? 0 : resources.getDimensionPixelSize(mResId);
+                            case BaseReflectionAction.FLOAT:
+                                return mResId == 0 ? 0f : resources.getDimension(mResId);
                             default:
                                 throw new ActionException(
-                                        "color resources must be used as int or ColorStateList, "
+                                        "dimen resources must be used as INT or FLOAT, "
                                                 + "not " + this.type);
                         }
+                    case COLOR_RESOURCE:
+                        switch (this.type) {
+                            case BaseReflectionAction.INT:
+                                return mResId == 0 ? 0 : view.getContext().getColor(mResId);
+                            case BaseReflectionAction.COLOR_STATE_LIST:
+                                return mResId == 0
+                                        ? null : view.getContext().getColorStateList(mResId);
+                            default:
+                                throw new ActionException(
+                                        "color resources must be used as INT or COLOR_STATE_LIST,"
+                                                + " not " + this.type);
+                        }
                     case STRING_RESOURCE:
-                        return resources.getText(this.mResId);
+                        switch (this.type) {
+                            case BaseReflectionAction.CHAR_SEQUENCE:
+                                return mResId == 0 ? null : resources.getText(mResId);
+                            case BaseReflectionAction.STRING:
+                                return mResId == 0 ? null : resources.getString(mResId);
+                            default:
+                                throw new ActionException(
+                                        "string resources must be used as STRING or CHAR_SEQUENCE,"
+                                                + " not " + this.type);
+                        }
                     default:
                         throw new ActionException("unknown resource type: " + this.mResourceType);
                 }
+            } catch (ActionException ex) {
+                throw ex;
             } catch (Throwable t) {
                 throw new ActionException(t);
             }
@@ -1963,50 +1989,62 @@
         }
 
         @Override
-        protected @NonNull Object getParameterValue(View view) throws ActionException {
+        protected Object getParameterValue(View view) throws ActionException {
+            TypedArray typedArray = view.getContext().obtainStyledAttributes(new int[]{mAttrId});
             try {
-                TypedArray typedArray = view.getContext().obtainStyledAttributes(
-                        new int[]{this.mAttrId});
-                try {
-                    if (typedArray.getType(0) == TypedValue.TYPE_NULL) {
-                        throw new ActionException("Attribute 0x" + Integer.toHexString(this.mAttrId)
-                                + " is not defined");
-                    }
-                    switch (this.mResourceType) {
-                        case DIMEN_RESOURCE:
-                            if (this.type == BaseReflectionAction.INT) {
-                                return typedArray.getDimensionPixelSize(0, 0);
-                            }
-                            return typedArray.getDimension(0, 0);
-                        case COLOR_RESOURCE:
-                            switch (this.type) {
-                                case BaseReflectionAction.INT:
-                                    return typedArray.getColor(0, 0);
-                                case BaseReflectionAction.COLOR_STATE_LIST:
-                                    return typedArray.getColorStateList(0);
-                                default:
-                                    throw new ActionException(
-                                            "Color attribute 0x" + Integer.toHexString(this.mAttrId)
-                                                    + " must be used as int or ColorStateList");
-                            }
-                        case STRING_RESOURCE:
-                            String value = typedArray.getString(0);
-                            if (value == null) {
-                                throw new ActionException("Attribute 0x"
-                                        + Integer.toHexString(this.mAttrId)
-                                        + " is not a defined or is not a string");
-                            }
-                            return value;
-                        default:
-                            // Note: This can only be an implementation error.
-                            throw new ActionException(
-                                    "Unknown resource type: " + this.mResourceType);
-                    }
-                } finally {
-                    typedArray.recycle();
+                // When mAttrId == 0, we will depend on the default values below
+                if (mAttrId != 0 && typedArray.getType(0) == TypedValue.TYPE_NULL) {
+                    throw new ActionException("Attribute 0x" + Integer.toHexString(this.mAttrId)
+                            + " is not defined");
                 }
+                switch (this.mResourceType) {
+                    case DIMEN_RESOURCE:
+                        switch (this.type) {
+                            case BaseReflectionAction.INT:
+                                return typedArray.getDimensionPixelSize(0, 0);
+                            case BaseReflectionAction.FLOAT:
+                                return typedArray.getDimension(0, 0);
+                            default:
+                                throw new ActionException(
+                                        "dimen attribute 0x" + Integer.toHexString(this.mAttrId)
+                                                + " must be used as INT or FLOAT,"
+                                                + " not " + this.type);
+                        }
+                    case COLOR_RESOURCE:
+                        switch (this.type) {
+                            case BaseReflectionAction.INT:
+                                return typedArray.getColor(0, 0);
+                            case BaseReflectionAction.COLOR_STATE_LIST:
+                                return typedArray.getColorStateList(0);
+                            default:
+                                throw new ActionException(
+                                        "color attribute 0x" + Integer.toHexString(this.mAttrId)
+                                                + " must be used as INT or COLOR_STATE_LIST,"
+                                                + " not " + this.type);
+                        }
+                    case STRING_RESOURCE:
+                        switch (this.type) {
+                            case BaseReflectionAction.CHAR_SEQUENCE:
+                                return typedArray.getText(0);
+                            case BaseReflectionAction.STRING:
+                                return typedArray.getString(0);
+                            default:
+                                throw new ActionException(
+                                        "string attribute 0x" + Integer.toHexString(this.mAttrId)
+                                                + " must be used as STRING or CHAR_SEQUENCE,"
+                                                + " not " + this.type);
+                        }
+                    default:
+                        // Note: This can only be an implementation error.
+                        throw new ActionException(
+                                "Unknown resource type: " + this.mResourceType);
+                }
+            } catch (ActionException ex) {
+                throw ex;
             } catch (Throwable t) {
                 throw new ActionException(t);
+            } finally {
+                typedArray.recycle();
             }
         }
 
@@ -4511,7 +4549,7 @@
      *
      * @param viewId The id of the view to change
      * @param type The margin being set e.g. {@link #MARGIN_END}
-     * @param attr a dimension attribute to apply to the margin.
+     * @param attr a dimension attribute to apply to the margin, or 0 to clear the margin.
      */
     public void setViewLayoutMarginAttr(@IdRes int viewId, @MarginType int type,
             @AttrRes int attr) {
@@ -4694,6 +4732,8 @@
      * The dimension will be resolved from the resources at the time the {@link RemoteViews} is
      * (re-)applied.
      *
+     * Undefined resources will result in an exception, except 0 which will resolve to 0.
+     *
      * @param viewId The id of the view on which to call the method.
      * @param methodName The name of the method to call.
      * @param dimenResource The resource to resolve and pass as argument to the method.
@@ -4728,6 +4768,8 @@
      * The dimension will be resolved from the theme attribute at the time the
      * {@link RemoteViews} is (re-)applied.
      *
+     * Unresolvable attributes will result in an exception, except 0 which will resolve to 0.
+     *
      * @param viewId The id of the view on which to call the method.
      * @param methodName The name of the method to call.
      * @param dimenAttr The attribute to resolve and pass as argument to the method.
@@ -4744,6 +4786,8 @@
      * The Color will be resolved from the resources at the time the {@link RemoteViews} is (re-)
      * applied.
      *
+     * Undefined resources will result in an exception, except 0 which will resolve to 0.
+     *
      * @param viewId The id of the view on which to call the method.
      * @param methodName The name of the method to call.
      * @param colorResource The resource to resolve and pass as argument to the method.
@@ -4760,6 +4804,8 @@
      * The Color will be resolved from the theme attribute at the time the {@link RemoteViews} is
      * (re-)applied.
      *
+     * Unresolvable attributes will result in an exception, except 0 which will resolve to 0.
+     *
      * @param viewId The id of the view on which to call the method.
      * @param methodName The name of the method to call.
      * @param colorAttribute The theme attribute to resolve and pass as argument to the method.
@@ -4838,6 +4884,8 @@
      * The ColorStateList will be resolved from the resources at the time the {@link RemoteViews} is
      * (re-)applied.
      *
+     * Undefined resources will result in an exception, except 0 which will resolve to null.
+     *
      * @param viewId The id of the view on which to call the method.
      * @param methodName The name of the method to call.
      * @param colorResource The resource to resolve and pass as argument to the method.
@@ -4855,6 +4903,8 @@
      * The ColorStateList will be resolved from the theme attribute at the time the
      * {@link RemoteViews} is (re-)applied.
      *
+     * Unresolvable attributes will result in an exception, except 0 which will resolve to null.
+     *
      * @param viewId The id of the view on which to call the method.
      * @param methodName The name of the method to call.
      * @param colorAttr The theme attribute to resolve and pass as argument to the method.
@@ -4895,6 +4945,8 @@
      * The dimension will be resolved from the resources at the time the {@link RemoteViews} is
      * (re-)applied.
      *
+     * Undefined resources will result in an exception, except 0 which will resolve to 0f.
+     *
      * @param viewId The id of the view on which to call the method.
      * @param methodName The name of the method to call.
      * @param dimenResource The resource to resolve and pass as argument to the method.
@@ -4931,6 +4983,8 @@
      * The dimension will be resolved from the theme attribute at the time the {@link RemoteViews}
      * is (re-)applied.
      *
+     * Unresolvable attributes will result in an exception, except 0 which will resolve to 0f.
+     *
      * @param viewId The id of the view on which to call the method.
      * @param methodName The name of the method to call.
      * @param dimenAttr The attribute to resolve and pass as argument to the method.
@@ -4992,6 +5046,8 @@
      * The CharSequence will be resolved from the resources at the time the {@link RemoteViews} is
      * (re-)applied.
      *
+     * Undefined resources will result in an exception, except 0 which will resolve to null.
+     *
      * @param viewId The id of the view on which to call the method.
      * @param methodName The name of the method to call.
      * @param stringResource The resource to resolve and pass as argument to the method.
@@ -5009,6 +5065,8 @@
      * The CharSequence will be resolved from the theme attribute at the time the
      * {@link RemoteViews} is (re-)applied.
      *
+     * Unresolvable attributes will result in an exception, except 0 which will resolve to null.
+     *
      * @param viewId The id of the view on which to call the method.
      * @param methodName The name of the method to call.
      * @param stringAttribute The attribute to resolve and pass as argument to the method.
diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java
index 287c182..a16c151 100644
--- a/core/java/android/widget/SpellChecker.java
+++ b/core/java/android/widget/SpellChecker.java
@@ -28,6 +28,7 @@
 import android.view.textservice.SentenceSuggestionsInfo;
 import android.view.textservice.SpellCheckerSession;
 import android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener;
+import android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams;
 import android.view.textservice.SuggestionsInfo;
 import android.view.textservice.TextInfo;
 import android.view.textservice.TextServicesManager;
@@ -124,10 +125,12 @@
                     | SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO
                     | SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_GRAMMAR_ERROR
                     | SuggestionsInfo.RESULT_ATTR_DONT_SHOW_UI_FOR_SUGGESTIONS;
+            SpellCheckerSessionParams params = new SpellCheckerSessionParams.Builder()
+                    .setLocale(mCurrentLocale)
+                    .setSupportedAttributes(supportedAttributes)
+                    .build();
             mSpellCheckerSession = mTextServicesManager.newSpellCheckerSession(
-                    mCurrentLocale, false, supportedAttributes,
-                    null /* Bundle not currently used by the textServicesManager */,
-                    mTextView.getContext().getMainExecutor(), this);
+                    params, mTextView.getContext().getMainExecutor(), this);
         }
 
         // Restore SpellCheckSpans in pool
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 40c79cf..1953a76 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -770,6 +770,8 @@
     private final boolean mUseInternationalizedInput;
     // True if fallback fonts that end up getting used should be allowed to affect line spacing.
     /* package */ boolean mUseFallbackLineSpacing;
+    // True if the view text can be padded for compat reasons, when the view is translated.
+    private final boolean mUseTextPaddingForUiTranslation;
 
     @ViewDebug.ExportedProperty(category = "text")
     @UnsupportedAppUsage
@@ -1480,6 +1482,8 @@
         final int targetSdkVersion = context.getApplicationInfo().targetSdkVersion;
         mUseInternationalizedInput = targetSdkVersion >= VERSION_CODES.O;
         mUseFallbackLineSpacing = targetSdkVersion >= VERSION_CODES.P;
+        // TODO(b/179693024): Use a ChangeId instead.
+        mUseTextPaddingForUiTranslation = targetSdkVersion <= Build.VERSION_CODES.R;
 
         if (inputMethod != null) {
             Class<?> c;
@@ -2372,6 +2376,12 @@
     @ViewDebug.CapturedViewProperty
     @InspectableProperty
     public CharSequence getText() {
+        if (mUseTextPaddingForUiTranslation
+                && mDefaultTranslationCallback != null
+                && mDefaultTranslationCallback.isTextPaddingEnabled()
+                && mDefaultTranslationCallback.isShowingTranslation()) {
+            return mDefaultTranslationCallback.getPaddedText(mText, mTransformed);
+        }
         return mText;
     }
 
diff --git a/core/java/android/widget/TextViewTranslationCallback.java b/core/java/android/widget/TextViewTranslationCallback.java
index a479b8a..73f19a7 100644
--- a/core/java/android/widget/TextViewTranslationCallback.java
+++ b/core/java/android/widget/TextViewTranslationCallback.java
@@ -17,6 +17,7 @@
 package android.widget;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.os.Build;
 import android.text.method.TranslationTransformationMethod;
 import android.util.Log;
@@ -33,7 +34,7 @@
  */
 public class TextViewTranslationCallback implements ViewTranslationCallback {
 
-    private static final String TAG = "TextViewTranslationCallback";
+    private static final String TAG = "TextViewTranslationCb";
 
     // TODO(b/182433547): remove Build.IS_DEBUGGABLE before ship. Enable the logging in debug build
     //  to help the debug during the development phase
@@ -41,6 +42,9 @@
             || Build.IS_DEBUGGABLE;
 
     private TranslationTransformationMethod mTranslationTransformation;
+    private boolean mIsShowingTranslation = false;
+    private boolean mIsTextPaddingEnabled = false;
+    private CharSequence mPaddedText;
 
     /**
      * Invoked by the platform when receiving the successful {@link ViewTranslationResponse} for the
@@ -74,6 +78,7 @@
      */
     @Override
     public boolean onShowTranslation(@NonNull View view) {
+        mIsShowingTranslation = true;
         if (mTranslationTransformation != null) {
             ((TextView) view).setTransformationMethod(mTranslationTransformation);
         } else {
@@ -90,6 +95,7 @@
      */
     @Override
     public boolean onHideTranslation(@NonNull View view) {
+        mIsShowingTranslation = false;
         // Restore to original text content.
         if (mTranslationTransformation != null) {
             ((TextView) view).setTransformationMethod(
@@ -110,9 +116,9 @@
     public boolean onClearTranslation(@NonNull View view) {
         // Restore to original text content and clear TranslationTransformation
         if (mTranslationTransformation != null) {
-            ((TextView) view).setTransformationMethod(
-                    mTranslationTransformation.getOriginalTransformationMethod());
+            onHideTranslation(view);
             clearTranslationTransformation();
+            mPaddedText = null;
         } else {
             if (DEBUG) {
                 // TODO(b/182433547): remove before S release
@@ -121,4 +127,59 @@
         }
         return true;
     }
+
+    boolean isShowingTranslation() {
+        return mIsShowingTranslation;
+    }
+
+    @Override
+    public void enableContentPadding() {
+        mIsTextPaddingEnabled = true;
+    }
+
+    /**
+     * Returns whether readers of the view text should receive padded text for compatibility
+     * reasons. The view's original text will be padded to match the length of the translated text.
+     */
+    boolean isTextPaddingEnabled() {
+        return mIsTextPaddingEnabled;
+    }
+
+    /**
+     * Returns the view's original text with padding added. If the translated text isn't longer than
+     * the original text, returns the original text itself.
+     *
+     * @param text the view's original text
+     * @param translatedText the view's translated text
+     * @see #isTextPaddingEnabled()
+     */
+    @Nullable
+    CharSequence getPaddedText(CharSequence text, CharSequence translatedText) {
+        if (text == null) {
+            return null;
+        }
+        if (mPaddedText == null) {
+            mPaddedText = computePaddedText(text, translatedText);
+        }
+        return mPaddedText;
+    }
+
+    @NonNull
+    private CharSequence computePaddedText(CharSequence text, CharSequence translatedText) {
+        if (translatedText == null) {
+            return text;
+        }
+        int newLength = translatedText.length();
+        if (newLength <= text.length()) {
+            return text;
+        }
+        StringBuilder sb = new StringBuilder(newLength);
+        sb.append(text);
+        for (int i = text.length(); i < newLength; i++) {
+            sb.append(COMPAT_PAD_CHARACTER);
+        }
+        return sb;
+    }
+
+    private static final char COMPAT_PAD_CHARACTER = '\u2002';
 }
diff --git a/core/java/android/window/StartingWindowInfo.java b/core/java/android/window/StartingWindowInfo.java
index 08bb1a9..385d6cff 100644
--- a/core/java/android/window/StartingWindowInfo.java
+++ b/core/java/android/window/StartingWindowInfo.java
@@ -142,6 +142,12 @@
      */
     public boolean isKeyguardOccluded = false;
 
+    /**
+     * TaskSnapshot.
+     * @hide
+     */
+    public TaskSnapshot mTaskSnapshot;
+
     public StartingWindowInfo() {
 
     }
@@ -164,6 +170,7 @@
         dest.writeTypedObject(mainWindowLayoutParams, flags);
         dest.writeInt(splashScreenThemeResId);
         dest.writeBoolean(isKeyguardOccluded);
+        dest.writeTypedObject(mTaskSnapshot, flags);
     }
 
     void readFromParcel(@NonNull Parcel source) {
@@ -175,6 +182,7 @@
         mainWindowLayoutParams = source.readTypedObject(WindowManager.LayoutParams.CREATOR);
         splashScreenThemeResId = source.readInt();
         isKeyguardOccluded = source.readBoolean();
+        mTaskSnapshot = source.readTypedObject(TaskSnapshot.CREATOR);
     }
 
     @Override
diff --git a/core/java/com/android/internal/app/IAppOpsCallback.aidl b/core/java/com/android/internal/app/IAppOpsCallback.aidl
index 15221b1..024ff66 100644
--- a/core/java/com/android/internal/app/IAppOpsCallback.aidl
+++ b/core/java/com/android/internal/app/IAppOpsCallback.aidl
@@ -17,7 +17,7 @@
 package com.android.internal.app;
 
 // This interface is also used by native code, so must
-// be kept in sync with frameworks/native/libs/binder/include/binder/IAppOpsCallback.h
+// be kept in sync with frameworks/native/libs/permission/include/binder/IAppOpsCallback.h
 oneway interface IAppOpsCallback {
     void opChanged(int op, int uid, String packageName);
 }
diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl
index 8a6856e..281702e 100644
--- a/core/java/com/android/internal/app/IAppOpsService.aidl
+++ b/core/java/com/android/internal/app/IAppOpsService.aidl
@@ -33,7 +33,7 @@
 
 interface IAppOpsService {
     // These methods are also called by native code, so must
-    // be kept in sync with frameworks/native/libs/binder/include/binder/IAppOpsService.h
+    // be kept in sync with frameworks/native/libs/permission/include/binder/IAppOpsService.h
     // and not be reordered
     int checkOperation(int code, int uid, String packageName);
     SyncNotedAppOp noteOperation(int code, int uid, String packageName, @nullable String attributionTag,
diff --git a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
index 5a5e745..dddc08a 100644
--- a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
+++ b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
@@ -261,4 +261,11 @@
         in AudioFormat audioFormat,
         in PersistableBundle options,
         in IMicrophoneHotwordDetectionVoiceInteractionCallback callback);
+
+    /**
+     * Test API to simulate to trigger hardware recognition event for test.
+     */
+    void triggerHardwareRecognitionEventForTest(
+            in SoundTrigger.KeyphraseRecognitionEvent event,
+            in IHotwordRecognitionStatusCallback callback);
 }
diff --git a/core/java/com/android/internal/infra/AbstractRemoteService.java b/core/java/com/android/internal/infra/AbstractRemoteService.java
index f63ac2e..8b24f64 100644
--- a/core/java/com/android/internal/infra/AbstractRemoteService.java
+++ b/core/java/com/android/internal/infra/AbstractRemoteService.java
@@ -88,7 +88,7 @@
     private final int mBindingFlags;
     protected I mService;
 
-    private boolean mBinding;
+    private boolean mConnecting;
     private boolean mDestroyed;
     private boolean mServiceDied;
     private boolean mCompleted;
@@ -228,7 +228,7 @@
         if (mService != null) {
             mService.asBinder().unlinkToDeath(this, 0);
         }
-        mBinding = false;
+        mConnecting = true;
         mService = null;
         mServiceDied = true;
         cancelScheduledUnbind();
@@ -435,10 +435,10 @@
     }
 
     private void handleEnsureBound() {
-        if (handleIsBound() || mBinding) return;
+        if (handleIsBound() || mConnecting) return;
 
         if (mVerbose) Slog.v(mTag, "ensureBound()");
-        mBinding = true;
+        mConnecting = true;
 
         final int flags = Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
                 | Context.BIND_INCLUDE_CAPABILITIES | mBindingFlags;
@@ -448,7 +448,7 @@
 
         if (!willBind) {
             Slog.w(mTag, "could not bind to " + mIntent + " using flags " + flags);
-            mBinding = false;
+            mConnecting = false;
 
             if (!mServiceDied) {
                 handleBinderDied();
@@ -457,10 +457,10 @@
     }
 
     private void handleEnsureUnbound() {
-        if (!handleIsBound() && !mBinding) return;
+        if (!handleIsBound() && !mConnecting) return;
 
         if (mVerbose) Slog.v(mTag, "ensureUnbound()");
-        mBinding = false;
+        mConnecting = false;
         if (handleIsBound()) {
             handleOnConnectedStateChangedInternal(false);
             if (mService != null) {
@@ -476,12 +476,12 @@
         @Override
         public void onServiceConnected(ComponentName name, IBinder service) {
             if (mVerbose) Slog.v(mTag, "onServiceConnected()");
-            if (mDestroyed || !mBinding) {
+            if (mDestroyed || !mConnecting) {
                 // This is abnormal. Unbinding the connection has been requested already.
                 Slog.wtf(mTag, "onServiceConnected() was dispatched after unbindService.");
                 return;
             }
-            mBinding = false;
+            mConnecting = false;
             try {
                 service.linkToDeath(AbstractRemoteService.this, 0);
             } catch (RemoteException re) {
@@ -496,7 +496,7 @@
         @Override
         public void onServiceDisconnected(ComponentName name) {
             if (mVerbose) Slog.v(mTag, "onServiceDisconnected()");
-            mBinding = true;
+            mConnecting = true;
             mService = null;
         }
 
diff --git a/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl b/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl
index 20e520e..4365966 100644
--- a/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl
+++ b/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl
@@ -30,7 +30,7 @@
  */
 oneway interface IInputMethodPrivilegedOperations {
     void setImeWindowStatusAsync(int vis, int backDisposition);
-    void reportStartInput(in IBinder startInputToken, in IVoidResultCallback resultCallback);
+    void reportStartInputAsync(in IBinder startInputToken);
     void createInputContentUriToken(in Uri contentUri, in String packageName,
             in IIInputContentUriTokenResultCallback resultCallback);
     void reportFullscreenMode(boolean fullscreen, in IVoidResultCallback resultCallback);
diff --git a/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java b/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java
index 1000914..555488d 100644
--- a/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java
+++ b/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java
@@ -123,21 +123,18 @@
     }
 
     /**
-     * Calls {@link IInputMethodPrivilegedOperations#reportStartInput(IBinder,
-     * IVoidResultCallback)}.
+     * Calls {@link IInputMethodPrivilegedOperations#reportStartInputAsync(IBinder)}.
      *
      * @param startInputToken {@link IBinder} token to distinguish startInput session
      */
     @AnyThread
-    public void reportStartInput(IBinder startInputToken) {
+    public void reportStartInputAsync(IBinder startInputToken) {
         final IInputMethodPrivilegedOperations ops = mOps.getAndWarnIfNull();
         if (ops == null) {
             return;
         }
         try {
-            final Completable.Void value = Completable.createVoid();
-            ops.reportStartInput(startInputToken, ResultCallbacks.of(value));
-            Completable.getResult(value);
+            ops.reportStartInputAsync(startInputToken);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index cb1900f..82ec737 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -6951,7 +6951,8 @@
     /**
      * Returns the names of custom power components.
      */
-    public @NonNull String[] getCustomPowerComponentNames() {
+    @Override
+    public @NonNull String[] getCustomEnergyConsumerNames() {
         if (mGlobalMeasuredEnergyStats == null) {
             return new String[0];
         }
@@ -12087,7 +12088,7 @@
     /**
      * Distribute Bluetooth energy info and network traffic to apps.
      *
-     * @param info The energy information from the bluetooth controller.
+     * @param info The accumulated energy information from the bluetooth controller.
      */
     public void updateBluetoothStateLocked(@Nullable final BluetoothActivityEnergyInfo info,
             final long consumedChargeUC, long elapsedRealtimeMs, long uptimeMs) {
@@ -12099,9 +12100,6 @@
             return;
         }
         if (!mOnBatteryInternal || mIgnoreNextExternalStats) {
-            // TODO(174818545): mLastBluetoothActivityInfo is actually extremely suspicious.
-            //  Firstly, the following line was originally missing. But even more so, BESW says that
-            //  info is a delta, not a total, so this entire algorithm requires review.
             mLastBluetoothActivityInfo.set(info);
             return;
         }
diff --git a/core/java/com/android/internal/os/BatteryUsageStatsProvider.java b/core/java/com/android/internal/os/BatteryUsageStatsProvider.java
index c3986c2..9ad7c15 100644
--- a/core/java/com/android/internal/os/BatteryUsageStatsProvider.java
+++ b/core/java/com/android/internal/os/BatteryUsageStatsProvider.java
@@ -21,6 +21,7 @@
 import android.os.BatteryStats;
 import android.os.BatteryUsageStats;
 import android.os.BatteryUsageStatsQuery;
+import android.os.SystemClock;
 import android.os.UidBatteryConsumer;
 import android.util.SparseArray;
 
@@ -36,12 +37,12 @@
  */
 public class BatteryUsageStatsProvider {
     private final Context mContext;
-    private final BatteryStatsImpl mStats;
+    private final BatteryStats mStats;
     private final PowerProfile mPowerProfile;
     private final Object mLock = new Object();
     private List<PowerCalculator> mPowerCalculators;
 
-    public BatteryUsageStatsProvider(Context context, BatteryStatsImpl stats) {
+    public BatteryUsageStatsProvider(Context context, BatteryStats stats) {
         mContext = context;
         mStats = stats;
         mPowerProfile = new PowerProfile(mContext);
@@ -97,7 +98,7 @@
             allowableStatsAge = Math.min(allowableStatsAge, query.getMaxStatsAge());
         }
 
-        return mStats.mClocks.elapsedRealtime() - lastUpdateTimeStampMs > allowableStatsAge;
+        return elapsedRealtime() - lastUpdateTimeStampMs > allowableStatsAge;
     }
 
     /**
@@ -120,10 +121,10 @@
      */
     @VisibleForTesting
     public BatteryUsageStats getBatteryUsageStats(BatteryUsageStatsQuery query) {
-        final long realtimeUs = mStats.mClocks.elapsedRealtime() * 1000;
-        final long uptimeUs = mStats.mClocks.uptimeMillis() * 1000;
+        final long realtimeUs = elapsedRealtime() * 1000;
+        final long uptimeUs = uptimeMillis() * 1000;
 
-        final String[] customPowerComponentNames = mStats.getCustomPowerComponentNames();
+        final String[] customPowerComponentNames = mStats.getCustomEnergyConsumerNames();
 
         // TODO(b/174186358): read extra time component number from configuration
         final int customTimeComponentCount = 0;
@@ -154,16 +155,22 @@
 
         if ((query.getFlags()
                 & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY) != 0) {
+            if (!(mStats instanceof BatteryStatsImpl)) {
+                throw new UnsupportedOperationException(
+                        "History cannot be included for " + getClass().getName());
+            }
+
+            BatteryStatsImpl batteryStatsImpl = (BatteryStatsImpl) mStats;
             ArrayList<BatteryStats.HistoryTag> tags = new ArrayList<>(
-                    mStats.mHistoryTagPool.size());
+                    batteryStatsImpl.mHistoryTagPool.size());
             for (Map.Entry<BatteryStats.HistoryTag, Integer> entry :
-                    mStats.mHistoryTagPool.entrySet()) {
+                    batteryStatsImpl.mHistoryTagPool.entrySet()) {
                 final BatteryStats.HistoryTag tag = entry.getKey();
                 tag.poolIdx = entry.getValue();
                 tags.add(tag);
             }
 
-            batteryUsageStatsBuilder.setBatteryHistory(mStats.mHistoryBuffer, tags);
+            batteryUsageStatsBuilder.setBatteryHistory(batteryStatsImpl.mHistoryBuffer, tags);
         }
 
         return batteryUsageStatsBuilder.build();
@@ -199,4 +206,20 @@
         return uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_BACKGROUND, realtimeUs,
                 BatteryStats.STATS_SINCE_CHARGED) / 1000;
     }
+
+    private long elapsedRealtime() {
+        if (mStats instanceof BatteryStatsImpl) {
+            return ((BatteryStatsImpl) mStats).mClocks.elapsedRealtime();
+        } else {
+            return SystemClock.elapsedRealtime();
+        }
+    }
+
+    private long uptimeMillis() {
+        if (mStats instanceof BatteryStatsImpl) {
+            return ((BatteryStatsImpl) mStats).mClocks.uptimeMillis();
+        } else {
+            return SystemClock.uptimeMillis();
+        }
+    }
 }
diff --git a/core/java/com/android/internal/os/BinderLatencyObserver.java b/core/java/com/android/internal/os/BinderLatencyObserver.java
index 4ca59be..0079801 100644
--- a/core/java/com/android/internal/os/BinderLatencyObserver.java
+++ b/core/java/com/android/internal/os/BinderLatencyObserver.java
@@ -157,7 +157,10 @@
                 FrameworkStatsLog.BINDER_LATENCY_REPORTED,
                 atom.getBytes(),
                 mPeriodicSamplingInterval,
-                1);
+                1,
+                mBucketCount,
+                mFirstBucketSize,
+                mBucketScaleFactor);
     }
 
     private void noteLatencyDelayed() {
diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java
index 1673362..993e4e7 100644
--- a/core/java/com/android/internal/os/ZygoteConnection.java
+++ b/core/java/com/android/internal/os/ZygoteConnection.java
@@ -149,8 +149,11 @@
                     return null;
                 }
 
-                if (parsedArgs.mUsapPoolStatusSpecified) {
-                    // Handle this once we've released the argBuffer, to avoid opening a second one.
+                if (parsedArgs.mUsapPoolStatusSpecified
+                        || parsedArgs.mApiDenylistExemptions != null
+                        || parsedArgs.mHiddenApiAccessLogSampleRate != -1
+                        || parsedArgs.mHiddenApiAccessStatslogSampleRate != -1) {
+                    // Handle these once we've released argBuffer, to avoid opening a second one.
                     break;
                 }
 
@@ -183,18 +186,6 @@
                     return null;
                 }
 
-                if (parsedArgs.mApiDenylistExemptions != null) {
-                    return handleApiDenylistExemptions(zygoteServer,
-                            parsedArgs.mApiDenylistExemptions);
-                }
-
-                if (parsedArgs.mHiddenApiAccessLogSampleRate != -1
-                        || parsedArgs.mHiddenApiAccessStatslogSampleRate != -1) {
-                    return handleHiddenApiAccessLogSampleRate(zygoteServer,
-                            parsedArgs.mHiddenApiAccessLogSampleRate,
-                            parsedArgs.mHiddenApiAccessStatslogSampleRate);
-                }
-
                 if (parsedArgs.mPermittedCapabilities != 0
                         || parsedArgs.mEffectiveCapabilities != 0) {
                     throw new ZygoteSecurityException("Client may not specify capabilities: "
@@ -311,10 +302,20 @@
                 }
             }
         }
+        // Handle anything that may need a ZygoteCommandBuffer after we've released ours.
         if (parsedArgs.mUsapPoolStatusSpecified) {
-            // Now that we've released argBuffer:
             return handleUsapPoolStatusChange(zygoteServer, parsedArgs.mUsapPoolEnabled);
         }
+        if (parsedArgs.mApiDenylistExemptions != null) {
+            return handleApiDenylistExemptions(zygoteServer,
+                    parsedArgs.mApiDenylistExemptions);
+        }
+        if (parsedArgs.mHiddenApiAccessLogSampleRate != -1
+                || parsedArgs.mHiddenApiAccessStatslogSampleRate != -1) {
+            return handleHiddenApiAccessLogSampleRate(zygoteServer,
+                    parsedArgs.mHiddenApiAccessLogSampleRate,
+                    parsedArgs.mHiddenApiAccessStatslogSampleRate);
+        }
         throw new AssertionError("Shouldn't get here");
     }
 
diff --git a/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl b/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl
index e438d39..a0a0f32 100644
--- a/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl
+++ b/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl
@@ -92,7 +92,7 @@
     void notifyRegistrationFailed(int slotIndex, int subId, in CellIdentity cellIdentity,
             String chosenPlmn, int domain, int causeCode, int additionalCauseCode);
     void notifyBarringInfoChanged(int slotIndex, int subId, in BarringInfo barringInfo);
-    void notifyPhysicalChannelConfigForSubscriber(in int subId,
+    void notifyPhysicalChannelConfigForSubscriber(in int phoneId, in int subId,
             in List<PhysicalChannelConfig> configs);
     void notifyDataEnabled(in int phoneId, int subId, boolean enabled, int reason);
     void notifyAllowedNetworkTypesChanged(in int phoneId, in int subId, in int reason, in long allowedNetworkType);
diff --git a/core/java/com/android/internal/util/LatencyTracker.java b/core/java/com/android/internal/util/LatencyTracker.java
index 90c7282..61a5014 100644
--- a/core/java/com/android/internal/util/LatencyTracker.java
+++ b/core/java/com/android/internal/util/LatencyTracker.java
@@ -95,6 +95,11 @@
      */
     public static final int ACTION_START_RECENTS_ANIMATION = 8;
 
+    /**
+     * Time it takes the sensor to detect rotation.
+     */
+    public static final int ACTION_ROTATE_SCREEN_SENSOR = 9;
+
     private static final int[] ACTIONS_ALL = {
         ACTION_EXPAND_PANEL,
         ACTION_TOGGLE_RECENTS,
@@ -104,7 +109,8 @@
         ACTION_TURN_ON_SCREEN,
         ACTION_ROTATE_SCREEN,
         ACTION_FACE_WAKE_AND_UNLOCK,
-        ACTION_START_RECENTS_ANIMATION
+        ACTION_START_RECENTS_ANIMATION,
+        ACTION_ROTATE_SCREEN_SENSOR
     };
 
     /** @hide */
@@ -117,7 +123,8 @@
         ACTION_TURN_ON_SCREEN,
         ACTION_ROTATE_SCREEN,
         ACTION_FACE_WAKE_AND_UNLOCK,
-        ACTION_START_RECENTS_ANIMATION
+        ACTION_START_RECENTS_ANIMATION,
+        ACTION_ROTATE_SCREEN_SENSOR
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface Action {
@@ -133,6 +140,7 @@
             FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_ROTATE_SCREEN,
             FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_FACE_WAKE_AND_UNLOCK,
             FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_START_RECENTS_ANIMATION,
+            FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_ROTATE_SCREEN_SENSOR
     };
 
     private static LatencyTracker sLatencyTracker;
@@ -209,6 +217,8 @@
                 return "ACTION_FACE_WAKE_AND_UNLOCK";
             case 9:
                 return "ACTION_START_RECENTS_ANIMATION";
+            case 11:
+                return "ACTION_ROTATE_SCREEN_SENSOR";
             default:
                 throw new IllegalArgumentException("Invalid action");
         }
diff --git a/core/java/com/android/internal/view/IInputMethodManager.aidl b/core/java/com/android/internal/view/IInputMethodManager.aidl
index fd13c26b..93cd4e9 100644
--- a/core/java/com/android/internal/view/IInputMethodManager.aidl
+++ b/core/java/com/android/internal/view/IInputMethodManager.aidl
@@ -85,7 +85,7 @@
     oneway void reportActivityView(in IInputMethodClient parentClient, int childDisplayId,
             in float[] matrixValues, in IVoidResultCallback resultCallback);
 
-    oneway void reportPerceptible(in IBinder windowToken, boolean perceptible);
+    oneway void reportPerceptibleAsync(in IBinder windowToken, boolean perceptible);
     /** Remove the IME surface. Requires INTERNAL_SYSTEM_WINDOW permission. */
     oneway void removeImeSurface(in IVoidResultCallback resultCallback);
     /** Remove the IME surface. Requires passing the currently focused window. */
diff --git a/core/java/com/android/internal/view/RecyclerViewCaptureHelper.java b/core/java/com/android/internal/view/RecyclerViewCaptureHelper.java
index 934241a..75bf1ce 100644
--- a/core/java/com/android/internal/view/RecyclerViewCaptureHelper.java
+++ b/core/java/com/android/internal/view/RecyclerViewCaptureHelper.java
@@ -105,6 +105,14 @@
         int prevAnchorTop = anchor.getTop();
         // Note: requestChildRectangleOnScreen may modify rectangle, must pass pass in a copy here
         Rect input = new Rect(requestedContentBounds);
+        // Expand input rect to get the requested rect to be in the center
+        int remainingHeight = recyclerView.getHeight() - recyclerView.getPaddingTop()
+                - recyclerView.getPaddingBottom() - input.height();
+        if (remainingHeight > 0) {
+            input.inset(0, -remainingHeight / 2);
+        }
+        Log.d(TAG, "input (post center adjustment) = " + input);
+
         if (recyclerView.requestChildRectangleOnScreen(anchor, input, true)) {
             int scrolled = prevAnchorTop - anchor.getTop(); // inverse of movement
             Log.d(TAG, "RecyclerView scrolled by " + scrolled + " px");
diff --git a/core/java/com/android/internal/view/ScrollCaptureViewSupport.java b/core/java/com/android/internal/view/ScrollCaptureViewSupport.java
index a41511b..8aa2d57 100644
--- a/core/java/com/android/internal/view/ScrollCaptureViewSupport.java
+++ b/core/java/com/android/internal/view/ScrollCaptureViewSupport.java
@@ -17,6 +17,7 @@
 package com.android.internal.view;
 
 import android.annotation.UiThread;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.pm.ActivityInfo;
 import android.graphics.HardwareRenderer;
@@ -26,6 +27,7 @@
 import android.graphics.RectF;
 import android.graphics.RenderNode;
 import android.os.CancellationSignal;
+import android.provider.Settings;
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.Display.ColorMode;
@@ -53,11 +55,14 @@
 
     private static final String TAG = "ScrollCaptureViewSupport";
 
-    private static final boolean WAIT_FOR_ANIMATION = true;
+    private static final String SETTING_CAPTURE_DELAY = "screenshot.scroll_capture_delay";
+    private static final long SETTING_CAPTURE_DELAY_DEFAULT = 60L; // millis
 
     private final WeakReference<V> mWeakView;
     private final ScrollCaptureViewHelper<V> mViewHelper;
     private final ViewRenderer mRenderer;
+    private final long mPostScrollDelayMillis;
+
     private boolean mStarted;
     private boolean mEnded;
 
@@ -66,6 +71,10 @@
         mRenderer = new ViewRenderer();
         // TODO(b/177649144): provide access to color space from android.media.Image
         mViewHelper = viewHelper;
+        Context context = containingView.getContext();
+        ContentResolver contentResolver = context.getContentResolver();
+        mPostScrollDelayMillis = Settings.Global.getLong(contentResolver,
+                SETTING_CAPTURE_DELAY, SETTING_CAPTURE_DELAY_DEFAULT);
     }
 
     /** Based on ViewRootImpl#updateColorModeIfNeeded */
@@ -120,37 +129,41 @@
     public final void onScrollCaptureImageRequest(ScrollCaptureSession session,
             CancellationSignal signal, Rect requestRect, Consumer<Rect> onComplete) {
         if (signal.isCanceled()) {
+            Log.w(TAG, "onScrollCaptureImageRequest: cancelled!");
             return;
         }
+
         V view = mWeakView.get();
         if (view == null || !view.isVisibleToUser()) {
             // Signal to the controller that we have a problem and can't continue.
             onComplete.accept(new Rect());
             return;
         }
+
         // Ask the view to scroll as needed to bring this area into view.
         ScrollResult scrollResult = mViewHelper.onScrollRequested(view, session.getScrollBounds(),
                 requestRect);
+
         if (scrollResult.availableArea.isEmpty()) {
             onComplete.accept(scrollResult.availableArea);
             return;
         }
-        view.invalidate(); // don't wait for vsync
 
         // For image capture, shift back by scrollDelta to arrive at the location within the view
         // where the requested content will be drawn
         Rect viewCaptureArea = new Rect(scrollResult.availableArea);
         viewCaptureArea.offset(0, -scrollResult.scrollDelta);
 
-        if (WAIT_FOR_ANIMATION) {
-            view.postOnAnimation(() ->  {
+        Runnable captureAction = () -> {
+            if (signal.isCanceled()) {
+                Log.w(TAG, "onScrollCaptureImageRequest: cancelled! skipping render.");
+            } else {
                 mRenderer.renderView(view, viewCaptureArea);
                 onComplete.accept(new Rect(scrollResult.availableArea));
-            });
-        } else {
-            mRenderer.renderView(view, viewCaptureArea);
-            onComplete.accept(new Rect(scrollResult.availableArea));
-        }
+            }
+        };
+
+        view.postOnAnimationDelayed(captureAction, mPostScrollDelayMillis);
     }
 
     @Override
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index ffba628..27f82f1 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -30,6 +30,7 @@
 #include <android/hardware/display/IDeviceProductInfoConstants.h>
 #include <android/os/IInputConstants.h>
 #include <android_runtime/AndroidRuntime.h>
+#include <android_runtime/android_graphics_GraphicBuffer.h>
 #include <android_runtime/android_hardware_HardwareBuffer.h>
 #include <android_runtime/android_view_Surface.h>
 #include <android_runtime/android_view_SurfaceSession.h>
@@ -253,6 +254,15 @@
     }
 }
 
+constexpr ui::Dataspace fromNamedColorSpaceValueToDataspace(const jint colorSpace) {
+    switch (colorSpace) {
+        case JNamedColorSpace::DISPLAY_P3:
+            return ui::Dataspace::DISPLAY_P3;
+        default:
+            return ui::Dataspace::V0_SRGB;
+    }
+}
+
 constexpr ui::Dataspace pickDataspaceFromColorMode(const ui::ColorMode colorMode) {
     switch (colorMode) {
         case ui::ColorMode::DISPLAY_P3:
@@ -384,6 +394,14 @@
     }
 }
 
+static void nativeSetDefaultBufferSize(JNIEnv* env, jclass clazz, jlong nativeObject,
+                                       jint width, jint height) {
+    SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
+    if (ctrl != NULL) {
+        ctrl->updateDefaultBufferSize(width, height);
+    }
+}
+
 static Rect rectFromObj(JNIEnv* env, jobject rectObj) {
     int left = env->GetIntField(rectObj, gRectClassInfo.left);
     int top = env->GetIntField(rectObj, gRectClassInfo.top);
@@ -553,6 +571,23 @@
     transaction->setGeometry(ctrl, source, dst, orientation);
 }
 
+static void nativeSetBuffer(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject,
+                            jobject bufferObject) {
+    auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj);
+    SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl*>(nativeObject);
+    sp<GraphicBuffer> buffer(
+            android_graphics_GraphicBuffer_getNativeGraphicsBuffer(env, bufferObject));
+    transaction->setBuffer(ctrl, buffer);
+}
+
+static void nativeSetColorSpace(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject,
+                                jint colorSpace) {
+    auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj);
+    SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl*>(nativeObject);
+    ui::Dataspace dataspace = fromNamedColorSpaceValueToDataspace(colorSpace);
+    transaction->setDataspace(ctrl, dataspace);
+}
+
 static void nativeSetBlurRegions(JNIEnv* env, jclass clazz, jlong transactionObj,
                                  jlong nativeObject, jobjectArray regions, jint regionsLength) {
     auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj);
@@ -1744,6 +1779,8 @@
             (void*)nativeRelease },
     {"nativeDisconnect", "(J)V",
             (void*)nativeDisconnect },
+    {"nativeUpdateDefaultBufferSize", "(JII)V",
+            (void*)nativeSetDefaultBufferSize},
     {"nativeCreateTransaction", "()J",
             (void*)nativeCreateTransaction },
     {"nativeApplyTransaction", "(JZ)V",
@@ -1877,6 +1914,10 @@
             (void*)nativeGetDisplayedContentSample },
     {"nativeSetGeometry", "(JJLandroid/graphics/Rect;Landroid/graphics/Rect;J)V",
             (void*)nativeSetGeometry },
+    {"nativeSetBuffer", "(JJLandroid/graphics/GraphicBuffer;)V",
+            (void*)nativeSetBuffer },
+    {"nativeSetColorSpace", "(JJI)V",
+            (void*)nativeSetColorSpace },
     {"nativeSyncInputWindows", "(J)V",
             (void*)nativeSyncInputWindows },
     {"nativeGetDisplayBrightnessSupport", "(Landroid/os/IBinder;)Z",
diff --git a/core/proto/android/internal/OWNERS b/core/proto/android/internal/OWNERS
new file mode 100644
index 0000000..24e24c2
--- /dev/null
+++ b/core/proto/android/internal/OWNERS
@@ -0,0 +1,2 @@
+# Binder
+per-file binder_latency.proto = file:/core/java/com/android/internal/os/BINDER_OWNERS
\ No newline at end of file
diff --git a/core/proto/android/internal/binder_latency.proto b/core/proto/android/internal/binder_latency.proto
index e32c3e3..8b11f5b 100644
--- a/core/proto/android/internal/binder_latency.proto
+++ b/core/proto/android/internal/binder_latency.proto
@@ -34,6 +34,7 @@
     UNKNOWN_PROCESS_SOURCE = 0;
     SYSTEM_SERVER = 1;
     TELEPHONY = 2;
+    BLUETOOTH = 3;
   }
 
   enum ServiceClassName {
@@ -74,4 +75,19 @@
   // Stores the count of samples for each bucket. The number of buckets and
   // their sizes are controlled server side with a flag.
   repeated int32 buckets = 3;
-}
\ No newline at end of file
+
+  // Params for histogram buckets.
+  // The number of buckets in the histogram. Store this value separately
+  // as the tail of empty buckets is truncated when stored in the proto to
+  // conserve space. Thus it is not possible to infer this value from there.
+  optional int32 bucket_count = 4;
+
+  // The size (upper bound) of the first bucket (used to avoid creating an
+  // excessive amount of small buckets). E.g. for first_bucket_size of 5, the
+  // first bucket will be [0, 5) and the second will be [5, 5 * scaleFactor).
+  optional int32 first_bucket_size = 5;
+
+  // The rate in which each consecutive bucket increases (before rounding).
+  // Implemented in: com.android.internal.os.BinderLatencyBuckets.
+  optional float scale_factor = 6;
+}
diff --git a/core/proto/android/server/biometrics.proto b/core/proto/android/server/biometrics.proto
index 4f3ae28..c918dbb 100644
--- a/core/proto/android/server/biometrics.proto
+++ b/core/proto/android/server/biometrics.proto
@@ -120,18 +120,23 @@
 
     optional Modality modality = 2;
 
+    // The current strength (see {@link BiometricManager.Authenticators}) of this sensor, taking any
+    // downgraded strengths into effect. It may be different from the sensor's original strength but
+    // can never be stronger than that.
+    optional int32 current_strength = 3;
+
     // State of the sensor's scheduler.
-    optional BiometricSchedulerProto scheduler = 3;
+    optional BiometricSchedulerProto scheduler = 4;
 
     // User states for this sensor.
-    repeated UserStateProto user_states = 4;
+    repeated UserStateProto user_states = 5;
 
     // True if resetLockout requires a HAT to be verified in the TEE or equivalent.
-    optional bool reset_lockout_requires_hardware_auth_token = 5;
+    optional bool reset_lockout_requires_hardware_auth_token = 6;
 
     // True if a HAT is required (field above) AND a challenge needs to be generated by the
     // biometric TEE (or equivalent), and wrapped within the HAT.
-    optional bool reset_lockout_requires_challenge = 6;
+    optional bool reset_lockout_requires_challenge = 7;
 }
 
 // State of a specific user for a specific sensor.
diff --git a/core/proto/android/server/windowmanagerservice.proto b/core/proto/android/server/windowmanagerservice.proto
index a7127ad..b157146 100644
--- a/core/proto/android/server/windowmanagerservice.proto
+++ b/core/proto/android/server/windowmanagerservice.proto
@@ -308,6 +308,7 @@
     optional float minimize_amount = 27;
     optional bool created_by_organizer = 28;
     optional string affinity = 29;
+    optional bool has_child_pip_activity = 30;
 }
 
 /* represents ActivityRecordProto */
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 925a212..0fe7e18 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -4099,6 +4099,15 @@
     <permission android:name="com.android.permission.INSTALL_EXISTING_PACKAGES"
         android:protectionLevel="signature|privileged" />
 
+    <!-- Allows an application to use the package installer v2 APIs.
+         <p>The package installer v2 APIs are still a work in progress and we're
+         currently validating they work in all scenarios.
+         <p>Not for use by third-party applications.
+         @hide
+    -->
+    <permission android:name="com.android.permission.USE_INSTALLER_V2"
+        android:protectionLevel="signature|installer" />
+
     <!-- Allows an application to use System Data Loaders.
          <p>Not for use by third-party applications.
          @hide
@@ -5569,12 +5578,12 @@
     <!-- @SystemApi Allows sensor privacy to be modified.
          @hide -->
     <permission android:name="android.permission.MANAGE_SENSOR_PRIVACY"
-                android:protectionLevel="signature" />
+                android:protectionLevel="internal|role" />
 
     <!-- @SystemApi Allows sensor privacy changes to be observed.
          @hide -->
     <permission android:name="android.permission.OBSERVE_SENSOR_PRIVACY"
-                android:protectionLevel="signature|installer" />
+                android:protectionLevel="internal|role|installer" />
 
     <!-- @SystemApi Permission that protects the {@link Intent#ACTION_REVIEW_ACCESSIBILITY_SERVICES}
          intent.
@@ -5673,12 +5682,12 @@
     <permission android:name="android.permission.CONTROL_DEVICE_STATE"
                 android:protectionLevel="signature" />
 
-    <!-- Must be required by a
-        {@link android.service.displayhash.DisplayHasherService}
+    <!-- @hide @SystemApi Must be required by a
+        {@link android.service.displayhash.DisplayHashingService}
         to ensure that only the system can bind to it.
-        @hide This is not a third-party API (intended for OEMs and system apps).
+        This is not a third-party API (intended for OEMs and system apps).
     -->
-    <permission android:name="android.permission.BIND_DISPLAY_HASHER_SERVICE"
+    <permission android:name="android.permission.BIND_DISPLAY_HASHING_SERVICE"
         android:protectionLevel="signature" />
 
     <!-- @hide @TestApi Allows an application to enable/disable toast rate limiting.
@@ -5725,6 +5734,12 @@
     <permission android:name="android.permission.SET_CLIP_SOURCE"
                 android:protectionLevel="signature|recents" />
 
+    <!-- @SystemApi Allows an application to access TV tuned info
+         <p>Not for use by third-party applications.
+         @hide -->
+    <permission android:name="android.permission.ACCESS_TUNED_INFO"
+        android:protectionLevel="signature|privileged|vendorPrivileged" />
+
     <!-- Allows an application to indicate via
          {@link android.content.pm.PackageInstaller.SessionParams#setRequireUserAction(boolean)}
          that user action should not be required for an app update.
diff --git a/core/res/res/drawable/btn_borderless_material.xml b/core/res/res/drawable/btn_borderless_material.xml
index 1a0912e..08e1060 100644
--- a/core/res/res/drawable/btn_borderless_material.xml
+++ b/core/res/res/drawable/btn_borderless_material.xml
@@ -15,8 +15,7 @@
 -->
 
 <ripple xmlns:android="http://schemas.android.com/apk/res/android"
-        android:color="?attr/colorControlHighlight"
-        android:rippleStyle="?attr/rippleStyle">
+        android:color="?attr/colorControlHighlight">
     <item android:id="@id/mask"
           android:drawable="@drawable/btn_default_mtrl_shape" />
 </ripple>
diff --git a/core/res/res/drawable/btn_colored_material.xml b/core/res/res/drawable/btn_colored_material.xml
index 5274ef2..7ba21e8 100644
--- a/core/res/res/drawable/btn_colored_material.xml
+++ b/core/res/res/drawable/btn_colored_material.xml
@@ -19,8 +19,7 @@
        android:insetTop="@dimen/button_inset_vertical_material"
        android:insetRight="@dimen/button_inset_horizontal_material"
        android:insetBottom="@dimen/button_inset_vertical_material">
-    <ripple android:color="?attr/colorControlHighlight"
-            android:rippleStyle="?attr/rippleStyle">
+    <ripple android:color="?attr/colorControlHighlight">
         <item>
             <shape android:shape="rectangle"
                    android:tint="@color/btn_colored_background_material">
diff --git a/core/res/res/drawable/btn_default_material.xml b/core/res/res/drawable/btn_default_material.xml
index 6a9e621..ed2b5aa 100644
--- a/core/res/res/drawable/btn_default_material.xml
+++ b/core/res/res/drawable/btn_default_material.xml
@@ -15,7 +15,6 @@
 -->
 
 <ripple xmlns:android="http://schemas.android.com/apk/res/android"
-        android:color="?attr/colorControlHighlight"
-        android:rippleStyle="?attr/rippleStyle">
+        android:color="?attr/colorControlHighlight">
     <item android:drawable="@drawable/btn_default_mtrl_shape" />
 </ripple>
diff --git a/core/res/res/drawable/btn_toggle_material.xml b/core/res/res/drawable/btn_toggle_material.xml
index 7cee382..8b19e4a 100644
--- a/core/res/res/drawable/btn_toggle_material.xml
+++ b/core/res/res/drawable/btn_toggle_material.xml
@@ -21,8 +21,7 @@
        android:insetBottom="@dimen/button_inset_vertical_material">
     <layer-list android:paddingMode="stack">
         <item>
-            <ripple android:color="?attr/colorControlHighlight"
-                android:rippleStyle="?attr/rippleStyle">
+            <ripple android:color="?attr/colorControlHighlight">
                 <item>
                     <shape android:shape="rectangle"
                            android:tint="?attr/colorButtonNormal">
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 8b225b3..445bac5 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Opgedateer deur jou administrateur"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Uitgevee deur jou administrateur"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Batterybespaarder skakel Donkertema aan en beperk of skakel agtergrondaktiwiteit, sommige visuele effekte en ander kenmerke, soos \"Ok Google\", af\n\n"<annotation id="url">"Kom meer te wete"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Batterybespaarder skakel Donkertema aan en beperk of skakel agtergrondaktiwiteit, sommige visuele effekte en ander kenmerke, soos \"Ok Google\", af."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Databespaarder verhoed sommige programme om data in die agtergrond te stuur of te aanvaar om datagebruik te help verminder. \'n Program wat jy tans gebruik kan by data ingaan, maar sal dit dalk minder gereeld doen. Dit kan byvoorbeeld beteken dat prente nie wys totdat jy op hulle tik nie."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Skakel Databespaarder aan?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Skakel aan"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Maak toe"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Antwoord"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Wys af"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Lui af"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Inkomende oproep"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Hierdie kennisgewing is gedegradeer na Stil. Tik om terugvoer te gee."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Hierdie kennisgewing is hoër gegradeer. Tik om terugvoer te gee."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Hierdie kennisgewing is laer gegradeer. Tik om terugvoer te gee."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Probeer verbeterde kennisgewings"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Skakel verbeterde kennisgewings aan sodat jy aanhou om voorgestelde handelinge, antwoorde en meer te ontvang. Android se aanpasbare kennisgewings word nie meer gesteun nie."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Skakel aan"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Nie nou nie"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Kom meer te wete"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Verbeterde kennisgewings kan alle kennisgewinginhoud lees, insluitend persoonlike inligting soos kontakname en boodskappe. Hierdie kenmerk kan ook kennisgewings toemaak of handelingknoppies in kennisgewings gebruik, soos om foonoproepe te beantwoord.\n\nHierdie kenmerk kan ook Prioriteitmodus aan- of afskakel en soortgelyke instellings verander."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Roetinemodus-inligtingkennisgewing"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Battery kan afloop voordat dit normaalweg gelaai word"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Batterybespaarder is geaktiveer om batterylewe te verleng"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 834eb74..ee286bd 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -1852,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"የባትሪ ኃይል ቆጣቢ የጠቆር ያለ ገጽታን ያበራል እና የጀርባ እንቅስቃሴን፣ አንዳንድ የእይታ ውጤቶችን እና እንደ «Hey Google» ያሉ ባህሪያትን ይገድባል ወይም ያጠፋል።\n\n"<annotation id="url">"የበለጠ ለመረዳት"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"የባትሪ ኃይል ቆጣቢ የጠቆር ያለ ገጽታን ያበራል እና የጀርባ እንቅስቃሴን፣ አንዳንድ የእይታ ውጤቶችን እና እንደ «Hey Google» ያሉ ባህሪያትን ይገድባል ወይም ያጠፋል።"</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"ዝጋ"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>፦ <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"መልስ"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ቪዲዮ"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"አትቀበል"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ስልኩን ዝጋ"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"ገቢ ጥሪ"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ይህ ማሳወቂያ ወደ ዝምታ ዝቅ ብሏል። ግብረመልስ ለመስጠት መታ ያድርጉ።"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"ይህ ማሳወቂያ ከፍተኛ ደረጃ ተሰጥቶታል። ግብረመልስ ለመስጠት መታ ያድርጉ።"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"ይህ ማሳወቂያ ዝቅተኛ ደረጃ ተሰጥቶታል። ግብረመልስ ለመስጠት መታ ያድርጉ።"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"የተሻሻሉ ማሳወቂያዎችን ይሞክሩ"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"የተጠቆሙ እርምጃዎችን፣ ምላሾችን እና ሌሎችን ማግኘትን ለመቀጠል የተሻሻሉ ማሳወቂያዎችን ያብሩ። የAndroid አስማሚ ማሳወቂያዎች ከአሁን በኋላ አይደገፉም።"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"አብራ"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"አሁን አይደለም"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"የበለጠ ለመረዳት"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"የተሻሻሉ ማሳወቂያዎች እንደ የእውቂያ ስሞች እና መልዕክቶች ያሉ የግል መረጃዎችን ጨምሮ ሁሉንም የማሳወቂያ ይዘቶችን ማንበብ ይችላሉ። ይህ ባህሪ ማሳወቂያዎችን ማሰናከል ወይም እንደ የስልክ ጥሪዎችን ማንሳት በመሳሰሉ ማሳወቂያዎች ውስጥ ባሉ አዝራሮች ላይ እርምጃዎችንም አዝራሮች ላይ እርምጃዎችንም መውሰድ ይችላል።\n\nይህ ባህሪ የቅድሚያ ሁነታን ማብራት ወይም ማጥፋት እና ተዛማጅ ቅንብሮችን መለወጥ ይችላል።"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"የዕለት ተዕለት ሁነታ መረጃ ማሳወቂያዎች"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"ባትሪ ከተለመደው ኃይል መሙላት በፊት ሊያልቅ ይችላል"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"የባትሪ ቆጣቢ የባትሪ ዕድሜን ለማራዘም ገብሯል።"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 4623057..ad295cb 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -550,10 +550,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"يسمح هذا الإذن للتطبيق باكتشاف الأجهزة القريبة التي تتضمّن بلوتوث والاقتران بها."</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"تسمح بالربط الأجهزة المقترنة التي تتضمّن بلوتوث."</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"يسمح هذا الإذن للتطبيق بالارتباط بالأجهزة المقترنة التي تتضمّن بلوتوث."</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <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_preferredPaymentInfo" msgid="5274423844767445054">"‏معلومات الخدمات المدفوعة باستخدام الاتصال قصير المدى NFC المفضّل"</string>
@@ -1946,10 +1944,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"‏يؤدي استخدام خيار \"توفير شحن البطارية\" إلى تفعيل \"المظهر الداكن\" وتقييد أو إيقاف النشاط في الخلفية وبعض التأثيرات المرئية والميزات الأخرى، مثلاً \"Ok Google\".\n\n"<annotation id="url">"مزيد من المعلومات"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"‏يؤدي استخدام خيار \"توفير شحن البطارية\" إلى تفعيل \"المظهر الداكن\" وتقييد أو إيقاف النشاط في الخلفية وبعض التأثيرات المرئية والميزات الأخرى، مثلاً \"Ok Google\"."</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>
@@ -2057,6 +2053,7 @@
     <string name="close_button_text" msgid="10603510034455258">"إغلاق"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"ردّ"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"فيديو"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"رفض"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"قطع الاتصال"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"مكالمة واردة"</string>
@@ -2208,18 +2205,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"تم خفض ترتيب هذا الإشعار إلى الوضع \"صامت\". انقر لإرسال ملاحظات وآراء."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"تمت زيادة ترتيب هذا الإشعار. انقر لإرسال ملاحظات وآراء."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"تم خفض ترتيب هذا الإشعار. انقر لإرسال ملاحظات وآراء."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"تجربة الإشعارات المحسّنة"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"‏لمواصلة الحصول على الردود والإجراءات المقترحة والمزيد، عليك تفعيل الإشعارات المحسّنة. لم تعد الإشعارات التكيُّفية لنظام التشغيل Android متاحة."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"تفعيل"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"لاحقًا"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"مزيد من المعلومات"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"يمكن للإشعارات المحسّنة قراءة كل محتوى الإشعارات، بما في ذلك المعلومات الشخصية، مثلاً أسماء جهات الاتصال والرسائل. يمكن لهذه الميزة أيضًا إغلاق الإشعارات أو اتخاذ إجراءات من خلال الأزرار في الإشعارات، مثلاً الردّ على مكالمات الهاتف.\n\nويمكن لهذه الميزة أيضًا تفعيل وضع \"الأولوية\" أو إيقافه وتغيير الإعدادات ذات الصلة."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"إشعار معلومات \"وضع سلسلة الإجراءات\""</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"قد تنفد طاقة البطارية قبل الشحن المعتاد"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"تم تفعيل \"توفير شحن البطارية\" لإطالة عمرها."</string>
@@ -2256,7 +2247,7 @@
       <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> و<xliff:g id="COUNT_3">%d</xliff:g> ملف</item>
       <item quantity="one"><xliff:g id="FILE_NAME_0">%s</xliff:g> وملف (<xliff:g id="COUNT_1">%d</xliff:g>)</item>
     </plurals>
-    <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"ليس هناك أشخاص مقترحون للمشاركة معهم"</string>
+    <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"ليس هناك أشخاص مقترحون للمشاركة معهم."</string>
     <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"قائمة التطبيقات"</string>
     <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"‏لم يتم منح هذا التطبيق إذن تسجيل، ولكن يمكنه تسجيل الصوت من خلال جهاز USB هذا."</string>
     <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"الشاشة الرئيسية"</string>
@@ -2411,14 +2402,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"يمكنك الآن تكبير جزء من الشاشة."</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"التفعيل من خلال \"الإعدادات\""</string>
     <string name="dismiss_action" msgid="1728820550388704784">"إغلاق"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"إزالة حظر ميكروفون الجهاز"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"إزالة حظر كاميرا الجهاز"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"‏للتطبيق &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; وكل التطبيقات والخدمات"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"إزالة الحظر"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"الخصوصية في جهاز الاستشعار"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"رمز التطبيق"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"الصورة الذهنية للعلامة التجارية للتطبيق"</string>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index a815db7..4d6b0b7 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -319,10 +319,8 @@
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"শাৰীৰিক কাৰ্যকলাপ এক্সেছ কৰা"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"কেমেৰা"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"ফট\' তুলিব আৰু ভিডিঅ\' ৰেকৰ্ড কৰিব পাৰে"</string>
-    <!-- no translation found for permgrouplab_nearby_devices (5529147543651181991) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_nearby_devices (3213561597116913508) -->
-    <skip />
+    <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"নিকটৱৰ্তী ডিভাইচ"</string>
+    <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"নিকটৱৰ্তী ডিভাইচসমূহ বিচাৰি পাওক আৰু সেইবোৰৰ সৈতে সংযোগ কৰক"</string>
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"কল লগসমূহ"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"ফ\'নৰ কল লগ পঢ়ক আৰু লিখক"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"ফ’ন"</string>
@@ -540,14 +538,10 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"এপ্‌টোক নিকটৱৰ্তী ব্লুটুথ ডিভাইচ বিচাৰি উলিয়াবলৈ আৰু সেইসমূহৰ সৈতে পেয়াৰ কৰিবলৈ অনুমতি দিয়ে"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"পেয়াৰ কৰা ব্লুটুথ ডিভাইচৰ সৈতে সংযোগ কৰক"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"এপ্‌টোক পেয়াৰ কৰা ব্লুটুথ ডিভাইচৰ সৈতে সংযোগ কৰিবলৈ অনুমতি দিয়ে"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
-    <!-- no translation found for permlab_uwb_ranging (8141915781475770665) -->
-    <skip />
-    <!-- no translation found for permdesc_uwb_ranging (2519723069604307055) -->
-    <skip />
+    <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_preferredPaymentInfo" msgid="5274423844767445054">"অগ্ৰাধিকাৰ দিয়া NFC পৰিশোধ সেৱাৰ তথ্য"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"এপ্‌টোক অগ্ৰাধিকাৰ দিয়া nfc পৰিশোধ সেৱাৰ পঞ্জীকৃত সহায়কসমূহ আৰু পৰিশোধ কৰিব লগা লক্ষ্যস্থান দৰে তথ্য পাবলৈ অনুমতি দিয়ে।"</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"নিয়েৰ ফিল্ড কমিউনিকেশ্বন নিয়ন্ত্ৰণ কৰক"</string>
@@ -1858,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"বেটাৰী সঞ্চয়কাৰীয়ে গাঢ় থীম অন কৰে আৰু নেপথ্যৰ কাৰ্যকলাপ, কিছুমান ভিজুৱেল ইফেক্ট আৰু “Hey Google”ৰ দৰে সুবিধাসমূহ অফ কৰে অথবা সীমাবদ্ধ কৰে\n\n"<annotation id="url">"অধিক জানক"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"বেটাৰী সঞ্চয়কাৰীয়ে গাঢ় থীম অন কৰে আৰু নেপথ্যৰ কাৰ্যকলাপ, কিছুমান ভিজুৱেল ইফেক্ট আৰু “Hey Google”ৰ দৰে সুবিধাসমূহ অফ কৰে অথবা সীমাবদ্ধ কৰে।"</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>
@@ -1937,6 +1929,8 @@
     <string name="close_button_text" msgid="10603510034455258">"বন্ধ কৰক"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"উত্তৰ দিয়ক"</string>
+    <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
+    <skip />
     <string name="call_notification_decline_action" msgid="3700345945214000726">"প্ৰত্যাখ্যান কৰক"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"কল কাটি দিয়ক"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"অন্তৰ্গামী কল"</string>
@@ -2080,18 +2074,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"এই জাননীটোৰ গুৰুত্ব নীৰৱলৈ হ্ৰাস কৰা হৈছে। মতামত দিবলৈ টিপক।"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"এই জাননীটোৰ স্থান ওপৰলৈ কৰা হৈছে। মতামত দিবলৈ টিপক।"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"এই জাননীটোৰ স্থান তললৈ কৰা হৈছে। মতামত দিবলৈ টিপক।"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"উন্নত জাননী ব্যৱহাৰ কৰি চাওক"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"পৰামৰ্শ দিয়া কাৰ্য, প্ৰত্যুত্তৰ আৰু বহুতো সুবিধা পাই থাকিবলৈ উন্নত জাননী অন কৰক। Androidৰ অভিযোজিত জাননী আৰু সমৰ্থিত নহয়।"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"অন কৰক"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"এতিয়া নহয়"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"অধিক জানক"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"উন্নত প্ৰত্যুত্তৰে সম্পৰ্কৰ নাম আৰু বাৰ্তাৰ দৰে ব্যক্তিগত তথ্যৰ লগতে আটাইবোৰ জাননীৰ সমল পঢ়িব পাৰে। এই সুবিধাটোৱে জাননী অগ্ৰাহ্য কৰাৰ লগতে জাননীত থকা ফ’ন কলৰ উত্তৰ দিয়াৰ দৰে কাৰ্য বুটামৰ ওপৰত কাৰ্যব্যৱস্থা ল’ব পাৰে।\n\nলগতে, এই সুবিধাটোৱে অগ্ৰাধিকাৰ দিয়া ম’ড অন অথবা অফ কৰিব পাৰে আৰু সম্পৰ্কিত ছেটিং সলনি কৰিব পাৰে।"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ৰুটিন ম’ডৰ তথ্য জাননী"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"চ্চাৰ্জ কৰাৰ সচৰাচৰ সময়ৰ আগতেই বেটাৰি শেষ হ’ব পাৰে"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"বেটাৰিৰ খৰচ কমাবলৈ বেটাৰি সঞ্চয়কাৰী অন কৰা হৈছে"</string>
@@ -2279,14 +2267,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"আপুনি এতিয়া আপোনাৰ স্ক্ৰীনখনৰ কিছু অংশ বিবৰ্ধন কৰিব পাৰে"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"ছেটিঙত অন কৰক"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"অগ্ৰাহ্য কৰক"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"ডিভাইচৰ মাইক্ৰ\'ফ\'ন অৱৰোধৰ পৰা আঁতৰাওক"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"ডিভাইচৰ কেমেৰ অৱৰোধৰ পৰা আঁতৰাওক"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; আৰু আটাইবোৰ এপ আৰু সেৱাৰ বাবে"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"অৱৰোধৰ পৰা আঁতৰাওক"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"ছেন্সৰ সম্পৰ্কীয় গোপনীয়তাৰ নীতি"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"এপ্লিকেশ্বনৰ চিহ্ন"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"এপ্লিকেশ্বনৰ ব্ৰেণ্ডৰ প্ৰতিচ্ছবি"</string>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 70c4534..0a1c880 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Tətbiqə yaxınlıqdakı Bluetooth cihazlarını aşkarlamaq və birləşdirməyə icazə verir"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"birləşdirilmiş Bluetooth cihazlarına qoşulmaq"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Tətbiqə birləşdirilmiş Bluetooth cihazlarına qoşulmağa icazə verir"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"yaxınlıqdakı Bluetooth cihazlarında reklam etmək"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Tətbiqə yaxınlıqdakı Bluetooth cihazlarında reklam etmək imkanı verir"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"yaxınlıqdakı Ultra Genişzolaqlı cihazları arasında nisbi mövqeyi təyin etmək"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Tətbiqə yaxınlıqdakı Ultra Genişzolaqlı cihazları arasında nisbi mövqeyi təyin etməyə icazə verin"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Tərcih edilən NFC ödəniş xidməti məlumatı"</string>
@@ -735,11 +733,11 @@
     <string name="policylab_resetPassword" msgid="214556238645096520">"Ekran kilidini dəyişmək"</string>
     <string name="policydesc_resetPassword" msgid="4626419138439341851">"Ekran kilidini dəyişmək"</string>
     <string name="policylab_forceLock" msgid="7360335502968476434">"Ekranı kilidləmək"</string>
-    <string name="policydesc_forceLock" msgid="1008844760853899693">"Ekranın nə vaxt və necə kilidlənməsinə nəzarət edir."</string>
+    <string name="policydesc_forceLock" msgid="1008844760853899693">"Ekranın kilidlənmə vaxtına və üsuluna nəzarət."</string>
     <string name="policylab_wipeData" msgid="1359485247727537311">"Bütün məlumatları silmək"</string>
     <string name="policydesc_wipeData" product="tablet" msgid="7245372676261947507">"Planşetin datasını xəbərdarlıq olmadan, zavod data sıfırlaması ilə silin."</string>
     <string name="policydesc_wipeData" product="tv" msgid="513862488950801261">"Android TV cihazının datasını fabrik sıfırlaması haqqında xəbərdarlıq olmadan silin."</string>
-    <string name="policydesc_wipeData" product="default" msgid="8036084184768379022">"Telefonun datasını xəbərdarlıq olmadan, zavod data sıfırlaması ilə silin"</string>
+    <string name="policydesc_wipeData" product="default" msgid="8036084184768379022">"Telefondakı bütün məlumatları xəbərdarlıqsız sıfırlayaraq məhv etmək"</string>
     <string name="policylab_wipeData_secondaryUser" msgid="413813645323433166">"İstifadəçi verilənlərini sil"</string>
     <string name="policydesc_wipeData_secondaryUser" product="tablet" msgid="2336676480090926470">"Xəbərdarlıq etmədən bu istifadəçinin verilənlərini bu planşetdə silin."</string>
     <string name="policydesc_wipeData_secondaryUser" product="tv" msgid="2293713284515865200">"Bu istifadəçinin datasını xəbərdarlıq olmadan Android TV cihazında silin."</string>
@@ -753,7 +751,7 @@
     <string name="policylab_disableCamera" msgid="5749486347810162018">"Kameraları dekativ edin"</string>
     <string name="policydesc_disableCamera" msgid="3204405908799676104">"Bütün cihaz kameralarının istifadəsini əngəllə."</string>
     <string name="policylab_disableKeyguardFeatures" msgid="5071855750149949741">"Ekran kilidini deaktiv etmək"</string>
-    <string name="policydesc_disableKeyguardFeatures" msgid="6641673177041195957">"Bəzi ekran funksiyaları istifadəsinin qarşısını alın."</string>
+    <string name="policydesc_disableKeyguardFeatures" msgid="6641673177041195957">"Bəzi ekran funksiyaları istifadəsinin qarşısını almaq."</string>
   <string-array name="phoneTypes">
     <item msgid="8996339953292723951">"Ev"</item>
     <item msgid="7740243458912727194">"Mobil"</item>
@@ -1244,7 +1242,7 @@
     <string name="unsupported_display_size_show" msgid="980129850974919375">"Həmişə göstərin"</string>
     <string name="unsupported_compile_sdk_message" msgid="7326293500707890537">"<xliff:g id="APP_NAME">%1$s</xliff:g> Android OS sisteminin uyğunsuz versiyası üçün hazırlandı və gözlənilməz şəkildə davrana bilər. Tətbiqin güncəllənmiş versiyası əlçatan ola bilər."</string>
     <string name="unsupported_compile_sdk_show" msgid="1601210057960312248">"Həmişə göstərin"</string>
-    <string name="unsupported_compile_sdk_check_update" msgid="1103639989147664456">"Güncəlləməni yoxlayın"</string>
+    <string name="unsupported_compile_sdk_check_update" msgid="1103639989147664456">"Güncəllənmə olmasını yoxlayın"</string>
     <string name="smv_application" msgid="3775183542777792638">"Tətbiq <xliff:g id="APPLICATION">%1$s</xliff:g> (proses <xliff:g id="PROCESS">%2$s</xliff:g>) StrictMode siyasətini pozdu."</string>
     <string name="smv_process" msgid="1398801497130695446">"<xliff:g id="PROCESS">%1$s</xliff:g> prosesi StrictMode siyasətini pozdu."</string>
     <string name="android_upgrading_title" product="default" msgid="7279077384220829683">"Telefon yenilənir…"</string>
@@ -1575,7 +1573,7 @@
     <string name="storage_usb_drive_label" msgid="6631740655876540521">"<xliff:g id="MANUFACTURER">%s</xliff:g> USB drayv"</string>
     <string name="storage_usb" msgid="2391213347883616886">"USB yaddaş"</string>
     <string name="extract_edit_menu_button" msgid="63954536535863040">"Düzəliş edin"</string>
-    <string name="data_usage_warning_title" msgid="9034893717078325845">"Data xəbərdarlığı"</string>
+    <string name="data_usage_warning_title" msgid="9034893717078325845">"Trafik xəbərdarlığı"</string>
     <string name="data_usage_warning_body" msgid="1669325367188029454">"<xliff:g id="APP">%s</xliff:g> data istifadə etdiniz"</string>
     <string name="data_usage_mobile_limit_title" msgid="3911447354393775241">"Mobil data limitinə çatdı"</string>
     <string name="data_usage_wifi_limit_title" msgid="2069698056520812232">"Wi-Fi data limitinə çatdı"</string>
@@ -1848,16 +1846,14 @@
     <string name="managed_profile_label_badge_2" msgid="5673187309555352550">"2-ci İş <xliff:g id="LABEL">%1$s</xliff:g>"</string>
     <string name="managed_profile_label_badge_3" msgid="6882151970556391957">"3-cü İş <xliff:g id="LABEL">%1$s</xliff:g>"</string>
     <string name="lock_to_app_unlock_pin" msgid="3890940811866290782">"Ayırmadan öncə PIN istənilsin"</string>
-    <string name="lock_to_app_unlock_pattern" msgid="2694204070499712503">"Ayırmadan öncə kilid modeli istənilsin"</string>
+    <string name="lock_to_app_unlock_pattern" msgid="2694204070499712503">"Qrafik açar istənilsin"</string>
     <string name="lock_to_app_unlock_password" msgid="9126722403506560473">"Ayırmadan öncə parol istənilsin"</string>
     <string name="package_installed_device_owner" msgid="7035926868974878525">"Admin tərəfindən quraşdırıldı"</string>
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Admin tərəfindən yeniləndi"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Admin tərəfindən silindi"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Enerjiyə Qənaət funksiyası Qaranlıq temanı aktiv edir və arxa fondakı fəaliyyəti, bəzi vizual effektləri və “Hey Google” kimi digər funksiyaları məhdudlaşdırır və ya deaktiv edir\n\n"<annotation id="url">"Ətraflı məlumat"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Enerjiyə Qənaət funksiyası Qaranlıq temanı aktiv edir və arxa fondakı fəaliyyəti, bəzi vizual effektləri və “Hey Google” kimi digər funksiyaları məhdudlaşdırır və ya deaktiv edir."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Mobil interneti qənaətlə işlətmək məqsədilə Data Qanaəti bəzi tətbiqlərin fonda data göndərməsinin və qəbulunun qarşısını alır. Hazırda işlətdiyiniz tətbiq nisbətən az müntəzəmliklə data istifadə edə bilər. Örnək olaraq bu, o deməkdir ki, şəkil fayllarına toxunmadıqca onlar açılmayacaq."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Trafikə qənaət edilsin?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivləşdirin"</string>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Qapadın"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Cavab verin"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"İmtina edin"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Dəstəyi asın"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Gələn zəng"</string>
@@ -1965,7 +1962,7 @@
     <string name="app_blocked_title" msgid="7353262160455028160">"Tətbiq əlçatan deyil"</string>
     <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> hazırda əlçatan deyil."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Bu tətbiq köhnə Android versiyası üçün hazırlanıb və düzgün işləməyə bilər. Güncəlləməni yoxlayın və ya developer ilə əlaqə saxlayın."</string>
-    <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Güncəlləməni yoxlayın"</string>
+    <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Güncəllənmə olmasını yoxlayın"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Yeni mesajlarınız var"</string>
     <string name="new_sms_notification_content" msgid="3197949934153460639">"Baxmaq üçün SMS tətbiqini açın"</string>
     <string name="profile_encrypted_title" msgid="9001208667521266472">"Bəzi funksiyalar məhdudlaşdırıla bilər"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Bu bildiriş Səssiz rejimə keçirilib. Rəy bildirmək üçün toxunun."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Bu bildiriş yuxarı sıraya keçirilib. Rəy bildirmək üçün toxunun."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Bu bildiriş aşağı sıraya keçirilib. Rəy bildirmək üçün toxunun."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Genişləndirilmiş bildirişləri sınayın"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Təklif olunan əməliyyatlar, cavablar və daha çoxunu almağa davam etmək üçün genişləndirilmiş bildirişləri aktiv edin. Android Adaptiv Bildirişləri artıq dəstəklənmir."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Aktiv edin"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"İndi yox"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Ətraflı məlumat"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Genişləndirilmiş bildirişlər, kontakt adları və mesajlar kimi şəxsi məlumatlar daxil olmaqla bütün bildiriş məzmununu oxuya bilər. Bu funksiya həmçinin bildirişləri qapada və ya telefon zənglərinə cavab vermək kimi bildirişlərdəki düymələr üzərində əməliyyatlar edə bilər.\n\nBu funksiya həmçinin Prioritet rejimini aktiv və ya deaktiv edə və əlaqəli ayarları dəyişdirə bilər."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Rejim üçün məlumat bildirişi"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Batareya həmişəki vaxtdan əvvəl bitə bilər"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Enerjiyə Qənaət rejimi batareya istifadəsinin müddətini artırmaq üçün aktiv edilir"</string>
@@ -2275,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"İndi ekranınızın bir hissəsini böyüdə bilərsiniz"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Ayarlarda aktiv edin"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Qapadın"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Cihaz mikrofonunu blokdan çıxarın"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Cihaz kamerasını blokdan çıxarın"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; və bütün tətbiqlər və cihazlar üçün"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Blokdan çıxarın"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Sensor Məxfiliyi"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Tətbiq ikonası"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Tətbiqin brend şəkli"</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 1cd4c12..5a7e890 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -1875,10 +1875,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Ažurirao je administrator"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisao je administrator"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Potvrdi"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizuelne efekte i funkcije, na primer, „Hej Google“.\n\n"<annotation id="url">"Saznajte više"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizuelne efekte i funkcije, na primer, „Hej Google“."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Da bi se smanjila potrošnja podataka, Ušteda podataka sprečava neke aplikacije da šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite može da pristupa podacima, ali će to činiti ređe. Na primer, slike se neće prikazivati dok ih ne dodirnete."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Želite da uključite Uštedu podataka?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Uključi"</string>
@@ -1962,6 +1960,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Zatvori"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Odgovori"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Odbij"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Prekini vezu"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Dolazni poziv"</string>
@@ -2107,18 +2106,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Ovo obaveštenje je degradirano u Nečujno. Dodirnite da biste naveli povratne informacije."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Ovo obaveštenje je rangirano više. Dodirnite da biste naveli povratne informacije."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Ovo obaveštenje je rangirano niže. Dodirnite da biste naveli povratne informacije."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Probajte poboljšana obaveštenja"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Uključite poboljšana obaveštenja da biste i dalje dobijali preporučene radnje, odgovore i drugo. Prilagodljiva obaveštenja za Android više nisu podržana."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Uključi"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Ne sada"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Saznajte više"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Poboljšana obaveštenja mogu da čitaju sadržaj svih obaveštenja, uključujući lične podatke, poput imena kontakata i poruka. Ova funkcija može i da odbacuje obaveštenja ili aktivira dugmad u obaveštenjima, poput javljanja na telefonske pozive.\n\nOva funkcija može i da uključi ili isključi Prioritetni režim i da menja povezana podešavanja."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Obaveštenje o informacijama Rutinskog režima"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Baterija će se možda isprazniti pre uobičajenog punjenja"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Ušteda baterije je aktivirana da bi se produžilo trajanje baterije"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index c1abeca..c0915d2c 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -544,10 +544,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Дазваляе праграме выяўляць прылады з Bluetooth і спалучацца з імі"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"падключацца да спалучаных прылад з Bluetooth"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Дазваляе праграме падключацца да спалучаных прылад з Bluetooth"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"адпраўляць рэкламу на прылады з Bluetooth паблізу"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Дазволіць праграме адпраўляць рэкламу на прылады з Bluetooth, якія знаходзяцца паблізу"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"вызначаць адлегласць паміж прыладамі з звышшырокапалоснай сувяззю"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Дазволіць праграме вызначаць адлегласць паміж прыладамі паблізу, якія выкарыстоўваюць звышшырокапалосную сувязь"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Інфармацыя пра прыярытэтны сэрвіс аплаты NFC"</string>
@@ -1753,8 +1751,8 @@
     <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Гатова"</string>
     <string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Дэактываваць камбінацыю хуткага доступу"</string>
     <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Выкарыстоўваць камбінацыю хуткага доступу"</string>
-    <string name="color_inversion_feature_name" msgid="326050048927789012">"Інверсія колеру"</string>
-    <string name="color_correction_feature_name" msgid="3655077237805422597">"Карэкцыя колеру"</string>
+    <string name="color_inversion_feature_name" msgid="326050048927789012">"Інверсія колераў"</string>
+    <string name="color_correction_feature_name" msgid="3655077237805422597">"Карэкцыя колераў"</string>
     <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дадатковае памяншэнне яркасці"</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>
@@ -1900,10 +1898,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"У рэжыме эканоміі зараду ўключаецца цёмная тэма і абмяжоўваюцца ці выключаюцца дзеянні ў фонавым рэжыме, некаторыя візуальныя эфекты і функцыі, напрыклад \"Ok Google\"\n\n"<annotation id="url">"Даведацца больш"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"У рэжыме эканоміі зараду ўключаецца цёмная тэма і абмяжоўваюцца ці выключаюцца дзеянні ў фонавым рэжыме, некаторыя візуальныя эфекты і функцыі, напрыклад \"Ok Google\"."</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>
@@ -1995,6 +1991,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Закрыць"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Адказаць"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Відэа"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Адхіліць"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Завяршыць"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Уваходны выклік"</string>
@@ -2142,18 +2139,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Гэта апавяшчэнне пераведзена ў рэжым \"Без гуку\". Націсніце тут і дайце водгук."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Гэта апавяшчэнне ацэнена як важнае. Націсніце тут і дайце водгук."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Гэта апавяшчэнне ацэнена як няважнае. Націсніце тут і дайце водгук."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Палепшаныя апавяшчэнні"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Каб і далей атрымліваць прапановы дзеянняў, адказаў і іншага змесціва, уключыце палепшаныя апавяшчэнні. Адаптыўныя апавяшчэнні Android больш не падтрымліваюцца."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Уключыць"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Не зараз"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Даведацца больш"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Палепшаныя апавяшчэнні маюць доступ да змесціва ўсіх апавяшчэнняў, у тым ліку да асабістай інфармацыі – імён кантактаў і паведамленняў. Гэта функцыя таксама можа адхіляць апавяшчэнні ці актываваць у іх кнопкі дзеянняў, у тым ліку адказваць на тэлефонныя выклікі.\n\nГэта функцыя можа ўключаць і выключаць прыярытэтны рэжым, а таксама змяняць звязаныя налады."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Апавяшчэнне з інфармацыяй пра ўсталяваны рэжым"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Акумулятар можа разрадзіцца хутчэй, чым прыйдзе час звычайнай зарадкі"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Каб павялічыць тэрмін работы акумулятара, уключаны рэжым эканоміі зараду"</string>
@@ -2343,14 +2334,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Цяпер можна павялічваць частку экрана"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Уключыць у Наладах"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Адхіліць"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Разблакіруйце мікрафон прылады"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Разблакіруйце камеру прылады"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Для праграмы &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; і ўсіх праграм і сэрвісаў"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Разблакіраваць"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Прыватнасць інфармацыі з датчыка"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Значок праграмы"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Відарыс брэнда праграмы"</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 52e686c92..5b8a81c 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -1852,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Режимът за запазване на батерията включва тъмната тема и ограничава или изключва активността на заден план, някои визуални ефекти и различни функции, като например „Ok Google“.\n\n"<annotation id="url">"Научете повече"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Режимът за запазване на батерията включва тъмната тема и ограничава или изключва активността на заден план, някои визуални ефекти и различни функции, като например „Ok Google“."</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Затваряне"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"„<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>“: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Отговор"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видеообаждане"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Отхвърляне"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Затваряне"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Входящо обаждане"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Това известие бе понижено до беззвучно. Докоснете, за да изпратите отзиви."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Това известие бе класирано по-високо. Докоснете, за да изпратите отзиви."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Това известие бе класирано по-ниско. Докоснете, за да изпратите отзиви."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Изпробвайте подобрен. известия"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"За да продължите да получавате предложени действия, отговори и др., включете функцията за подобрени известия. Адаптивните известия за Android вече не се поддържат."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Включване"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Не сега"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Научете повече"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Функцията за подобрени известия може да чете цялото съдържание в дадено известие, включително личната информация, като например имената на контактите и текстовите съобщения. Тя има възможност да отхвърля известията или да предприема действия по бутоните в тях, като например приемане на телефонни обаждания.\n\nСъщо така функцията може да включва или изключва приоритетния режим и да променя сродни настройки."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Известие с информация за режима на поредица"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Батерията може да се изтощи преди обичайното зареждане"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Режимът за запазване на батерията е активиран с цел удължаване на живота на батерията"</string>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 17be781..9c37c3b 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -307,7 +307,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">"Calendar"</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">"এসএমএসগুলি পাঠাতে এবং দেখতে"</string>
@@ -319,10 +319,8 @@
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"শারীরিক অ্যাক্টিভিটি অ্যাক্সেস করা"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"ক্যামেরা"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"ছবি তোলা এবং ভিডিও রেকর্ড"</string>
-    <!-- no translation found for permgrouplab_nearby_devices (5529147543651181991) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_nearby_devices (3213561597116913508) -->
-    <skip />
+    <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"আশেপাশের ডিভাইস"</string>
+    <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"আশেপাশের ডিভাইস খুঁজে দেখুন ও তার সাথে কানেক্ট করুন"</string>
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"কল লগ"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"ফোন কল লগ পড়ে এবং দেখে"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"ফোন"</string>
@@ -540,14 +538,10 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"অ্যাপটিকে কাছাকাছি ব্লুটুথ ডিভাইস খুঁজে দেখতে এবং তার সাথে পেয়ার করার অনুমতি দেয়"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"পেয়ার করা ব্লুটুথ ডিভাইসের সাথে কানেক্ট করুন"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"অ্যাপটিকে পেয়ার করা ব্লুটুথ ডিভাইসের সাথে কানেক্ট করতে অনুমতি দেয়"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
-    <!-- no translation found for permlab_uwb_ranging (8141915781475770665) -->
-    <skip />
-    <!-- no translation found for permdesc_uwb_ranging (2519723069604307055) -->
-    <skip />
+    <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">"আশেপাশের Ultra-Wideband ডিভাইসগুলির আপেক্ষিক অবস্থান নির্ণয় করুন"</string>
+    <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"অ্যাপকে আশেপাশের Ultra-Wideband ডিভাইসগুলির আপেক্ষিক অবস্থান নির্ণয় করার অনুমতি দিন"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"পছন্দের NFC পেমেন্ট পরিষেবার তথ্য"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"অ্যাপের মাধ্যমে পছন্দসই এনএফসি পেমেন্ট পরিষেবার তথ্য, যেমন রেজিস্ট্রার করার সহায়তা এবং রুট ডেস্টিনেশন সম্পর্কিত তথ্য অ্যাক্সেস করার অনুমতি দেয়।"</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"নিয়ার ফিল্ড কমিউনিকেশন নিয়ন্ত্রণ করে"</string>
@@ -1858,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"ব্যাটারি সেভার ডার্ক থিম চালু করে এবং ব্যাকগ্রাউন্ড অ্যাক্টিভিটি, কিছু ভিজ্যুয়াল এফেক্ট এবং “Ok Google”-এর মতো ফিচার সীমিত করে বা বন্ধ করে দেয়\n\n"<annotation id="url">"আরও জানুন"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"ব্যাটারি সেভার ডার্ক থিম চালু করে এবং ব্যাকগ্রাউন্ড অ্যাক্টিভিটি, কিছু ভিজ্যুয়াল এফেক্ট এবং “Ok Google”-এর মতো ফিচার সীমিত করে বা বন্ধ করে দেয়।"</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>
@@ -1937,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"বন্ধ করুন"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"উত্তর"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ভিডিও"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"বাতিল করুন"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"কল কেটে দেওয়া"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"ইনকামিং কল"</string>
@@ -2080,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"এই বিজ্ঞপ্তির গুরুত্ব কমিয়ে মিউট হিসেবে সেট করা হয়েছে। মতামত জানাতে ট্যাপ করুন।"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"এই বিজ্ঞপ্তির গুরুত্ব বাড়ানো হয়েছে। মতামত জানাতে ট্যাপ করুন।"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"এই বিজ্ঞপ্তির গুরুত্ব কমানো হয়েছে। মতামত জানাতে ট্যাপ করুন।"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"উন্নত নোটিফিকেশন ব্যবহার করুন"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"সাজেস্ট করা অ্যাকশন, উত্তর এবং আরও অনেক কিছু পাওয়া চালিয়ে যেতে, উন্নত নোটিফিকেশন পাওয়ার সুবিধা চালু করুন। Android অ্যাডাপ্টিভ নোটিফিকেশন আর কাজ করবে না।"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"চালু করুন"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"এখন নয়"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"আরও জানুন"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"উন্নত নোটিফিকেশন পরিচিতির নাম এবং মেসেজের মতো ব্যক্তিগত তথ্য ছাড়াও নোটিফিকেশনের সবকটি কন্টেন্ট পড়তে পারবে। এছাড়াও, এই ফিচার নোটিফিকেশন বাতিল করতে পারবে এবং নোটিফিকেশনে থাকা বোতামের সাহায্যে অ্যাকশন নিতে পারবে, যেমন ফোন কলের উত্তর দেওয়া।\n\nএই ফিচার প্রায়োরিটি মোড চালু বা বন্ধ করতে এবং সেই সম্পর্কিত সেটিংস পরিবর্তনও করতে পারবে।"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"রুটিন মোডের তথ্য সংক্রান্ত বিজ্ঞপ্তি"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"সাধারণত যখন চার্জ দেন, তার আগে চার্জ শেষ হয়ে যেতে পারে"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"ডিভাইস বেশিক্ষণ চালু রাখতে ব্যাটারি সেভার চালু করা হয়েছে"</string>
@@ -2279,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"আপনার স্ক্রিনের অংশ এখন আপনি বড় করে দেখতে পারবেন"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"সেটিংস থেকে চালু করুন"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"বাতিল করুন"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"ডিভাইসের মাইক্রোফোন আনব্লক করুন"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"ডিভাইসের ক্যামেরা আনব্লক করুন"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; এবং সবকটি অ্যাপ ও পরিষেবার জন্য"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"আনব্লক করুন"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"সেন্সর গোপনীয়তা"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"অ্যাপের আইকন"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"অ্যাপের ব্র্যান্ড ছবি"</string>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index b034223..b0a9726 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -1875,10 +1875,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Ažurirao je vaš administrator"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisao je vaš administrator"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Uredu"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnosti u pozadini, određene vizuelne efekte i funkcije kao što je \"Ok Google\"\n\n"<annotation id="url">"Saznajte više"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnosti u pozadini, određene vizuelne efekte i funkcije kao što je \"Ok Google\"."</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>
@@ -1962,6 +1960,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Zatvori"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Odgovori"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Odbaci"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Prekini vezu"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Dolazni poziv"</string>
@@ -2107,18 +2106,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Značaj ovog obavještenja je umanjen na Nečujno. Dodirnite da pošaljete povratne informacije."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Značaj ovog obavještenja je povećan. Dodirnite da pošaljete povratne informacije."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Značaj ovog obavještenja je umanjen. Dodirnite da pošaljete povratne informacije."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Probajte poboljšana obavještenja"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Da nastavite primati prijedloge radnji, odgovore i još mnogo toga, uključite poboljšana obavještenja. Prilagodljiva obavještenja Androida više nisu podržana."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Uključi"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Ne sada"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Saznajte više"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Poboljšana obavještenja mogu čitati sav sadržaj obavještenja, uključujući lične informacije kao što su imena kontakata i poruke. Ova funkcija također može odbaciti obavještenja ili poduzeti radnje vezane za dugmad u obavještenjima, kao što je javljanje na telefonske pozive.\n\nOva funkcija također može uključiti ili isključiti način rada Prioriteti i promijeniti srodne postavke."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Obavještenje za informacije Rutinskog načina"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Moguće je da će se baterija isprazniti prije uobičajenog punjenja"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Ušteda baterije je aktivirana da bi se produžio vijek trajanja baterije"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 96f0b7c..9db0869 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -1695,7 +1695,7 @@
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total és adequat per a les aplicacions que t\'ajuden amb l\'accessibilitat, però no per a la majoria de les aplicacions."</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Veure i controlar la pantalla"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Pot llegir tot el contingut de la pantalla i mostrar contingut sobre altres aplicacions."</string>
-    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Mostra i duu a terme accions"</string>
+    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Mostrar i dur a terme accions"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pot fer un seguiment de les teves interaccions amb una aplicació o un sensor de maquinari, i interaccionar amb aplicacions en nom teu."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permet"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Denega"</string>
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Actualitzat per l\'administrador"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Suprimit per l\'administrador"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"D\'acord"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Estalvi de bateria activa el tema fosc i limita o desactiva l\'activitat en segon pla, alguns efectes visuals i funcions com \"Hey Google\".\n\n"<annotation id="url">"Més informació"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Estalvi de bateria activa el tema fosc i limita o desactiva l\'activitat en segon pla, alguns efectes visuals i funcions com \"Hey Google\"."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Per reduir l\'ús de dades, la funció Economitzador de dades evita que determinades aplicacions enviïn o rebin dades en segon pla. L\'aplicació que estiguis fent servir podrà accedir a les dades, però menys sovint. Això vol dir, per exemple, que les imatges no es mostraran fins que no les toquis."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Activar l\'Economitzador de dades?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Activa"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Tanca"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Respon"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vídeo"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Rebutja"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Penja"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Trucada entrant"</string>
@@ -1948,7 +1947,7 @@
     <string name="user_creation_adding" msgid="7305185499667958364">"Concedeixes permís a <xliff:g id="APP">%1$s</xliff:g> per crear un usuari amb el compte <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
     <string name="language_selection_title" msgid="52674936078683285">"Afegeix un idioma"</string>
     <string name="country_selection_title" msgid="5221495687299014379">"Preferència de regió"</string>
-    <string name="search_language_hint" msgid="7004225294308793583">"Nom de l\'idioma"</string>
+    <string name="search_language_hint" msgid="7004225294308793583">"Escriu el nom de l\'idioma"</string>
     <string name="language_picker_section_suggested" msgid="6556199184638990447">"Suggerits"</string>
     <string name="language_picker_section_all" msgid="1985809075777564284">"Tots els idiomes"</string>
     <string name="region_picker_section_all" msgid="756441309928774155">"Totes les regions"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"El nivell d\'aquesta notificació s\'ha disminuït a Silenci. Toca per proporcionar suggeriments."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Aquesta notificació s\'ha classificat amb un nivell superior. Toca per proporcionar suggeriments."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Aquesta notificació s\'ha classificat amb un nivell inferior. Toca per proporcionar suggeriments."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Prova notificacions millorades"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Per continuar rebent accions suggerides, respostes i més, activa les notificacions millorades. Les notificacions adaptatives d\'Android ja no s\'admeten."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Activa"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Ara no"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Més informació"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Les notificacions millorades poden llegir tot el contingut de les notificacions, inclosa la informació personal com els noms dels contactes i els missatges. Aquesta funció també pot ignorar les notificacions o fer accions amb els botons de les notificacions, com ara contestar a trucades.\n\nA més, pot activar i desactivar el mode Prioritat i canviar-ne la configuració."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificació d\'informació del mode de rutina"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"És possible que la bateria s\'esgoti abans de la càrrega habitual"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"S\'ha activat l\'estalvi de bateria per prolongar-ne la durada"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 0dd472f..de6debb 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -1406,10 +1406,10 @@
     <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"Bylo zjištěno analogové zvukové příslušenství"</string>
     <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"Připojené zařízení není s tímto telefonem kompatibilní. Klepnutím zobrazíte další informace."</string>
     <string name="adb_active_notification_title" msgid="408390247354560331">"Ladění přes USB připojeno"</string>
-    <string name="adb_active_notification_message" msgid="5617264033476778211">"Klepnutím vypnete ladění přes USB"</string>
+    <string name="adb_active_notification_message" msgid="5617264033476778211">"Klepnutím ladění přes USB vypnete"</string>
     <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Vyberte, chcete-li zakázat ladění přes USB."</string>
     <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Bezdrátové ladění je připojeno"</string>
-    <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Klepnutím vypnete bezdrátové ladění"</string>
+    <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Klepnutím bezdrátové ladění vypnete"</string>
     <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Vyberte, chcete-li zakázat bezdrátové ladění."</string>
     <string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Režim správce testů je aktivní"</string>
     <string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Chcete-li deaktivovat režim správce testů, restartujte zařízení do továrního nastavení."</string>
@@ -1734,13 +1734,13 @@
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nezapínat"</string>
     <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"ZAP"</string>
     <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"VYP"</string>
-    <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Chcete službě <xliff:g id="SERVICE">%1$s</xliff:g> povolit, aby nad vaším zařízením měla plnou kontrolu?"</string>
+    <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Chcete službě <xliff:g id="SERVICE">%1$s</xliff:g> povolit plnou kontrolu nad vaším zařízením?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Pokud zapnete službu <xliff:g id="SERVICE">%1$s</xliff:g>, zařízení nebude používat zámek obrazovky k vylepšení šifrování dat."</string>
-    <string name="accessibility_service_warning_description" msgid="291674995220940133">"Plná kontrola je vhodná u aplikací, které vám pomáhají s usnadněním přístupu, nikoli u většiny aplikací."</string>
+    <string name="accessibility_service_warning_description" msgid="291674995220940133">"Plná kontrola je vhodná u aplikací, které vám pomáhají s usnadněním přístupu. U většiny aplikací však vhodná není."</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Zobrazení a ovládání obrazovky"</string>
-    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Může číst veškerý obsah obrazovky a zobrazovat obsah přes ostatní aplikace."</string>
+    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Služba může číst veškerý obsah obrazovky a zobrazovat ho přes ostatní aplikace."</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Zobrazení a provádění akcí"</string>
-    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Může sledovat vaše interakce s aplikací nebo hardwarovým senzorem a komunikovat s aplikacemi namísto vás."</string>
+    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Služba může sledovat vaše interakce s aplikací nebo hardwarovým senzorem a komunikovat s aplikacemi namísto vás."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Povolit"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Zakázat"</string>
     <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Chcete-li některou funkci začít používat, klepněte na ni:"</string>
@@ -1898,10 +1898,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Aktualizováno administrátorem"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Smazáno administrátorem"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Spořič baterie zapne tmavý motiv a omezí nebo vypne aktivitu na pozadí, některé vizuální efekty a funkce jako „Ok Google“\n\n"<annotation id="url">"Další informace"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Spořič baterie zapne tmavý motiv a omezí nebo vypne aktivitu na pozadí, některé vizuální efekty a funkce jako „Ok Google“."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Z důvodu snížení využití dat brání spořič dat některým aplikacím v odesílání nebo příjmu dat na pozadí. Aplikace, kterou právě používáte, data přenášet může, ale může tak činit méně často. V důsledku toho se například obrázky nemusejí zobrazit, dokud na ně neklepnete."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Chcete zapnout Spořič dat?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Zapnout"</string>
@@ -1993,6 +1991,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Zavřít"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Přijmout"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Odmítnout"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Zavěsit"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Příchozí hovor"</string>
@@ -2140,18 +2139,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Toto oznámení bylo ztlumeno. Po klepnutí můžete zadat zpětnou vazbu."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"U tohoto oznámení byla zvýšena priorita. Po klepnutí můžete zadat zpětnou vazbu."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"U tohoto oznámení byla snížena priorita. Po klepnutí můžete zadat zpětnou vazbu."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Vyzkoušejte vylepšená oznámení"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Pokud chcete dál dostávat návrhy akcí, odpovědí a další, zapněte vylepšená oznámení. Adaptivní oznámení systému Android už nejsou podporována."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Zapnout"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Teď ne"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Další informace"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Vylepšená oznámení mohou číst veškerý obsah oznámení včetně osobních údajů, jako jsou jména kontaktů a obsah zpráv. Tato funkce také může zavírat oznámení nebo aktivovat tlačítka v oznámeních, například přijímat telefonické hovory.\n\nMůže také zapnout nebo vypnout prioritní režim a změnit související nastavení."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Informační oznámení režimu sledu činností"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Baterie se možná vybije před obvyklým časem nabití"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Byl aktivován spořič baterie za účelem prodloužení výdrže"</string>
@@ -2349,5 +2342,5 @@
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ikona aplikace"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Image značky aplikace"</string>
     <string name="view_and_control_notification_title" msgid="4300765399209912240">"Zkontrolujte nastavení přístupu"</string>
-    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> může zobrazit a ovládat tuto obrazovku. Klepnutím to zkontrolujete."</string>
+    <string name="view_and_control_notification_content" msgid="8003766498562604034">"Tuto obrazovku může zobrazit a ovládat služba <xliff:g id="SERVICE_NAME">%s</xliff:g>. Klepnutím to zkontrolujete."</string>
 </resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 94b9a92..557484d 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -321,8 +321,8 @@
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"tage billeder og optage video"</string>
     <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Enheder i nærheden"</string>
     <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"finde og oprette forbindelse til enheder i nærheder"</string>
-    <string name="permgrouplab_calllog" msgid="7926834372073550288">"Opkaldslister"</string>
-    <string name="permgroupdesc_calllog" msgid="2026996642917801803">"læse og redigere opkaldslisten"</string>
+    <string name="permgrouplab_calllog" msgid="7926834372073550288">"Opkaldshistorik"</string>
+    <string name="permgroupdesc_calllog" msgid="2026996642917801803">"læse og redigere opkaldshistorik"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"Telefon"</string>
     <string name="permgroupdesc_phone" msgid="270048070781478204">"foretage og administrere telefonopkald"</string>
     <string name="permgrouplab_sensors" msgid="9134046949784064495">"Kropssensorer"</string>
@@ -363,10 +363,8 @@
     <string name="permdesc_receiveMms" msgid="958102423732219710">"Tillader, at appen kan modtage og behandle mms-beskeder. Det betyder, at appen kan overvåge eller slette de beskeder, der sendes til din enhed, uden at vise dem til dig."</string>
     <string name="permlab_bindCellBroadcastService" msgid="586746677002040651">"Videresend Cell Broadcast-meddelelser"</string>
     <string name="permdesc_bindCellBroadcastService" msgid="6540910200973641606">"Tillader, at appen bindes til Cell Broadcast-modulet, så Cell Broadcast-meddelelser kan videresendes, når de modtages. I nogle områder sendes der Cell Broadcast-underretninger for at advare dig om nødsituationer. Ondsindede apps kan forstyrre effektiviteten eller driften af din enhed, når den modtager en Cell Broadcast-meddelelse om en nødsituation."</string>
-    <!-- no translation found for permlab_manageOngoingCalls (281244770664231782) -->
-    <skip />
-    <!-- no translation found for permdesc_manageOngoingCalls (7003138133829915265) -->
-    <skip />
+    <string name="permlab_manageOngoingCalls" msgid="281244770664231782">"Administrere igangværende opkald"</string>
+    <string name="permdesc_manageOngoingCalls" msgid="7003138133829915265">"Giver appen tilladelse til at se oplysninger om igangværende opkald på din enhed og styre disse opkald."</string>
     <string name="permlab_readCellBroadcasts" msgid="5869884450872137693">"læse Cell Broadcast-meddelelser"</string>
     <string name="permdesc_readCellBroadcasts" msgid="672513437331980168">"Tillader, at appen læser Cell Broadcast-underretninger, der modtages af din enhed. I nogle områder sendes der Cell Broadcast-underretninger for at advare om nødsituationer. Ondsindede apps kan forstyrre ydelsen eller driften af ​din ​enhed, når der modtages en Cell Broadcast-meddelelse om en nødsituation."</string>
     <string name="permlab_subscribedFeedsRead" msgid="217624769238425461">"læse feeds, jeg abonnerer på"</string>
@@ -421,12 +419,12 @@
     <string name="permdesc_writeContacts" product="tablet" msgid="6422419281427826181">"Tillader, at appen kan ændre data om de kontakter, der er gemt på din tablet. Denne tilladelse giver apps mulighed for at slette kontaktdata."</string>
     <string name="permdesc_writeContacts" product="tv" msgid="6488872735379978935">"Tillader, at appen kan ændre data om de kontakter, der er gemt på din Android TV-enhed. Denne tilladelse giver apps mulighed for at slette kontaktdata."</string>
     <string name="permdesc_writeContacts" product="default" msgid="8304795696237065281">"Tillader, at appen kan ændre data om de kontakter, der er gemt på din telefon. Denne tilladelse giver apps mulighed for at slette kontaktdata."</string>
-    <string name="permlab_readCallLog" msgid="1739990210293505948">"læse opkaldsliste"</string>
+    <string name="permlab_readCallLog" msgid="1739990210293505948">"læse opkaldshistorik"</string>
     <string name="permdesc_readCallLog" msgid="8964770895425873433">"Denne app kan læse din opkaldshistorik."</string>
-    <string name="permlab_writeCallLog" msgid="670292975137658895">"skriv opkaldsliste"</string>
-    <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Tillader, at appen ændrer din tablets opkaldsliste, f.eks. data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldsliste."</string>
-    <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Tillader, at appen ændrer din Android TV-enheds opkaldsliste, bl.a. data om indgående og udgående opkald. Skadelige apps kan bruge dette til at rydde eller ændre din opkaldsliste."</string>
-    <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Tillader, at appen ændrer telefonens opkaldsliste, f.eks. data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldsliste."</string>
+    <string name="permlab_writeCallLog" msgid="670292975137658895">"skriv opkaldshistorik"</string>
+    <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Tillader, at appen ændrer din tablets opkaldshistorik, f.eks. data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldshistorik."</string>
+    <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Tillader, at appen ændrer din Android TV-enheds opkaldshistorik, bl.a. data om indgående og udgående opkald. Skadelige apps kan bruge dette til at rydde eller ændre din opkaldshistorik."</string>
+    <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Tillader, at appen ændrer telefonens opkaldshistorik, f.eks. data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldshistorik."</string>
     <string name="permlab_bodySensors" msgid="3411035315357380862">"få adgang til kropssensorer (f.eks. pulsmålere)"</string>
     <string name="permdesc_bodySensors" product="default" msgid="2365357960407973997">"Giver appen adgang til data fra sensorer, der overvåger din fysiske tilstand, f.eks. din puls."</string>
     <string name="permlab_readCalendar" msgid="6408654259475396200">"Læs kalenderbegivenheder og -info"</string>
@@ -566,8 +564,8 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Tillader, at appen kan ændre din billedsamling."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"læse placeringer fra din mediesamling"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Tillader, at appen kan læse placeringer fra din mediesamling."</string>
-    <string name="biometric_app_setting_name" msgid="3339209978734534457">"Brug biometriske systemer"</string>
-    <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Brug biometriske systemer eller skærmlås"</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">"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>
@@ -1697,7 +1695,7 @@
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Fuld kontrol er velegnet til apps, der hjælper dig med hjælpefunktioner, men ikke de fleste apps."</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Se og styre skærm"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Den kan læse alt indhold på skærmen og vise indhold oven på andre apps."</string>
-    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Se og udfør handlinger"</string>
+    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Se og udføre handlinger"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Den kan spore dine interaktioner med en app eller en hardwaresensor og interagere med apps på dine vegne."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Tillad"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Afvis"</string>
@@ -1854,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Opdateret af din administrator"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Slettet af din administrator"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Batterisparefunktionen aktiverer Mørkt tema og deaktiverer eller begrænser aktivitet i baggrunden, visse visuelle effekter og funktioner som f.eks. \"Hey Google\"\n\n"<annotation id="url">"Få flere oplysninger"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Batterisparefunktionen aktiverer Mørkt tema og deaktiverer eller begrænser aktivitet i baggrunden, visse visuelle effekter og funktioner som f.eks. \"Hey Google\"."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Datasparefunktionen forhindrer nogle apps i at sende eller modtage data i baggrunden for at reducere dataforbruget. En app, der er i brug, kan få adgang til data, men gør det måske ikke så ofte. Dette kan f.eks. betyde, at billeder ikke vises, før du trykker på dem."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Vil du aktivere Datasparefunktion?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivér"</string>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Luk"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Besvar"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Afvis"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Læg på"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Indgående opkald"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Denne notifikation blev angivet som Lydløs. Tryk for at give feedback."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Denne notifikation blev placeret højere. Tryk for at give feedback."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Denne notifikation blev placeret lavere. Tryk for at give feedback."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Prøv forbedrede notifikationer"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Aktivér forbedrede notifikationer for at fortsætte med at få forslag til handlinger, svar og meget mere. Tilpassede Android-notifikationer understøttes ikke længere."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Aktivér"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Ikke nu"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Få flere oplysninger"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Forbedrede notifikationer kan læse alt indhold i notifikationer, bl.a. personlige oplysninger som f.eks. beskeder og navne på kontakter. Denne funktion kan også afvise notifikationer eller aktivere knapper i notifikationer, herunder besvare opkald.\n\nDenne funktion kan også aktivere og deaktivere tilstanden Prioritet samt ændre relaterede indstillinger."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notifikation med oplysninger om rutinetilstand"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Enheden løber muligvis tør for batteri, inden du normalt oplader den"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Batterisparefunktion er aktiveret for at forlænge batteritiden"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 6e8ab72..04b5747 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -319,10 +319,8 @@
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"Zugriff auf körperliche Aktivität"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"Kamera"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"Bilder und Videos aufnehmen"</string>
-    <!-- no translation found for permgrouplab_nearby_devices (5529147543651181991) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_nearby_devices (3213561597116913508) -->
-    <skip />
+    <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Geräte in der Nähe"</string>
+    <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"Geräte in der Nähe finden und eine Verbindung herstellen"</string>
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"Anrufliste"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"Schreib- und Lesezugriff auf Anrufliste"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"Telefon"</string>
@@ -540,14 +538,10 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Erlaubt der App, Bluetooth-Geräte in der Nähe zu finden und zu koppeln"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"Mit gekoppelten Bluetooth-Geräten verbinden"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Erlaubt der App, sich mit gekoppelten Bluetooth-Geräten zu verbinden"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
-    <!-- no translation found for permlab_uwb_ranging (8141915781475770665) -->
-    <skip />
-    <!-- no translation found for permdesc_uwb_ranging (2519723069604307055) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"Inhalte an Bluetooth-Geräte in der Nähe senden"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Erlaubt der App, Inhalte an Bluetooth-Geräte in der Nähe zu senden"</string>
+    <string name="permlab_uwb_ranging" msgid="8141915781475770665">"Relative Distanz zwischen Ultrabreitband-Geräten in der Nähe bestimmen"</string>
+    <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Ermöglicht der App, die relative Distanz zwischen Ultrabreitband-Geräten in der Nähe zu bestimmen"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Informationen zum bevorzugten NFC-Zahlungsdienst"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"Ermöglicht der App, Informationen zum bevorzugten NFC-Zahlungsdienst abzurufen, etwa registrierte Hilfsmittel oder das Routenziel."</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"Nahfeldkommunikation steuern"</string>
@@ -1698,7 +1692,7 @@
     <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"AUS"</string>
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> die vollständige Kontrolle über dein Gerät geben?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Wenn du <xliff:g id="SERVICE">%1$s</xliff:g> aktivierst, verwendet dein Gerät nicht die Displaysperre, um die Datenverschlüsselung zu verbessern."</string>
-    <string name="accessibility_service_warning_description" msgid="291674995220940133">"Die vollständige Kontrolle sollte nur für die Apps aktiviert werden, die dir den Zugang zu den App-Funktionen erleichtern. Das ist in der Regel nur ein kleiner Teil der Apps."</string>
+    <string name="accessibility_service_warning_description" msgid="291674995220940133">"Die vollständige Kontrolle sollte nur für Apps aktiviert werden, die dir Zugang zu App-Funktionen erleichtern. Das ist in der Regel nur ein kleiner Teil der Apps."</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Bildschirm aufrufen und steuern"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Die Funktion kann alle Inhalte auf dem Bildschirm lesen und diese Inhalte über andere Apps anzeigen."</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Aktionen aufrufen und durchführen"</string>
@@ -1858,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Von deinem Administrator aktualisiert"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Von deinem Administrator gelöscht"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Der Energiesparmodus aktiviert das dunkle Design und schränkt Hintergrundaktivitäten, einige optische Effekte und Funktionen wie „Hey Google“ ein oder schaltet diese ab\n\n"<annotation id="url">"Weitere Informationen"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Der Energiesparmodus aktiviert das dunkle Design und schränkt Hintergrundaktivitäten, einige optische Effekte und Funktionen wie „Hey Google“ ein oder schaltet diese ab."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Der Datensparmodus verhindert zum einen, dass manche Apps im Hintergrund Daten senden oder empfangen, sodass weniger Daten verbraucht werden. Zum anderen werden die Datenzugriffe der gerade aktiven App eingeschränkt, was z. B. dazu führen kann, dass Bilder erst angetippt werden müssen, bevor sie sichtbar werden."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Datensparmodus aktivieren?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivieren"</string>
@@ -1937,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Schließen"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Annehmen"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Ablehnen"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Auflegen"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Eingehender Anruf"</string>
@@ -2007,7 +2000,7 @@
     <string name="time_picker_text_input_mode_description" msgid="4761160667516611576">"In den Texteingabemodus wechseln, um die Uhrzeit einzugeben."</string>
     <string name="time_picker_radial_mode_description" msgid="1222342577115016953">"In den Uhrzeitmodus wechseln, um die Uhrzeit einzugeben."</string>
     <string name="autofill_picker_accessibility_title" msgid="4425806874792196599">"Optionen für automatisches Ausfüllen"</string>
-    <string name="autofill_save_accessibility_title" msgid="1523225776218450005">"Für \"Automatisches Ausfüllen\" speichern"</string>
+    <string name="autofill_save_accessibility_title" msgid="1523225776218450005">"Für „Automatisches Ausfüllen“ speichern"</string>
     <string name="autofill_error_cannot_autofill" msgid="6528827648643138596">"Inhalte können nicht automatisch ausgefüllt werden"</string>
     <string name="autofill_picker_no_suggestions" msgid="1076022650427481509">"Keine Vorschläge für automatisches Ausfüllen"</string>
     <plurals name="autofill_picker_some_suggestions" formatted="false" msgid="6651883186966959978">
@@ -2080,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Diese Benachrichtigung wurde auf „Lautlos“ herabgestuft. Tippe, um Feedback zu geben."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Diese Benachrichtigung wurde hochgestuft. Tippe, um Feedback zu geben."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Diese Benachrichtigung wurde herabgestuft. Tippe, um Feedback zu geben."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"„Erweiterte Benachrichtigungen“ ausprobieren"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Wenn du weiterhin beispielsweise Vorschläge für Aktionen und Antworten erhalten möchtest, aktiviere die Funktion „Erweiterte Benachrichtigungen“. Adaptive Benachrichtigungen für Android werden nicht mehr unterstützt."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Aktivieren"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Nicht jetzt"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Weitere Informationen"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Die Funktion „Erweiterte Benachrichtigungen“ kann alle Benachrichtigungen lesen, darunter auch personenbezogene Daten wie Kontaktnamen und Nachrichten. Außerdem kann sie Benachrichtigungen schließen oder Schaltflächen in Benachrichtigungen verwenden und so beispielsweise Anrufe entgegennehmen.\n\nDiese Funktion kann auch den Prioritätsmodus aktivieren bzw. deaktivieren und zugehörige Einstellungen ändern."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Infomitteilung zum Ablaufmodus"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Dein Akku könnte vor der gewöhnlichen Ladezeit leer sein"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Energiesparmodus aktiviert, um die Akkulaufzeit zu verlängern"</string>
@@ -2279,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Du kannst das Display teilweise vergrößern"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"In den Einstellungen aktivieren"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Schließen"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Blockierung des Gerätemikrofons aufheben"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Blockierung der Gerätekamera aufheben"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Für &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; und alle Apps und Dienste"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Blockierung aufheben"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Datenschutz für Sensoren"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"App-Symbol"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"App-Branding-Hintergrundbild"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 517ba84..417b8f2 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -1852,10 +1852,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">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Η Εξοικονόμηση μπαταρίας ενεργοποιεί το Σκούρο θέμα και περιορίζει ή απενεργοποιεί τη δραστηριότητα στο παρασκήνιο, ορισμένα οπτικά εφέ και λειτουργίες όπως την εντολή \"Ok Google\"\n\n"<annotation id="url">"Μάθετε περισσότερα"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Η Εξοικονόμηση μπαταρίας ενεργοποιεί το Σκούρο θέμα και περιορίζει ή απενεργοποιεί τη δραστηριότητα στο παρασκήνιο, ορισμένα οπτικά εφέ και λειτουργίες όπως την εντολή \"Ok Google\"."</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Κλείσιμο"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Απάντηση"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Βίντεο"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Απόρριψη"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Τερματισμός"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Εισερχόμενη κλήση"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Αυτή η ειδοποίηση υποβιβάστηκε στις Αθόρυβες. Πατήστε για να υποβάλετε σχόλια."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Αυτή η ειδοποίηση κατατάχθηκε ψηλότερα. Πατήστε για να υποβάλετε σχόλια."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Αυτή η ειδοποίηση κατατάχθηκε χαμηλότερα. Πατήστε για να υποβάλετε σχόλια."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Δοκιμή βελτιωμ. ειδοποιήσεων"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Για να συνεχίσετε να λαμβάνετε προτεινόμενες ενέργειες, απαντήσεις και άλλα, ενεργοποιήστε τις βελτιωμένες ειδοποιήσεις. Δεν υποστηρίζονται πλέον οι Προσαρμοστικές ειδοποιήσεις Android."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Ενεργοποίηση"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Όχι τώρα"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Μάθετε περισσότερα"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Οι Βελτιωμένες ειδοποιήσεις έχουν τη δυνατότητα ανάγνωσης όλου του περιεχομένου ειδοποιήσεων, συμπεριλαμβανομένων των προσωπικών πληροφοριών, όπως ονομάτων επαφών και μηνυμάτων. Αυτή η λειτουργία έχει επίσης τη δυνατότητα παράβλεψης ειδοποιήσεων ή λήψης ενεργειών σε κουμπιά στις ειδοποιήσεις, όπως η απάντηση τηλεφωνικών κλήσεων.\n\nΕπίσης, έχει τη δυνατότητα ενεργοποίησης ή απενεργοποίησης της λειτουργίας Προτεραιότητας, καθώς και αλλαγής των σχετικών ρυθμίσεων."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Ειδοποίηση πληροφοριών λειτουργίας Ρουτίνας"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Η μπαταρία μπορεί να εξαντληθεί πριν από τη συνηθισμένη φόρτιση"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Η Εξοικονόμηση μπαταρίας ενεργοποιήθηκε για την επέκταση της διάρκειας ζωής της μπαταρίας"</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index e841e27..f8ca0b1 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and features like \'Hey Google\'\n\n"<annotation id="url">"Learn more"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and features like \'Hey Google\'."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app you\'re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Close"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Answer"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Decline"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Hang up"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Incoming call"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"This notification was demoted to silent. Tap to provide feedback."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"This notification was ranked higher. Tap to provide feedback."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"This notification was ranked lower. Tap to provide feedback."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Try enhanced notifications"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"To keep getting suggested actions, replies and more, turn on enhanced notifications. Android Adaptive Notifications are no longer supported."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Turn on"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Not now"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Learn more"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Enhanced notifications can read all notification content, including personal information like contact names and messages. This feature can also dismiss notifications or take actions on buttons in notifications, such as answering phone calls.\n\nThis feature can also turn Priority mode on or off and change related settings."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Routine Mode info notification"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Battery may run out before usual charge"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Battery Saver activated to extend battery life"</string>
@@ -2271,7 +2264,7 @@
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
     <string name="window_magnification_prompt_title" msgid="2876703640772778215">"New magnification settings"</string>
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"You can now magnify part of your screen"</string>
-    <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in settings"</string>
+    <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in Settings"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Dismiss"</string>
     <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Unblock device microphone"</string>
     <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Unblock device camera"</string>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 52d6dc5..dc993fe 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and features like \'Hey Google\'\n\n"<annotation id="url">"Learn more"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and features like \'Hey Google\'."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app you\'re currently using can access data, but may do so less frequently. This may mean, for example, that images don\'t display until you tap them."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Close"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Answer"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Decline"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Hang up"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Incoming call"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"This notification was demoted to silent. Tap to provide feedback."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"This notification was ranked higher. Tap to provide feedback."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"This notification was ranked lower. Tap to provide feedback."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Try enhanced notifications"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"To keep getting suggested actions, replies and more, turn on enhanced notifications. Android Adaptive Notifications are no longer supported."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Turn on"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Not now"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Learn more"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Enhanced notifications can read all notification content, including personal information like contact names and messages. This feature can also dismiss notifications or take actions on buttons in notifications, such as answering phone calls.\n\nThis feature can also turn Priority mode on or off and change related settings."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Routine Mode info notification"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Battery may run out before usual charge"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Battery Saver activated to extend battery life"</string>
@@ -2271,7 +2264,7 @@
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
     <string name="window_magnification_prompt_title" msgid="2876703640772778215">"New magnification settings"</string>
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"You can now magnify part of your screen"</string>
-    <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in settings"</string>
+    <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in Settings"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Dismiss"</string>
     <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Unblock device microphone"</string>
     <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Unblock device camera"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index a25f29c..5b80a90 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and features like \'Hey Google\'\n\n"<annotation id="url">"Learn more"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and features like \'Hey Google\'."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app that you’re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Close"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Answer"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Decline"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Hang up"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Incoming call"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"This notification was demoted to silent. Tap to provide feedback."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"This notification was ranked higher. Tap to provide feedback."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"This notification was ranked lower. Tap to provide feedback."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Try enhanced notifications"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"To keep getting suggested actions, replies and more, turn on enhanced notifications. Android Adaptive Notifications are no longer supported."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Turn on"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Not now"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Learn more"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Enhanced notifications can read all notification content, including personal information like contact names and messages. This feature can also dismiss notifications or take actions on buttons in notifications, such as answering phone calls.\n\nThis feature can also turn Priority mode on or off and change related settings."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Routine Mode info notification"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Battery may run out before usual charge"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Battery Saver activated to extend battery life"</string>
@@ -2271,7 +2264,7 @@
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
     <string name="window_magnification_prompt_title" msgid="2876703640772778215">"New magnification settings"</string>
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"You can now magnify part of your screen"</string>
-    <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in settings"</string>
+    <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in Settings"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Dismiss"</string>
     <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Unblock device microphone"</string>
     <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Unblock device camera"</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index dbb72e9..dad96b4 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and features like \'Hey Google\'\n\n"<annotation id="url">"Learn more"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and features like \'Hey Google\'."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app that you’re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Close"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Answer"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Decline"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Hang up"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Incoming call"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"This notification was demoted to silent. Tap to provide feedback."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"This notification was ranked higher. Tap to provide feedback."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"This notification was ranked lower. Tap to provide feedback."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Try enhanced notifications"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"To keep getting suggested actions, replies and more, turn on enhanced notifications. Android Adaptive Notifications are no longer supported."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Turn on"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Not now"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Learn more"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Enhanced notifications can read all notification content, including personal information like contact names and messages. This feature can also dismiss notifications or take actions on buttons in notifications, such as answering phone calls.\n\nThis feature can also turn Priority mode on or off and change related settings."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Routine Mode info notification"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Battery may run out before usual charge"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Battery Saver activated to extend battery life"</string>
@@ -2271,7 +2264,7 @@
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
     <string name="window_magnification_prompt_title" msgid="2876703640772778215">"New magnification settings"</string>
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"You can now magnify part of your screen"</string>
-    <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in settings"</string>
+    <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in Settings"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Dismiss"</string>
     <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Unblock device microphone"</string>
     <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Unblock device camera"</string>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index 0c50419..2cdf5ba 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -1929,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‎‏‎‎‏‎‏‏‎‏‎‏‎‏‏‏‏‎‏‎‏‏‎‎‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‏‎‏‎‏‏‎‏‏‎‏‎‎Close‎‏‎‎‏‎"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‏‎‏‏‏‎‎‏‏‎‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‏‏‎‏‎‎‏‎‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‏‎‏‎‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>‎‏‎‎‏‏‏‎: ‎‏‎‎‏‏‎<xliff:g id="SENDER_NAME">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‎‎‎‎‎‏‏‎‎‏‏‎‏‏‎‎‏‏‎‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‎‏‎‏‎‏‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎Answer‎‏‎‎‏‎"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‎‎‏‏‎‎‎‏‎‎‏‎‎‎‎‏‎‏‏‎‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‏‎‎‎‏‏‏‏‏‎‏‎‎‏‎Video‎‏‎‎‏‎"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‎‏‏‎‏‎‎‏‎‎‎‏‎‏‎‎‎‎‏‎‎‎‎‎‏‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎‎‏‏‏‏‎‎‏‎‏‎‏‏‎‎Decline‎‏‎‎‏‎"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‏‎‏‏‎‏‎‏‏‎‎‎‎‎‎‎‎‎‎‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‎‎‏‎‎‎‎‏‎‏‎‎‎‏‏‎Hang Up‎‏‎‎‏‎"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‎‎‎‎‎‎‏‎‏‏‎‏‎‏‏‏‎‏‎‏‏‎‏‎‏‎‏‏‏‏‏‎‎‏‎‎‏‏‎‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‎Incoming call‎‏‎‎‏‎"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 128e2fb..6a1cddc 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -321,7 +321,7 @@
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"tomar fotografías y grabar videos"</string>
     <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Dispositivos cercanos"</string>
     <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"descubrir y conectarse a dispositivos cercanos"</string>
-    <string name="permgrouplab_calllog" msgid="7926834372073550288">"Llamadas"</string>
+    <string name="permgrouplab_calllog" msgid="7926834372073550288">"Registros de llamadas"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"leer y escribir el registro de llamadas telefónicas"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"Teléfono"</string>
     <string name="permgroupdesc_phone" msgid="270048070781478204">"hacer y administrar llamadas telefónicas"</string>
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Tu administrador actualizó este paquete"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Tu administrador borró este paquete"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Aceptar"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"El Ahorro de batería activa el Tema oscuro y limita o desactiva la actividad en segundo plano, algunos efectos visuales y otras funciones, como \"Hey Google\"\n\n"<annotation id="url">"Más información"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"El Ahorro de batería activa el Tema oscuro y limita o desactiva la actividad en segundo plano, algunos efectos visuales y otras funciones, como \"Hey Google\"."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Para reducir el uso de datos, el modo Ahorro de datos evita que algunas apps envíen y reciban datos en segundo plano. La app que estés usando podrá acceder a los datos, pero con menor frecuencia. De esta forma, por ejemplo, las imágenes no se mostrarán hasta que las presiones."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"¿Deseas activar Ahorro de datos?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Activar"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Cerrar"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Responder"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Rechazar"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Colgar"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Llamada entrante"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Esta notificación descendió de a Silenciada. Presiona para enviar comentarios."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Esta notificación recibió una clasificación superior. Presiona para enviar comentarios."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Esta notificación recibió una clasificación inferior. Presiona para enviar comentarios."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Prueba las notif. mejoradas"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Activa las notificaciones mejoradas para seguir recibiendo acciones sugeridas, respuestas y mucho más. Ya no se admiten las notificaciones adaptables de Android."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Activar"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Ahora no"</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="6276343083934111208">"Las notificaciones mejoradas pueden leer todo el contenido de notificaciones, incluido el que contenga información personal, como nombres de contactos y mensajes. Esta función también podrá descartar notificaciones o realizar acciones en botones de notificaciones, como responder llamadas.\n\nTambién puede activar o desactivar el Modo prioridad y cambiar la configuración relacionada."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificación de información del modo de Rutinas"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Es posible que la batería se agote antes de la carga habitual"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Se activó el Ahorro de batería para extender la duración de la batería"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 7bed3e6..7519b5a 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -34,7 +34,7 @@
     <string name="defaultMsisdnAlphaTag" msgid="2285034592902077488">"MSISDN1"</string>
     <string name="mmiError" msgid="2862759606579822246">"Se ha producido un problema de conexión o el código MMI no es válido."</string>
     <string name="mmiFdnError" msgid="3975490266767565852">"La operación solo es válida para números de marcación fija."</string>
-    <string name="mmiErrorWhileRoaming" msgid="1204173664713870114">"No se puede cambiar la configuración de desvío de llamadas desde tu teléfono mientras estás en itinerancia."</string>
+    <string name="mmiErrorWhileRoaming" msgid="1204173664713870114">"No se puede cambiar la configuración de desvío de llamadas desde tu teléfono mientras estás en roaming."</string>
     <string name="serviceEnabled" msgid="7549025003394765639">"El servicio se ha habilitado."</string>
     <string name="serviceEnabledFor" msgid="1463104778656711613">"Se ha habilitado el servicio para:"</string>
     <string name="serviceDisabled" msgid="641878791205871379">"El servicio se ha inhabilitado."</string>
@@ -108,19 +108,19 @@
     <string name="serviceClassDataSync" msgid="7895071363569133704">"Sincronización"</string>
     <string name="serviceClassPacket" msgid="1430642951399303804">"Paquete"</string>
     <string name="serviceClassPAD" msgid="6850244583416306321">"PAD"</string>
-    <string name="roamingText0" msgid="7793257871609854208">"Indicador de itinerancia activado"</string>
-    <string name="roamingText1" msgid="5073028598334616445">"Indicador de itinerancia desactivado"</string>
-    <string name="roamingText2" msgid="2834048284153110598">"Indicador de itinerancia parpadeante"</string>
+    <string name="roamingText0" msgid="7793257871609854208">"Indicador de roaming activado"</string>
+    <string name="roamingText1" msgid="5073028598334616445">"Indicador de roaming desactivado"</string>
+    <string name="roamingText2" msgid="2834048284153110598">"Indicador de roaming parpadeante"</string>
     <string name="roamingText3" msgid="831690234035748988">"Fuera del vecindario"</string>
     <string name="roamingText4" msgid="2171252529065590728">"Fuera del edificio"</string>
-    <string name="roamingText5" msgid="4294671587635796641">"Itinerancia: sistema preferido"</string>
-    <string name="roamingText6" msgid="5536156746637992029">"Itinerancia: sistema disponible"</string>
-    <string name="roamingText7" msgid="1783303085512907706">"Itinerancia: partner de alianza"</string>
-    <string name="roamingText8" msgid="7774800704373721973">"Itinerancia: partner de gran calidad"</string>
-    <string name="roamingText9" msgid="1933460020190244004">"Itinerancia: funcionalidad de servicio completa"</string>
-    <string name="roamingText10" msgid="7434767033595769499">"Itinerancia: funcionalidad de servicio parcial"</string>
-    <string name="roamingText11" msgid="5245687407203281407">"Banner de itinerancia activado"</string>
-    <string name="roamingText12" msgid="673537506362152640">"Banner de itinerancia desactivado"</string>
+    <string name="roamingText5" msgid="4294671587635796641">"Roaming: sistema preferido"</string>
+    <string name="roamingText6" msgid="5536156746637992029">"Roaming: sistema disponible"</string>
+    <string name="roamingText7" msgid="1783303085512907706">"Roaming: partner de alianza"</string>
+    <string name="roamingText8" msgid="7774800704373721973">"Roaming: partner de gran calidad"</string>
+    <string name="roamingText9" msgid="1933460020190244004">"Roaming: funcionalidad de servicio completa"</string>
+    <string name="roamingText10" msgid="7434767033595769499">"Roaming: funcionalidad de servicio parcial"</string>
+    <string name="roamingText11" msgid="5245687407203281407">"Banner de roaming activado"</string>
+    <string name="roamingText12" msgid="673537506362152640">"Banner de roaming desactivado"</string>
     <string name="roamingTextSearching" msgid="5323235489657753486">"Buscando servicio"</string>
     <string name="wfcRegErrorTitle" msgid="3193072971584858020">"No se ha podido configurar la llamada por Wi‑Fi"</string>
   <string-array name="wfcOperatorErrorAlertMessages">
@@ -412,13 +412,13 @@
     <string name="permdesc_broadcastSticky" product="tv" msgid="2338185920171000650">"Permite que la aplicación envíe emisiones que permanecen en el dispositivo una vez finalizadas. Si esta función se utiliza en exceso, podría ralentizar tu dispositivo Android TV o volverlo inestable al hacer que se ocupe demasiada memoria."</string>
     <string name="permdesc_broadcastSticky" product="default" msgid="134529339678913453">"Permite que la aplicación envíe emisiones que permanecen en el dispositivo una vez que la emisión ha finalizado. Un uso excesivo podría ralentizar el teléfono o volverlo inestable al hacer que use demasiada memoria."</string>
     <string name="permlab_readContacts" msgid="8776395111787429099">"consultar tus contactos"</string>
-    <string name="permdesc_readContacts" product="tablet" msgid="6430093481659992692">"Permite que la aplicación lea datos de los contactos almacenados en tu tablet. Las aplicaciones también podrán acceder a las cuentas de tu tablet que hayan creado contactos, y quizá tengan acceso a las cuentas creadas por aplicaciones que hayas descargado. Las aplicaciones con este permiso este permiso pueden guardar los datos de tus contactos, y las aplicaciones maliciosas puede que compartan estos datos sin que lo sepas."</string>
-    <string name="permdesc_readContacts" product="tv" msgid="8400138591135554789">"Permite que la aplicación lea datos de los contactos almacenados en tu dispositivo Android TV. Las aplicaciones también podrán acceder a las cuentas de tu dispositivo Android TV que hayan creado contactos, y quizá tengan acceso a las cuentas creadas por aplicaciones que hayas descargado. Las aplicaciones con este permiso este permiso pueden guardar los datos de tus contactos, y las aplicaciones maliciosas puede que compartan estos datos sin que lo sepas."</string>
-    <string name="permdesc_readContacts" product="default" msgid="4911989776203207644">"Permite que la aplicación lea datos de los contactos almacenados en tu teléfono. Las aplicaciones también podrán acceder a las cuentas de tu teléfono que hayan creado contactos, y quizá tengan acceso a las cuentas creadas por aplicaciones que hayas descargado. Las aplicaciones con este permiso este permiso pueden guardar los datos de tus contactos, y las aplicaciones maliciosas puede que compartan estos datos sin que lo sepas."</string>
+    <string name="permdesc_readContacts" product="tablet" msgid="6430093481659992692">"Permite que la aplicación lea datos de los contactos almacenados en tu tablet. Las aplicaciones también podrán acceder a las cuentas de tu tablet que hayan creado contactos, y quizá tengan acceso a las cuentas creadas por aplicaciones que hayas descargado. Las aplicaciones con este permiso pueden guardar los datos de tus contactos, y las aplicaciones maliciosas puede que compartan estos datos sin que lo sepas."</string>
+    <string name="permdesc_readContacts" product="tv" msgid="8400138591135554789">"Permite que la aplicación lea datos de los contactos almacenados en tu dispositivo Android TV. Las aplicaciones también podrán acceder a las cuentas de tu dispositivo Android TV que hayan creado contactos, y quizá tengan acceso a las cuentas creadas por aplicaciones que hayas descargado. Las aplicaciones con este permiso pueden guardar los datos de tus contactos, y las aplicaciones maliciosas puede que compartan estos datos sin que lo sepas."</string>
+    <string name="permdesc_readContacts" product="default" msgid="4911989776203207644">"Permite que la aplicación lea datos de los contactos almacenados en tu teléfono. Las aplicaciones también podrán acceder a las cuentas de tu teléfono que hayan creado contactos, y quizá tengan acceso a las cuentas creadas por aplicaciones que hayas descargado. Las aplicaciones con este permiso pueden guardar los datos de tus contactos, y las aplicaciones maliciosas puede que compartan estos datos sin que lo sepas."</string>
     <string name="permlab_writeContacts" msgid="8919430536404830430">"modificar tus contactos"</string>
-    <string name="permdesc_writeContacts" product="tablet" msgid="6422419281427826181">"Permite que la aplicación cambie los datos de los contactos almacenados en tu tablet. Las aplicaciones con este permiso este permiso pueden eliminar datos de contactos."</string>
-    <string name="permdesc_writeContacts" product="tv" msgid="6488872735379978935">"Permite que la aplicación cambie los datos de los contactos almacenados en tu dispositivo Android TV. Las aplicaciones con este permiso este permiso pueden eliminar datos de contactos."</string>
-    <string name="permdesc_writeContacts" product="default" msgid="8304795696237065281">"Permite que la aplicación cambie los datos de los contactos almacenados en tu teléfono. Las aplicaciones con este permiso este permiso pueden eliminar datos de contactos."</string>
+    <string name="permdesc_writeContacts" product="tablet" msgid="6422419281427826181">"Permite que la aplicación cambie los datos de los contactos almacenados en tu tablet. Las aplicaciones con este permiso pueden eliminar datos de contactos."</string>
+    <string name="permdesc_writeContacts" product="tv" msgid="6488872735379978935">"Permite que la aplicación cambie los datos de los contactos almacenados en tu dispositivo Android TV. Las aplicaciones con este permiso pueden eliminar datos de contactos."</string>
+    <string name="permdesc_writeContacts" product="default" msgid="8304795696237065281">"Permite que la aplicación cambie los datos de los contactos almacenados en tu teléfono. Las aplicaciones con este permiso pueden eliminar datos de contactos."</string>
     <string name="permlab_readCallLog" msgid="1739990210293505948">"leer el registro de llamadas"</string>
     <string name="permdesc_readCallLog" msgid="8964770895425873433">"Esta aplicación puede leer tu historial de llamadas."</string>
     <string name="permlab_writeCallLog" msgid="670292975137658895">"escribir en el registro de llamadas"</string>
@@ -521,25 +521,25 @@
     <string name="permdesc_changeWifiMulticastState" product="tv" msgid="1336952358450652595">"Permite que la aplicación reciba paquetes enviados a través de una red Wi-Fi y mediante direcciones de multidifusión a todos los dispositivos, no solo a tu dispositivo Android TV. Consume más batería que el modo sin multidifusión."</string>
     <string name="permdesc_changeWifiMulticastState" product="default" msgid="8296627590220222740">"Permite que la aplicación reciba paquetes enviados a todos los dispositivos de una red Wi-Fi que utilicen direcciones de multidifusión, no solo al teléfono. Utiliza más batería que el modo de no multidifusión."</string>
     <string name="permlab_bluetoothAdmin" msgid="6490373569441946064">"acceder a los ajustes de Bluetooth"</string>
-    <string name="permdesc_bluetoothAdmin" product="tablet" msgid="5370837055438574863">"Permite que la aplicación configure el tablet Bluetooth local y que detecte dispositivos remotos y se vincule con ellos."</string>
-    <string name="permdesc_bluetoothAdmin" product="tv" msgid="1623992984547014588">"Permite que la aplicación configure el Bluetooth en tu dispositivo Android TV, detecte dispositivos remotos y se vincule con ellos."</string>
-    <string name="permdesc_bluetoothAdmin" product="default" msgid="7381341743021234863">"Permite que la aplicación configure el teléfono Bluetooth local y que detecte dispositivos remotos y se vincule con ellos."</string>
+    <string name="permdesc_bluetoothAdmin" product="tablet" msgid="5370837055438574863">"Permite que la aplicación configure el tablet Bluetooth local y que detecte dispositivos remotos y se empareje con ellos."</string>
+    <string name="permdesc_bluetoothAdmin" product="tv" msgid="1623992984547014588">"Permite que la aplicación configure el Bluetooth en tu dispositivo Android TV, detecte dispositivos remotos y se empareje con ellos."</string>
+    <string name="permdesc_bluetoothAdmin" product="default" msgid="7381341743021234863">"Permite que la aplicación configure el teléfono Bluetooth local y que detecte dispositivos remotos y se empareje con ellos."</string>
     <string name="permlab_accessWimaxState" msgid="7029563339012437434">"conectarse a WiMAX y desconectarse de esta red"</string>
     <string name="permdesc_accessWimaxState" msgid="5372734776802067708">"Permite que la aplicación determine si está habilitada la conexión WiMAX y obtenga información sobre las redes WiMAX que están conectadas."</string>
     <string name="permlab_changeWimaxState" msgid="6223305780806267462">"cambiar estado de WiMAX"</string>
     <string name="permdesc_changeWimaxState" product="tablet" msgid="4011097664859480108">"Permite que la aplicación conecte el tablet a redes WiMAX y lo desconecte de ellas."</string>
     <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">"vincular con dispositivos Bluetooth"</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 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 vincular dispositivos Bluetooth cercanos"</string>
-    <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Permite que la aplicación detecte y vincule dispositivos Bluetooth cercanos"</string>
+    <string name="permlab_bluetooth_scan" msgid="5402587142833124594">"detectar y emparejar dispositivos Bluetooth cercanos"</string>
+    <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Permite que la aplicación detecte y empareje dispositivos Bluetooth cercanos"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"conectarse a dispositivos Bluetooth vinculados"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Permite que la aplicación se conecte a dispositivos Bluetooth vinculados"</string>
-    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"mostrar anuncios a dispositivos Bluetooth cercanos"</string>
-    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Permite que la aplicación muestre anuncios a dispositivos Bluetooth cercanos"</string>
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"emitir a dispositivos Bluetooth cercanos"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Permite que la aplicación emita a dispositivos Bluetooth cercanos"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"calcular posición de dispositivos de banda ultraancha cercanos"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Permite que la aplicación determine la posición relativa de los dispositivos de banda ultraancha cercanos"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Información sobre el servicio de pago por NFC preferido"</string>
@@ -1335,7 +1335,7 @@
     <string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"No permitir nunca"</string>
     <string name="sim_removed_title" msgid="5387212933992546283">"Tarjeta SIM retirada"</string>
     <string name="sim_removed_message" msgid="9051174064474904617">"La red móvil no estará disponible hasta que reinicies el dispositivo con una tarjeta SIM válida."</string>
-    <string name="sim_done_button" msgid="6464250841528410598">"Listo"</string>
+    <string name="sim_done_button" msgid="6464250841528410598">"Hecho"</string>
     <string name="sim_added_title" msgid="7930779986759414595">"Tarjeta SIM añadida"</string>
     <string name="sim_added_message" msgid="6602906609509958680">"Reinicia el dispositivo para acceder a la red móvil."</string>
     <string name="sim_restart_button" msgid="8481803851341190038">"Reiniciar"</string>
@@ -1348,7 +1348,7 @@
     <string name="time_picker_dialog_title" msgid="9053376764985220821">"Establecer hora"</string>
     <string name="date_picker_dialog_title" msgid="5030520449243071926">"Establecer fecha"</string>
     <string name="date_time_set" msgid="4603445265164486816">"Establecer"</string>
-    <string name="date_time_done" msgid="8363155889402873463">"Listo"</string>
+    <string name="date_time_done" msgid="8363155889402873463">"Hecho"</string>
     <string name="perms_new_perm_prefix" msgid="6984556020395757087"><font size="12" fgcolor="#ff33b5e5">"NUEVO:"</font></string>
     <string name="perms_description_app" msgid="2747752389870161996">"Proporcionado por <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="no_permissions" msgid="5729199278862516390">"No es necesario ningún permiso"</string>
@@ -1366,7 +1366,7 @@
     <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"Se ha detectado un accesorio de audio analógico"</string>
     <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"El dispositivo adjunto no es compatible con este teléfono. Toca para obtener más información."</string>
     <string name="adb_active_notification_title" msgid="408390247354560331">"Depuración USB habilitada"</string>
-    <string name="adb_active_notification_message" msgid="5617264033476778211">"Toca aquí para desactivar la depuración USB"</string>
+    <string name="adb_active_notification_message" msgid="5617264033476778211">"Toca para desactivar la depuración USB"</string>
     <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Seleccionar para inhabilitar la depuración USB"</string>
     <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Depuración inalámbrica conectada"</string>
     <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Toca para desactivar la depuración inalámbrica"</string>
@@ -1438,7 +1438,7 @@
     <string name="ext_media_status_removed" msgid="241223931135751691">"Extraído"</string>
     <string name="ext_media_status_unmounted" msgid="8145812017295835941">"Expulsado"</string>
     <string name="ext_media_status_checking" msgid="159013362442090347">"Comprobando..."</string>
-    <string name="ext_media_status_mounted" msgid="3459448555811203459">"Listo"</string>
+    <string name="ext_media_status_mounted" msgid="3459448555811203459">"Hecho"</string>
     <string name="ext_media_status_mounted_ro" msgid="1974809199760086956">"Solo lectura"</string>
     <string name="ext_media_status_bad_removal" msgid="508448566481406245">"Extraído de forma no segura"</string>
     <string name="ext_media_status_unmountable" msgid="7043574843541087748">"Dañado"</string>
@@ -1463,7 +1463,7 @@
     <string name="ime_action_search" msgid="4501435960587287668">"Buscar"</string>
     <string name="ime_action_send" msgid="8456843745664334138">"Enviar"</string>
     <string name="ime_action_next" msgid="4169702997635728543">"Siguiente"</string>
-    <string name="ime_action_done" msgid="6299921014822891569">"Listo"</string>
+    <string name="ime_action_done" msgid="6299921014822891569">"Hecho"</string>
     <string name="ime_action_previous" msgid="6548799326860401611">"Anterior"</string>
     <string name="ime_action_default" msgid="8265027027659800121">"Ejecutar"</string>
     <string name="dial_number_using" msgid="6060769078933953531">"Marcar número\ncon <xliff:g id="NUMBER">%s</xliff:g>"</string>
@@ -1510,7 +1510,7 @@
       <item quantity="other"><xliff:g id="INDEX">%d</xliff:g> de <xliff:g id="TOTAL">%d</xliff:g></item>
       <item quantity="one">1 coincidencia</item>
     </plurals>
-    <string name="action_mode_done" msgid="2536182504764803222">"Listo"</string>
+    <string name="action_mode_done" msgid="2536182504764803222">"Hecho"</string>
     <string name="progress_erasing" msgid="6891435992721028004">"Borrando almacenamiento compartido…"</string>
     <string name="share" msgid="4157615043345227321">"Compartir"</string>
     <string name="find" msgid="5015737188624767706">"Buscar"</string>
@@ -1551,7 +1551,7 @@
     <string name="keyboardview_keycode_alt" msgid="8997420058584292385">"Alt"</string>
     <string name="keyboardview_keycode_cancel" msgid="2134624484115716975">"Cancelar"</string>
     <string name="keyboardview_keycode_delete" msgid="2661117313730098650">"Eliminar"</string>
-    <string name="keyboardview_keycode_done" msgid="2524518019001653851">"Listo"</string>
+    <string name="keyboardview_keycode_done" msgid="2524518019001653851">"Hecho"</string>
     <string name="keyboardview_keycode_mode_change" msgid="2743735349997999020">"Cambio de modo"</string>
     <string name="keyboardview_keycode_shift" msgid="3026509237043975573">"Mayús"</string>
     <string name="keyboardview_keycode_enter" msgid="168054869339091055">"Intro"</string>
@@ -1694,7 +1694,7 @@
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si activas <xliff:g id="SERVICE">%1$s</xliff:g>, el dispositivo no utilizará el bloqueo de pantalla para mejorar el cifrado de datos."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total es adecuado para las aplicaciones de accesibilidad, pero no para la mayoría de las aplicaciones."</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ver y controlar la pantalla"</string>
-    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Puede leer todo el contenido de la pantalla y mostrar contenido sobre otras aplicaciones."</string>
+    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Puede leer todo el contenido de la pantalla y mostrar contenido encima de otras aplicaciones."</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Ver y realizar acciones"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Puede registrar tus interacciones con una aplicación o un sensor de hardware, así como interactuar con las aplicaciones en tu nombre."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string>
@@ -1704,7 +1704,7 @@
     <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Selecciona qué funciones usar con la tecla de volumen"</string>
     <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Se ha desactivado <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string>
     <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar accesos directos"</string>
-    <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Listo"</string>
+    <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Hecho"</string>
     <string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desactivar acceso directo"</string>
     <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar acceso directo"</string>
     <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de color"</string>
@@ -1834,7 +1834,7 @@
     <string name="immersive_cling_title" msgid="2307034298721541791">"Modo de pantalla completa"</string>
     <string name="immersive_cling_description" msgid="7092737175345204832">"Para salir, desliza el dedo de arriba abajo."</string>
     <string name="immersive_cling_positive" msgid="7047498036346489883">"Entendido"</string>
-    <string name="done_label" msgid="7283767013231718521">"Listo"</string>
+    <string name="done_label" msgid="7283767013231718521">"Hecho"</string>
     <string name="hour_picker_description" msgid="5153757582093524635">"Control deslizante circular de horas"</string>
     <string name="minute_picker_description" msgid="9029797023621927294">"Control deslizante circular de minutos"</string>
     <string name="select_hours" msgid="5982889657313147347">"Seleccionar horas"</string>
@@ -1852,11 +1852,9 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Actualizado por el administrador"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Eliminado por el administrador"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Aceptar"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
-    <string name="data_saver_description" msgid="4995164271550590517">"El modo Ahorro de datos evita que algunas aplicaciones envíen o reciban datos en segundo plano, lo que puede reducir el uso de datos. Una aplicación activa puede acceder a los datos, aunque con menos frecuencia. Esto significa que es posible que, por ejemplo, algunas imágenes no se muestren hasta que las toques."</string>
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Ahorro de batería activa el tema oscuro y limita o desactiva la actividad en segundo plano, algunos efectos visuales y funciones como \"Hey Google\"\n\n"<annotation id="url">"Más información"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Ahorro de batería activa el tema oscuro y limita o desactiva la actividad en segundo plano, algunos efectos visuales y funciones como \"Hey Google\"."</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"Ahorro de datos evita que algunas aplicaciones envíen o reciban datos en segundo plano, lo que puede reducir el uso de datos. Una aplicación que estés usando de forma activa puede acceder a los datos, aunque con menos frecuencia. Esto significa que es posible que, por ejemplo, algunas imágenes no se muestren hasta que las toques."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"¿Activar Ahorro de datos?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Activar"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273">
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Cerrar"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Responder"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vídeo"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Rechazar"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Colgar"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Llamada entrante"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"La importancia de esta notificación ha disminuido a Silencio. Toca para enviar comentarios."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Esta notificación aparecerá en una posición más alta. Toca para enviar comentarios."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Esta notificación aparecerá en una posición más baja. Toca para enviar comentarios."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Probar notificaciones mejoradas"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Para seguir recibiendo sugerencias de acciones, respuestas y más, activa las notificaciones mejoradas. Las notificaciones adaptativas de Android ya no están disponibles."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Activar"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Ahora no"</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="6276343083934111208">"Las notificaciones mejoradas pueden leer todo el contenido de las notificaciones, incluidas las relacionadas con información personal, como nombres y mensajes de tus contactos. Esta función también puede cerrar notificaciones o utilizar los botones de las notificaciones, por ejemplo, para responder llamadas telefónicas.\n\nAdemás, puede activar o desactivar el modo Prioridad y cambiar ajustes relacionados con él."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificación sobre el modo rutina"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Quizás se agote la batería antes de lo habitual"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Se ha activado el modo Ahorro de batería para aumentar la duración de la batería"</string>
@@ -2275,7 +2268,7 @@
     <string name="dismiss_action" msgid="1728820550388704784">"Cerrar"</string>
     <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Desbloquea el micrófono del dispositivo"</string>
     <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Desbloquea la cámara del dispositivo"</string>
-    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Para que &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; y todos los servicios y las aplicaciones puedan acceder"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Para &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; y todos los servicios y las aplicaciones"</string>
     <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Desbloquear"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Privacidad del sensor"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Icono de aplicación"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 9672e84..1e58aed 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Administraator on seda värskendanud"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administraator on selle kustutanud"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Akusäästja lülitab sisse tumeda teema ning piirab taustategevusi, teatud visuaalseid efekte ja funktsioone, nagu „Ok Google“ (või lülitab need välja)\n\n"<annotation id="url">"Lisateave"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Akusäästja lülitab sisse tumeda teema ning piirab taustategevusi, teatud visuaalseid efekte ja funktsioone, nagu „Ok Google“ (või lülitab need välja)."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Andmekasutuse vähendamiseks keelab andmemahu säästja mõne rakenduse puhul andmete taustal saatmise ja vastuvõtmise. Rakendus, mida praegu kasutate, pääseb andmesidele juurde, kuid võib seda teha väiksema sagedusega. Seetõttu võidakse näiteks pildid kuvada alles siis, kui neid puudutate."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Lülitada andmemahu säästja sisse?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Lülita sisse"</string>
@@ -1896,7 +1894,7 @@
     <string name="zen_mode_alarm" msgid="7046911727540499275">"Kuni <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (järgmine äratus)"</string>
     <string name="zen_mode_forever" msgid="740585666364912448">"Kuni välja lülitate"</string>
     <string name="zen_mode_forever_dnd" msgid="3423201955704180067">"Kuni lülitate välja valiku Mitte segada"</string>
-    <string name="zen_mode_rule_name_combination" msgid="7174598364351313725">"<xliff:g id="FIRST">%1$s</xliff:g>/<xliff:g id="REST">%2$s</xliff:g>"</string>
+    <string name="zen_mode_rule_name_combination" msgid="7174598364351313725">"<xliff:g id="FIRST">%1$s</xliff:g> / <xliff:g id="REST">%2$s</xliff:g>"</string>
     <string name="toolbar_collapse_description" msgid="8009920446193610996">"Ahendamine"</string>
     <string name="zen_mode_feature_name" msgid="3785547207263754500">"Mitte segada"</string>
     <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"Puhkeaeg"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Sule"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Vasta"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Keeldu"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Lõpeta kõne"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Sissetulev kõne"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Sellele märguandele määrati prioriteet Vaikne. Puudutage tagasiside andmiseks."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Sellele märguandele määrati kõrgem prioriteet. Puudutage tagasiside andmiseks."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Sellele märguandele määrati madalam prioriteet. Puudutage tagasiside andmiseks."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Proovige täiustatud märguandeid"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Soovitatud toimingute, vastuste ja muu nägemiseks ka edaspidi lülitage sisse täiustatud märguanded. Androidi kohanduvaid märguandeid enam ei toetata."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Lülita sisse"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Mitte praegu"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Lisateave"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Täiustatud märguanded saavad lugeda kogu märguande sisu, sh isiklikku teavet, nagu kontaktide nimed ja sõnumid. Samuti saab selle funktsiooniga märguannetest loobuda või märguannetes nuppude abil toiminguid teha (nt vastata telefonikõnedele).\n\nLisaks saab selle funktsiooniga sisse või välja lülitada režiimi Prioriteetne ja muuta seotud seadeid."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Rutiinirežiimi teabe märguanne"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Aku võib enne tavapärast laadimist tühjaks saada"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Akusäästja aktiveeriti aku tööea pikendamiseks"</string>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 08c4c06..ce10584 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -315,7 +315,7 @@
     <string name="permgroupdesc_storage" msgid="6351503740613026600">"atzitu gailuko argazkiak, multimedia-edukia eta fitxategiak"</string>
     <string name="permgrouplab_microphone" msgid="2480597427667420076">"Mikrofonoa"</string>
     <string name="permgroupdesc_microphone" msgid="1047786732792487722">"grabatu audioa"</string>
-    <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Jarduera fisiko"</string>
+    <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Jarduera fisikoa"</string>
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"jarduera fisikoa atzitu"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"Kamera"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"atera argazkiak eta grabatu bideoak"</string>
@@ -362,11 +362,11 @@
     <string name="permlab_receiveMms" msgid="4000650116674380275">"jaso testu-mezuak (MMSak)"</string>
     <string name="permdesc_receiveMms" msgid="958102423732219710">"MMS mezuak jasotzeko eta prozesatzeko baimena ematen die aplikazioei. Horrela, aplikazioak gailura bidalitako mezuak kontrola eta ezaba ditzake zuri erakutsi gabe."</string>
     <string name="permlab_bindCellBroadcastService" msgid="586746677002040651">"desbideratu sare mugikor bidezko igorpen-mezuak"</string>
-    <string name="permdesc_bindCellBroadcastService" msgid="6540910200973641606">"Sare mugikor bidezko igorpen-modulura lotzeko baimena ematen die aplikazioei, sare mugikor bidezko igorpen-mezuak jaso ahala desbideratu ahal izateko. Sare mugikor bidezko igorpen-alertak kokapen batzuetan entregatzen dira larrialdi-egoeren berri emateko. Sare mugikor bidezko larrialdi-igorpenak jasotzean, asmo txarreko aplikazioek gailuaren errendimenduari edota funtzionamenduari eragin diezaiokete."</string>
+    <string name="permdesc_bindCellBroadcastService" msgid="6540910200973641606">"Sare mugikor bidezko iragarpen-modulura lotzeko baimena ematen die aplikazioei, sare mugikor bidezko iragarpen-mezuak jaso ahala desbideratu ahal izateko. Sare mugikor bidezko iragarpen-alertak kokapen batzuetan entregatzen dira larrialdi-egoeren berri emateko. Sare mugikor bidezko larrialdi-iragarpenak jasotzean, asmo txarreko aplikazioek gailuaren errendimenduari edota funtzionamenduari eragin diezaiokete."</string>
     <string name="permlab_manageOngoingCalls" msgid="281244770664231782">"Kudeatu abian dauden deiak"</string>
     <string name="permdesc_manageOngoingCalls" msgid="7003138133829915265">"Gailuak jasotzen dituen deiei buruzko xehetasunak ikusteko eta dei horiek kontrolatzeko baimena ematen die aplikazioei."</string>
     <string name="permlab_readCellBroadcasts" msgid="5869884450872137693">"irakurri sare mugikor bidezko igorpen-mezuak"</string>
-    <string name="permdesc_readCellBroadcasts" msgid="672513437331980168">"Gailuak jasotako sare mugikor bidezko igorpenen mezuak irakurtzeko baimena ematen die aplikazioei. Sare mugikor bidezko igorpen-alertak kokapen batzuetan ematen dira larrialdi-egoeren berri emateko. Asmo txarreko aplikazioek gailuaren errendimendua edo funtzionamendua oztopa dezakete larrialdi-igorpen horietako bat jasotzen denean."</string>
+    <string name="permdesc_readCellBroadcasts" msgid="672513437331980168">"Gailuak jasotako sare mugikor bidezko igorpen-mezuak irakurtzeko baimena ematen die aplikazioei. Sare mugikor bidezko igorpen-alertak kokapen batzuetan ematen dira larrialdi-egoeren berri emateko. Asmo txarreko aplikazioek gailuaren errendimendua edo funtzionamendua oztopa dezakete larrialdi-igorpen horietako bat jasotzen denean."</string>
     <string name="permlab_subscribedFeedsRead" msgid="217624769238425461">"irakurri harpidetutako jarioak"</string>
     <string name="permdesc_subscribedFeedsRead" msgid="6911349196661811865">"Une horretan sinkronizatutako jarioei buruzko xehetasunak lortzeko baimena ematen die aplikazioei."</string>
     <string name="permlab_sendSms" msgid="7757368721742014252">"bidali eta ikusi SMS mezuak"</string>
@@ -451,8 +451,8 @@
     <string name="permdesc_recordBackgroundAudio" msgid="1992623135737407516">"Aplikazioak edonoiz erabil dezake mikrofonoa audioa grabatzeko."</string>
     <string name="permlab_sim_communication" msgid="176788115994050692">"bidali aginduak SIM txartelera"</string>
     <string name="permdesc_sim_communication" msgid="4179799296415957960">"SIM txartelera aginduak bidaltzeko aukera ematen die aplikazioei. Oso arriskutsua da."</string>
-    <string name="permlab_activityRecognition" msgid="1782303296053990884">"hauteman jarduera fisiko"</string>
-    <string name="permdesc_activityRecognition" msgid="8667484762991357519">"Aplikazioak jarduera fisiko hauteman dezake."</string>
+    <string name="permlab_activityRecognition" msgid="1782303296053990884">"hauteman jarduera fisikoa"</string>
+    <string name="permdesc_activityRecognition" msgid="8667484762991357519">"Aplikazioak jarduera fisikoa hauteman dezake."</string>
     <string name="permlab_camera" msgid="6320282492904119413">"atera argazkiak eta grabatu bideoak"</string>
     <string name="permdesc_camera" msgid="5240801376168647151">"Aplikazioak abian den bitartean erabil dezake kamera argazkiak ateratzeko eta bideoak grabatzeko."</string>
     <string name="permlab_backgroundCamera" msgid="7549917926079731681">"Argazkiak atera eta bideoak grabatu atzeko planoan."</string>
@@ -538,10 +538,10 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Inguruko Bluetooth bidezko gailuak hautemateko eta haiekin parekatzeko baimena ematen die aplikazioei"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"parekatutako Bluetooth bidezko gailuetara konektatu"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Parekatutako Bluetooth bidezko gailuetara konektatzeko baimena ematen die aplikazioei"</string>
-    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"inguruko Bluetooth bidezko gailuei publizitatea erakutsi"</string>
-    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Inguruko Bluetooth bidezko gailuei publizitatea erakusteko baimena ematen die aplikazioei"</string>
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"inguruko Bluetooth bidezko gailuetan informazioa iragarri"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Inguruko Bluetooth bidezko gailuetan informazioa iragartzeko baimena ematen die aplikazioei"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"banda ultrazabala darabilten inguruko gailuen arteko distantzia erlatiboa zehaztu"</string>
-    <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Banda ultrazabala darabilten inguruko gailuen arteko distantzia erlatiboa zehazteko baimena ematen die aplikazioei"</string>
+    <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Banda ultrazabala darabilten inguruko gailuen arteko distantzia erlatiboa zehazteko baimena ematen dio aplikazioari"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"NFC bidezko ordainketa-zerbitzu lehenetsiari buruzko informazioa"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"Aplikazioari baimena ematen dio NFC bidezko ordainketa-zerbitzu lehenetsiari buruzko informazioa jasotzeko, hala nola erregistratutako laguntzaileak eta ibilbidearen helmuga."</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"kontrolatu Near Field Communication komunikazioa"</string>
@@ -1723,7 +1723,7 @@
     <string name="user_switched" msgid="7249833311585228097">"Erabiltzailea: <xliff:g id="NAME">%1$s</xliff:g>."</string>
     <string name="user_switching_message" msgid="1912993630661332336">"\"<xliff:g id="NAME">%1$s</xliff:g>\" erabiltzailera aldatzen…"</string>
     <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> erabiltzailearen saioa amaitzen…"</string>
-    <string name="owner_name" msgid="8713560351570795743">"Jabea"</string>
+    <string name="owner_name" msgid="8713560351570795743">"Jabe"</string>
     <string name="error_message_title" msgid="4082495589294631966">"Errorea"</string>
     <string name="error_message_change_not_allowed" msgid="843159705042381454">"Administratzaileak ez du eman aldaketa egiteko baimena"</string>
     <string name="app_not_found" msgid="3429506115332341800">"Ez da ekintza gauza dezakeen aplikaziorik aurkitu"</string>
@@ -1852,11 +1852,9 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Administratzaileak eguneratu du"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administratzaileak ezabatu du"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Ados"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
-    <string name="data_saver_description" msgid="4995164271550590517">"Datuen erabilera murrizteko, atzeko planoan datuak bidaltzea eta jasotzea galarazten die datu-aurrezleak aplikazio batzuei. Une honetan erabiltzen ari zaren aplikazioak atzitu egin ahal izango ditu datuak, baina baliteke maiztasun txikiagoarekin atzitzea. Horrela, adibidez, baliteke irudiak ez erakustea haiek sakatu arte."</string>
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Bateria-aurrezleak gai iluna aktibatzen du, eta murriztu edo desaktibatu egiten ditu atzeko planoko jarduerak, zenbait efektu bisual eta beste eginbide batzuk, hala nola \"Ok Google\".\n\n"<annotation id="url">"Lortu informazio gehiago"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Bateria-aurrezleak gai iluna aktibatzen du, eta murriztu edo desaktibatu egiten ditu atzeko planoko jarduerak, zenbait efektu bisual eta beste eginbide batzuk, hala nola \"Ok Google\"."</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"Datuen erabilera murrizteko, atzeko planoan datuak bidaltzea eta jasotzea galarazten die datu-aurrezleak aplikazio batzuei. Une honetan erabiltzen ari zaren aplikazio batek datuak atzitu ahal izango ditu, baina baliteke maiztasun txikiagoarekin atzitzea. Horrela, adibidez, baliteke irudiak ez erakustea haiek sakatu arte."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Datu-aurrezlea aktibatu nahi duzu?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktibatu"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273">
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Itxi"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Erantzun"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Bideoa"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Baztertu"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Amaitu deia"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Jasotako deia"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Isilarazi da jakinarazpena. Sakatu hau oharrak bidaltzeko."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Mailaz igo da jakinarazpena. Sakatu hau oharrak bidaltzeko."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Mailaz jaitsi da jakinarazpena. Sakatu hau oharrak bidaltzeko."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Probatu jakinarazpen hobetuak"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Iradokitako ekintzak, erantzunak eta abar jasotzen jarraitzeko, aktibatu jakinarazpen hobetuak. Android-en jakinarazpen egokituak ez dira onartzen jada."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Aktibatu"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Orain ez"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Lortu informazio gehiago"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Jakinarazpen hobetuek jakinarazpenen eduki osoa irakur dezakete, informazio pertsonala barne (esaterako, kontaktuen izenak eta mezuak). Halaber, jakinarazpenak baztertu edo jakinarazpenetako botoiak erabil ditzake eginbideak; adibidez, telefono-deiak erantzun.\n\nHorretaz gain, lehentasunezko modua aktibatu edo desaktiba dezake, eta erlazionatutako ezarpenak aldatu."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Ohitura moduaren informazio-jakinarazpena"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Baliteke bateria ohi baino lehenago agortzea"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Bateria-aurrezlea aktibatuta dago bateriaren iraupena luzatzeko"</string>
@@ -2280,6 +2273,6 @@
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Sentsoreen pribatutasuna"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Aplikazioaren ikonoa"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Aplikazioaren marka-irudia"</string>
-    <string name="view_and_control_notification_title" msgid="4300765399209912240">"Begiratu sarbide-ezarpenak"</string>
+    <string name="view_and_control_notification_title" msgid="4300765399209912240">"Egiaztatu sarbide-ezarpenak"</string>
     <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> zerbitzuak pantaila ikusi eta kontrola dezake. Sakatu berrikusteko."</string>
 </resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index fc9162a..280c71f 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -84,7 +84,7 @@
     <string name="RestrictedStateContent" msgid="7693575344608618926">"شرکت مخابراتی شما موقتاً آن را خاموش کرده است"</string>
     <string name="RestrictedStateContentMsimTemplate" msgid="5228235722511044687">"شرکت مخابراتی‌تان موقتاً آن را برای سیم‌کارت <xliff:g id="SIMNUMBER">%d</xliff:g> خاموش کرده است"</string>
     <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"شبکه تلفن همراه دردسترس نیست"</string>
-    <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"تغییر شبکه برگزیده را امتحان کنید. برای تغییر ضربه بزنید."</string>
+    <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"تغییر شبکه ترجیحی را امتحان کنید. برای تغییر، ضربه بزنید."</string>
     <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"تماس اضطراری امکان‌پذیر نیست"</string>
     <string name="EmergencyCallWarningSummary" msgid="1194185880092805497">"‏تماس اضطراری ازطریق Wi‑Fi امکان‌پذیر نیست"</string>
     <string name="notification_channel_network_alert" msgid="4788053066033851841">"هشدارها"</string>
@@ -113,7 +113,7 @@
     <string name="roamingText2" msgid="2834048284153110598">"نشانگر چشمک زن فراگردی"</string>
     <string name="roamingText3" msgid="831690234035748988">"خارج از محله"</string>
     <string name="roamingText4" msgid="2171252529065590728">"خارج از ساختمان"</string>
-    <string name="roamingText5" msgid="4294671587635796641">"فراگردی - سیستم برگزیده"</string>
+    <string name="roamingText5" msgid="4294671587635796641">"فراگردی - سیستم ترجیحی"</string>
     <string name="roamingText6" msgid="5536156746637992029">"فراگردی - سیستم موجود"</string>
     <string name="roamingText7" msgid="1783303085512907706">"فراگردی - شریک"</string>
     <string name="roamingText8" msgid="7774800704373721973">"فراگردی - شریک ویژه"</string>
@@ -1322,7 +1322,7 @@
     <string name="select_character" msgid="3352797107930786979">"درج نویسه"</string>
     <string name="sms_control_title" msgid="4748684259903148341">"درحال ارسال پیامک‌ها"</string>
     <string name="sms_control_message" msgid="6574313876316388239">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; درحال ارسال تعداد زیادی پیامک است. آیا اجازه می‌دهید این برنامه همچنان پیامک ارسال کند؟"</string>
-    <string name="sms_control_yes" msgid="4858845109269524622">"مجاز است"</string>
+    <string name="sms_control_yes" msgid="4858845109269524622">"مجاز بودن"</string>
     <string name="sms_control_no" msgid="4845717880040355570">"مجاز نبودن"</string>
     <string name="sms_short_code_confirm_message" msgid="1385416688897538724">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; مایل است پیامی به &lt;b&gt;<xliff:g id="DEST_ADDRESS">%2$s</xliff:g>&lt;/b&gt; ارسال کند."</string>
     <string name="sms_short_code_details" msgid="2723725738333388351">"این مورد "<b>"شاید هزینه‌ای"</b>" را به حساب دستگاه همراهتان بگذارد."</string>
@@ -1852,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"‏«بهینه‌سازی باتری» «طرح زمینه تیره» را روشن می‌کند و فعالیت پس‌زمینه، برخی از جلوه‌های بصری، و ویژگی‌هایی مثل «Ok Google» را محدود یا خاموش می‌کند.\n\n"<annotation id="url">"بیشتر بدانید"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"‏«بهینه‌سازی باتری» «طرح زمینه تیره» را روشن می‌کند و فعالیت پس‌زمینه، برخی از جلوه‌های بصری، و ویژگی‌هایی مثل «Ok Google» را محدود یا خاموش می‌کند."</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"بستن"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>:‏ <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"پاسخ"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ویدیو"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"رد کردن"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"قطع تماس"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"تماس ورودی"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"این اعلان به «بی‌صدا» تنزل داده شد. برای ارائه بازخورد، ضربه بزنید."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"این اعلان در رتبه بالاتری قرار گرفت. برای ارائه بازخورد، ضربه بزنید."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"این اعلان در رتبه پایین‌تری قرار گرفت. برای ارائه بازخورد، ضربه بزنید."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"امتحان کردن اعلان‌های بهبودیافته"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"‏برای اینکه پاسخ‌ها و کنش‌های پیشنهادی و موارد دیگر را همچنان دریافت کنید، اعلان‌های بهبودیافته را روشن کنید. از «اعلان‌های تطبیقی Android» دیگر پشتیبانی نمی‌شود."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"روشن کردن"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"الآن نه"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"بیشتر بدانید"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"اعلان‌های بهبودیافته می‌تواند محتوای همه اعلان‌ها، ازجمله اطلاعات شخصی مثل نام مخاطبین و پیام‌ها را بخواند. این ویژگی همچنین می‌تواند اعلان‌ها را ببندد یا بااستفاده از دکمه‌های موجود در اعلان‌ها اقداماتی انجام دهد، مثلاً به تماس‌های تلفنی پاسخ دهد.\n\nبه‌علاوه، این ویژگی می‌تواند «حالت اولویت» را روشن یا خاموش کند و تنظیمات مربوطه را تغییر دهد."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"اعلان اطلاعات حالت روال معمول"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"ممکن است شارژ باتری قبل از شارژ معمول تمام شود"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"جهت افزایش عمر باتری، «بهینه‌سازی باتری» فعال شد"</string>
@@ -2269,7 +2262,7 @@
     <string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string>
     <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
-    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"تنظیمات درشت‌نمایی جدید"</string>
+    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"تنظیمات جدید درشت‌نمایی"</string>
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"اکنون می‌توانید بخشی از صفحه را درشت‌نمایی کنید"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"روشن کردن در «تنظیمات»"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"رد شدن"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 4ff7593..2538e86 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Sallii sovelluksen löytää lähellä olevia Bluetooth-laitteita ja muodostaa niistä laitepareja"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"yhdistää pariliitettyihin Bluetooth-laitteisiin"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Sallii sovelluksen muodostaa yhteyden pariliitettyihin Bluetooth-laitteisiin"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"mainostaa lähellä oleville Bluetooth-laitteille"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Sallii sovelluksen mainostaa lähellä oleville Bluetooth-laitteille"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"määrittää UVB:ta käyttävien laitteiden suhteellisen sijainnin"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Sallii sovelluksen määrittää UVB-taajuutta käyttävien laitteiden sijainnin suhteessa toisiinsa"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Ensisijaiset NFC-maksupalvelutiedot"</string>
@@ -1854,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Järjestelmänvalvoja päivitti tämän."</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Järjestelmänvalvoja poisti tämän."</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Virransäästö laittaa tumman teeman päälle ja rajoittaa tai laittaa pois päältä taustatoimintoja, joitakin visuaalisia tehosteita ja muita ominaisuuksia (esim. Ok Google).\n\n"<annotation id="url">"Lue lisää"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Virransäästö laittaa tumman teeman päälle ja rajoittaa tai laittaa pois päältä taustatoimintoja, joitakin visuaalisia tehosteita ja muita ominaisuuksia (esim. Ok Google)."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Data Saver estää joitakin sovelluksia lähettämästä tai vastaanottamasta tietoja taustalla, jotta datan käyttöä voidaan vähentää. Käytössäsi oleva sovellus voi yhä käyttää dataa, mutta se saattaa tehdä niin tavallista harvemmin. Tämä voi tarkoittaa esimerkiksi sitä, että kuva ladataan vasta, kun kosketat sitä."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Otetaanko Data Saver käyttöön?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Ota käyttöön"</string>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Sulje"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Vastaa"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Hylkää"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Lopeta puhelu"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Saapuva puhelu"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Tämä ilmoitus hiljennettiin. Lähetä palautetta napauttamalla."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Tämän ilmoituksen tasoa nostettiin. Lähetä palautetta napauttamalla."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Tämän ilmoituksen tasoa laskettiin. Lähetä palautetta napauttamalla."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Kokeile parann. ilmoituksia"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Jos haluat jatkossakin saada ehdotuksia toiminnoista, vastauksista ja muista, laita parannetut ilmoitukset päälle. Androidin mukautuvia ilmoituksia ei enää tueta."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Laita päälle"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Ei nyt"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Lue lisää"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Parannetut ilmoitukset voivat lukea kaikkea ilmoitussisältöä, myös henkilökohtaisia tietoja (esim. kontaktien nimet ja viestit). Ominaisuus voi myös ohittaa ilmoituksia tai käyttää niiden toimintopainikkeita, esim. vastata puheluihin.\n\nLisäksi ominaisuus voi laittaa Tärkeät-tilan päälle tai pois päältä ja muuttaa siihen liittyviä asetuksia."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Ohjelmatilan tietoilmoitus"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Akku saattaa loppua ennen normaalia latausaikaa"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Virransäästö otettu käyttöön akunkeston pidentämiseksi"</string>
@@ -2275,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Voit nyt suurentaa näytön osan"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Laita päälle asetuksista"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Hylkää"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Kumoa laitteen mikrofonin esto"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Kumoa laitteen kameran esto"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; sekä kaikki sovellukset ja palvelut"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Kumoa esto"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Anturin tietosuoja"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Sovelluskuvake"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Sovelluksen tuotemerkkikuva"</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 20365d0..a5b1250 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Mise à 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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"La fonctionnalité Économiseur de pile active le mode sombre et limite ou désactive l\'activité en arrière-plan, certains effets visuels et certaines fonctionnalités, comme « Ok Google »\n\n"<annotation id="url">"En savoir plus"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"La fonctionnalité Économiseur de pile active le mode sombre et limite ou désactive l\'activité en arrière-plan, certains effets visuels et certaines fonctionnalités, comme « Ok Google »."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Pour aider à diminuer l\'utilisation des données, la fonctionnalité Économiseur de données empêche certaines applications d\'envoyer ou de recevoir des données en arrière-plan. Une application que vous utilisez actuellement peut accéder à des données, mais peut le faire moins souvent. Cela peut signifier, par exemple, que les images ne s\'affichent pas jusqu\'à ce que vous les touchiez."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Activer l\'économiseur de données?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Activer"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Fermer"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g> : <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Répondre"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vidéo"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Refuser"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Raccrocher"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Appel entrant"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Cette notification a été rétrogradée à Silencieuse. Touchez pour envoyer des commentaires."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Cette notification a été élevée d\'un niveau. Touchez pour envoyer des commentaires."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Cette notification a été abaissée d\'un niveau. Touchez pour envoyer des commentaires."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Essayer les notif. améliorées"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Pour continuer de recevoir des suggestions d\'actions, de réponses et plus encore, activez les notifications améliorées. Les notifications adaptatives Android ne sont plus prises en charge."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Activer"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Plus tard"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"En savoir plus"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Les notifications améliorées peuvent lire le contenu de toutes les notifications, y compris les renseignements personnels comme le nom des contacts et les messages. Cette fonctionnalité peut aussi fermer des notifications ou effectuer des actions sur les boutons dans les notifications, comme répondre aux appels entrants.\n\nElle peut aussi activer et désactiver le mode Prioritaire et modifier les paramètres connexes."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notification d\'information du mode Routine"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"La pile pourrait s\'épuiser avant la charge habituelle"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Le mode Économiseur de pile est activé afin de prolonger l\'autonomie"</string>
@@ -2270,7 +2263,7 @@
     <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
     <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Nouveaux paramètres d\'agrandissement"</string>
-    <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Vous pouvez agrandir une partie votre écran."</string>
+    <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Vous pouvez désormais agrandir une partie de votre écran."</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Activer dans les paramètres"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Fermer"</string>
     <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Débloquer le microphone de l\'appareil"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 7afe476..86cc13a 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -196,7 +196,7 @@
     <string name="network_logging_notification_text" msgid="1327373071132562512">"Votre organisation gère cet appareil et peut surveiller le trafic réseau. Appuyez ici pour obtenir plus d\'informations."</string>
     <string name="location_changed_notification_title" msgid="3620158742816699316">"Des application peuvent accéder à votre position"</string>
     <string name="location_changed_notification_text" msgid="7158423339982706912">"Contactez votre administrateur pour en savoir plus"</string>
-    <string name="geofencing_service" msgid="3826902410740315456">"Service de gardiennage virtuel"</string>
+    <string name="geofencing_service" msgid="3826902410740315456">"Service de géorepérage"</string>
     <string name="country_detector" msgid="7023275114706088854">"Détecteur de pays"</string>
     <string name="location_service" msgid="2439187616018455546">"Service de localisation"</string>
     <string name="gnss_service" msgid="8907781262179951385">"Service GNSS"</string>
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Autorise l\'appli à détecter et à associer les appareils Bluetooth à proximité"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"se connecter aux appareils Bluetooth associés"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Autorise l\'appli à se connecter à des appareils Bluetooth associés"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"diffuser sur les appareils Bluetooth à proximité"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Permet à l\'appli de diffuser du contenu sur les appareils Bluetooth à proximité"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"déterminer position relative entre appareils ultra-wideband à proximité"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Autoriser l\'appli à déterminer la position relative entre des appareils ultra-wideband à proximité"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Informations sur le service de paiement NFC préféré"</string>
@@ -1106,8 +1104,8 @@
       <item quantity="other">dans <xliff:g id="COUNT_1">%d</xliff:g> a</item>
     </plurals>
     <plurals name="duration_minutes_relative" formatted="false" msgid="6569851308583028344">
-      <item quantity="one">il y a <xliff:g id="COUNT_1">%d</xliff:g> minute</item>
-      <item quantity="other">il y a <xliff:g id="COUNT_1">%d</xliff:g> minutes</item>
+      <item quantity="one">Il y a <xliff:g id="COUNT_1">%d</xliff:g> minute</item>
+      <item quantity="other">Il y a <xliff:g id="COUNT_1">%d</xliff:g> minutes</item>
     </plurals>
     <plurals name="duration_hours_relative" formatted="false" msgid="420434788589102019">
       <item quantity="one">il y a <xliff:g id="COUNT_1">%d</xliff:g> heure</item>
@@ -1692,13 +1690,13 @@
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ne pas activer"</string>
     <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"ACTIVÉE"</string>
     <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"DÉSACTIVÉE"</string>
-    <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Accorder le contrôle total de votre appareil au service <xliff:g id="SERVICE">%1$s</xliff:g> ?"</string>
+    <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Accorder le contrôle total de votre appareil à <xliff:g id="SERVICE">%1$s</xliff:g> ?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si vous activez <xliff:g id="SERVICE">%1$s</xliff:g>, votre appareil n\'utilisera pas le verrouillage de l\'écran pour améliorer le chiffrement des données."</string>
-    <string name="accessibility_service_warning_description" msgid="291674995220940133">"Le contrôle total convient aux applications qui répondent à vos besoins d\'accessibilité. Il ne convient pas à la plupart des applications."</string>
+    <string name="accessibility_service_warning_description" msgid="291674995220940133">"Le contrôle total convient aux applications qui répondent à vos besoins d\'accessibilité. Il ne convient pas à la plupart des autres applications."</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Afficher et contrôler l\'écran"</string>
-    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Cette fonctionnalité peut lire l\'intégralité du contenu à l\'écran et afficher du contenu par-dessus d\'autres applications."</string>
+    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Le service peut lire l\'intégralité du contenu à l\'écran et afficher du contenu par-dessus d\'autres applications."</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Afficher et effectuer des actions"</string>
-    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Cette fonctionnalité peut effectuer le suivi de vos interactions avec une application ou un capteur matériel, et interagir avec les applications en votre nom."</string>
+    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Le service peut suivre vos interactions avec une application ou un capteur matériel, et interagir avec des applications de votre part."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Autoriser"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Refuser"</string>
     <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Appuyez sur une fonctionnalité pour commencer à l\'utiliser :"</string>
@@ -1844,7 +1842,7 @@
     <string name="select_day" msgid="2060371240117403147">"Sélectionner un mois et un jour"</string>
     <string name="select_year" msgid="1868350712095595393">"Sélectionner une année"</string>
     <string name="deleted_key" msgid="9130083334943364001">"\"<xliff:g id="KEY">%1$s</xliff:g>\" supprimé"</string>
-    <string name="managed_profile_label_badge" msgid="6762559569999499495">"<xliff:g id="LABEL">%1$s</xliff:g> (travail)"</string>
+    <string name="managed_profile_label_badge" msgid="6762559569999499495">"<xliff:g id="LABEL">%1$s</xliff:g> (pro)"</string>
     <string name="managed_profile_label_badge_2" msgid="5673187309555352550">"2e <xliff:g id="LABEL">%1$s</xliff:g> professionnelle"</string>
     <string name="managed_profile_label_badge_3" msgid="6882151970556391957">"3e <xliff:g id="LABEL">%1$s</xliff:g> professionnelle"</string>
     <string name="lock_to_app_unlock_pin" msgid="3890940811866290782">"Demander le code avant d\'annuler l\'épinglage"</string>
@@ -1854,11 +1852,9 @@
     <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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
-    <string name="data_saver_description" msgid="4995164271550590517">"Pour réduire la consommation de données, l\'économiseur de données empêche certaines applications d\'envoyer ou de recevoir des données en arrière-plan. Ainsi, les applications que vous utilisez peuvent toujours accéder aux données, mais pas en permanence. Par exemple, il se peut que les images ne s\'affichent pas tant que vous n\'appuyez pas dessus."</string>
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"L\'économiseur de batterie active le thème sombre et limite ou désactive les activités en arrière-plan, certains effets visuels et d\'autres fonctionnalités comme \"Hey Google\"\n\n"<annotation id="url">"En savoir plus"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"L\'économiseur de batterie active le thème sombre et limite ou désactive les activités en arrière-plan, certains effets visuels et d\'autres fonctionnalités comme \"Hey Google\"."</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é pas dessus."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Activer l\'économiseur de données ?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Activer"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273">
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Fermer"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g> : <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Répondre"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vidéo"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Refuser"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Raccrocher"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Appel entrant"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Cette notification a été abaissée à la catégorie \"Silencieux\". Appuyez ici pour donner votre avis."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Cette notification a été élevée d\'un niveau. Appuyez ici pour donner votre avis."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Cette notification a été abaissée d\'un niveau. Appuyez ici pour donner votre avis."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Testez les notifications améliorées"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Activez les notifications améliorées pour continuer à recevoir des suggestions d\'actions, de réponses et plus encore. Les notifications intelligentes Android ne sont plus disponibles."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Activer"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Pas maintenant"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"En savoir plus"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Les notifications améliorées peuvent lire tout le contenu des notifications, y compris des informations personnelles comme le nom des contacts et les messages. Cette fonctionnalité peut aussi fermer des notifications ou effectuer des actions grâce aux boutons figurant dans ces notifications, par exemple répondre aux appels téléphoniques.\n\nElle peut aussi activer ou désactiver le mode Prioritaire et modifier les paramètres associés."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notification d\'information du mode Routine"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Vous risquez d\'être à court de batterie plus tôt que prévu"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Économiseur de batterie activé pour prolonger l\'autonomie"</string>
@@ -2275,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Vous pouvez désormais agrandir une partie de l\'écran"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Activer dans les paramètres"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Fermer"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Débloquer le micro de l\'appareil"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Débloquer l\'appareil photo de l\'appareil"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Pour &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; et tous les services et applis"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Débloquer"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Confidentialité du capteur"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Icône de l\'application"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Image de branding de l\'application"</string>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 123419b..cae9637 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -307,7 +307,7 @@
     <string name="permgroupdesc_contacts" msgid="9163927941244182567">"acceder aos teus contactos"</string>
     <string name="permgrouplab_location" msgid="1858277002233964394">"Localización"</string>
     <string name="permgroupdesc_location" msgid="1995955142118450685">"acceder á localización deste dispositivo"</string>
-    <string name="permgrouplab_calendar" msgid="6426860926123033230">"Calendar"</string>
+    <string name="permgrouplab_calendar" msgid="6426860926123033230">"Calendario"</string>
     <string name="permgroupdesc_calendar" msgid="6762751063361489379">"acceder ao teu calendario"</string>
     <string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string>
     <string name="permgroupdesc_sms" msgid="5726462398070064542">"enviar e consultar mensaxes de SMS"</string>
@@ -342,7 +342,7 @@
     <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Facer captura de pantalla"</string>
     <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Pode facer capturas de pantalla."</string>
     <string name="permlab_statusBar" msgid="8798267849526214017">"desactivar ou modificar a barra de estado"</string>
-    <string name="permdesc_statusBar" msgid="5809162768651019642">"Permite á aplicación desactivar a barra de estado ou engadir e eliminar as iconas do sistema."</string>
+    <string name="permdesc_statusBar" msgid="5809162768651019642">"Permite á aplicación desactivar a barra de estado ou engadir e quitar as iconas do sistema."</string>
     <string name="permlab_statusBarService" msgid="2523421018081437981">"actuar como a barra de estado"</string>
     <string name="permdesc_statusBarService" msgid="6652917399085712557">"Permite á aplicación ser a barra de estado."</string>
     <string name="permlab_expandStatusBar" msgid="1184232794782141698">"ampliar/contraer a barra de estado"</string>
@@ -352,7 +352,7 @@
     <string name="permlab_install_shortcut" msgid="7451554307502256221">"instalar atallos"</string>
     <string name="permdesc_install_shortcut" msgid="4476328467240212503">"Permite a unha aplicación engadir atallos na pantalla de inicio sen intervención do usuario."</string>
     <string name="permlab_uninstall_shortcut" msgid="295263654781900390">"desinstalar atallos"</string>
-    <string name="permdesc_uninstall_shortcut" msgid="1924735350988629188">"Permite á aplicación eliminar atallos da pantalla de inicio sen a intervención do usuario."</string>
+    <string name="permdesc_uninstall_shortcut" msgid="1924735350988629188">"Permite á aplicación quitar atallos da pantalla de inicio sen a intervención do usuario."</string>
     <string name="permlab_processOutgoingCalls" msgid="4075056020714266558">"redirixir as chamadas saíntes"</string>
     <string name="permdesc_processOutgoingCalls" msgid="7833149750590606334">"Permite á aplicación ver o número que se está marcando durante unha chamada saínte coa opción de redirixir a chamada a un número diferente ou abortar a chamada."</string>
     <string name="permlab_answerPhoneCalls" msgid="4131324833663725855">"responder chamadas telefónicas"</string>
@@ -709,8 +709,8 @@
     <string name="permdesc_accessDrmCertificates" msgid="6983139753493781941">"Permite a unha aplicación fornecer e utilizar certificados DRM. Non se deberían precisar nunca para as aplicacións normais."</string>
     <string name="permlab_handoverStatus" msgid="7620438488137057281">"recibir o estado das transferencias de Android Beam"</string>
     <string name="permdesc_handoverStatus" msgid="3842269451732571070">"Permite a esta aplicación recibir información acerca das transferencias actuais de Android Beam"</string>
-    <string name="permlab_removeDrmCertificates" msgid="710576248717404416">"eliminar certificados DRM"</string>
-    <string name="permdesc_removeDrmCertificates" msgid="4068445390318355716">"Permite a unha aplicación eliminar os certificados DRM. As aplicacións normais non o deberían precisar nunca."</string>
+    <string name="permlab_removeDrmCertificates" msgid="710576248717404416">"quitar certificados DRM"</string>
+    <string name="permdesc_removeDrmCertificates" msgid="4068445390318355716">"Permite a unha aplicación quitar os certificados DRM. As aplicacións normais non o deberían precisar nunca."</string>
     <string name="permlab_bindCarrierMessagingService" msgid="3363450860593096967">"vincular a un servizo de mensaxaría"</string>
     <string name="permdesc_bindCarrierMessagingService" msgid="6316457028173478345">"Permite ao propietario vincularse á interface de nivel superior dun servizo de mensaxaría. As aplicacións normais non deberían necesitar este permiso."</string>
     <string name="permlab_bindCarrierServices" msgid="2395596978626237474">"vincular aos servizos do operador"</string>
@@ -1582,7 +1582,7 @@
     <string name="data_usage_wifi_limit_snoozed_title" msgid="1622359254521960508">"Límite de datos wifi superado"</string>
     <string name="data_usage_limit_snoozed_body" msgid="545146591766765678">"Pasácheste <xliff:g id="SIZE">%s</xliff:g> do límite establecido"</string>
     <string name="data_usage_restricted_title" msgid="126711424380051268">"Datos en segundo plano limitados"</string>
-    <string name="data_usage_restricted_body" msgid="5338694433686077733">"Toca para eliminar a restrición."</string>
+    <string name="data_usage_restricted_body" msgid="5338694433686077733">"Toca para quitar a restrición."</string>
     <string name="data_usage_rapid_title" msgid="2950192123248740375">"Uso elevado de datos móbiles"</string>
     <string name="data_usage_rapid_body" msgid="3886676853263693432">"As aplicacións utilizaron máis datos do normal"</string>
     <string name="data_usage_rapid_app_body" msgid="5425779218506513861">"A aplicación <xliff:g id="APP">%s</xliff:g> utilizou máis datos do normal"</string>
@@ -1677,7 +1677,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4670840383567106114">"Debuxaches incorrectamente o padrón de desbloqueo <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. Se realizas <xliff:g id="NUMBER_1">%2$d</xliff:g> intentos incorrectos máis, terás que desbloquear o dispositivo Android TV a través dunha conta de correo electrónico.\n\n Téntao de novo en <xliff:g id="NUMBER_2">%3$d</xliff:g> segundos."</string>
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Debuxaches o padrón de desbloqueo incorrectamente <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. Se realizas <xliff:g id="NUMBER_1">%2$d</xliff:g> intentos incorrectos máis, terás que desbloquear o teléfono a través dunha conta de correo electrónico.\n\n Téntao de novo dentro de <xliff:g id="NUMBER_2">%3$d</xliff:g> segundos."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
-    <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Eliminar"</string>
+    <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Quitar"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Queres subir o volume máis do nivel recomendado?\n\nA reprodución de son a un volume elevado durante moito tempo pode provocar danos nos oídos."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Queres utilizar o atallo de accesibilidade?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Cando o atallo está activado, podes premer os dous botóns de volume durante 3 segundos para iniciar unha función de accesibilidade."</string>
@@ -1833,7 +1833,7 @@
     <string name="restr_pin_try_later" msgid="5897719962541636727">"Téntao de novo máis tarde"</string>
     <string name="immersive_cling_title" msgid="2307034298721541791">"Vendo pantalla completa"</string>
     <string name="immersive_cling_description" msgid="7092737175345204832">"Para saír, pasa o dedo cara abaixo desde a parte superior."</string>
-    <string name="immersive_cling_positive" msgid="7047498036346489883">"De acordo"</string>
+    <string name="immersive_cling_positive" msgid="7047498036346489883">"Entendido"</string>
     <string name="done_label" msgid="7283767013231718521">"Feito"</string>
     <string name="hour_picker_description" msgid="5153757582093524635">"Control desprazable circular das horas"</string>
     <string name="minute_picker_description" msgid="9029797023621927294">"Control desprazable circular dos minutos"</string>
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Actualizado polo teu administrador"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Eliminado polo teu administrador"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Aceptar"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Coa función Aforro de batería actívase o tema escuro e restrínxense ou desactívanse a actividade en segundo plano, algúns efectos visuais e outras funcións, como “Hey Google”\n\n"<annotation id="url">"Máis información"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Coa función Aforro de batería actívase o tema escuro e restrínxense ou desactívanse a actividade en segundo plano, algúns efectos visuais e outras funcións, como “Hey Google”."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Para contribuír a reducir o uso de datos, o aforro de datos impide que algunhas aplicacións envíen ou reciban datos en segundo plano. Cando esteas utilizando unha aplicación, esta poderá acceder aos datos, pero é posible que o faga con menos frecuencia. Por exemplo, poida que as imaxes non se mostren ata que as toques."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Queres activar o aforro de datos?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Activar"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Pechar"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Resposta"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vídeo"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Rexeitar"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Colgar"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Chamada entrante"</string>
@@ -1948,7 +1947,7 @@
     <string name="user_creation_adding" msgid="7305185499667958364">"Queres permitir que <xliff:g id="APP">%1$s</xliff:g> cree un usuario novo con <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
     <string name="language_selection_title" msgid="52674936078683285">"Engadir un idioma"</string>
     <string name="country_selection_title" msgid="5221495687299014379">"Preferencia de rexión"</string>
-    <string name="search_language_hint" msgid="7004225294308793583">"Nome do idioma"</string>
+    <string name="search_language_hint" msgid="7004225294308793583">"Escribe o nome do idioma"</string>
     <string name="language_picker_section_suggested" msgid="6556199184638990447">"Suxeridos"</string>
     <string name="language_picker_section_all" msgid="1985809075777564284">"Todos os idiomas"</string>
     <string name="region_picker_section_all" msgid="756441309928774155">"Todas as rexións"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"O nivel desta notificación diminuíu a Silenciosa. Toca para compartir a túa opinión."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Esta notificación clasificouse nun nivel superior. Toca para compartir a túa opinión."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Esta notificación clasificouse nun nivel inferior. Toca para compartir a túa opinión."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Proba notificacións melloradas"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Para seguir recibindo accións suxeridas, respostas e moito máis, activa as notificacións melloradas. As notificacións intelixentes de Android xa non son compatibles."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Activar"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Agora non"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Máis información"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Coas notificacións melloradas pódese ler todo o contido das notificacións, mesmo a información persoal (por exemplo, os nomes dos contactos e as mensaxes). Con esta función tamén se poden ignorar as notificacións ou realizar accións nos botóns que aparecen nelas, como responder chamadas telefónicas.\n\nAdemais, permite activar e desactivar o modo de prioridade e cambiar a configuración relacionada."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificación da información do modo de rutina"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"A batería pode esgotarse antes do habitual"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Para ampliar a duración da batería activouse a función Aforro de batería"</string>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index f0e3f77..f8de931 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -87,7 +87,7 @@
     <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"પસંદગીનું નેટવર્ક બદલવાનો પ્રયાસ કરો. બદલવા માટે ટૅપ કરો."</string>
     <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"કટોકટીની કૉલિંગ સેવા અનુપલબ્ધ"</string>
     <string name="EmergencyCallWarningSummary" msgid="1194185880092805497">"વાઇ-ફાઇ પરથી કટોકટીના કૉલ કરી શકાતા નથી"</string>
-    <string name="notification_channel_network_alert" msgid="4788053066033851841">"ચેતવણીઓ"</string>
+    <string name="notification_channel_network_alert" msgid="4788053066033851841">"અલર્ટ"</string>
     <string name="notification_channel_call_forward" msgid="8230490317314272406">"કૉલ ફૉર્વર્ડિંગ"</string>
     <string name="notification_channel_emergency_callback" msgid="54074839059123159">"કટોકટી કૉલબૅક મોડ"</string>
     <string name="notification_channel_mobile_data_status" msgid="1941911162076442474">"મોબાઇલ ડેટાની સ્થિતિ"</string>
@@ -288,7 +288,7 @@
     <string name="notification_channel_network_available" msgid="6083697929214165169">"નેટવર્ક ઉપલબ્ધ છે"</string>
     <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN સ્થિતિ"</string>
     <string name="notification_channel_device_admin" msgid="6384932669406095506">"તમારા IT વ્યવસ્થાપક તરફથી અલર્ટ"</string>
-    <string name="notification_channel_alerts" msgid="5070241039583668427">"ચેતવણીઓ"</string>
+    <string name="notification_channel_alerts" msgid="5070241039583668427">"અલર્ટ"</string>
     <string name="notification_channel_retail_mode" msgid="3732239154256431213">"રિટેલ ડેમો"</string>
     <string name="notification_channel_usb" msgid="1528280969406244896">"USB કનેક્શન"</string>
     <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"ઍપ ચાલી રહ્યું છે"</string>
@@ -303,7 +303,7 @@
     <string name="android_system_label" msgid="5974767339591067210">"Android સિસ્ટમ"</string>
     <string name="user_owner_label" msgid="8628726904184471211">"વ્યક્તિગત પ્રોફાઇલ પર સ્વિચ કરો"</string>
     <string name="managed_profile_label" msgid="7316778766973512382">"કાર્યાલયની પ્રોફાઇલ પર સ્વિચ કરો"</string>
-    <string name="permgrouplab_contacts" msgid="4254143639307316920">"Contacts"</string>
+    <string name="permgrouplab_contacts" msgid="4254143639307316920">"સંપર્કો"</string>
     <string name="permgroupdesc_contacts" msgid="9163927941244182567">"તમારા સંપર્કોને ઍક્સેસ કરવાની"</string>
     <string name="permgrouplab_location" msgid="1858277002233964394">"સ્થાન"</string>
     <string name="permgroupdesc_location" msgid="1995955142118450685">"આ ઉપકરણના સ્થાનને ઍક્સેસ કરવાની"</string>
@@ -319,10 +319,8 @@
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"તમારી શારીરિક પ્રવૃત્તિને ઍક્સેસ કરવી"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"કૅમેરા"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"ચિત્રો લેવાની અને વીડિઓ રેકોર્ડ કરવાની"</string>
-    <!-- no translation found for permgrouplab_nearby_devices (5529147543651181991) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_nearby_devices (3213561597116913508) -->
-    <skip />
+    <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"નજીકના ડિવાઇસ"</string>
+    <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"નજીકના ડિવાઇસ શોધો અને કનેક્ટ કરો"</string>
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"કૉલ લૉગ"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"ફોન કૉલ લૉગ વાંચો અને લખો"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"ફોન"</string>
@@ -540,14 +538,10 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"ઍપને આસપાસના બ્લૂટૂથ ડિવાઇસ શોધવાની અને તેની સાથે જોડી કરવાની મંજૂરી આપે છે"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"જોડી કરેલા બ્લૂટૂથ ડિવાઇસ સાથે કનેક્ટ કરો"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"ઍપને જોડી કરેલા બ્લૂટૂથ ડિવાઇસ સાથે કનેક્ટ કરવાની મંજૂરી આપે છે"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
-    <!-- no translation found for permlab_uwb_ranging (8141915781475770665) -->
-    <skip />
-    <!-- no translation found for permdesc_uwb_ranging (2519723069604307055) -->
-    <skip />
+    <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_preferredPaymentInfo" msgid="5274423844767445054">"પસંદગીની NFC ચુકવણીની સેવા વિશે માહિતી"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"આ મંજૂરીને આપવાથી, ઍપ તમારી પસંદગીની NFC ચુકવણીની સેવા વિશે માહિતી મેળવી શકે છે, જેમ કે રજિસ્ટર થયેલી સહાય અને નિર્ધારિત સ્થાન."</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"નિઅર ફીલ્ડ કમ્યુનિકેશન નિયંત્રિત કરો"</string>
@@ -1683,7 +1677,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4670840383567106114">"તમે તમારી અનલૉક પૅટર્ન <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે દોરી છે. વધુ <xliff:g id="NUMBER_1">%2$d</xliff:g> અસફળ પ્રયાસ પછી, તમને ઇમેઇલ એકાઉન્ટનો ઉપયોગ કરીને તમારા Android TV ડિવાઇસને અનલૉક કરવાનું કહેવામાં આવશે.\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> સેકન્ડમાં ફરીથી પ્રયાસ કરો."</string>
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"તમે તમારી અનલૉક પૅટર્ન <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_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
-    <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"દૂર કરો"</string>
+    <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"કાઢી નાખો"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ભલામણ કરેલ સ્તરની ઉપર વૉલ્યૂમ વધાર્યો?\n\nલાંબા સમય સુધી ઊંચા અવાજે સાંભળવું તમારી શ્રવણક્ષમતાને નુકસાન પહોંચાડી શકે છે."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ઍક્સેસિબિલિટી શૉર્ટકટનો ઉપયોગ કરીએ?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"જ્યારે શૉર્ટકટ ચાલુ હોય, ત્યારે બન્ને વૉલ્યૂમ બટનને 3 સેકન્ડ સુધી દબાવી રાખવાથી ઍક્સેસિબિલિટી સુવિધા શરૂ થઈ જશે."</string>
@@ -1725,7 +1719,7 @@
     <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"કોઈ એક સુવિધાથી બીજી સુવિધા પર સ્વિચ કરવા માટે, ઍક્સેસિબિલિટી બટનને ટચ કરીને થોડીવાર દબાવી રાખો."</string>
     <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"કોઈ એક સુવિધાથી બીજી સુવિધા પર સ્વિચ કરવા માટે, બે આંગળીઓ વડે સ્ક્રીનની ઉપરની તરફ સ્વાઇપ કરીને દબાવી રાખો."</string>
     <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"કોઈ એક સુવિધાથી બીજી સુવિધા પર સ્વિચ કરવા માટે, ત્રણ આંગળીઓ વડે સ્ક્રીનની ઉપરની તરફ સ્વાઇપ કરીને દબાવી રાખો."</string>
-    <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"વિસ્તૃતીકરણ"</string>
+    <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"મોટું કરવું"</string>
     <string name="user_switched" msgid="7249833311585228097">"વર્તમાન વપરાશકર્તા <xliff:g id="NAME">%1$s</xliff:g>."</string>
     <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> પર સ્વિચ કરી રહ્યાં છે…"</string>
     <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> લોગ આઉટ થઈ રહ્યાં છે…"</string>
@@ -1858,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"બૅટરી સેવર ઘેરી થીમની સુવિધા ચાલુ કરે છે અને બૅકગ્રાઉન્ડમાં થતી પ્રવૃત્તિ, કેટલીક વિઝ્યુઅલ ઇફેક્ટ અને “Ok Google” જેવી સુવિધાઓને મર્યાદિત કે બંધ કરે છે\n\n"<annotation id="url">"વધુ જાણો"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"બૅટરી સેવર ઘેરી થીમની સુવિધા ચાલુ કરે છે અને બૅકગ્રાઉન્ડમાં થતી પ્રવૃત્તિ, કેટલીક વિઝ્યુઅલ ઇફેક્ટ અને “Ok Google” જેવી સુવિધાઓને મર્યાદિત કે બંધ કરે છે."</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>
@@ -1937,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"બંધ કરો"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"જવાબ"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"વીડિયો"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"નકારો"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"સમાપ્ત કરો"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"ઇનકમિંગ કૉલ"</string>
@@ -2034,7 +2027,7 @@
     <string name="autofill_save_type_debit_card" msgid="3169397504133097468">"ડેબિટ કાર્ડ"</string>
     <string name="autofill_save_type_payment_card" msgid="6555012156728690856">"ચુકવણી કાર્ડ"</string>
     <string name="autofill_save_type_generic_card" msgid="1019367283921448608">"કાર્ડ"</string>
-    <string name="autofill_save_type_username" msgid="1018816929884640882">"વપરાશકર્તાનામ"</string>
+    <string name="autofill_save_type_username" msgid="1018816929884640882">"વપરાશકર્તાનું નામ"</string>
     <string name="autofill_save_type_email_address" msgid="1303262336895591924">"ઇમેઇલ સરનામું"</string>
     <string name="etws_primary_default_message_earthquake" msgid="8401079517718280669">"શાંત રહો અને નજીકમાં આશ્રય લો."</string>
     <string name="etws_primary_default_message_tsunami" msgid="5828171463387976279">"દરિયાકિનારાના પ્રદેશો તથા નદીકાંઠાના વિસ્તારો ખાલી કરીને તાત્કાલિક સુરક્ષિત ઊંચા સ્થાન પર જાઓ."</string>
@@ -2080,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"નોટિફિકેશનને સાઇલન્ટ પર અવનત કરવામાં આવ્યું. પ્રતિસાદ આપવા માટે ટૅપ કરો."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"આ નોટિફિકેશનને ઉપલી રેંક આપવામાં આવી. પ્રતિસાદ આપવા માટે ટૅપ કરો."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"આ નોટિફિકેશનને નીચલી રેંક આપવામાં આવી. પ્રતિસાદ આપવા માટે ટૅપ કરો."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"વધારાના નોટિફિકેશન અજમાવી જુઓ"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"સૂચવેલી ક્રિયાઓ, જવાબો અને બીજું ઘણું મેળવવા માટે, વધારાના નોટિફિકેશન ચાલુ કરો. Android માટે અનુકૂળ નોટિફિકેશનને હવેથી સપોર્ટ કરવામાં આવતો નથી."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"ચાલુ કરો"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"હમણાં નહીં"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"વધુ જાણો"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"વધારાના નોટિફિકેશન સંપર્કનું નામ અને સંદેશા જેવી વ્યક્તિગત માહિતી સહિત નોટિફિકેશનનું બધું કન્ટેન્ટ વાંચી શકે છે. આ સુવિધા નોટિફિકેશન છોડી પણ શકે છે અથવા નોટિફિકેશનમાં બટન પર ફોન કૉલનો જવાબ આપવા જેવી ક્રિયાઓ પણ કરી શકે છે.\n\nઆ સુવિધા પ્રાધાન્યતા મોડ ચાલુ કે બંધ પણ કરી શકે છે અને સંબંધિત સેટિંગ બદલી પણ શકે છે."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"રૂટિન મોડની માહિતીનું નોટિફિકેશન"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"સામાન્ય રીતે ચાર્જ કરવાના સમય પહેલાં બૅટરી સમાપ્ત થઈ શકે છે"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"બૅટરી આવરદા વધારવા માટે બૅટરી સેવર ચાલુ કર્યું"</string>
@@ -2279,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"હવે તમે તમારી સ્ક્રીનનો અમુક ભાગ મોટો કરી શકો છો"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"સેટિંગમાં ચાલુ કરો"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"છોડી દો"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"ડિવાઇસના માઇક્રોફોનને અનબ્લૉક કરો"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"ડિવાઇસના કૅમેરાને અનબ્લૉક કરો"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; અને બધી ઍપ અને સેવાઓ માટે"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"અનબ્લૉક કરો"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"સેન્સર પ્રાઇવસી સંબંધિત નોટિફિકેશન"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"ઍપ્લિકેશનનું આઇકન"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"ઍપ્લિકેશનની બ્રાંડિંગ છબી"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 8def350..4ab4a7a 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -103,7 +103,7 @@
     <string name="serviceClassVoice" msgid="2065556932043454987">"Voice"</string>
     <string name="serviceClassData" msgid="4148080018967300248">"डेटा"</string>
     <string name="serviceClassFAX" msgid="2561653371698904118">"फ़ैक्स"</string>
-    <string name="serviceClassSMS" msgid="1547664561704509004">"मैसेज (एसएमएस)"</string>
+    <string name="serviceClassSMS" msgid="1547664561704509004">"एसएमएस"</string>
     <string name="serviceClassDataAsync" msgid="2029856900898545984">"Async"</string>
     <string name="serviceClassDataSync" msgid="7895071363569133704">"समन्वयन"</string>
     <string name="serviceClassPacket" msgid="1430642951399303804">"पैकेट"</string>
@@ -220,7 +220,7 @@
     <string name="turn_on_radio" msgid="2961717788170634233">"वायरलेस चालू करें"</string>
     <string name="turn_off_radio" msgid="7222573978109933360">"वायरलेस बंद करें"</string>
     <string name="screen_lock" msgid="2072642720826409809">"स्‍क्रीन लॉक"</string>
-    <string name="power_off" msgid="4111692782492232778">"पावर बंद"</string>
+    <string name="power_off" msgid="4111692782492232778">"पावर बंद करें"</string>
     <string name="silent_mode_silent" msgid="5079789070221150912">"रिंगर बंद"</string>
     <string name="silent_mode_vibrate" msgid="8821830448369552678">"रिंगर कंपन (वाइब्रेशन)"</string>
     <string name="silent_mode_ring" msgid="6039011004781526678">"रिंगर चालू"</string>
@@ -244,10 +244,10 @@
     <string name="global_actions" product="tv" msgid="3871763739487450369">"Android TV डिवाइस में फ़ोन से जुड़े विकल्प"</string>
     <string name="global_actions" product="default" msgid="6410072189971495460">"फ़ोन विकल्‍प"</string>
     <string name="global_action_lock" msgid="6949357274257655383">"स्‍क्रीन लॉक"</string>
-    <string name="global_action_power_off" msgid="4404936470711393203">"पावर बंद"</string>
+    <string name="global_action_power_off" msgid="4404936470711393203">"पावर बंद करें"</string>
     <string name="global_action_power_options" msgid="1185286119330160073">"पावर"</string>
     <string name="global_action_restart" msgid="4678451019561687074">"रीस्टार्ट करें"</string>
-    <string name="global_action_emergency" msgid="1387617624177105088">"आपातकाल"</string>
+    <string name="global_action_emergency" msgid="1387617624177105088">"आपातकालीन"</string>
     <string name="global_action_bug_report" msgid="5127867163044170003">"गड़बड़ी की रिपोर्ट"</string>
     <string name="global_action_logout" msgid="6093581310002476511">"सत्र खत्म करें"</string>
     <string name="global_action_screenshot" msgid="2610053466156478564">"स्क्रीनशॉट"</string>
@@ -309,7 +309,7 @@
     <string name="permgroupdesc_location" msgid="1995955142118450685">"इस डिवाइस की जगह तक पहुंचने दें"</string>
     <string name="permgrouplab_calendar" msgid="6426860926123033230">"कैलेंडर"</string>
     <string name="permgroupdesc_calendar" msgid="6762751063361489379">"अपने कैलेंडर को ऐक्सेस करने"</string>
-    <string name="permgrouplab_sms" msgid="795737735126084874">"मैसेज (एसएमएस)"</string>
+    <string name="permgrouplab_sms" msgid="795737735126084874">"एसएमएस"</string>
     <string name="permgroupdesc_sms" msgid="5726462398070064542">"मैसेज (एसएमएस) भेजें और देखें"</string>
     <string name="permgrouplab_storage" msgid="1938416135375282333">"फ़ाइलें और मीडिया"</string>
     <string name="permgroupdesc_storage" msgid="6351503740613026600">"अपने डिवाइस पर मौजूद फ़ोटो, मीडिया और फ़ाइलें ऐक्सेस करने की"</string>
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"अनुमति देने पर, ऐप्लिकेशन, आस-पास मौजूद ब्लूटूथ डिवाइसों को खोज पाएगा और उनसे जुड़ पाएगा"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"जोड़े गए ब्लूटूथ डिवाइसों से कनेक्ट करें"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"अनुमति देने पर, ऐप्लिकेशन, जोड़े गए ब्लूटूथ डिवाइसों से कनेक्ट कर पाएगा"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <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">"आस-पास मौजूद Ultra-Wideband डिवाइसों के बीच की दूरी का पता लगाएं"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"ऐप्लिकेशन को आस-पास मौजूद Ultra-Wideband डिवाइसों के बीच की दूरी का पता लगाने की अनुमति दें"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"NFC का इस्तेमाल करने वाली पैसे चुकाने की पसंदीदा सेवा की जानकारी"</string>
@@ -1694,9 +1692,9 @@
     <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"बंद है"</string>
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> को अपना डिवाइस पूरी तरह कंट्रोल करने की मंज़ूरी दें?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"अगर आप <xliff:g id="SERVICE">%1$s</xliff:g> को चालू करते हैं, तो डेटा को एन्क्रिप्ट (सुरक्षित) करने के तरीके को बेहतर बनाने के लिए आपका डिवाइस सेट किए गए स्क्रीन लॉक का इस्तेमाल नहीं करेगा."</string>
-    <string name="accessibility_service_warning_description" msgid="291674995220940133">"पूरी तरह नियंत्रित करने की अनुमति उन ऐप्लिकेशन के लिए ठीक है जो सुलभता से जुड़ी ज़रूरतों के लिए बने हैं, लेकिन ज़्यादातर ऐप्लिकेशन के लिए यह ठीक नहीं है."</string>
-    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"स्क्रीन को देखें और नियंत्रित करें"</string>
-    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"यह स्क्रीन पर दिखने वाली हर तरह की सामग्री को पढ़ सकता है और उसे दूसरे ऐप्लिकेशन पर दिखा सकता है."</string>
+    <string name="accessibility_service_warning_description" msgid="291674995220940133">"पूरी तरह कंट्रोल करने की अनुमति उन ऐप्लिकेशन के लिए ठीक है जो सुलभता से जुड़ी ज़रूरतों के लिए बने हैं, लेकिन ज़्यादातर ऐप्लिकेशन के लिए यह ठीक नहीं है."</string>
+    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"स्क्रीन को देखें और कंट्रोल करें"</string>
+    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"यह स्क्रीन पर दिखने वाली हर तरह के कॉन्टेंट को पढ़ सकता है और उसे दूसरे ऐप्लिकेशन पर दिखा सकता है."</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"देखें और कार्रवाई करें"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"यह आपके और किसी ऐप्लिकेशन या हार्डवेयर सेंसर के बीच होने वाले इंटरैक्शन को ट्रैक कर सकता है और आपकी तरफ़ से ऐप्लिकेशन के साथ इंटरैक्ट कर सकता है."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"अनुमति दें"</string>
@@ -1721,7 +1719,7 @@
     <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"एक सुविधा से दूसरी सुविधा पर जाने के लिए, सुलभता बटन दबाकर रखें."</string>
     <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"एक सुविधा से दूसरी सुविधा पर जाने के लिए, स्क्रीन पर दो उंगलियों से ऊपर की ओर स्वाइप करें और थोड़ी देर तक उंगलियां स्क्रीन पर रखे रहें."</string>
     <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"एक सुविधा से दूसरी सुविधा पर जाने के लिए, स्क्रीन पर तीन उंगलियों से ऊपर की ओर स्वाइप करें और थोड़ी देर तक उंगलियां स्क्रीन पर रखे रहें."</string>
-    <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"बड़ा करना"</string>
+    <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"ज़ूम करने की सुविधा"</string>
     <string name="user_switched" msgid="7249833311585228097">"मौजूदा उपयोगकर्ता <xliff:g id="NAME">%1$s</xliff:g>."</string>
     <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> पर स्विच किया जा रहा है…"</string>
     <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> द्वारा प्रस्‍थान किया जा रहा है…"</string>
@@ -1854,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"बैटरी सेवर गहरे रंग वाली थीम को चालू कर देता है. साथ ही, यह बैकग्राउंड की गतिविधि, कुछ विज़ुअल इफ़ेक्ट, और \"Hey Google\" जैसी दूसरी सुविधाएं इस्तेमाल करने से डिवाइस को रोकता है या इन्हें बंद कर देता है\n\n"<annotation id="url">"ज़्यादा जानें"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"बैटरी सेवर गहरे रंग वाली थीम को चालू कर देता है. साथ ही, यह बैकग्राउंड की गतिविधि, कुछ विज़ुअल इफ़ेक्ट, और \"Hey Google\" जैसी दूसरी सुविधाएं इस्तेमाल करने से डिवाइस को रोकता है या इन्हें बंद कर देता है."</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>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"बंद करें"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"जवाब दें"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"वीडियो"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"अस्वीकार करें"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"कॉल काटें"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"आने वाला (इनकमिंग) कॉल"</string>
@@ -1994,7 +1991,7 @@
     <string name="app_category_productivity" msgid="1844422703029557883">"उत्पादकता"</string>
     <string name="app_category_accessibility" msgid="6643521607848547683">"सुलभता"</string>
     <string name="device_storage_monitor_notification_channel" msgid="5164244565844470758">"डिवाइस में जगह"</string>
-    <string name="adb_debugging_notification_channel_tv" msgid="4764046459631031496">"USB डीबग करना"</string>
+    <string name="adb_debugging_notification_channel_tv" msgid="4764046459631031496">"यूएसबी डीबग करना"</string>
     <string name="time_picker_hour_label" msgid="4208590187662336864">"घंटा"</string>
     <string name="time_picker_minute_label" msgid="8307452311269824553">"मिनट"</string>
     <string name="time_picker_header_text" msgid="9073802285051516688">"समय सेट करें"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"इस सूचना के मिलने पर होने वाली आवाज़ बंद कर दी गई है. सुझाव/शिकायत/राय देने के लिए टैप करें."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"इस सूचना को रैंकिंग में ऊपर किया गया था. सुझाव/शिकायत/राय देने के लिए टैप करें."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"इस सूचना को रैंकिंग में नीचे किया गया था. सुझाव/शिकायत/राय देने के लिए टैप करें."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"\'बेहतर सूचनाएं\' सुविधा आज़माएं"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"कार्रवाई और जवाब वगैरह के लिए सुझाव पाना चाहते हैं, तो सूचनाएं पाने की सुविधा बेहतर करें. Android की, ज़रूरत के हिसाब से सूचनाएं पाने की सुविधा अब काम नहीं करती है."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"चालू करें"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"अभी नहीं"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"ज़्यादा जानें"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"\'बेहतर सूचनाएं\' सुविधा, डिवाइस पर मिलने वाली सभी सूचनाओं का कॉन्टेंट पढ़ सकती है. इसमें आपकी निजी जानकारी, जैसे कि संपर्कों के नाम और मैसेज भी शामिल हैं. यह सुविधा, डिवाइस पर आने वाली सूचनाओं को रद्द कर सकती है या सूचनाओं में दिखने वाले बटन से कार्रवाइयां भी कर सकती है, जैसे कि फ़ोन कॉल का जवाब देना.\n\nयह सुविधा, प्राथमिकता मोड को चालू या बंद कर सकती है और इससे जुड़ी सेटिंग में बदलाव भी कर सकती है."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"रूटीन मोड जानकारी की सूचना"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"बैटरी आम तौर पर जितने समय चलती है, उससे पहले खत्म हो सकती है"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"बैटरी लाइफ़ बढ़ाने के लिए \'बैटरी सेवर\' चालू हो गया है"</string>
@@ -2271,18 +2262,14 @@
     <string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string>
     <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
-    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"ज़ूम करके देखने की नई सुविधा उपलब्ध है"</string>
+    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"ज़ूम करने की सुविधा वाली नई सेटिंग"</string>
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"अब आप अपनी स्क्रीन के किसी हिस्से को ज़ूम करके देख सकते हैं"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"सेटिंग में जाकर, इस सुविधा को चालू करें"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"खारिज करें"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"डिवाइस का माइक्रोफ़ोन अनब्लॉक करें"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"डिवाइस का कैमरा अनब्लॉक करें"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; के साथ-साथ, सभी ऐप्लिकेशन और सेवाओं के लिए"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"अनब्लॉक करें"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"सेंसर से जुड़ी निजता के बारे में सूचना"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"ऐप्लिकेशन का आइकॉन"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"ऐप्लिकेशन की ब्रैंड इमेज"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 8938dd2..28fb400 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -250,10 +250,10 @@
     <string name="global_action_power_options" msgid="1185286119330160073">"Uključi"</string>
     <string name="global_action_restart" msgid="4678451019561687074">"Ponovo pokreni"</string>
     <string name="global_action_emergency" msgid="1387617624177105088">"Hitne službe"</string>
-    <string name="global_action_bug_report" msgid="5127867163044170003">"Izvješće o bugovima"</string>
+    <string name="global_action_bug_report" msgid="5127867163044170003">"Izvješće o programskim pogreškama"</string>
     <string name="global_action_logout" msgid="6093581310002476511">"Završi sesiju"</string>
     <string name="global_action_screenshot" msgid="2610053466156478564">"Snimka zaslona"</string>
-    <string name="bugreport_title" msgid="8549990811777373050">"Izvješće o bugovima"</string>
+    <string name="bugreport_title" msgid="8549990811777373050">"Izvješće o programskim pogreškama"</string>
     <string name="bugreport_message" msgid="5212529146119624326">"Time će se prikupiti podaci o trenutačnom stanju vašeg uređaja koje ćete nam poslati u e-poruci. Za pripremu izvješća o programskoj pogrešci potrebno je nešto vremena pa vas molimo za strpljenje."</string>
     <string name="bugreport_option_interactive_title" msgid="7968287837902871289">"Interaktivno izvješće"</string>
     <string name="bugreport_option_interactive_summary" msgid="8493795476325339542">"To možete upotrebljavati u većini slučajeva. Moći ćete pratiti izradu izvješća, unijeti više pojedinosti o problemu i izraditi snimke zaslona. Mogu se izostaviti neki odjeljci koji se upotrebljavaju rjeđe i produljuju izradu izvješća."</string>
@@ -1180,7 +1180,7 @@
     <string name="redo" msgid="7231448494008532233">"Ponovi"</string>
     <string name="autofill" msgid="511224882647795296">"Automatsko popunjavanje"</string>
     <string name="textSelectionCABTitle" msgid="5151441579532476940">"Odabir teksta"</string>
-    <string name="addToDictionary" msgid="8041821113480950096">"Dodaj u rječnik"</string>
+    <string name="addToDictionary" msgid="8041821113480950096">"Dodavanje u rječnik"</string>
     <string name="deleteText" msgid="4200807474529938112">"Izbriši"</string>
     <string name="inputMethod" msgid="1784759500516314751">"Način unosa"</string>
     <string name="editTextMenuTitle" msgid="857666911134482176">"Radnje s tekstom"</string>
@@ -1406,7 +1406,7 @@
     <string name="share_remote_bugreport_action" msgid="7630880678785123682">"DIJELI"</string>
     <string name="decline_remote_bugreport_action" msgid="4040894777519784346">"ODBIJ"</string>
     <string name="select_input_method" msgid="3971267998568587025">"Odabir načina unosa"</string>
-    <string name="show_ime" msgid="6406112007347443383">"Zadržava se na zaslonu dok je fizička tipkovnica aktivna"</string>
+    <string name="show_ime" msgid="6406112007347443383">"Zadrži na zaslonu dok je fizička tipkovnica aktivna"</string>
     <string name="hardware" msgid="1800597768237606953">"Prikaži virtualnu tipkovnicu"</string>
     <string name="select_keyboard_layout_notification_title" msgid="4427643867639774118">"Konfigurirajte fizičku tipkovnicu"</string>
     <string name="select_keyboard_layout_notification_message" msgid="8835158247369158154">"Dodirnite da biste odabrali jezik i raspored"</string>
@@ -1712,12 +1712,12 @@
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nemoj uključiti"</string>
     <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"UKLJUČENO"</string>
     <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"ISKLJUČENO"</string>
-    <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Želite li dopustiti usluzi <xliff:g id="SERVICE">%1$s</xliff:g> potpunu kontrolu nad uređajem?"</string>
+    <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Želite li usluzi <xliff:g id="SERVICE">%1$s</xliff:g> dopustiti potpunu kontrolu nad uređajem?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ako uključite <xliff:g id="SERVICE">%1$s</xliff:g>, vaš uređaj neće upotrebljavati zaključavanje zaslona za bolju enkripciju podataka."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Potpuna kontrola prikladna je za aplikacije koje vam pomažu s potrebama pristupačnosti, ali ne i za većinu aplikacija."</string>
-    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Prikaz zaslona i upravljanje njime"</string>
+    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Pregled zaslona i upravljanje njime"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Može čitati sav sadržaj na zaslonu i prikazati sadržaj povrh drugih aplikacija."</string>
-    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Prikaz i izvršavanje radnji"</string>
+    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Pregled i izvršavanje radnji"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Može pratiti vaše interakcije s aplikacijama ili senzorom uređaja i stupati u interakciju s aplikacijama u vaše ime."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Dopusti"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Odbij"</string>
@@ -1730,7 +1730,7 @@
     <string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Isključi prečac"</string>
     <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Upotrijebi prečac"</string>
     <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string>
-    <string name="color_correction_feature_name" msgid="3655077237805422597">"Korekcija boje"</string>
+    <string name="color_correction_feature_name" msgid="3655077237805422597">"Korekcija boja"</string>
     <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatno zatamnjenje"</string>
     <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za glasnoću. Uključila se usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
     <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tipke za glasnoću. Isključila se usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
@@ -1875,10 +1875,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Ažurirao administrator"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisao administrator"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"U redu"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Štednja baterije uključuje tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizualne efekte i značajke kao što je Hey Google\n\n"<annotation id="url">"Saznajte više"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Štednja baterije uključuje tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizualne efekte i značajke kao što je Hey Google."</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>
@@ -1962,6 +1960,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Zatvori"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Odgovori"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Videozapis"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Odbij"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Prekini"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Dolazni poziv"</string>
@@ -2107,18 +2106,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Obavijest je degradirana u bešumnu. Dodirnite da biste poslali povratne informacije."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Obavijest je više rangirana. Dodirnite da biste poslali povratne informacije."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Obavijest je niže rangirana. Dodirnite da biste poslali povratne informacije."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Proba poboljšanih obavijesti"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Da biste i dalje primali prijedloge za radnje, odgovore i druge informacije, uključite poboljšane obavijesti. Prilagodljive obavijesti za Android više nisu podržane."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Uključi"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Ne sad"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Saznajte više"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Poboljšane obavijesti mogu čitati sadržaj svih obavijesti, uključujući osobne podatke kao što su imena kontakata i poruke. Ta značajka može i odbacivati obavijesti ili poduzimati radnje povezane s gumbima u obavijestima kao što je odgovaranje na telefonske pozive.\n\nZnačajka također može uključiti ili isključiti način prioritetnih obavijesti i promijeniti povezane postavke."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Obavještavanje o informacijama u Rutinskom načinu rada"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Baterija se može isprazniti prije uobičajenog vremena punjenja"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Štednja baterije aktivirana je kako bi se produljilo trajanje baterije"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 8a4cfab..09e56d8 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"A rendszergazda által frissítve"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"A rendszergazda által törölve"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Az Akkumulátorkímélő mód bekapcsolja a Sötét témát, és korlátozza vagy kikapcsolja a háttérbeli tevékenységeket, bizonyos vizuális effekteket és olyan funkciókat, mint az „Ok Google”.\n\n"<annotation id="url">"További információ"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Az Akkumulátorkímélő mód bekapcsolja a Sötét témát, és korlátozza vagy kikapcsolja a háttérbeli tevékenységeket, bizonyos vizuális effekteket és olyan funkciókat, mint az „Ok Google”."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Az adatforgalom csökkentése érdekében az Adatforgalom-csökkentő megakadályozza, hogy egyes alkalmazások adatokat küldjenek vagy fogadjanak a háttérben. Az Ön által jelenleg használt alkalmazások hozzáférhetnek az adatokhoz, de csak ritkábban. Ez például azt jelentheti, hogy a képek csak rákoppintás után jelennek meg."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Bekapcsolja az Adatforgalom-csökkentőt?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Bekapcsolás"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Bezárás"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Fogadás"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Videó"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Elutasítás"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Befejezés"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Bejövő hívás"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Ezt az értesítést némára állította a rendszer. Visszajelzés küldéséhez koppintson ide."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Ezt az értesítést előrébb sorolta a rendszer. Visszajelzés küldéséhez koppintson ide."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Ezt az értesítést hátrébb sorolta a rendszer. Visszajelzés küldéséhez koppintson ide."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Bővített értesítés kipróbálása"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Ha továbbra is szeretne kapni javasolt műveleteket, válaszokat és egyebeket, kapcsolja be a bővített értesítéseket. Az androidos alkalmazkodó értesítések már nem támogatottak."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Bekapcsolás"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Most nem"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"További információ"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"A bővített értesítések minden értesítéstartalmat olvashatnak (így a személyes adatokat, mint például a névjegyek nevét és az üzeneteket is). Ez a funkció emellett elvetheti az értesítéseket, valamint műveleteket végezhet az értesítésekben lévő gombokkal, például felveheti a telefonhívásokat.\n\nEz a funkció a Prioritásos módot is be- vagy kikapcsolhatja, és módosíthatja a kapcsolódó beállításokat."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Információs értesítés a rutinmódról"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Előfordulhat, hogy az akkumulátor lemerül a szokásos töltési időszak előtt"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Akkumulátorkímélő mód aktiválva az akkumulátor üzemidejének növelése érdekében"</string>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index aebdbe6..d4d18c0 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Թույլ է տալիս հավելվածին հայտնաբերել և զուգակցել մոտակա Bluetooth սարքերը"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"միանալ զուգակցված Bluetooth սարքերի"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Թույլ է տալիս հավելվածին միանալ զուգակցված Bluetooth սարքերի"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"Գովազդ մոտակա Bluetooth սարքերում"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Թույլատրում է հավելվածին գովազդ փոխանցել մոտակա Bluetooth սարքերին"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"որոշել մոտակա UWB սարքերի միջև հարաբերական դիրքավորումը"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Թույլատրել հավելվածին որոշել գերլայնաշերտ կապի տեխնոլոգիան աջակցող մոտակա սարքերի միջև հարաբերական դիրքավորումը"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Տեղեկություններ NFC վճարային ծառայության մասին"</string>
@@ -1696,7 +1694,7 @@
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Եթե միացնեք <xliff:g id="SERVICE">%1$s</xliff:g> ծառայությունը, ձեր սարքը չի օգտագործի էկրանի կողպումը՝ տվյալների գաղտնագրումը բարելավելու համար:"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Ամբողջական վերահսկումն անհրաժեշտ է միայն այն հավելվածներին, որոնք օգնում են ձեզ հատուկ գործառույթներից օգտվելիս։"</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Դիտել և կառավարել էկրանը"</string>
-    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Կարող է կարդալ էկրանի բովանդակությունն ու ցուցադրել այլ հավելվածներում։"</string>
+    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Կարող է կարդալ էկրանի ողջ բովանդակությունը և ցուցադրել բովանդակություն այլ հավելվածների վրայից։"</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Դիտել և համակարգել գործողությունները"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Կարող է հետագծել ձեր գործողությունները հավելվածներում և սարքակազմի սենսորների վրա, ինչպես նաև հավելվածներում կատարել գործողություններ ձեր անունից։"</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Թույլատրել"</string>
@@ -1854,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Մարտկոցի տնտեսումը միացնում է մուգ թեման և սահմանափակում կամ անջատում է ֆոնային գործընթացները, որոշ վիզուալ էֆեկտներ և այլ գործառույթներ, օրինակ՝ «Ok Google» հրահանգի ճանաչումը։\n\n"<annotation id="url">"Իմանալ ավելին"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Մարտկոցի տնտեսումը միացնում է մուգ թեման և սահմանափակում կամ անջատում է ֆոնային գործընթացները, որոշ վիզուալ էֆեկտներ և այլ գործառույթներ, օրինակ՝ «Ok Google» հրահանգի ճանաչումը։"</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>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Փակել"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>՝ <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Պատասխանել"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Տեսազանգ"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Մերժել"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Ավարտել"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Մուտքային զանգ"</string>
@@ -1990,7 +1987,7 @@
     <string name="app_category_image" msgid="7307840291864213007">"Լուսանկարներ և պատկերներ"</string>
     <string name="app_category_social" msgid="2278269325488344054">"Սոցցանցեր և հաղորդակցություն"</string>
     <string name="app_category_news" msgid="1172762719574964544">"Նորություններ և ամսագրեր"</string>
-    <string name="app_category_maps" msgid="6395725487922533156">"Քարտեզներ և նավարկում"</string>
+    <string name="app_category_maps" msgid="6395725487922533156">"Քարտեզներ և նավիգացիա"</string>
     <string name="app_category_productivity" msgid="1844422703029557883">"Արդյունավետություն"</string>
     <string name="app_category_accessibility" msgid="6643521607848547683">"Հատուկ գործառույթներ"</string>
     <string name="device_storage_monitor_notification_channel" msgid="5164244565844470758">"Սարքի հիշողություն"</string>
@@ -2059,7 +2056,7 @@
     <string name="slices_permission_request" msgid="3677129866636153406">"<xliff:g id="APP_0">%1$s</xliff:g> հավելվածն ուզում է ցուցադրել հատվածներ <xliff:g id="APP_2">%2$s</xliff:g> հավելվածից"</string>
     <string name="screenshot_edit" msgid="7408934887203689207">"Փոփոխել"</string>
     <string name="volume_dialog_ringer_guidance_vibrate" msgid="2055927873175228519">"Զանգերի և ծանուցումների համար թրթռոցը միացված է"</string>
-    <string name="volume_dialog_ringer_guidance_silent" msgid="1011246774949993783">"Զանգերի և ծանուցումների համար ձայնն անջատած է"</string>
+    <string name="volume_dialog_ringer_guidance_silent" msgid="1011246774949993783">"Զանգերի և ծանուցումների համար ձայնն անջատված է"</string>
     <string name="notification_channel_system_changes" msgid="2462010596920209678">"Համակարգի փոփոխություններ"</string>
     <string name="notification_channel_do_not_disturb" msgid="7832584281883687653">"Չանհանգստացնել"</string>
     <string name="zen_upgrade_notification_visd_title" msgid="2001148984371968620">"Այժմ «Չանհանգստացնել» ռեժիմում ծանուցումները թաքցվում են"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Այս ծանուցման կարևորության մակարդակը իջեցվել է և դարձել անձայն։ Հպեք՝ կարծիք հայտնելու համար։"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Այս ծանուցման կարևորության մակարդակը բարձրացվել է։ Հպեք՝ կարծիք հայտնելու համար։"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Այս ծանուցման կարևորության մակարդակն իջեցվել է։ Հպեք՝ կարծիք հայտնելու համար։"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Փորձեք ընդլայնված ծանուցումները"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Միացրեք ընդլայնված ծանուցումները, որպեսզի այսուհետ ևս ստանաք գործողությունների, պատասխանների և այլ առաջարկներ։ Android-ի հարմարվող ծանուցումներն այլևս չեն աջակցվում։"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Միացնել"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Ոչ հիմա"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Իմանալ ավելին"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Ընդլայնված ծանուցումներին հասանելի է բոլոր ծանուցումների պարունակությունը, ներառյալ անձնական տվյալները, օրինակ՝ կոնտակտների անուններն ու հաղորդագրությունները։ Այս գործառույթը կարող է նաև փակել ծանուցումները կամ ակտիվացնել դրանցում առկա կոճակները, այդ թվում՝ պատասխանել հեռախոսազանգերի։\n\nԱյս գործառույթը կարող է նաև միացնել/անջատել «Միայն կարևորները» ռեժիմը և փոխել համապատասխան կարգավորումները։"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Ծանուցում լիցքավորման մասին"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Մարտկոցը կարող է սովորականից շուտ սպառվել"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Մարտկոցի կյանքը երկարացնելու համար ակտիվացվել է մարտկոցի տնտեսման ռեժիմը"</string>
@@ -2275,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Դուք կարող եք խոշորացնել ձեր էկրանի մի մասը"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Միացնել կարգավորումներում"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Փակել"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Արգելահանել սարքի խոսափողը"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Արգելահանել սարքի տեսախցիկը"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; հավելվածի և մյուս բոլոր հավելվածների ու ծառայությունների համար"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Արգելահանել"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Տվիչների գաղտնիություն"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Հավելվածի պատկերակ"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Հավելվածի բրենդային պատկեր"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index bae2d48..5491214 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Mengizinkan aplikasi menemukan dan menyambungkan perangkat Bluetooth di sekitar"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"hubungkan ke perangkat Bluetooth yang disambungkan"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Mengizinkan aplikasi terhubung ke perangkat Bluetooth yang disambungkan"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"tampilkan iklan ke perangkat Bluetooth di sekitar"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Mengizinkan aplikasi untuk menampilkan iklan ke perangkat Bluetooth di sekitar"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"menentukan posisi relatif antar-perangkat Ultra-Wideband di sekitar"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Mengizinkan aplikasi menentukan posisi relatif antar-perangkat Ultra-Wideband di sekitar"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Informasi Layanan Pembayaran NFC Pilihan"</string>
@@ -1049,8 +1047,8 @@
     <string name="enable_explore_by_touch_warning_title" msgid="5095399706284943314">"Aktifkan Menjelajah dengan Sentuhan?"</string>
     <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="1037295476738940824">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> ingin mengaktifkan Menjelajah dengan Sentuhan. Saat Menjelajah dengan Sentuhan diaktifkan, Anda dapat melihat atau mendengar deskripsi dari apa yang ada di bawah jari Anda atau melakukan gerakan untuk berinteraksi dengan tablet."</string>
     <string name="enable_explore_by_touch_warning_message" product="default" msgid="4312979647356179250">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> ingin mengaktifkan Menjelajah dengan Sentuhan. Saat Menjelajah dengan Sentuhan diaktifkan, Anda dapat mendengar atau melihat deskripsi dari apa yang ada di bawah jari Anda atau melakukan gerakan untuk berinteraksi dengan ponsel."</string>
-    <string name="oneMonthDurationPast" msgid="4538030857114635777">"1 bulan yang lalu"</string>
-    <string name="beforeOneMonthDurationPast" msgid="8315149541372065392">"Sebelum 1 bulan yang lalu"</string>
+    <string name="oneMonthDurationPast" msgid="4538030857114635777">"1 bulan lalu"</string>
+    <string name="beforeOneMonthDurationPast" msgid="8315149541372065392">"Sebelum 1 bulan lalu"</string>
     <plurals name="last_num_days" formatted="false" msgid="687443109145393632">
       <item quantity="other"> <xliff:g id="COUNT_1">%d</xliff:g> hari terakhir</item>
       <item quantity="one"> <xliff:g id="COUNT_0">%d</xliff:g> hari terakhir</item>
@@ -1695,10 +1693,10 @@
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Izinkan <xliff:g id="SERVICE">%1$s</xliff:g> memiliki kontrol penuh atas perangkat Anda?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jika Anda mengaktifkan <xliff:g id="SERVICE">%1$s</xliff:g>, perangkat tidak akan menggunakan kunci layar untuk meningkatkan enkripsi data."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Kontrol penuh sesuai untuk aplikasi yang membantu Anda terkait kebutuhan aksesibilitas, tetapi tidak untuk sebagian besar aplikasi."</string>
-    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Tampilan dan layar kontrol"</string>
+    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Melihat dan mengontrol layar"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Aplikasi dapat membaca semua konten di layar dan menampilkan konten di atas aplikasi lain."</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Menampilkan dan melakukan tindakan"</string>
-    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Aplikasi dapat melacak interaksi Anda dengan aplikasi atau sensor hardware, dan berinteraksi dengan aplikasi atas nama Anda."</string>
+    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Aplikasi dapat melacak interaksi Anda dengan aplikasi atau sensor hardware, dan melakukan interaksi dengan aplikasi untuk Anda."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Izinkan"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Tolak"</string>
     <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Ketuk fitur untuk mulai menggunakannya:"</string>
@@ -1854,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Diupdate oleh admin Anda"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Dihapus oleh admin Anda"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Oke"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Penghemat Baterai mengaktifkan Tema gelap dan membatasi atau menonaktifkan aktivitas di latar belakang, beberapa efek visual, dan fitur seperti “Ok Google”\n\n"<annotation id="url">"Pelajari lebih lanjut"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Penghemat Baterai mengaktifkan Tema gelap dan membatasi atau menonaktifkan aktivitas di latar belakang, beberapa efek visual, dan fitur seperti “Ok Google”."</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>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Tutup"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Jawab"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Tolak"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Tutup"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Panggilan masuk"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Notifikasi ini didemosikan menjadi Senyap. Ketuk untuk memberikan masukan."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Notifikasi ini diberi peringkat lebih tinggi. Ketuk untuk memberikan masukan."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Notifikasi ini diberi peringkat lebih rendah. Ketuk untuk memberikan masukan."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Coba notifikasi yang disempurnakan"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Untuk terus mendapatkan saran tindakan, balasan, dan lainnya, aktifkan notifikasi yang disempurnakan. Notifikasi Adaptif Android tidak lagi didukung."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Aktifkan"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Lain kali"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Pelajari lebih lanjut"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Notifikasi yang disempurnakan dapat membaca semua isi notifikasi, termasuk informasi pribadi seperti nama kontak dan pesan. Fitur ini juga dapat menutup notifikasi atau memicu tindakan pada tombol di notifikasi, seperti menjawab panggilan telepon.\n\nFitur ini juga dapat mengaktifkan atau menonaktifkan mode Prioritas dan mengubah setelan terkait."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notifikasi info Mode Rutinitas"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Baterai mungkin habis sebelum pengisian daya biasanya"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Penghemat Baterai diaktifkan untuk memperpanjang masa pakai baterai"</string>
@@ -2275,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Sekarang Anda dapat memperbesar sebagian layar"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Aktifkan di Setelan"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Tutup"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Batalkan pemblokiran mikrofon perangkat"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Batalkan pemblokiran kamera perangkat"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Untuk &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; serta semua aplikasi dan layanan"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Batalkan pemblokiran"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Privasi Sensor"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ikon aplikasi"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Brand image aplikasi"</string>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index c23362e..4ed6fcc 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Kerfisstjóri uppfærði"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Kerfisstjóri eyddi"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Í lagi"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Rafhlöðusparnaður kveikir á dökku þema og takmarkar eða slekkur á bakgrunnsvirkni, tilteknum myndbrellum og eiginleikum eins og „Ok Google“.\n\n"<annotation id="url">"Nánar"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Rafhlöðusparnaður kveikir á dökku þema og takmarkar eða slekkur á bakgrunnsvirkni, tilteknum myndbrellum og eiginleikum eins og „Ok Google“."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Gagnasparnaður getur hjálpað til við að draga úr gagnanotkun með því að hindra forrit í að senda eða sækja gögn í bakgrunni. Forrit sem er í notkun getur náð í gögn, en gerir það kannski sjaldnar. Niðurstaðan getur verið að myndir eru ekki birtar fyrr en þú ýtir á þær, svo dæmi sé tekið."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Kveikja á gagnasparnaði?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Kveikja"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Loka"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Svara"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Myndsímtal"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Hafna"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Leggja á"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Símtal berst"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Þessi tilkynning var gerð þögul. Ýttu til að senda ábendingu."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Þessi tilkynning fékk hærri stöðu. Ýttu til að senda ábendingu."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Þessi tilkynning fékk lægri stöðu. Ýttu til að senda ábendingu."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Prófa auknar tilkynningar"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Kveiktu á auknum tilkynningum til að halda áfram að fá tillögur að aðgerðum, svörum og fleira. Breytilegar tilkynningar í Android eru ekki lengur studdar."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Kveikja"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Ekki núna"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Nánar"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Auknar tilkynningar geta lesið allt efni tilkynninga, þar á meðal persónuupplýsingar á borð við nöfn tengiliða og skilaboð. Þessi eiginleiki getur einnig hunsað tilkynningar eða notað hnappa í tilkynningum eins og að svara símtölum.\n\nÞessi eiginleiki getur einnig kveikt og slökkt á forgangsstillingu og breytt tengdum stillingum."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Upplýsingatilkynning aðgerðastillingar"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Rafhlaðan kann að tæmast áður en hún kemst í hleðslu"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Kveikt á rafhlöðusparnaði til að lengja endingu rafhlöðunnar"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 80aaa37..23acc8b 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -538,8 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Consente all\'app di rilevare e accoppiare dispositivi Bluetooth nelle vicinanze"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"Connessione a dispositivi Bluetooth accoppiati"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Consente all\'app di connettersi ai dispositivi Bluetooth accoppiati"</string>
-    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"Pubblicità su dispositivi Bluetooth vicini"</string>
-    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Consente all\'app di fare pubblicità sui dispositivi Bluetooth nelle vicinanze"</string>
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"trasmettere annunci a dispositivi Bluetooth vicini"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Consente all\'app di trasmettere annunci ai dispositivi Bluetooth nelle vicinanze"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"Possibilità di stabilire la posizione relativa tra dispositivi a banda ultralarga nelle vicinanze"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Consenti all\'app di stabilire la posizione relativa tra dispositivi a banda ultralarga nelle vicinanze"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Informazioni del servizio di pagamento NFC preferito"</string>
@@ -1692,10 +1692,10 @@
     <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"OFF"</string>
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vuoi consentire a <xliff:g id="SERVICE">%1$s</xliff:g> di avere il controllo totale del tuo dispositivo?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se attivi <xliff:g id="SERVICE">%1$s</xliff:g>, il dispositivo non utilizzerà il blocco schermo per migliorare la crittografia dei dati."</string>
-    <string name="accessibility_service_warning_description" msgid="291674995220940133">"Il pieno controllo è appropriato per le app che rispondono alle tue esigenze di accessibilità, ma non per gran parte delle app."</string>
-    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Visualizza e controlla lo schermo"</string>
+    <string name="accessibility_service_warning_description" msgid="291674995220940133">"Il controllo totale è appropriato per le app che rispondono alle tue esigenze di accessibilità, ma non per gran parte delle app."</string>
+    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Visualizzare e controllare lo schermo"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Può leggere i contenuti presenti sullo schermo e mostrare i contenuti su altre app."</string>
-    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Visualizza ed esegui azioni"</string>
+    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Visualizzare ed eseguire azioni"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Può tenere traccia delle tue interazioni con un\'app o un sensore hardware e interagire con app per tuo conto."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Consenti"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Rifiuta"</string>
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Aggiornato dall\'amministratore"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Eliminato dall\'amministratore"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"L\'opzione Risparmio energetico attiva il tema scuro e limita o disattiva l\'attività in background, alcuni effetti visivi e funzionalità come \"Hey Google\"\n\n"<annotation id="url">"Scopri di più"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"L\'opzione Risparmio energetico attiva il tema scuro e limita o disattiva l\'attività in background, alcuni effetti visivi e funzionalità come \"Hey Google\"."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Per contribuire a ridurre l\'utilizzo dei dati, la funzione Risparmio dati impedisce ad alcune app di inviare o ricevere dati in background. Un\'app in uso può accedere ai dati, ma potrebbe farlo con meno frequenza. Esempio: le immagini non vengono visualizzate finché non le tocchi."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Attivare Risparmio dati?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Attiva"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Chiudi"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Rispondi"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Rifiuta"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Riaggancia"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Chiamata in arrivo"</string>
@@ -1955,7 +1954,7 @@
     <string name="locale_search_menu" msgid="6258090710176422934">"Cerca"</string>
     <string name="app_suspended_title" msgid="888873445010322650">"App non disponibile"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> non è al momento disponibile. Viene gestita tramite <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
-    <string name="app_suspended_more_details" msgid="211260942831587014">"Ulteriori informazioni"</string>
+    <string name="app_suspended_more_details" msgid="211260942831587014">"Scopri di più"</string>
     <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Riattiva app"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Attivare il profilo di lavoro?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Le tue app di lavoro, le notifiche, i dati e altri elementi del profilo di lavoro saranno attivati."</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Questa notifica è stata retrocessa a Silenziosa. Tocca per dare un feedback."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Questa notifica è stata posizionata più in alto. Tocca per dare un feedback."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Questa notifica è stata posizionata più in basso. Tocca per dare un feedback."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Prova le notifiche avanzate"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Per continuare a ricevere suggerimenti di azioni, risposte e altro, attiva le notifiche avanzate. Le notifiche adattive Android non sono più supportate."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Attiva"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Non ora"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Scopri di più"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Le notifiche avanzate possono accedere all\'intero contenuto di una notifica, incluse le informazioni personali, come i nomi dei contatti e i messaggi. Questa funzionalità può anche ignorare le notifiche o svolgere azioni sui pulsanti nelle notifiche, come rispondere alle telefonate.\n\nQuesta funzionalità può anche attivare o disattivare la modalità Priorità e modificare le relative impostazioni."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notifica di informazioni sulla modalità Routine"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"La batteria potrebbe esaurirsi prima della ricarica abituale"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Risparmio energetico attivo per far durare di più la batteria"</string>
@@ -2281,5 +2274,5 @@
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Icona dell\'applicazione"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Immagine del branding dell\'applicazione"</string>
     <string name="view_and_control_notification_title" msgid="4300765399209912240">"Controlla le impostazioni di accesso"</string>
-    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> può visualizzare e controllare il tuo schermo. Tocca per esaminare."</string>
+    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> può visualizzare e controllare il tuo schermo. Tocca per verificare."</string>
 </resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 734224c..99c1c25 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -325,7 +325,7 @@
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"גישה לפעילות הגופנית שלך"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"מצלמה"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"צילום תמונות והקלטת וידאו"</string>
-    <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"מכשירים קרובים"</string>
+    <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"מכשירים בקרבת מקום"</string>
     <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"איתור מכשירים שנמצאים בקרבת מקום והתחברות אליהם"</string>
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"יומני שיחות"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"קריאה וכתיבה של יומן השיחות של הטלפון"</string>
@@ -1405,7 +1405,7 @@
     <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">"‏ניפוי באגים של USB מחובר"</string>
+    <string name="adb_active_notification_title" msgid="408390247354560331">"‏ניפוי באגים ב-USB מחובר"</string>
     <string name="adb_active_notification_message" msgid="5617264033476778211">"‏יש להקיש כדי לכבות את ניפוי הבאגים ב-USB"</string>
     <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"‏יש ללחוץ על ההתראה כדי להשבית ניפוי באגים ב-USB."</string>
     <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ניפוי הבאגים האלחוטי מחובר"</string>
@@ -1734,13 +1734,13 @@
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"לא להפעיל"</string>
     <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"מופעל"</string>
     <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"כבוי"</string>
-    <string name="accessibility_enable_service_title" msgid="3931558336268541484">"ברצונך להעניק לשירות <xliff:g id="SERVICE">%1$s</xliff:g> שליטה מלאה במכשיר?"</string>
+    <string name="accessibility_enable_service_title" msgid="3931558336268541484">"להעניק לשירות <xliff:g id="SERVICE">%1$s</xliff:g> שליטה מלאה במכשיר?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"אם השירות <xliff:g id="SERVICE">%1$s</xliff:g> יופעל, המכשיר לא ישתמש בנעילת המסך כדי לשפר את הצפנת הנתונים."</string>
-    <string name="accessibility_service_warning_description" msgid="291674995220940133">"שליטה מלאה מתאימה לאפליקציות שעוזרות עם צורכי הנגישות שלך, אבל לא לרוב האפליקציות."</string>
+    <string name="accessibility_service_warning_description" msgid="291674995220940133">"האפשרות לשליטה מלאה במכשיר לא מתאימה לכל האפליקציות, אלא רק לאפליקציות שעוזרות עם צורכי הנגישות שלך."</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"הצגת המסך ושליטה בו"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"אפשרות לקריאת כל התוכן במסך ולהצגת התוכן מעל אפליקציות אחרות."</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"הצגה וביצוע של פעולות"</string>
-    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"זוהי אפשרות למעקב אחר האינטראקציות שלך עם אפליקציה או חיישן חומרה כלשהם, ולביצוע אינטראקציה בשמך."</string>
+    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"אפשרות למעקב אחר האינטראקציה שלך עם אפליקציות או חיישני חומרה, וביצוע אינטראקציה בשמך."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"אישור"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"עדיף שלא"</string>
     <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"יש להקיש על תכונה כדי להתחיל להשתמש בה:"</string>
@@ -1898,10 +1898,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"‏התכונה \'חיסכון בסוללה\' מפעילה עיצוב כהה ומגבילה או מכבה פעילות ברקע, חלק מהאפקטים החזותיים ותכונות כמו \"Hey Google\"\n\n"<annotation id="url">"מידע נוסף"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"‏התכונה \'חיסכון בסוללה\' מפעילה עיצוב כהה ומגבילה או מכבה פעילות ברקע, חלק מהאפקטים החזותיים ותכונות כמו \"Hey Google\"."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"‏כדי לסייע בהפחתת השימוש בנתונים, חוסך הנתונים (Data Saver) מונע מאפליקציות מסוימות שליחה או קבלה של נתונים ברקע. אפליקציה שבה נעשה שימוש כרגע יכולה לגשת לנתונים, אבל בתדירות נמוכה יותר. המשמעות היא, למשל, שתמונות יוצגו רק לאחר שמקישים עליהן."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"להפעיל את חוסך הנתונים?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"הפעלה"</string>
@@ -1993,6 +1991,7 @@
     <string name="close_button_text" msgid="10603510034455258">"סגירה"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"תשובה"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"וידאו"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"דחייה"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ניתוק"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"שיחה נכנסת"</string>
@@ -2012,7 +2011,7 @@
     <string name="user_creation_adding" msgid="7305185499667958364">"לאפשר לאפליקציה <xliff:g id="APP">%1$s</xliff:g> ליצור משתמש חדש באמצעות <xliff:g id="ACCOUNT">%2$s</xliff:g> ?"</string>
     <string name="language_selection_title" msgid="52674936078683285">"הוספת שפה"</string>
     <string name="country_selection_title" msgid="5221495687299014379">"העדפת אזור"</string>
-    <string name="search_language_hint" msgid="7004225294308793583">"צריך להקליד את שם השפה"</string>
+    <string name="search_language_hint" msgid="7004225294308793583">"הקלדת שם השפה"</string>
     <string name="language_picker_section_suggested" msgid="6556199184638990447">"הצעות"</string>
     <string name="language_picker_section_all" msgid="1985809075777564284">"כל השפות"</string>
     <string name="region_picker_section_all" msgid="756441309928774155">"כל האזורים"</string>
@@ -2140,18 +2139,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ההתראה הזו הורדה בדרגה ל\'שקטה\'. יש להקיש כדי לשלוח משוב."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"דירוג ההתראה הזו הוגבה. יש להקיש כדי לשלוח משוב."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"ההתראה הזו דורגה נמוך יותר. יש להקיש כדי לשלוח משוב."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"רוצה לנסות את ההתראות המשופרות?"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"‏כדי להמשיך לקבל הצעות לפעולות, לתשובות ועוד, יש להפעיל את ההתראות המשופרות. אין יותר תמיכה בהתראות מותאמות ל-Android."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"הפעלה"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"לא עכשיו"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"מידע נוסף"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"כשתכונת ההתראות המשופרות פועלת, המערכת יכולה לקרוא את כל תוכן ההתראות, כולל מידע אישי כמו שמות של אנשי קשר והודעות. כמו כן, התכונה תוכל לסגור התראות או לבצע פעולות שהן כוללות, כמו מענה לשיחות טלפון.\n\nהתכונה תוכל גם להפעיל או להשבית את מצב העדיפות ולשנות את ההגדרות הקשורות."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"התראת מידע לגבי מצב שגרתי"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"הסוללה עלולה להתרוקן לפני המועד הרגיל של הטעינה"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"תכונת החיסכון בסוללה הופעלה כדי להאריך את חיי הסוללה"</string>
@@ -2337,7 +2330,7 @@
     <string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string>
     <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
-    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"הגדרות חדשות להגדלה"</string>
+    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"הגדרות חדשות לתכונה \'הגדלה\'"</string>
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"עכשיו אפשר להגדיל חלק מהמסך"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"הפעלה בהגדרות"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"סגירה"</string>
@@ -2349,5 +2342,5 @@
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"סמל האפליקציה"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"תדמית המותג של האפליקציה"</string>
     <string name="view_and_control_notification_title" msgid="4300765399209912240">"בדיקה של הגדרות הגישה"</string>
-    <string name="view_and_control_notification_content" msgid="8003766498562604034">"לשירות <xliff:g id="SERVICE_NAME">%s</xliff:g> יהיו הרשאות לצפייה ולשליטה במסך. יש להקיש כדי לבדוק."</string>
+    <string name="view_and_control_notification_content" msgid="8003766498562604034">"לשירות <xliff:g id="SERVICE_NAME">%s</xliff:g> יש הרשאה להצגת המסך ושליטה בו. אפשר להקיש כדי לבדוק."</string>
 </resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index b38d9dc..da0e492 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -1692,7 +1692,7 @@
     <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"OFF"</string>
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> にデバイスのフル コントロールを許可しますか?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> をオンにすると、デバイスデータの暗号化の強化に画面ロックは使用されなくなります。"</string>
-    <string name="accessibility_service_warning_description" msgid="291674995220940133">"フル コントロールは、ユーザー補助機能を必要とするユーザーをサポートするアプリには適していますが、ほとんどのアプリには適していません。"</string>
+    <string name="accessibility_service_warning_description" msgid="291674995220940133">"フル コントロールは、ユーザー補助機能が必要な場合には適していますが、その他の多くのアプリには不要です。"</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"画面の表示と操作"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"画面上のすべてのコンテンツを読み取り、他のアプリでコンテンツを表示することができます。"</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"操作の表示と実行"</string>
@@ -1852,10 +1852,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">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"バッテリー セーバーを有効にすると、ダークテーマが ON になり、バックグラウンド アクティビティ、一部の視覚効果や、「OK Google」などの機能が制限されるか OFF になります\n\n"<annotation id="url">"詳細"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"バッテリー セーバーを有効にすると、ダークテーマが ON になり、バックグラウンド アクティビティ、一部の視覚効果や、「OK Google」などの機能が制限されるか OFF になります。"</string>
     <string name="data_saver_description" msgid="4995164271550590517">"データセーバーは、一部のアプリによるバックグラウンドでのデータ送受信を停止することでデータ使用量を抑制します。使用中のアプリからデータを送受信することはできますが、その頻度は低くなる場合があります。この影響として、たとえば画像はタップしないと表示されないようになります。"</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"データセーバーを ON にしますか?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"ON にする"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"閉じる"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"応答"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ビデオ"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"拒否"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"通話終了"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"着信"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"この通知の重要度がサイレントに下がりました。タップしてフィードバックをお送りください。"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"この通知の重要度が上がりました。タップしてフィードバックをお送りください。"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"この通知の重要度が下がりました。タップしてフィードバックをお送りください。"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"拡張通知を使ってみる"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"操作や返信の候補などを利用し続けるには、拡張通知を ON にしてください。Android 通知の自動調整はサポートを終了しました。"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"ON にする"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"後で"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"詳細"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"拡張通知はすべての通知コンテンツにアクセスできます。これには、連絡先の名前などの個人情報やメッセージも含まれます。また、通知を非表示にしたり、電話に出るなど、通知内の操作ボタンを実行したりすることもできます。\n\nまた、この機能は、優先モードの設定を切り替えたり、関連する設定を変更したりすることもできます。"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ルーティン モード情報の通知"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"通常の充電を行う前に電池が切れる可能性があります"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"電池を長持ちさせるため、バッテリー セーバーが有効になりました"</string>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index a14c551..ba7beac 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -1852,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"ბატარეის დამზოგი ჩართავს მუქ თემას და შეზღუდავს ან გამორთავს ფონურ აქტივობას, ზოგიერთ ვიზუალურ ეფექტს და ისეთ ფუნქციებს, როგორიცაა „Ok Google“\n\n"<annotation id="url">"შეიტყვეთ მეტი"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"ბატარეის დამზოგი ჩართავს მუქ თემას და შეზღუდავს ან გამორთავს ფონურ აქტივობას, ზოგიერთ ვიზუალურ ეფექტს და ისეთ ფუნქციებს, როგორიცაა „Ok Google“."</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"დახურვა"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"პასუხი"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ვიდეო"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"უარყოფა"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"გათიშვა"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"შემომავალი ზარი"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ეს შეტყობინება ჩამოქვეითდა და გახდა „ჩუმი“. შეეხეთ გამოხმაურების მოსაწოდებლად."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"ეს შეტყობინება დაწინაურდა. შეეხეთ გამოხმაურების მოსაწოდებლად."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"ეს შეტყობინება ჩამოქვეითდა. შეეხეთ გამოხმაურების მოსაწოდებლად."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"გამოცადეთ გაფართოებული შეტყობინებები"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"შემოთავაზებული ქმედებების, პასუხების და სხვა მითითებების მიღების გასაგრძელებლად ჩართეთ გაფართოებული შეტყობინებები. Android-ის ადაპტაციური შეტყობინებები აღარაა მხარდაჭერილი."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"ჩართვა"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"ახლა არა"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"შეიტყვეთ მეტი"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"გაფართოებულ შეტყობინებებს შეუძლია ყველა შეტყობინების კონტენტის, მათ შორის, ისეთი პერსონალური ინფორმაციის წაკითხვა, როგორიცაა კონტაქტების სახელები და შეტყობინებები. ამ ფუნქციას ასევე შეუძლია შეტყობინებების დახურვა ან შეტყობინებათა ღილაკების ამოქმედება, მაგალითად, სატელეფონო ზარებზე პასუხი.\n\nამ ფუნქციას ასევე შეუძლია პრიორიტეტული რეჟიმის ჩართვა თუ გამორთვა და დაკავშირებული პარამეტრების შეცვლა."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"რუტინის რეჟიმის საინფორმაციო შეტყობინება"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"ბატარეა შეიძლება დაჯდეს დატენის ჩვეულ დრომდე"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"ბატარეის დამზოგი გააქტიურდა ბატარეის მუშაობის გასახანგრძლივლებლად"</string>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 8dbe6ee..6b73379 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -305,7 +305,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>
@@ -538,12 +538,10 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Қолданбаға маңайдағы Bluetooth құрылғыларын анықтап, жұптауға рұқсат береді."</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"жұпталған Bluetooth құрылғыларына қосылу"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Қолданбаға жұпталған Bluetooth құрылғыларына қосылуға рұқсат береді."</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
-    <string name="permlab_uwb_ranging" msgid="8141915781475770665">"маңайдағы кеңжолақты құрылғылардың бір-біріне қатысты орнын анықтау"</string>
-    <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Қолданбаға маңайдағы кеңжолақты құрылғылардың бір-біріне қатысты орнын анықтауға мүмкіндік береді."</string>
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"Жарнаманы маңайдағы Bluetooth құрылғыларына беру"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Қолданба жарнаманы маңайдағы Bluetooth құрылғыларына бере алады."</string>
+    <string name="permlab_uwb_ranging" msgid="8141915781475770665">"маңайдағы кең жолақты құрылғылардың бір-біріне қатысты орнын анықтау"</string>
+    <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Қолданбаға маңайдағы кең жолақты құрылғылардың бір-біріне қатысты орнын анықтауға мүмкіндік береді."</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Таңдаулы NFC төлеу қызметі туралы ақпарат"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"Қолданба тіркелген көмектер және баратын жер маршруты сияқты таңдаулы NFC төлеу қызметі туралы ақпаратты ала алатын болады."</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"NFC функциясын басқару"</string>
@@ -1575,7 +1573,7 @@
     <string name="storage_usb_drive_label" msgid="6631740655876540521">"<xliff:g id="MANUFACTURER">%s</xliff:g> USB дискі"</string>
     <string name="storage_usb" msgid="2391213347883616886">"USB жады"</string>
     <string name="extract_edit_menu_button" msgid="63954536535863040">"Өзгерту"</string>
-    <string name="data_usage_warning_title" msgid="9034893717078325845">"Деректердің пайдаланылуы туралы ескерту"</string>
+    <string name="data_usage_warning_title" msgid="9034893717078325845">"Дерек шығыны туралы ескерту"</string>
     <string name="data_usage_warning_body" msgid="1669325367188029454">"Деректің <xliff:g id="APP">%s</xliff:g> пайдаландыңыз"</string>
     <string name="data_usage_mobile_limit_title" msgid="3911447354393775241">"Мобильдік деректер шегіне жетті"</string>
     <string name="data_usage_wifi_limit_title" msgid="2069698056520812232">"Wi-Fi деректер шегіне жеттіңіз"</string>
@@ -1692,7 +1690,7 @@
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Қосылмасын"</string>
     <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"ҚОСУЛЫ"</string>
     <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"ӨШІРУЛІ"</string>
-    <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> қызметі құрылғыңызды толық басқаруына рұқсат етілсін бе?"</string>
+    <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> қызметіне құрылғыны толық басқаруға рұқсат етілсін бе?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> қоссаңыз, құрылғыңыз деректерді шифрлау үшін экранды бекітуді пайдаланбайды."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Арнайы мүмкіндіктер бойынша көмектесетін қолданбаларға ғана құрылғыны толық басқару рұқсатын берген дұрыс."</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Экранды көру және басқару"</string>
@@ -1700,7 +1698,7 @@
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Әрекеттерді көру және орындау"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Ол қолданбамен немесе жабдық датчигімен істеген тапсырмаларыңызды бақылайды және қолданбаларды сіздің атыңыздан пайдаланады."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Рұқсат ету"</string>
-    <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Қабылдамау"</string>
+    <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Тыйым салу"</string>
     <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Функцияны пайдалана бастау үшін түртіңіз:"</string>
     <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"\"Арнайы мүмкіндіктер\" түймесімен қолданылатын функцияларды таңдаңыз"</string>
     <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Дыбыс деңгейі пернелері тіркесімімен қолданылатын функцияларды таңдаңыз"</string>
@@ -1711,7 +1709,7 @@
     <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Төте жолды пайдалану"</string>
     <string name="color_inversion_feature_name" msgid="326050048927789012">"Түстер инверсиясы"</string>
     <string name="color_correction_feature_name" msgid="3655077237805422597">"Түсті түзету"</string>
-    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Аса күңгірт"</string>
+    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Экранды қарайту"</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>
     <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> қызметін пайдалану үшін дыбыс деңгейін реттейтін екі түймені де 3 секунд басып тұрыңыз"</string>
@@ -1854,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Батареяны үнемдеу режимі қараңғы тақырыпты іске қосады және фондық әрекеттерге, кейбір визуалдық әсерлерге, \"Ok Google\" сияқты функцияларға шектеу қояды немесе оларды өшіреді.\n\n"<annotation id="url">"Толығырақ"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Батареяны үнемдеу режимі қараңғы тақырыпты іске қосады және фондық әрекеттерге, кейбір визуалдық әсерлерге, \"Ok Google\" сияқты функцияларға шектеу қояды немесе оларды өшіреді."</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>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Жабу"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Жауап"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Бейне"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Қабылдамау"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Тұтқаны қою"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Кіріс қоңырау"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Бұл хабарландырудың маңыздылық деңгейі \"Үнсіз\" санатына төмендетілді. Пікір қалдыру үшін түртіңіз."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Бұл хабарландырудың маңыздылық деңгейі көтерілді. Пікір қалдыру үшін түртіңіз."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Бұл хабарландырудың маңыздылық деңгейі төмендетілді. Пікір қалдыру үшін түртіңіз."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Кеңейтілген хабарландыруларды пайдалану"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Ұсынылған әрекеттер, жауаптар және т.б. алып отыру үшін \"Кеңейтілген хабарландырулар\" функциясын қосыңыз. Android-тың \"Бейімделетін хабарландырулар\" функциясына бұдан былай қолдау көрсетілмейді."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Қосу"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Қазір емес"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Толығырақ"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"\"Кеңейтілген хабарландырулар\" функциясы барлық хабарландыру мазмұнын (контакт атаулары мен хабарлар сияқты жеке ақпаратты қоса алғанда) оқи алады. Сондай-ақ бұл функция арқылы хабарландыруларды жабуға немесе хабарландырулардағы түймелерді басқаруға (мысалы, телефон қоңырауларына жауап беру) болады.\n\nОл арқылы \"Маңызды\" режимін қосуға немесе өшіруге, қатысты параметрлерді өзгертуге де болады."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Режим туралы хабарландыру"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Батарея заряды азаюы мүмкін"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Батарея ұзаққа жетуі үшін, Батареяны үнемдеу режимі іске қосылды"</string>
@@ -2275,17 +2266,13 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Енді экранның бір бөлігін ұлғайтуға болады."</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Параметрлер бөлімінен қосу"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Қабылдамау"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Құрылғы микрофонының бөгеуін алыңыз"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Құрылғы камерасының бөгеуін алыңыз"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; және барлық қолданбалар мен қызметтерге арналған."</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Бөгеуді алу"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Датчикке қатысты құпиялылық"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Қолданба белгішесі"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Қолданба брендін ілгері жылжыту кескіні"</string>
     <string name="view_and_control_notification_title" msgid="4300765399209912240">"Пайдалану параметрлерін тексеріңіз"</string>
-    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> қызметі экраныңызды көріп, бақылай алады. Көру үшін түртіңіз."</string>
+    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> экраныңызды көріп, оны басқара алады. Өту үшін түртіңіз."</string>
 </resources>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index e294f38..81dc891 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"អនុញ្ញាតឱ្យកម្មវិធី​ស្វែងរក និងផ្គូផ្គង​ឧបករណ៍​ប៊្លូធូសដែលនៅជិត"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"ភ្ជាប់ទៅឧបករណ៍​ប៊្លូធូសដែលបានផ្គូផ្គង"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"អនុញ្ញាតឱ្យ​កម្មវិធីភ្ជាប់ទៅ​ឧបករណ៍​ប៊្លូធូសដែលបានផ្គូផ្គង"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <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">"កំណត់ចម្ងាយពាក់ព័ន្ធរវាងឧបករណ៍ Ultra-Wideband ដែលនៅជិត"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"អនុញ្ញាតឱ្យ​កម្មវិធី​កំណត់ចម្ងាយ​ពាក់ព័ន្ធ​រវាងឧបករណ៍ Ultra-Wideband ដែលនៅជិត"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"ព័ត៌មានអំពី​សេវាបង់ប្រាក់តាម NFC ជាអាទិភាព"</string>
@@ -1367,8 +1365,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">"បាន​ភ្ជាប់​ការ​កែ​កំហុសតាម​ USB"</string>
-    <string name="adb_active_notification_message" msgid="5617264033476778211">"ចុច​ដើម្បី​បិទ​ការកែកំហុសតាម ​USB"</string>
+    <string name="adb_active_notification_title" msgid="408390247354560331">"បាន​ភ្ជាប់​ការ​ជួសជុលតាម​ USB"</string>
+    <string name="adb_active_notification_message" msgid="5617264033476778211">"ចុច​ដើម្បី​បិទ​ការជួសជុលតាម ​USB"</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>
@@ -1568,7 +1566,7 @@
     <string name="action_menu_overflow_description" msgid="4579536843510088170">"ជម្រើស​ច្រើន​ទៀត"</string>
     <string name="action_bar_home_description_format" msgid="5087107531331621803">"%1$s, %2$s"</string>
     <string name="action_bar_home_subtitle_description_format" msgid="4346835454749569826">"%1$s, %2$s, %3$s"</string>
-    <string name="storage_internal" msgid="8490227947584914460">"ឧបករណ៍ផ្ទុកដែលចែករំលែកខាងក្នុង"</string>
+    <string name="storage_internal" msgid="8490227947584914460">"ទំហំផ្ទុករួមខាងក្នុង"</string>
     <string name="storage_sd_card" msgid="3404740277075331881">"កាត​អេសឌី"</string>
     <string name="storage_sd_card_label" msgid="7526153141147470509">"កាត SD <xliff:g id="MANUFACTURER">%s</xliff:g>"</string>
     <string name="storage_usb_drive" msgid="448030813201444573">"ឧបករណ៍ផ្ទុក USB"</string>
@@ -1854,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"មុខងារ​សន្សំថ្ម​បើករចនាប័ទ្មងងឹត និងបិទឬដាក់កំហិត​លើសកម្មភាព​ផ្ទៃខាងក្រោយ ឥទ្ធិពលរូបភាព​មួយចំនួន និងមុខងារ​ដូចជា “Ok Google” ជាដើម\n\n"<annotation id="url">"ស្វែងយល់​បន្ថែម"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"មុខងារ​សន្សំថ្ម​បើករចនាប័ទ្មងងឹត និងបិទឬដាក់កំហិត​លើសកម្មភាព​ផ្ទៃខាងក្រោយ ឥទ្ធិពលរូបភាព​មួយចំនួន និងមុខងារ​ដូចជា “Ok Google” ជាដើម។"</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>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"បិទ"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>៖ <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"ឆ្លើយ"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"វីដេអូ"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"បដិសេធ"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ដាក់​ចុះ"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"ការ​ហៅ​ចូល"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ការជូនដំណឹងនេះ​ត្រូវបានបន្ទាបតំណែងទៅ​ស្ងាត់។ សូមចុច​ដើម្បី​ផ្ដល់មតិកែលម្អ។"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"ការជូនដំណឹងនេះ​ត្រូវបានចាត់ថ្នាក់​ខ្ពស់ជាងមុន។ សូមចុច​ដើម្បី​ផ្ដល់មតិកែលម្អ។"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"ការជូនដំណឹងនេះ​ត្រូវបានចាត់ថ្នាក់​ទាបជាងមុន។ សូមចុច​ដើម្បី​ផ្ដល់មតិកែលម្អ។"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"សាកល្បងប្រើការជូនដំណឹងប្រសើរជាងមុន"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"ដើម្បីបន្ត​ទទួលបាន​ការឆ្លើយតប សកម្មភាព​ដែលបានណែនាំ និងអ្វីៗ​ជាច្រើនទៀត សូមបើក​ការជូនដំណឹង​ប្រសើរជាងមុន​។ ការជូនដំណឺង​ដែលមានភាព​បត់បែន Android មិនអាចប្រើ​បានទៀតទេ​។"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"បើក"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"កុំទាន់"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"ស្វែងយល់បន្ថែម"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"ការជូនដំណឹង​ប្រសើរជាងមុន​អាចអាន​ខ្លឹមសារ​ជូនដំណឹង​ទាំងអស់ រួមទាំង​ព័ត៌មានផ្ទាល់ខ្លួនដូចជា ឈ្មោះទំនាក់ទំនង និង​សារជាដើម​។ មុខងារនេះ​ក៏អាចច្រានចោល​ការជូនដំណឹង ឬធ្វើសកម្មភាព​លើប៊ូតុង​នៅក្នុង​ការជូនដំណឹង​ផងដែរ ដូចជា​ការទទួល​ការហៅទូរសព្ទ​ជាដើម។\n\nមុខងារនេះ​ក៏អាចបើក​ឬបិទមុខងារ​អាទិភាព និង​ផ្លាស់ប្ដូរ​ការកំណត់​ដែលពាក់ព័ន្ធ​ផងដែរ​។"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ការ​ជូនដំណឹង​ព័ត៌មាន​របស់​មុខងារ​ទម្លាប់"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"ថ្ម​អាច​នឹង​អស់ មុនពេល​សាកថ្មធម្មតា"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"បាន​បើក​ដំណើរការមុខងារ​សន្សំ​ថ្ម ដើម្បីបង្កើនកម្រិត​ថាមពល​​ថ្ម"</string>
@@ -2275,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"ឥឡូវនេះ អ្នកអាចពង្រីក​ផ្នែកនៃអេក្រង់​របស់អ្នកបានហើយ"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"បើកនៅក្នុងការកំណត់"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"ច្រានចោល"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"ឈប់ទប់ស្កាត់​មីក្រូហ្វូន​របស់ឧបករណ៍"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"ឈប់ទប់ស្កាត់​កាមេរ៉ា​របស់ឧបករណ៍"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"សម្រាប់ &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; និង កម្មវិធីនិង​សេវាកម្ម​ទាំងអស់"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"ឈប់ទប់ស្កាត់"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"ឯកជនភាព​ឧបករណ៍​ចាប់សញ្ញា"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"រូប​កម្មវិធី"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"រូបភាព​ផ្សព្វផ្សាយម៉ាក​កម្មវិធី"</string>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index a030715..f4843444 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -319,10 +319,8 @@
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"ನಿಮ್ಮ ದೈಹಿಕ ಚಟುವಟಿಕೆಯನ್ನು ಪ್ರವೇಶಿಸಿ"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"ಕ್ಯಾಮರಾ"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"ಚಿತ್ರಗಳನ್ನು ತೆಗೆಯಲು, ವೀಡಿಯೊ ರೆಕಾರ್ಡ್ ಮಾಡಲು"</string>
-    <!-- no translation found for permgrouplab_nearby_devices (5529147543651181991) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_nearby_devices (3213561597116913508) -->
-    <skip />
+    <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"ಸಮೀಪದಲ್ಲಿರುವ ಸಾಧನಗಳು"</string>
+    <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"ಸಮೀಪದಲ್ಲಿರುವ ಸಾಧನಗಳನ್ನು ಅನ್ವೇಷಿಸಿ ಮತ್ತು ಕನೆಕ್ಟ್ ಮಾಡಿ"</string>
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"ಕರೆಯ ಲಾಗ್‌"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"ಪೋನ್‌ ಕರೆಯ ಲಾಗ್‌ ಅನ್ನು ಓದಿ ಮತ್ತು ಬರೆಯಿರಿ"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"ಫೋನ್"</string>
@@ -540,14 +538,10 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"ಸಮೀಪದಲ್ಲಿರುವ ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳನ್ನು ಅನ್ವೇಷಿಸಲು ಮತ್ತು ಅವುಗಳಿಗೆ ಜೋಡಿಸಲು ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸಿ"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"ಜೋಡಿಸಿರುವ ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿ"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"ಜೋಡಿಸಲಾಗಿರುವ ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
-    <!-- no translation found for permlab_uwb_ranging (8141915781475770665) -->
-    <skip />
-    <!-- no translation found for permdesc_uwb_ranging (2519723069604307055) -->
-    <skip />
+    <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_preferredPaymentInfo" msgid="5274423844767445054">"ಆದ್ಯತೆಯ NFC ಪಾವತಿ ಸೇವಾ ಮಾಹಿತಿ"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"ನೋಂದಾಯಿತ ಅಪ್ಲಿಕೇಶನ್ ಗುರುತಿಸುವಿಕೆಗಳು ಮತ್ತು ಮಾರ್ಗ ಗಮ್ಯಸ್ಥಾನಗಳಂತಹ ಆದ್ಯತೆಯ NFC ಪಾವತಿ ಸೇವೆಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಲು ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"ಸಮೀಪ ಕ್ಷೇತ್ರ ಸಂವಹನವನ್ನು ನಿಯಂತ್ರಿಸಿ"</string>
@@ -1699,7 +1693,7 @@
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"ನಿಮ್ಮ ಸಾಧನದ ಪೂರ್ಣ ನಿಯಂತ್ರಣ ಹೊಂದಲು <xliff:g id="SERVICE">%1$s</xliff:g> ಗೆ ಅನುಮತಿಸಬೇಕೆ?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ನೀವು <xliff:g id="SERVICE">%1$s</xliff:g> ಅನ್ನು ಆನ್ ಮಾಡಿದರೆ, ನಿಮ್ಮ ಸಾಧನವು ಡೇಟಾ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಅನ್ನು ವರ್ಧಿಸಲು ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ಲಾಕ್ ಅನ್ನು ಬಳಸುವುದಿಲ್ಲ."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"ಪ್ರವೇಶಿಸುವಿಕೆಯ ಅವಶ್ಯಕತೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುವ ಆ್ಯಪ್‌ಗಳಿಗೆ ಪೂರ್ಣ ನಿಯಂತ್ರಣ ನೀಡುವುದು ಸೂಕ್ತವಾಗಿರುತ್ತದೆ, ಆದರೆ ಬಹುತೇಕ ಆ್ಯಪ್‌ಗಳಿಗೆ ಇದು ಸೂಕ್ತವಲ್ಲ."</string>
-    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ಪರದೆಯನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ"</string>
+    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ಸ್ಕ್ರೀನ್ ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ಇದು ಪರದೆಯ ಮೇಲಿನ ಎಲ್ಲಾ ವಿಷಯವನ್ನು ಓದಬಹುದು ಮತ್ತು ಇತರ ಆ್ಯಪ್‌ಗಳ ಮೇಲೆ ವಿಷಯವನ್ನು ಪ್ರದರ್ಶಿಸಬಹುದು."</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"ಕ್ರಿಯೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿರ್ವಹಿಸಿ"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"ಇದು ಆ್ಯಪ್ ಅಥವಾ ಹಾರ್ಡ್‌ವೇರ್ ಸೆನ್ಸರ್‌ನ ಜೊತೆಗಿನ ನಿಮ್ಮ ಸಂವಹನಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಬಹುದು, ಮತ್ತು ನಿಮ್ಮ ಪರವಾಗಿ ಆ್ಯಪ್‌ಗಳ ಜೊತೆ ಸಂವಹನ ನಡೆಸಬಹುದು."</string>
@@ -1858,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"ಬ್ಯಾಟರಿ ಸೇವರ್ ಡಾರ್ಕ್ ಥೀಮ್ ಅನ್ನು ಆನ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಹಿನ್ನೆಲೆ ಚಟುವಟಿಕೆ, ಕೆಲವು ವಿಷುವಲ್ ಎಫೆಕ್ಟ್‌ಗಳು ಮತ್ತು “Ok Google” ನಂತಹ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ ಅಥವಾ ಆಫ್ ಮಾಡುತ್ತದೆ.\n\n"<annotation id="url">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"ಬ್ಯಾಟರಿ ಸೇವರ್ ಡಾರ್ಕ್ ಥೀಮ್ ಅನ್ನು ಆನ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಹಿನ್ನೆಲೆ ಚಟುವಟಿಕೆ, ಕೆಲವು ವಿಷುವಲ್ ಎಫೆಕ್ಟ್‌ಗಳು ಮತ್ತು “Ok Google” ನಂತಹ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ ಅಥವಾ ಆಫ್ ಮಾಡುತ್ತದೆ."</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>
@@ -1937,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"ಮುಚ್ಚು"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"ಉತ್ತರಿಸಿ"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ವೀಡಿಯೊ"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"ನಿರಾಕರಿಸಿ"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ಹ್ಯಾಂಗ್ ಅಪ್"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"ಒಳಬರುವ ಕರೆ"</string>
@@ -2080,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ಈ ಅಧಿಸೂಚನೆಗೆ ಸೈಲೆಂಟ್‌ಗೆ ಹಿಂಬಡ್ತಿ ನೀಡಲಾಗಿದೆ. ಪ್ರತಿಕ್ರಿಯೆ ನೀಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"ಈ ಅಧಿಸೂಚನೆಗೆ ಮೇಲಿನ ಸ್ಥಾನವನ್ನು ನೀಡಲಾಗಿದೆ. ಪ್ರತಿಕ್ರಿಯೆ ನೀಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"ಈ ಅಧಿಸೂಚನೆಗೆ ಕೆಳಗಿನ ಸ್ಥಾನವನ್ನು ನೀಡಲಾಗಿದೆ. ಪ್ರತಿಕ್ರಿಯೆ ನೀಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"ವರ್ಧಿತ ಅಧಿಸೂಚನೆಗಳು ಪ್ರಯತ್ನಿಸಿ"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"ಸೂಚಿಸಲಾದ ಕ್ರಿಯೆಗಳು, ಪ್ರತ್ಯುತ್ತರಗಳು ಮತ್ತು ಹೆಚ್ಚಿನದನ್ನು ಪಡೆಯಲು, ವರ್ಧಿತ ಅಧಿಸೂಚನೆಗಳನ್ನು ಆನ್ ಮಾಡಿ. Android ಅಡಾಪ್ಟಿವ್ ಅಧಿಸೂಚನೆಗಳು ಇನ್ನು ಮುಂದೆ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"ಆನ್ ಮಾಡಿ"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"ಈಗ ಬೇಡ"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"ವರ್ಧಿತ ಅಧಿಸೂಚನೆಗಳು ಸಂಪರ್ಕ ಹೆಸರುಗಳು ಮತ್ತು ಸಂದೇಶಗಳಂತಹ ವೈಯಕ್ತಿಕ ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಂತೆ ಎಲ್ಲಾ ಅಧಿಸೂಚನೆ ವಿಷಯವನ್ನು ಓದಬಹುದು. ಈ ವೈಶಿಷ್ಟ್ಯವು ಅಧಿಸೂಚನೆಗಳನ್ನು ವಜಾಗೊಳಿಸಬಹುದು ಅಥವಾ ಫೋನ್ ಕರೆಗಳಿಗೆ ಉತ್ತರಿಸುವಂತಹ ಅಧಿಸೂಚನೆಗಳಲ್ಲಿನ ಬಟನ್‌ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಕ್ರಮ ತೆಗೆದುಕೊಳ್ಳಬಹುದು.\n\nಈ ವೈಶಿಷ್ಟ್ಯವು ಆದ್ಯತಾ ಮೋಡ್ ಅನ್ನು ಆನ್ ಅಥವಾ ಆಫ್ ಮಾಡಬಹುದು ಮತ್ತು ಸಂಬಂಧಿತ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಬಹುದು."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ದೈನಂದಿನ ಸ್ಥಿತಿಯ ಮಾಹಿತಿಯ ಅಧಿಸೂಚನೆ"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"ಚಾರ್ಜ್‌ಗೆ ಮೊದಲೆ ಬ್ಯಾಟರಿ ಮುಗಿದು ಬಿಡಬಹುದು"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"ಬ್ಯಾಟರಿ ಅವಧಿ ಹೆಚ್ಚಿಸಲು ಬ್ಯಾಟರಿ ಸೇವರ್ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
@@ -2279,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"ನೀವು ಇದೀಗ ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ನ ಭಾಗವನ್ನು ಹಿಗ್ಗಿಸಬಹುದು"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಆನ್ ಮಾಡಿ"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"ವಜಾಗೊಳಿಸಿ"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"ಸಾಧನದ ಮೈಕ್ರೋಫೋನ್ ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"ಸಾಧನದ ಕ್ಯಾಮರಾ ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; ಮತ್ತು ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳು ಹಾಗೂ ಸೇವೆಗಳಿಗಾಗಿ"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"ಸೆನ್ಸರ್ ಗೌಪ್ಯತೆ"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"ಅಪ್ಲಿಕೇಶನ್‌ ಐಕಾನ್‌"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"ಅಪ್ಲಿಕೇಶನ್ ಬ್ರ್ಯಾಂಡಿಂಗ್ ಚಿತ್ರ"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index aa64179..da8f4ab 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"앱이 근처의 블루투스 기기를 찾고 페어링하도록 허용"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"페어링된 블루투스 기기에 연결"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"앱이 페어링된 블루투스 기기에 연결하도록 허용"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <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_preferredPaymentInfo" msgid="5274423844767445054">"기본 NFC 결제 서비스 정보"</string>
@@ -1854,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"절전 기능은 어두운 테마를 사용 설정하고 백그라운드 활동, 일부 시각 효과, \'Hey Google\'과 같은 기능을 제한하거나 사용 중지합니다.\n\n"<annotation id="url">"자세히 알아보기"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"절전 기능은 어두운 테마를 사용 설정하고 백그라운드 활동, 일부 시각 효과, \'Hey Google\'과 같은 기능을 제한하거나 사용 중지합니다."</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>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"닫기"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"답변"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"동영상"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"거절"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"전화 끊기"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"수신 전화"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"이 알림의 중요도가 무음으로 하향되었습니다. 의견을 보내려면 탭하세요."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"이전에 이 알림의 중요도는 더 높았습니다. 의견을 보내려면 탭하세요."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"이전에 이 알림의 중요도는 더 낮았습니다. 의견을 보내려면 탭하세요."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"개선된 알림 기능 사용해 보기"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"추천 작업, 답장 등을 계속 받으려면 개선된 알림 기능을 사용 설정하세요. Android 적응형 알림은 더 이상 지원되지 않습니다."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"사용 설정"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"나중에"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"자세히 알아보기"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"개선된 알림 기능은 연락처 이름과 메시지 등 개인 정보가 포함된 모든 알림 내용을 읽어줍니다. 알림을 닫거나 알림에 표시되는 버튼 관련 작업(예: 전화 받기)을 실행할 수도 있습니다.\n\n또한 이 기능은 우선순위 모드를 사용 또는 사용 중지하고 관련 설정을 변경할 수 있습니다."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"루틴 모드 정보 알림"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"평소에 충전하는 시간 전에 배터리가 소진될 수 있습니다."</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"배터리 수명을 연장하기 위해 절전 모드가 활성화되었습니다."</string>
@@ -2275,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"이제 화면 일부를 확대할 수 있습니다."</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"설정에서 사용 설정"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"닫기"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"기기 마이크 차단 해제"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"기기 카메라 차단 해제"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; 및 모든 앱 및 서비스 대상"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"차단 해제"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"센서 개인정보 보호"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"애플리케이션 아이콘"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"애플리케이션 브랜드 이미지"</string>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index 86aa419..8feb675 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Колдонмого жакын жердеги Bluetooth түзмөктөрүн аныктап, жупташтырууга уруксат берет"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"жупташтырылган Bluetooth түзмөктөрү"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Колдонмого жупташтырылган Bluetooth түзмөктөрү менен байланышууга уруксат берет"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"жакын жердеги Bluetooth түзмөктөрүнө жарнамалоо"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Колдонмого жакын жердеги Bluetooth түзмөктөрүнө жарнама көрсөтүүгө мүмкүндүк берет"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"кең тилкелүү тармак аркылуу туташа турган жакын жердеги түзмөктөрдү аныктоо"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Колдонмо кең тилкелүү тармак аркылуу туташа турган жакын жердеги түзмөктөрдү аныктай алат"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Тандалган NFC төлөм кызматы жөнүндө маалымат"</string>
@@ -553,11 +551,11 @@
     <string name="permlab_requestPasswordComplexity" msgid="1808977190557794109">"экранды бөгөттөөнүн татаалдык деңгээлин суроо"</string>
     <string name="permdesc_requestPasswordComplexity" msgid="1130556896836258567">"Колдонмого экранды бөгөттөөнүн татаалдыгын (татаал, орточо, оңой же такыр жок) үйрөнүүгө мүмкүнчүлүк берет. Татаалдык деңгээли сырсөздүн узундугу жана экранды бөгөттөөнүн түрү боюнча айырмаланат. Колдонмо экранды бөгөттөөнү белгилүү деңгээлге тууралоону колдонуучуларга сунуштай да алат, бирок колдонуучулар ага көңүл бурбай койсо болот. Сырсөздү колдонмо билбеши үчүн, экранды бөгөттөө сырсөзүн кадимки текстте сактоого болбойт."</string>
     <string name="permlab_useBiometric" msgid="6314741124749633786">"биометрикалык аппаратты колдонуу"</string>
-    <string name="permdesc_useBiometric" msgid="7502858732677143410">"Колдонмого аныктыгын текшерүү үчүн, биометрикалык аппаратты пайдалануу мүмкүндүгүн берет"</string>
+    <string name="permdesc_useBiometric" msgid="7502858732677143410">"Колдонмого аныктыгын текшерүү үчүн биометрикалык аппаратты пайдалануу мүмкүндүгүн берет"</string>
     <string name="permlab_manageFingerprint" msgid="7432667156322821178">"манжа изинин аппараттык камсыздоосун башкаруу"</string>
     <string name="permdesc_manageFingerprint" msgid="2025616816437339865">"Колдонмого пайдалануу үчүн манжа изинин үлгүлөрүн кошуу жана жок кылуу мүмкүндүгүн берет."</string>
     <string name="permlab_useFingerprint" msgid="1001421069766751922">"манжа изинин аппараттык камсыздоосун колдонуу"</string>
-    <string name="permdesc_useFingerprint" msgid="412463055059323742">"Колдонмого аныктыгын текшерүү үчүн, манжа изинин аппараттык камсыздоосун пайдалануу мүмкүндүгүн берет"</string>
+    <string name="permdesc_useFingerprint" msgid="412463055059323742">"Колдонмого аныктыгын текшерүү үчүн манжа изинин аппараттык камсыздоосун пайдалануу мүмкүндүгүн берет"</string>
     <string name="permlab_audioWrite" msgid="8501705294265669405">"музыка жыйнагыңызды өчүрүү"</string>
     <string name="permdesc_audioWrite" msgid="8057399517013412431">"Колдонмого музыка жыйнагыңызды өзгөртүүгө мүмкүнчүлүк берет."</string>
     <string name="permlab_videoWrite" msgid="5940738769586451318">"видео жыйнагыңызды өзгөртүү"</string>
@@ -1374,7 +1372,7 @@
     <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Мүчүлүштүктөрдү зымсыз оңдоону өчүрүү үчүн таптап коюңуз"</string>
     <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Мүчүлүштүктөрдү Wi-Fi аркылуу оңдоону өчүрүңүз."</string>
     <string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Сыноо программасынын режими иштетилди"</string>
-    <string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Сыноо программасынын режимин өчүрүү үчүн, баштапкы жөндөөлөргө кайтарыңыз."</string>
+    <string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Сыноо программасынын режимин өчүрүү үчүн баштапкы жөндөөлөргө кайтарыңыз."</string>
     <string name="console_running_notification_title" msgid="6087888939261635904">"Сериялык консоль иштетилди"</string>
     <string name="console_running_notification_message" msgid="7892751888125174039">"Майнаптуулугуна таасири тиет. Аны өчүрүү үчүн операциялык тутумду жүктөгүчтү текшериңиз."</string>
     <string name="usb_contaminant_detected_title" msgid="4359048603069159678">"USB портунда суюктук же урандылар бар"</string>
@@ -1679,12 +1677,12 @@
     <string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4670840383567106114">"Графикалык ачкычыңызды <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес чийдиңиз. Дагы <xliff:g id="NUMBER_1">%2$d</xliff:g> ийгиликсиз аракеттен кийин, Android TV түзмөгүңүздүн кулпусун электрондук почта аккаунтуңуз менен ачышыңыз керек болот.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> секунддан кийин кайталап көрүңүз."</string>
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Графикалык ачкычты <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес көрсөттүңүз. <xliff:g id="NUMBER_1">%2$d</xliff:g> жолу туура эмес көрсөтүлгөндөн кийин, телефондун кулпусун ачуу үчүн Google аккаунтуңузга кирүүгө туура келет.\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> секундадан кийин кайталап көрсөңүз болот."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
-    <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Алып салуу"</string>
+    <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Өчүрүү"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Сунушталган деңгээлден да катуулатып уккуңуз келеби?\n\nМузыканы узакка чейин катуу уксаңыз, угууңуз начарлап кетиши мүмкүн."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Ыкчам иштетесизби?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Атайын мүмкүнчүлүктөр функциясын пайдалануу үчүн ал күйгүзүлгөндө, үндү катуулатып/акырындаткан эки баскычты тең 3 секунддай коё бербей басып туруңуз."</string>
     <string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Атайын мүмкүнчүлүктөрдүн ыкчам баскычын иштетесизби?"</string>
-    <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Атайын мүмкүнчүлүктөр функциясын иштетүү үчүн, үндү чоңойтуп/кичирейтүү баскычтарын бир нече секунд коё бербей басып туруңуз. Ушуну менен, түзмөгүңүз бир аз башкача иштеп калышы мүмкүн.\n\nУчурдагы функциялар:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nТандалган функцияларды өзгөртүү үчүн, Жөндөөлөр &gt; Атайын мүмкүнчүлүктөр бөлүмүнө өтүңүз."</string>
+    <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Атайын мүмкүнчүлүктөр функциясын иштетүү үчүн, үндү чоңойтуп/кичирейтүү баскычтарын бир нече секунд коё бербей басып туруңуз. Ушуну менен, түзмөгүңүз бир аз башкача иштеп калышы мүмкүн.\n\nУчурдагы функциялар:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nТандалган функцияларды өзгөртүү үчүн Жөндөөлөр &gt; Атайын мүмкүнчүлүктөр бөлүмүнө өтүңүз."</string>
     <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">"	• <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string>
     <string name="accessibility_shortcut_single_service_warning_title" msgid="1909518473488345266">"<xliff:g id="SERVICE">%1$s</xliff:g> ыкчам баскычын иштетесизби?"</string>
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"<xliff:g id="SERVICE">%1$s</xliff:g> кызматын иштетүү үчүн, үндү чоңойтуп/кичирейтүү баскычтарын бир нече секунд коё бербей басып туруңуз. Ушуну менен, түзмөгүңүз бир аз башкача иштеп калышы мүмкүн.\n\nБаскычтардын ушул айкалышын башка функцияга дайындоо үчүн, Жөндөөлөр &gt; Атайын мүмкүнчүлүктөр бөлүмүнө өтүңүз."</string>
@@ -1854,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Батареяны үнөмдөгүч режиминде Караңгы тема күйгүзүлүп, фондогу аракеттер, айрым визуалдык эффекттер жана \"Окей, Google\" сыяктуу функциялар чектелип же өчүрүлөт\n\n"<annotation id="url">"Кеңири маалымат"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Батареяны үнөмдөгүч режиминде Караңгы тема күйгүзүлүп, фондогу аракеттер, айрым визуалдык эффекттер жана \"Окей, Google\" сыяктуу функциялар чектелип же өчүрүлөт."</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>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Жабуу"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Жооп берүү"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видео"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Четке кагуу"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Чалууну бүтүрүү"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Кирүүчү чалуу"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Бул билдирменин маанилүүлүгү Үнсүз болуп төмөндөтүлдү. Пикир билдирүү үчүн таптап коюңуз."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Бул билдирменин маанилүүлүгү жогорулатылды. Пикир билдирүү үчүн таптап коюңуз."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Бул билдирменин маанилүүлүгү төмөндөтүлдү. Пикир билдирүү үчүн таптап коюңуз."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Жакшыр-ган бил-ди байкап көрүү"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Сунушталган аракеттерди, жоопторду жана башка маалыматты ала берүү үчүн жакшыртылган билдирмелерди күйгүзүңүз. Android\'дин Ыңгайлаштырылуучу билдирмелери колдоого алынбай калды."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Күйгүзүү"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Азыр эмес"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Кененирээк"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Жакшыртылган билдирмелер бардык билдирмелердин мазмунун, ошондой эле байланыштардын аты-жөнү жана билдирүүлөр сыяктуу жеке маалыматты окуй алат. Мындан тышкары, билдирмелерди жаап же телефон чалууларына жооп берүү сыяктуу билдирмелердеги баскычтарды баса алат.\n\nБул функция Маанилүү жазышуулар режимин күйгүзүп же өчүрүп, ошондой эле анын жөндөөлөрүн өзгөртө алат."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Режимдин адаттагы билдирмеси"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Батарея кубаттоого чейин отуруп калышы мүмкүн"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Батареянын отуруп калбашы үчүн Батареяны үнөмдөгүч режими иштетилди"</string>
@@ -2139,8 +2130,8 @@
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ЧЕКТЕЛГЕН чакага коюлган"</string>
     <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
     <string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"сүрөт жөнөттү"</string>
-    <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Жазышуу"</string>
-    <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Топтук маек"</string>
+    <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Сүйлөшүү"</string>
+    <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Топтошуп сүйлөшүү"</string>
     <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
     <string name="resolver_personal_tab" msgid="2051260504014442073">"Жеке"</string>
     <string name="resolver_work_tab" msgid="2690019516263167035">"Жумуш"</string>
@@ -2271,18 +2262,14 @@
     <string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string>
     <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
-    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Жаңы чоңойтуу жөндөөлөрү"</string>
+    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Чоңойтуу функциясынын жаңы жөндөөлөрү"</string>
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Эми экрандын бир бөлүгүн чоңойто аласыз"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Жөндөөлөрдөн күйгүзүү"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Жабуу"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Түзмөктүн микрофонунун кулпусун ачуу"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Түзмөктүн камерасынын кулпусун ачуу"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; жана башка бардык колдонмолор менен кызматтар үчүн"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Бөгөттөн чыгаруу"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Сенсордун купуялыгы"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Колдонмонун сүрөтчөсү"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Колдонмонун брендинин сүрөтү"</string>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 0b53554..caa9154 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -1852,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"ຕົວປະຢັດແບັດເຕີຣີຈະເປີດໃຊ້ຮູບແບບສີສັນມືດ ແລະ ຈຳກັດ ຫຼື ປິດການ​ເຄື່ອນ​ໄຫວໃນພື້ນຫຼັງ, ເອັບເຟັກດ້ານພາບບາງຢ່າງ ແລະ ຄຸນສົມບັດຕ່າງໆ ເຊັ່ນ: “Ok Google”\n\n"<annotation id="url">"ສຶກສາເພີ່ມເຕີມ"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"ຕົວປະຢັດແບັດເຕີຣີຈະເປີດໃຊ້ຮູບແບບສີສັນມືດ ແລະ ຈຳກັດ ຫຼື ປິດການ​ເຄື່ອນ​ໄຫວໃນພື້ນຫຼັງ, ເອັບເຟັກດ້ານພາບບາງຢ່າງ ແລະ ຄຸນສົມບັດຕ່າງໆ ເຊັ່ນ: “Ok Google”."</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"ປິດ"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"ຮັບສາຍ"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ວິດີໂອ"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"ປະຕິເສດ"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ວາງສາຍ"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"ສາຍໂທເຂົ້າ"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ການແຈ້ງເຕືອນນີ້ຖືກຫຼຸດລະດັບເປັນປິດສຽງແລ້ວ. ແຕະເພື່ອສົ່ງຄຳຕິຊົມ."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"ການແຈ້ງເຕືອນນີ້ຖືກເລື່ອນລະດັບຂຶ້ນແລ້ວ. ແຕະເພື່ອສົ່ງຄຳຕິຊົມ."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"ການແຈ້ງເຕືອນນີ້ຖືກຫຼຸດລະດັບລົງແລ້ວ. ແຕະເພື່ອສົ່ງຄຳຕິຊົມ."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"ລອງໃຊ້ການແຈ້ງເຕືອນທີ່ປັບປຸງໃຫ້ດີຂຶ້ນ"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"ກະລຸນາເປີດໃຊ້ການແຈ້ງເຕືອນທີ່ປັບປຸງໃຫ້ດີຂຶ້ນເພື່ອສືບຕໍ່ຮັບຄຳສັ່ງທີ່ແນະນຳ, ການຕອບກັບ ແລະ ອື່ນໆ. ບໍ່ຮອງຮັບການແຈ້ງເຕືອນແບບປັບຕົວໄດ້ຂອງ Android ອີກຕໍ່ໄປແລ້ວ."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"ເປີດໃຊ້"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"ບໍ່ຟ້າວເທື່ອ"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"ສຶກສາເພີ່ມເຕີມ"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"ການແຈ້ງເຕືອນທີ່ປັບປຸງໃຫ້ດີຂຶ້ນສາມາດອ່ານເນື້ອຫາການແຈ້ງເຕືອນທັງໝົດໄດ້, ຮວມທັງຂໍ້ມູນສ່ວນຕົວ ເຊັ່ນ: ຊື່ຜູ້ຕິດຕໍ່ ແລະ ຂໍ້ຄວາມຕ່າງໆ. ນອກຈາກນັ້ນ, ຄຸນສົມບັດນີ້ຍັງສາມາດປິດການແຈ້ງເຕືອນໄວ້ ຫຼື ໃຊ້ຄຳສັ່ງຕ່າງໆຢູ່ປຸ່ມໃນການແຈ້ງເຕືອນໄດ້ນຳ ເຊັ່ນ: ການຮັບສາຍໂທລະສັບ.\n\nຄຸນສົມບັດນີ້ສາມາດເປີດ ຫຼື ປິດໂໝດສຳຄັນ ແລະ ປ່ຽນການຕັ້ງຄ່າທີ່ກ່ຽວຂ້ອງໄດ້ນຳ."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ການແຈ້ງເຕືອນຂໍ້ມູນໂໝດກິດຈະວັດປະຈຳວັນ"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"ແບັດເຕີຣີອາດໝົດກ່ອນການສາກຕາມປົກກະຕິ"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"ເປີດຕົວປະຢັດແບັດເຕີຣີເພື່ອຂະຫຍາຍອາຍຸແບັດເຕີຣີ"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 5a0b665..ed4f15e 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -1898,10 +1898,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Atnaujino administratorius"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Ištrynė administratorius"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Gerai"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Akumuliatoriaus tausojimo priemonė įjungia tamsiąją temą ir apriboja arba išjungia veiklą fone, kai kuriuos vizualinius efektus ir funkcijas, pvz., „Ok Google“\n\n"<annotation id="url">"Sužinokite daugiau"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Akumuliatoriaus tausojimo priemonė įjungia tamsiąją temą ir apriboja arba išjungia veiklą fone, kai kuriuos vizualinius efektus ir funkcijas, pvz., „Ok Google“."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Kad padėtų sumažinti duomenų naudojimą, Duomenų taupymo priemonė neleidžia kai kurioms programoms siųsti ar gauti duomenų fone. Šiuo metu naudojama programa gali pasiekti duomenis, bet tai bus daroma rečiau. Tai gali reikšti, kad, pvz., vaizdai nebus pateikiami, jei jų nepaliesite."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Įj. Duomenų taupymo priemonę?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Įjungti"</string>
@@ -1993,6 +1991,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Uždaryti"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Atsakyti"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vaizdo įrašas"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Atmesti"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Baigti pok."</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Gaunamasis skambutis"</string>
@@ -2140,18 +2139,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Šio pranešimo svarba sumažinta iki begarsio lygio. Palieskite, kad pateiktumėte atsiliepimą."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Šio pranešimo svarba padidinta. Palieskite, kad pateiktumėte atsiliepimą."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Šio pranešimo svarba sumažinta. Palieskite, kad pateiktumėte atsiliepimą."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Išb. patobulintus pranešimus"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Norėdami toliau gauti siūlomus veiksmus, atsakymus ir daugiau, įjunkite patobulintus pranešimus. „Android“ prisitaikantys pranešimai nebepalaikomi."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Įjungti"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Ne dabar"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Sužinokite daugiau"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Patobulintų pranešimų funkcija gali skaityti visų pranešimų turinį, įskaitant asmens informaciją (pvz., kontaktų vardus ir pranešimus). Ši funkcija taip pat gali atsisakyti pranešimų ar imtis veiksmų su pranešimuose esančiais mygtukais, pvz., atsakyti į telefono skambučius.\n\nBe to, ši funkcija gali įjungti arba išjungti svarbiausių pokalbių režimą ir pakeisti susijusius nustatymus."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Veiksmų sekos režimo informacijos pranešimas"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Akumuliatoriaus energija gali išsekti prieš įprastą įkrovimą"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Akumuliatoriaus tausojimo priemonė suaktyvinta, kad akumuliatorius veiktų ilgiau"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index b4edfc6..94a50ea 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -1875,10 +1875,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Atjaunināja administrators"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Dzēsa administrators"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Labi"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Akumulatora enerģijas taupīšanas režīmā tiek ieslēgts tumšais motīvs un ierobežotas vai izslēgtas darbības fonā, konkrēti vizuālie efekti un tādas funkcijas kā īsinājumvārda “Hey Google” atpazīšana.\n\n"<annotation id="url">"Uzzināt vairāk"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Akumulatora enerģijas taupīšanas režīmā tiek ieslēgts tumšais motīvs un ierobežotas vai izslēgtas darbības fonā, konkrēti vizuālie efekti un tādas funkcijas kā īsinājumvārda “Hey Google” atpazīšana."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Lai samazinātu datu lietojumu, datu lietojuma samazinātājs neļauj dažām lietotnēm fonā nosūtīt vai saņemt datus. Lietotne, kuru pašlaik izmantojat, var piekļūt datiem, bet, iespējams, piekļūs tiem retāk (piemēram, attēli tiks parādīti tikai tad, kad tiem pieskarsieties)."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Vai ieslēgt datu lietojuma samazinātāju?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Ieslēgt"</string>
@@ -1962,6 +1960,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Aizvērt"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Atbildēt"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Noraidīt"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Pārtraukt"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Ienākošais zvans"</string>
@@ -2107,18 +2106,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Šī paziņojuma svarīgums tika pazemināts, un paziņojums tiks rādīts bez skaņas. Lai sniegtu atsauksmes, pieskarieties."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Šī paziņojuma rangs tika paaugstināts. Lai sniegtu atsauksmes, pieskarieties."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Šī paziņojuma rangs tika pazemināts. Lai sniegtu atsauksmes, pieskarieties."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Uzlabotie paziņojumi"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Lai arī turpmāk saņemtu darbību un atbilžu ieteikumus un citu saturu, ieslēdziet uzlabotos paziņojumus. Android adaptīvie paziņojumi vairs netiek atbalstīti."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Ieslēgt"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Vēlāk"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Uzzināt vairāk"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Funkcija “Uzlabotie paziņojumi” var lasīt visu paziņojumu saturu, tostarp personas informāciju, piemēram, kontaktpersonu vārdus un ziņojumus. Šī funkcija var arī noraidīt paziņojumus un izmantot paziņojumos esošās pogas darbību veikšanai, piemēram, atbildēt uz tālruņa zvaniem.\n\nTurklāt šī funkcija var ieslēgt un izslēgt režīmu Prioritāte un mainīt ar to saistītos iestatījumus."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Informatīvs paziņojums par akumulatoru"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Akumulators var izlādēties pirms parastā uzlādes laika"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Aktivizēts akumulatora enerģijas taupīšanas režīms, lai palielinātu akumulatora darbības ilgumu"</string>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index fce03ff..5e90faa 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -297,7 +297,7 @@
     <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Користење на пристапноста"</string>
     <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> користи батерија"</string>
     <string name="foreground_service_apps_in_background" msgid="7340037176412387863">"<xliff:g id="NUMBER">%1$d</xliff:g> апликации користат батерија"</string>
-    <string name="foreground_service_tap_for_details" msgid="9078123626015586751">"Допрете за детали за батеријата и потрошениот сообраќај"</string>
+    <string name="foreground_service_tap_for_details" msgid="9078123626015586751">"Допрете за детали за батеријата и потрошениот интернет"</string>
     <string name="foreground_service_multiple_separator" msgid="5002287361849863168">"<xliff:g id="LEFT_SIDE">%1$s</xliff:g>, <xliff:g id="RIGHT_SIDE">%2$s</xliff:g>"</string>
     <string name="safeMode" msgid="8974401416068943888">"Безбеден режим"</string>
     <string name="android_system_label" msgid="5974767339591067210">"Систем Android"</string>
@@ -1160,7 +1160,7 @@
     <string name="redo" msgid="7231448494008532233">"Повтори"</string>
     <string name="autofill" msgid="511224882647795296">"Автоматско пополнување"</string>
     <string name="textSelectionCABTitle" msgid="5151441579532476940">"Избор на текст"</string>
-    <string name="addToDictionary" msgid="8041821113480950096">"Додај во речник"</string>
+    <string name="addToDictionary" msgid="8041821113480950096">"Додајте во речникот"</string>
     <string name="deleteText" msgid="4200807474529938112">"Избриши"</string>
     <string name="inputMethod" msgid="1784759500516314751">"Метод на внес"</string>
     <string name="editTextMenuTitle" msgid="857666911134482176">"Дејства со текст"</string>
@@ -1694,9 +1694,9 @@
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ако вклучите <xliff:g id="SERVICE">%1$s</xliff:g>, уредот нема да го користи заклучувањето на екранот за да го подобри шифрирањето на податоците."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Целосната контрола е соодветна за апликации што ви помагаат со потребите за пристапност, но не и за повеќето апликации."</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Приказ и контрола на екранот"</string>
-    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Може да ги чита сите содржини на екранот и да прикажува содржини на други апликации."</string>
-    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Приказ и изведување дејства"</string>
-    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Може да ги следи вашите интеракции со апликациите или хардверскиот сензор и да комуницира со апликациите во ваше име."</string>
+    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Може да ги чита сите содржини на екранот и да прикажува содржини врз другите апликации."</string>
+    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Преглед и вршење на дејствата"</string>
+    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Може да ја следи вашата интеракција со апликациите или хардверскиот сензор и да врши интеракција со апликациите во ваше име."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Дозволи"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Одбиј"</string>
     <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Допрете на функција за да почнете да ја користите:"</string>
@@ -1852,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"„Штедачот на батерија“ вклучува темна тема и исклучува или ограничува активност во заднина, некои визуелни ефекти и функции како „Ok Google“\n\n"<annotation id="url">"Дознајте повеќе"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"„Штедачот на батерија“ вклучува темна тема и исклучува или ограничува активност во заднина, некои визуелни ефекти и функции како „Ok Google“."</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Затвори"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Одговори"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видео"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Одбиј"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Спушти"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Дојдовен повик"</string>
@@ -1948,7 +1947,7 @@
     <string name="user_creation_adding" msgid="7305185499667958364">"Дозволувате <xliff:g id="APP">%1$s</xliff:g> да создаде нов корисник со <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
     <string name="language_selection_title" msgid="52674936078683285">"Додајте јазик"</string>
     <string name="country_selection_title" msgid="5221495687299014379">"Претпочитувања за регион"</string>
-    <string name="search_language_hint" msgid="7004225294308793583">"Внеси име на јазик"</string>
+    <string name="search_language_hint" msgid="7004225294308793583">"Внесете име на јазик"</string>
     <string name="language_picker_section_suggested" msgid="6556199184638990447">"Предложени"</string>
     <string name="language_picker_section_all" msgid="1985809075777564284">"Сите јазици"</string>
     <string name="region_picker_section_all" msgid="756441309928774155">"Сите региони"</string>
@@ -1992,7 +1991,7 @@
     <string name="app_category_productivity" msgid="1844422703029557883">"Продуктивност"</string>
     <string name="app_category_accessibility" msgid="6643521607848547683">"Пристапност"</string>
     <string name="device_storage_monitor_notification_channel" msgid="5164244565844470758">"Простор на уредот"</string>
-    <string name="adb_debugging_notification_channel_tv" msgid="4764046459631031496">"Отстранување грешки на USB"</string>
+    <string name="adb_debugging_notification_channel_tv" msgid="4764046459631031496">"Отстранување грешки преку USB"</string>
     <string name="time_picker_hour_label" msgid="4208590187662336864">"час"</string>
     <string name="time_picker_minute_label" msgid="8307452311269824553">"минута"</string>
     <string name="time_picker_header_text" msgid="9073802285051516688">"Постави време"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Приоритетноста на известувањево е намалена на „Тивко“. Допрете за да дадете повратни информации."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Известувањево е рангирано повисоко. Допрете за да дадете повратни информации."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Известувањево е рангирано пониско. Допрете за да дадете повратни информации."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Пробај „Подобрени известувања“"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Вклучете ги „Подобрените известувања“ за да продолжите да добивате предлози за дејства, одговори и слично. „Приспособливите известувања на Android“ веќе не се достапни."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Вклучи"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Не сега"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Дознајте повеќе"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"„Подобрените известувања“ може да ги читаат сите содржини од известувањата, вклучително и личните податоци, како што се имињата на контактите и пораките. Функцијава ќе може и да отфрла известувања или да ги користи копчињата во известувањата, како на пр., да одговара на телефонски повици.\n\nФункцијава може и да го вклучува или исклучува „Приоритетниот режим“ и да ги менува поврзаните поставки."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Известување за информации за режимот за рутини"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Батеријата може да се потроши пред вообичаеното време за полнење"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Активиран е „Штедачот на батерија“ за да се продолжи траењето на батеријата"</string>
@@ -2271,7 +2264,7 @@
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
     <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Нови поставки за зголемување"</string>
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Сега може да зголемувате дел од екранот"</string>
-    <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Вклучи во „Поставки“"</string>
+    <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Вклучете во „Поставки“"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Отфрли"</string>
     <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Одблокирајте го пристапот до микрофонот на уредот"</string>
     <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Одблокирајте го пристапот до камерата на уредот"</string>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index e50fb7bd..02557ee 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -307,7 +307,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">"Calendar"</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>
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"സമീപമുള്ള Bluetooth ഉപകരണങ്ങൾ കണ്ടെത്താനും ജോടിയാക്കാനും ആപ്പിനെ അനുവദിക്കുന്നു"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"ജോടിയായ Bluetooth ഉപകരണങ്ങളിലേക്ക് കണക്റ്റ് ചെയ്യൂ"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"ജോടിയാക്കിയ Bluetooth ഉപകരണങ്ങളിലേക്ക് കണക്റ്റ് ചെയ്യാൻ ആപ്പിനെ അനുവദിക്കുന്നു"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"സമീപമുള്ള Bluetooth ഉപകരണങ്ങളിലേക്ക് പരസ്യം ചെയ്യൂ"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"സമീപമുള്ള Bluetooth ഉപകരണങ്ങളിലേക്ക് പരസ്യം ചെയ്യാൻ ആപ്പിനെ അനുവദിക്കുന്നു"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"സമീപമുള്ള അൾട്രാ-വെെഡ്ബാൻഡ് ഉപകരണങ്ങൾ തമ്മിലുള്ള ആപേക്ഷിക സ്ഥാനം നിർണ്ണയിക്കൂ"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"സമീപമുള്ള അൾട്രാ-വെെഡ്ബാൻഡ് ഉപകരണങ്ങൾ തമ്മിലുള്ള ആപേക്ഷിക സ്ഥാനം നിർണ്ണയിക്കാൻ ആപ്പിനെ അനുവദിക്കുക"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"തിരഞ്ഞെടുത്ത NFC പേയ്‌മെന്റ് സേവനത്തെ സംബന്ധിച്ച വിവരങ്ങൾ"</string>
@@ -1854,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"ബാറ്ററി ലാഭിക്കൽ, ഡാർക്ക് തീം ഓണാക്കുന്നു, പശ്ചാത്തല പ്രവർത്തനവും ചില വിഷ്വൽ ഇഫക്‌റ്റുകളും “Ok Google” പോലുള്ള ഫീച്ചറുകളും നിയന്ത്രിക്കുകയോ ഓഫാക്കുകയോ ചെയ്യുന്നു\n\n"<annotation id="url">"കൂടുതലറിയുക"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"ബാറ്ററി ലാഭിക്കൽ, ഡാർക്ക് തീം ഓണാക്കുന്നു, പശ്ചാത്തല പ്രവർത്തനവും ചില വിഷ്വൽ ഇഫക്‌റ്റുകളും “Ok Google” പോലുള്ള ഫീച്ചറുകളും നിയന്ത്രിക്കുകയോ ഓഫാക്കുകയോ ചെയ്യുന്നു."</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>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"അവസാനിപ്പിക്കുക"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"മറുപടി നൽകുക"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"വീഡിയോ"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"നിരസിക്കുക"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"കോൾ നിർത്തുക"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"ഇൻകമിംഗ് കോൾ"</string>
@@ -1950,7 +1947,7 @@
     <string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="ACCOUNT">%2$s</xliff:g> എന്ന അക്കൗണ്ട് ഉപയോഗിച്ച് പുതിയ ഉപയോക്താവിനെ സൃഷ്‌ടിക്കാൻ <xliff:g id="APP">%1$s</xliff:g> എന്നതിനെ അനുവദിക്കണോ?"</string>
     <string name="language_selection_title" msgid="52674936078683285">"ഒരു ഭാഷ ചേർക്കുക"</string>
     <string name="country_selection_title" msgid="5221495687299014379">"മേഖലാ മുൻഗണന"</string>
-    <string name="search_language_hint" msgid="7004225294308793583">"ഭാഷയുടെ പേര് ടൈപ്പുചെയ്യുക"</string>
+    <string name="search_language_hint" msgid="7004225294308793583">"ഭാഷ ടൈപ്പ് ചെയ്യുക"</string>
     <string name="language_picker_section_suggested" msgid="6556199184638990447">"നിര്‍‌ദ്ദേശിച്ചത്"</string>
     <string name="language_picker_section_all" msgid="1985809075777564284">"എല്ലാ ഭാഷകളും"</string>
     <string name="region_picker_section_all" msgid="756441309928774155">"എല്ലാ പ്രദേശങ്ങളും"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ഈ അറിയിപ്പിനെ നിശബ്‌ദമാക്കി തരം താഴ്‌ത്തി. ഫീഡ്ബാക്ക് നൽകാൻ ടാപ്പ് ചെയ്യുക."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"ഈ അറിയിപ്പിന് ഉയർന്ന റാങ്ക് നൽകി. ഫീഡ്ബാക്ക് നൽകാൻ ടാപ്പ് ചെയ്യുക."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"ഈ അറിയിപ്പിന് താഴ്‌ന്ന റാങ്ക് നൽകി. ഫീഡ്ബാക്ക് നൽകാൻ ടാപ്പ് ചെയ്യുക."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"മെച്ചപ്പെടുത്തിയ അറിയിപ്പുകൾ പരീക്ഷിക്കൂ"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"നിർദ്ദേശിച്ച പ്രവർത്തനങ്ങളും മറുപടികളും മറ്റും ലഭിക്കുന്നത് തുടരാൻ, മെച്ചപ്പെടുത്തിയ അറിയിപ്പുകൾ ഓണാക്കുക. Android അഡാപ്റ്റീവ് അറിയിപ്പുകൾക്ക് ഇനി പിന്തുണയില്ല."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"ഓണാക്കുക"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"ഇപ്പോൾ വേണ്ട"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"കൂടുതലറിയുക"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"മെച്ചപ്പെടുത്തിയ അറിയിപ്പുകൾക്ക്, കോൺടാക്‌റ്റ് പേരുകളും സന്ദേശങ്ങളും പോലുള്ള വ്യക്തിപരമായ വിവരങ്ങൾ ഉൾപ്പെടെ എല്ലാ അറിയിപ്പ് ഉള്ളടക്കവും വായിക്കാനാകും. അറിയിപ്പുകൾ ഡിസ്‌മിസ് ചെയ്യാനോ ഫോൺ കോളുകൾക്ക് മറുപടി നൽകുന്നത് പോലെ അറിയിപ്പുകളിലെ ബട്ടണുകളിൽ നടപടിയെടുക്കാനോ ഈ ഫീച്ചറിന് കഴിയും.\n\nമുൻഗണനാ മോഡ് ഓണാക്കാനോ ഓഫാക്കാനോ ബന്ധപ്പെട്ട ക്രമീകരണം മാറ്റാനോ ഈ ഫീച്ചറിന് കഴിയും."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ദിനചര്യ മോഡ് വിവരത്തെ കുറിച്ചുള്ള അറിയിപ്പ്"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"സാധാരണയുള്ളതിലും നേരത്തെ ബാറ്ററിയുടെ ചാർജ് തീർന്നേക്കാം"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"ബാറ്ററി ലൈഫ് വര്‍ദ്ധിപ്പിക്കാൻ, ബാറ്ററി ലാഭിക്കൽ സജീവമാക്കി"</string>
@@ -2275,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"നിങ്ങളുടെ സ്ക്രീനിന്റെ ഒരു ഭാഗം ഇപ്പോൾ മാഗ്നിഫൈ ചെയ്യാനാകും"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"ക്രമീകരണത്തിൽ ഓണാക്കുക"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"ഡിസ്‌മിസ് ചെയ്യുക"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"ഉപകരണ മൈക്രോഫോൺ അൺബ്ലോക്ക് ചെയ്യുക"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"ഉപകരണ ക്യാമറ അൺബ്ലോക്ക് ചെയ്യുക"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; എന്നതിനും എല്ലാ ആപ്പുകൾക്കും സേവനങ്ങൾക്കും"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"അൺബ്ലോക്ക് ചെയ്യുക"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"സെൻസർ സ്വകാര്യത"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"ആപ്പ് ഐക്കൺ"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"അപ്ലിക്കേഷൻ ബ്രാൻഡിംഗ് ഇമേജ്"</string>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index 87ee801..30ab692 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -1693,7 +1693,7 @@
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>-д таны төхөөрөмжийг бүрэн хянахыг зөвшөөрөх үү?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Хэрэв та <xliff:g id="SERVICE">%1$s</xliff:g>-г асаавал таны төхөөрөмж өгөгдлийн шифрлэлтийг сайжруулахын тулд таны дэлгэцийн түгжээг ашиглахгүй."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Бүрэн хянах нь таны хандалтын үйлчилгээний шаардлагад тусалдаг аппуудад тохиромжтой боловч ихэнх аппад тохиромжгүй байдаг."</string>
-    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Харах болон хянах дэлгэц"</string>
+    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Дэлгэцийг харах ба хянах"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Энэ нь дэлгэц дээрх бүх контентыг унших болон контентыг бусад аппад харуулах боломжтой."</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Үйлдлийг харах болон гүйцэтгэх"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Энэ нь таны апп болон техник хангамжийн мэдрэгчтэй хийх харилцан үйлдлийг хянах болон таны өмнөөс апптай харилцан үйлдэл хийх боломжтой."</string>
@@ -1852,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Батарей хэмнэгч нь Бараан загварыг асааж, дэвсгэрийн үйл ажиллагаа, зарим визуал эффект болон “Hey Google” зэрэг онцлогуудыг хязгаарлаж эсвэл унтраана\n\n"<annotation id="url">"Нэмэлт мэдээлэл авах"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Батарей хэмнэгч нь Бараан загварыг асааж, дэвсгэрийн үйл ажиллагаа, зарим визуал эффект болон “Hey Google” зэрэг онцлогуудыг хязгаарлаж эсвэл унтраана."</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Хаах"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Хариулах"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видео"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Татгалзах"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Таслах"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Ирсэн дуудлага"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Энэ мэдэгдлийг Чимээгүй болгож зэргийг нь бууруулсан байна. Санал хүсэлт өгөхийн тулд товшино уу."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Энэ мэдэгдлийг дээгүүр зэрэглэсэн байна. Санал хүсэлт өгөхийн тулд товшино уу."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Энэ мэдэгдлийг доогуур зэрэглэсэн байна. Санал хүсэлт өгөхийн тулд товшино уу."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Сайжруулсан мэдэгдлийг турших"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Санал болгосон үйлдэл, хариу болон илүү ихийг үргэлжлүүлэн авахын тулд сайжруулсан мэдэгдлийг асаана уу. Android-н Орчинтой тохирсон мэдэгдлийг дэмжихээ больсон байна."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Асаах"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Одоо биш"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Нэмэлт мэдээлэл авах"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Сайжруулсан мэдэгдэл нь харилцагчийн нэр, мессеж зэрэг хувийн мэдээллийг оруулаад бүх мэдэгдлийн контентыг унших боломжтой. Энэ онцлог мөн мэдэгдлийг хаах эсвэл утасны дуудлагад хариулах гэх мэт мэдэгдэл дэх товчлуур дээр үйлдэл хийх боломжтой.\n\nЭнэ онцлог мөн Чухал горимыг асаах, унтраах болон холбогдох тохиргоог өөрчлөх боломжтой."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Хэвшлийн горимын мэдээллийн мэдэгдэл"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Батарей ихэвчлэн цэнэглэдэг хугацаанаас өмнө дуусаж болзошгүй"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Батарейн ажиллах хугацааг уртасгахын тулд Батарей хэмнэгчийг идэвхжүүллээ"</string>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 01b767e..9beb59f 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -277,7 +277,7 @@
     <string name="notification_hidden_text" msgid="2835519769868187223">"नवीन सूचना"</string>
     <string name="notification_channel_virtual_keyboard" msgid="6465975799223304567">"व्हर्च्युअल कीबोर्ड"</string>
     <string name="notification_channel_physical_keyboard" msgid="5417306456125988096">"वास्तविक कीबोर्ड"</string>
-    <string name="notification_channel_security" msgid="8516754650348238057">"सुरक्षितता"</string>
+    <string name="notification_channel_security" msgid="8516754650348238057">"सुरक्षा"</string>
     <string name="notification_channel_car_mode" msgid="2123919247040988436">"कार मोड"</string>
     <string name="notification_channel_account" msgid="6436294521740148173">"खाते स्थिती"</string>
     <string name="notification_channel_developer" msgid="1691059964407549150">"डेव्हलपर मेसेज"</string>
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"ॲपला जवळपासची ब्लूटूथ डिव्‍हाइस शोधण्यासाठी आणि ती पेअर करण्यासाठी अनुमती देते"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"पेअर केलेल्या ब्लूटूथ डिव्‍हाइसशी कनेक्ट करा"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"पेअर केलेल्या ब्लूटूथ डिव्‍हाइसशी कनेक्ट करण्यासाठी ॲपला अनुमती द्या"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <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_preferredPaymentInfo" msgid="5274423844767445054">"प्राधान्यकृत NFC पेमेंट सेवा माहिती"</string>
@@ -1854,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"बॅटरी सेव्हर गडद थीम सुरू करते आणि बॅकग्राउंड ॲक्टिव्हिटी, काही व्हिज्युअल इफेक्ट व “Ok Google” सारखी वैशिष्‍ट्ये मर्यादित किंवा बंद करते\n\n"<annotation id="url">"अधिक जाणून घ्या"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"बॅटरी सेव्हर गडद थीम सुरू करते आणि बॅकग्राउंड ॲक्टिव्हिटी, काही व्हिज्युअल इफेक्ट व “Ok Google” सारखी वैशिष्‍ट्ये मर्यादित किंवा बंद करते."</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>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"बंद करा"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"उत्तर द्या"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"व्हिडिओ"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"नकार द्या"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"कॉल बंद करा"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"इनकमिंग कॉल"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ही सूचना सायलंट करण्यात आली आहे. फीडबॅक देण्यासाठी टॅप करा."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"हा सूचनेला उच्च रँक करण्यात आले. फीडबॅक देण्यासाठी टॅप करा."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"या सूचनेला कमी रँक करण्यात आले. फीडबॅक देण्यासाठी टॅप करा."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"वर्धित सूचना वापरून पहा"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"सुचवलेल्या कृती, उत्तरे आणि आणखी बरेच काही मिळवत राहण्यासाठी, वर्धित सूचना सुरू करा. Android अ‍ॅडॅप्टिव्ह सूचना यांना आता सपोर्ट नाही."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"सुरू करा"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"आता नको"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"अधिक जाणून घ्या"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"संपर्कांची नावे आणि मेसेज यांसारख्या वैयक्तिक माहितीच्या समावेशासह वर्धित सूचना या सर्व सूचनांचा आशय वाचू शकतात. हे वैशिष्‍ट्य सूचना डिसमिस करू शकते किंवा फोन कॉलना उत्तर देण्यासारख्या सूचनांमधील बटणवर कृतीदेखील करू शकते.\n\nहे वैशिष्‍ट्य प्राधान्य मोड सुरू किंवा बंद करू शकते आणि संबंधित सेटिंग्जदेखील बदलू शकते."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"दिनक्रम मोडची माहिती सूचना"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"चार्जिंगची सामान्य पातळी गाठेपर्यंत कदाचित बॅटरी संपू शकते"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"बॅटरी लाइफ वाढवण्यासाठी बॅटरी सेव्हर सुरू केला आहे"</string>
@@ -2275,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"आता तुम्ही तुमच्या स्क्रीनचा एखादा भाग मॅग्निफाय करू शकता"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"सेटिंग्ज मध्ये सुरू करा"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"डिसमिस करा"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"डिव्हाइसचा मायक्रोफोन अनब्लॉक करा"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"डिव्हाइसचा कॅमेरा अनब्लॉक करा"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"सर्व &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; आणि सर्व ॲप्स व सेवांसाठी"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"अनब्लॉक करा"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"सेन्सरशी संबंधित गोपनीयतेबाबत सूचना"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"ॲप्लिकेशन आयकन"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"अ‍ॅप्लिकेशन ब्रॅंडिंग इमेज"</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index d5fe785..932b01b 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Membenarkan apl menemukan dan berganding dengan peranti Bluetooth yang berdekatan"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"sambung kepada peranti Bluetooth yang digandingkan"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Membenarkan apl untuk menyambung kepada peranti Bluetooth yang digandingkan"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"buat siaran kpd peranti Bluetooth yang berdekatan"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Membenarkan apl menyiarkan kandungan kepada peranti Bluetooth yang berdekatan"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"tentukan kedudukan relatif antara peranti Ultrajalur Lebar berdekatan"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Benarkan apl menentukan kedudukan relatif antara peranti Ultrajalur Lebar berdekatan"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Maklumat Perkhidmatan Pembayaran NFC Pilihan"</string>
@@ -1854,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Dikemas kini oleh pentadbir anda"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Dipadamkan oleh pentadbir anda"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Penjimat Bateri menghidupkan Tema gelap dan mengehadkan atau mematikan aktiviti latar, sesetengah kesan visual dan ciri seperti \"Ok Google\"\n\n"<annotation id="url">"Ketahui lebih lanjut"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Penjimat Bateri menghidupkan Tema gelap dan mengehadkan atau mematikan aktiviti latar, sesetengah kesan visual dan ciri seperti \"Ok Google\"."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Untuk membantu mengurangkan penggunaan data, Penjimat Data menghalang sesetengah apl daripada menghantar atau menerima data di latar. Apl yang sedang digunakan boleh mengakses data tetapi mungkin tidak secara kerap. Perkara ini mungkin bermaksud bahawa imej tidak dipaparkan sehingga anda mengetik pada imej itu, contohnya."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Hidupkan Penjimat Data?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Hidupkan"</string>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Tutup"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Jawapan"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Tolak"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Tamatkan Panggilan"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Panggilan masuk"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Pemberitahuan ini telah diturun taraf kepada Senyap. Ketik untuk memberikan maklum balas."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Pemberitahuan ini berada di kedudukan lebih tinggi. Ketik untuk memberikan maklum balas."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Pemberitahuan ini berada di kedudukan lebih rendah. Ketik untuk memberikan maklum balas."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Cuba pemberitahuan dipertingkatkan"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Untuk terus mendapatkan tindakan yang dicadangkan, balasan dan banyak lagi, hidupkan pemberitahuan yang dipertingkatkan. Pemberitahuan Boleh Suai Android tidak disokong lagi."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Hidupkan"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Bukan sekarang"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Ketahui lebih lanjut"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Pemberitahuan yang dipertingkatkan dapat membaca semua kandungan pemberitahuan, termasuk maklumat peribadi seperti nama kenalan dan mesej. Ciri ini juga dapat mengetepikan pemberitahuan atau mengambil tindakan pada butang dalam pemberitahuan, seperti menjawab panggilan telefon.\n\nCiri ini juga dapat menghidupkan atau mematikan mod Keutamaan dan menukar tetapan yang berkaitan."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Pemberitahuan maklumat Mod Rutin"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Bateri mungkin habis sebelum pengecasan biasa"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Penjimat Bateri diaktifkan untuk memanjangkan hayat bateri"</string>
@@ -2275,17 +2266,13 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Kini anda boleh membesarkan sebahagian skrin anda"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Hidupkan dalam Tetapan"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Tolak"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Nyahsekat mikrofon peranti"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Nyahsekat kamera peranti"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Untuk &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; dan semua apl serta perkhidmatan"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Nyahsekat"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Privasi Penderia"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ikon aplikasi"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Imej jenama aplikasi"</string>
     <string name="view_and_control_notification_title" msgid="4300765399209912240">"Semak tetapan akses"</string>
-    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> boleh melihat dan mengawal skrin anda. Ketik untuk menyemak."</string>
+    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> boleh melihat dan mengawal skrin anda. Ketik untuk membuat semakan."</string>
 </resources>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 5f6a26a5..9c6593e 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -142,7 +142,7 @@
     <string name="wfcSpnFormat_wifi" msgid="1376356951297043426">"Wi-Fi"</string>
     <string name="wfcSpnFormat_wifi_calling_wo_hyphen" msgid="7178561009225028264">"WiFi ခေါ်ဆိုမှု"</string>
     <string name="wfcSpnFormat_vowifi" msgid="8371335230890725606">"VoWifi"</string>
-    <string name="wifi_calling_off_summary" msgid="5626710010766902560">"ပိတ်ထားသည်"</string>
+    <string name="wifi_calling_off_summary" msgid="5626710010766902560">"ပိတ်"</string>
     <string name="wfc_mode_wifi_preferred_summary" msgid="1035175836270943089">"Wi-Fi သုံး၍ ခေါ်ဆိုသည်"</string>
     <string name="wfc_mode_cellular_preferred_summary" msgid="4958965609212575619">"မိုဘိုင်းကွန်ရက်သုံး၍ ခေါ်ဆိုသည်"</string>
     <string name="wfc_mode_wifi_only_summary" msgid="104951993894678665">"ကြိုးမဲ့အင်တာနက် သာလျှင်"</string>
@@ -317,7 +317,7 @@
     <string name="permgroupdesc_microphone" msgid="1047786732792487722">"အသံဖမ်းခြင်း"</string>
     <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"ကိုယ်လက်လှုပ်ရှားမှု"</string>
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"သင့်ကိုယ်လက်လှုပ်ရှားမှုကို ဝင်ကြည့်ရန်"</string>
-    <string name="permgrouplab_camera" msgid="9090413408963547706">"ကင်မရာ"</string>
+    <string name="permgrouplab_camera" msgid="9090413408963547706">"Camera"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"ဓာတ်ပုံ ရိုက်ပြီးနောက် ဗွီဒီယို မှတ်တမ်းတင်ရန်"</string>
     <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"အနီးတစ်ဝိုက်ရှိ စက်များ"</string>
     <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"အနီးတစ်ဝိုက်ရှိ စက်များကို ရှာဖွေပြီးချိတ်ဆက်မည်"</string>
@@ -1108,8 +1108,8 @@
       <item quantity="one">ပြီးခဲ့သည့် <xliff:g id="COUNT_0">%d</xliff:g> မိနစ်က</item>
     </plurals>
     <plurals name="duration_hours_relative" formatted="false" msgid="420434788589102019">
-      <item quantity="other">ပြီးခဲ့သည့် <xliff:g id="COUNT_1">%d</xliff:g> နာရီက</item>
-      <item quantity="one">ပြီးခဲ့သည့် <xliff:g id="COUNT_0">%d</xliff:g> နာရီက</item>
+      <item quantity="other">ပြီးခဲ့သည့် <xliff:g id="COUNT_1">%d</xliff:g> နာရီ</item>
+      <item quantity="one">ပြီးခဲ့သည့် <xliff:g id="COUNT_0">%d</xliff:g> နာရီ</item>
     </plurals>
     <plurals name="duration_days_relative" formatted="false" msgid="6056425878237482431">
       <item quantity="other">ပြီးခဲ့သည့် <xliff:g id="COUNT_1">%d</xliff:g> ရက်က</item>
@@ -1175,7 +1175,7 @@
     <string name="no" msgid="5122037903299899715">"မလုပ်တော့"</string>
     <string name="dialog_alert_title" msgid="651856561974090712">"သတိပြုရန်"</string>
     <string name="loading" msgid="3138021523725055037">"တင်နေ…"</string>
-    <string name="capital_on" msgid="2770685323900821829">"ဖွင့်ရန်"</string>
+    <string name="capital_on" msgid="2770685323900821829">"ဖွင့်"</string>
     <string name="capital_off" msgid="7443704171014626777">"ပိတ်"</string>
     <string name="checked" msgid="9179896827054513119">"အမှန်ခြစ်ပြီး"</string>
     <string name="not_checked" msgid="7972320087569023342">"ခြစ် မထား"</string>
@@ -1688,16 +1688,16 @@
     <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"အသံခလုတ်နှစ်ခုလုံးကို စက္ကန့်အနည်းငယ် ဖိထားခြင်းက အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုဖြစ်သော <xliff:g id="SERVICE">%1$s</xliff:g> ကို ဖွင့်ပေးသည်။ ဤလုပ်ဆောင်ချက်က သင့်စက်အလုပ်လုပ်ပုံကို ပြောင်းလဲနိုင်သည်။\n\nဤဖြတ်လမ်းလင့်ခ်ကို \'ဆက်တင်များ &gt; အများသုံးစွဲနိုင်မှု\' တွင် နောက်ဝန်ဆောင်မှုတစ်ခုသို့ ပြောင်းနိုင်သည်။"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ဖွင့်ရန်"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"မဖွင့်ပါနှင့်"</string>
-    <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"ဖွင့်ထားသည်"</string>
-    <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"ပိတ်ထားသည်"</string>
+    <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"ဖွင့်"</string>
+    <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"ပိတ်"</string>
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> ကို သင့်စက်အား အပြည့်အဝထိန်းချုပ်ခွင့် ပေးလိုပါသလား။"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> ဖွင့်လိုက်ပါက သင်၏စက်သည် ဒေတာအသွင်ဝှက်ခြင်း ပိုကောင်းမွန်စေရန် သင့်ဖန်သားပြင်လော့ခ်ကို သုံးမည်မဟုတ်ပါ။"</string>
-    <string name="accessibility_service_warning_description" msgid="291674995220940133">"အများသုံးစွဲနိုင်မှု လိုအပ်ချက်များအတွက် အထောက်အကူပြုသည့် အက်ပ်များကို အပြည့်အဝထိန်းချုပ်ခြင်းသည် သင့်လျော်သော်လည်း အက်ပ်အများစုအတွက် မသင့်လျော်ပါ။"</string>
-    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"မျက်နှာပြင်ကို ကြည့်ရှုပြီး ထိန်းချုပ်ပါ"</string>
+    <string name="accessibility_service_warning_description" msgid="291674995220940133">"အများသုံးစွဲနိုင်မှု လိုအပ်ချက်များအတွက် အထောက်အကူပြုသည့် အက်ပ်များအား အပြည့်အဝ ထိန်းချုပ်ခွင့်ပေးခြင်းသည် သင့်လျော်သော်လည်း အက်ပ်အများစုအတွက် မသင့်လျော်ပါ။"</string>
+    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ဖန်သားပြင်ကို ကြည့်ရှုထိန်းချုပ်ခြင်း"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"၎င်းသည် မျက်နှာပြင်ပေါ်ရှိ အကြောင်းအရာများအားလုံးကို ဖတ်နိုင်ပြီး အခြားအက်ပ်များအပေါ်တွင် ထိုအကြောင်းအရာကို ဖော်ပြနိုင်သည်။"</string>
-    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"လုပ်ဆောင်ချက်များကို ကြည့်ရှုလုပ်ဆောင်ပါ"</string>
+    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"လုပ်ဆောင်ချက်များကို ကြည့်ရှုဆောင်ရွက်ခြင်း"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"၎င်းသည် အက်ပ်တစ်ခု သို့မဟုတ် အာရုံခံကိရိယာကို အသုံးပြု၍ သင့်ပြန်လှန်တုံ့ပြန်မှုများကို မှတ်သားနိုင်ပြီး သင့်ကိုယ်စား အက်ပ်များနှင့် ပြန်လှန်တုံ့ပြန်နိုင်သည်။"</string>
-    <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ခွင့်ပြု"</string>
+    <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ခွင့်ပြုရန်"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ပယ်ရန်"</string>
     <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ဝန်ဆောင်မှုကို စတင်အသုံးပြုရန် တို့ပါ−"</string>
     <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"အများသုံးစွဲနိုင်မှု ခလုတ်ဖြင့် အသုံးပြုရန် ဝန်ဆောင်မှုများကို ရွေးပါ"</string>
@@ -1852,10 +1852,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">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"‘ဘက်ထရီ အားထိန်း’ က ‘မှောင်သည့် အပြင်အဆင်’ ကို ဖွင့်ပြီး နောက်ခံလုပ်ဆောင်ချက်၊ ပြသမှုဆိုင်ရာ အထူးပြုလုပ်ချက်အချို့နှင့် “Ok Google” ကဲ့သို့ ဝန်ဆောင်မှုများကို ကန့်သတ်သည် (သို့) ပိတ်သည်\n\n"<annotation id="url">"ပိုမိုလေ့လာရန်"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"‘ဘက်ထရီ အားထိန်း’ က ‘မှောင်သည့် အပြင်အဆင်’ ကို ဖွင့်ပြီး နောက်ခံလုပ်ဆောင်ချက်၊ ပြသမှုဆိုင်ရာ အထူးပြုလုပ်ချက်အချို့နှင့် “Ok Google” ကဲ့သို့ ဝန်ဆောင်မှုများကို ကန့်သတ်သည် (သို့) ပိတ်သည်။"</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"ပိတ်ရန်"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>− <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"ဖုန်းကိုင်ရန်"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ဗီဒီယို"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"ငြင်းပယ်ရန်"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ဖုန်းချရန်"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"အဝင်ခေါ်ဆိုမှု"</string>
@@ -2066,7 +2065,7 @@
     <string name="zen_upgrade_notification_content" msgid="5228458567180124005">"ပိတ်ထားသည့်အရာများကို ကြည့်ရန် တို့ပါ။"</string>
     <string name="notification_app_name_system" msgid="3045196791746735601">"စနစ်"</string>
     <string name="notification_app_name_settings" msgid="9088548800899952531">"ဆက်တင်များ"</string>
-    <string name="notification_appops_camera_active" msgid="8177643089272352083">"ကင်မရာ"</string>
+    <string name="notification_appops_camera_active" msgid="8177643089272352083">"Camera"</string>
     <string name="notification_appops_microphone_active" msgid="581333393214739332">"မိုက်ခရိုဖုန်း"</string>
     <string name="notification_appops_overlay_active" msgid="5571732753262836481">"သင့်မျက်နှာပြင်ပေါ်ရှိ အခြားအက်ပ်များပေါ်တွင် ပြသခြင်း"</string>
     <string name="notification_feedback_indicator" msgid="663476517711323016">"အကြံပြုချက် ပေးရန်"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ဤအကြောင်းကြားချက်ကို \'အသံတိတ်ခြင်း\' သို့ ပြန်ချိန်ညှိထားသည်။ အကြံပြုချက်ပေးရန် တို့ပါ။"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"ဤအကြောင်းကြားချက်ကို အဆင့်တိုးထားသည်။ အကြံပြုချက်ပေးရန် တို့ပါ။"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"ဤအကြောင်းကြားချက်ကို အဆင့်လျှော့ထားသည်။ အကြံပြုချက်ပေးရန် တို့ပါ။"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"အဆင့်မြင့် အကြောင်းကြားချက်များ စမ်းသုံးကြည့်ခြင်း"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"အကြံပြုထားသော လုပ်ဆောင်ချက်များ၊ ပြန်စာများ စသည်တို့ကို ဆက်လက်ရယူရန် အဆင့်မြင့် အကြောင်းကြားချက်များကို ဖွင့်ပါ။ ‘Android အလိုက်သင့် အကြောင်းကြားချက်များ’ ကို ပံ့ပိုးမထားတော့ပါ။"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"ဖွင့်ရန်"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"ယခုမလုပ်ပါ"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"ပိုမိုလေ့လာရန်"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"အဆင့်မြင့် အကြောင်းကြားချက်များသည် အဆက်အသွယ်အမည်နှင့် မက်ဆေ့ဂျ်များကဲ့သို့ ကိုယ်ရေးကိုယ်တာအချက်လက်များ အပါအဝင် အကြောင်းကြားချက် အကြောင်းအရာအားလုံးကို ဖတ်နိုင်သည်။ ဤဝန်ဆောင်မှုသည် အကြောင်းကြားချက်များကို ပယ်ခြင်း (သို့) ဖုန်းခေါ်ဆိုမှုများ ဖြေခြင်းကဲ့သို့ အကြောင်းကြားချက်များရှိ ခလုတ်များ နှိပ်ခြင်းကိုလည်း ပြုလုပ်နိုင်သည်။\n\nဤဝန်ဆောင်မှုသည် ‘ဦးစားပေးမုဒ်’ ကို ဖွင့်ခြင်း (သို့) ပိတ်ခြင်း ပြုလုပ်နိုင်ပြီး ဆက်စပ်နေသော ဆက်တင်များကိုလည်း ပြောင်းနိုင်သည်။"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ပုံမှန်မုဒ်အတွက် အချက်အလက်ပြသည့် အကြောင်းကြားချက်"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"ပုံမှန်အားသွင်းမှုမပြုလုပ်မီ ဘက်ထရီကုန်သွားနိုင်သည်"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"ဘက်ထရီသက်တမ်းကို တိုးမြှင့်ရန် \'ဘက်ထရီအားထိန်း\' စတင်ပြီးပါပြီ"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index ec8d9d5..4720e29 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -1709,7 +1709,7 @@
     <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Bruk snarveien"</string>
     <string name="color_inversion_feature_name" msgid="326050048927789012">"Fargeinvertering"</string>
     <string name="color_correction_feature_name" msgid="3655077237805422597">"Fargekorrigering"</string>
-    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dempet belysning"</string>
+    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dimmet"</string>
     <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått på."</string>
     <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått av."</string>
     <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Trykk og hold inne begge volumtastene i tre sekunder for å bruke <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string>
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Oppdatert av administratoren din"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Slettet av administratoren din"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Batterisparing slår på mørkt tema og begrenser eller slår av bakgrunnsaktivitet, enkelte visuelle effekter og funksjoner, for eksempel «Hey Google»\n\n"<annotation id="url">"Finn ut mer"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Batterisparing slår på mørkt tema og begrenser eller slår av bakgrunnsaktivitet, enkelte visuelle effekter og funksjoner, for eksempel «Hey Google»."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Datasparing hindrer noen apper fra å sende og motta data i bakgrunnen, for å redusere dataforbruket. Aktive apper kan bruke data, men kanskje ikke så mye som ellers – for eksempel vises ikke bilder før du trykker på dem."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Vil du slå på Datasparing?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Slå på"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Lukk"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g><xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Svar"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Avvis"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Legg på"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Innkommende anrop"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Dette varselet ble nedgradert til lydløst. Trykk for å gi tilbakemelding."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Dette varselet ble rangert høyere. Trykk for å gi tilbakemelding."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Dette varselet ble rangert lavere. Trykk for å gi tilbakemelding."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Prøv forbedrede varsler"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"For å fortsette å få foreslåtte handlinger, svar med mer, slå på forbedrede varsler. Tilpassede Android-varsler støttes ikke lenger."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Slå på"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Ikke nå"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Finn ut mer"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Forbedrede varsler kan lese alt varselinnhold, inkludert personopplysninger som kontaktnavn og meldinger. Denne funksjonen kan også avvise varsler eller bruke knapper i varsler, for eksempel for å svare på telefonanrop.\n\nDenne funksjonen kan også slå prioriteringsmodus på eller av og endre relaterte innstillinger."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Varsel med informasjon om rutinemodus"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Batteriet kan gå tomt før den vanlige ladingen"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Batterisparing er aktivert for å forlenge batterilevetiden"</string>
@@ -2269,7 +2262,7 @@
     <string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string>
     <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
-    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Nye forstørringsinnstillinger"</string>
+    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Nye innstillinger for forstørring"</string>
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Nå kan du forstørre en del av skjermen"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Slå på i innstillingene"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Avvis"</string>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index 894edcf..ece2a53 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -71,7 +71,7 @@
     <string name="RuacMmi" msgid="1876047385848991110">"नचाहिएका रिसउठ्दा कलहरूको अस्वीकार"</string>
     <string name="CndMmi" msgid="185136449405618437">"कलिङ नम्बर प्रदान गर्ने"</string>
     <string name="DndMmi" msgid="8797375819689129800">"बाधा नगर्नुहोस्"</string>
-    <string name="CLIRDefaultOnNextCallOn" msgid="4511621022859867988">"सीमति गर्न पूर्वनिर्धारित कलर ID, अर्को कल: सीमति गरिएको"</string>
+    <string name="CLIRDefaultOnNextCallOn" msgid="4511621022859867988">"सीमति गर्न डिफल्ट कलर ID, अर्को कल: सीमति गरिएको"</string>
     <string name="CLIRDefaultOnNextCallOff" msgid="5036749051007098105">"कलर ID पूर्वनिर्धारितको लागि रोकावट छ। अर्को कल: रोकावट छैन"</string>
     <string name="CLIRDefaultOffNextCallOn" msgid="1022781126694885017">"कलर ID पूर्वनिर्धारितदेखि प्रतिबन्धित छैन। अर्को कल: प्रतिबन्धित छ"</string>
     <string name="CLIRDefaultOffNextCallOff" msgid="2491576172356463443">"कलर ID पूर्वनिर्धारितको लागि रोकावट छैन। अर्को कल: रोकावट छैन"</string>
@@ -294,14 +294,13 @@
     <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"एप चलिरहेको छ"</string>
     <string name="notification_channel_foreground_service" msgid="7102189948158885178">"एपहरूले ब्याट्री खपत गर्दै छन्"</string>
     <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"जुम इन गर्ने सुविधा"</string>
-    <!-- no translation found for notification_channel_accessibility_security_policy (1727787021725251912) -->
-    <skip />
+    <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"सर्वसुलभतासम्बन्धी सेवाहरूको प्रयोग"</string>
     <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> ले ब्याट्री प्रयोग गर्दै छ"</string>
     <string name="foreground_service_apps_in_background" msgid="7340037176412387863">"<xliff:g id="NUMBER">%1$d</xliff:g> एपहरूले ब्याट्री प्रयोग गर्दै छन्"</string>
     <string name="foreground_service_tap_for_details" msgid="9078123626015586751">"ब्याट्री र डेटाका प्रयोग सम्बन्धी विवरणहरूका लागि ट्याप गर्नुहोस्"</string>
     <string name="foreground_service_multiple_separator" msgid="5002287361849863168">"<xliff:g id="LEFT_SIDE">%1$s</xliff:g>, <xliff:g id="RIGHT_SIDE">%2$s</xliff:g>"</string>
     <string name="safeMode" msgid="8974401416068943888">"सुरक्षित मोड"</string>
-    <string name="android_system_label" msgid="5974767339591067210">"एन्ड्रोइड प्रणाली"</string>
+    <string name="android_system_label" msgid="5974767339591067210">"Android सिस्टम"</string>
     <string name="user_owner_label" msgid="8628726904184471211">"व्यक्तिगत प्रोफाइलमा बदल्नुहोस्"</string>
     <string name="managed_profile_label" msgid="7316778766973512382">"कार्य प्रोफाइलमा बदल्नुहोस्"</string>
     <string name="permgrouplab_contacts" msgid="4254143639307316920">"सम्पर्कहरू"</string>
@@ -320,10 +319,8 @@
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"आफ्नो शारीरिक क्रियाकलापको डेटामाथि पहुँच राख्नु"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"क्यामेरा"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"फोटो खिच्नुका साथै भिडियो रेकर्ड गर्नुहोस्"</string>
-    <!-- no translation found for permgrouplab_nearby_devices (5529147543651181991) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_nearby_devices (3213561597116913508) -->
-    <skip />
+    <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"नजिकै रहेका डिभाइसहरू"</string>
+    <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"नजिकै रहेका डिभाइसहरू फेला पार्ने तथा ती डिभाइसमा कनेक्ट गर्ने"</string>
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"कल लग"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"फोन कलको लग पढ्नुहोस् र लेख्नुहोस्"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"फोन"</string>
@@ -541,14 +538,10 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"यो अनुमति दिइएमा एपले नजिकै रहेका ब्लुटुथ चल्ने डिभाइसहरू भेट्टाउन र ती यन्त्रहरूसँग कनेक्ट गर्न सक्छ"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"लिंक गरिएका ब्लुटुथ चल्ने यन्त्रहरूसँग कनेक्ट गर्ने"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"यो अनुमति दिइएमा एपले लिंक गरिएका ब्लुटुथ चल्ने यन्त्रहरूसँग कनेक्ट गर्न सक्छ"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
-    <!-- no translation found for permlab_uwb_ranging (8141915781475770665) -->
-    <skip />
-    <!-- no translation found for permdesc_uwb_ranging (2519723069604307055) -->
-    <skip />
+    <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_preferredPaymentInfo" msgid="5274423844767445054">"NFC भुक्तानी सेवासम्बन्धी रुचाइएको जानकारी"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"यसले एपलाई दर्ता गरिएका सहायता तथा मार्गको गन्तव्य जस्ता रुचाइएका NFC भुक्तानी सेवासम्बन्धी जानकारी प्राप्त गर्न दिन्छ।"</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"नजिक क्षेत्र संचार नियन्त्रणहरू"</string>
@@ -584,28 +577,21 @@
     <string name="biometric_error_generic" msgid="6784371929985434439">"प्रमाणित गर्ने क्रममा त्रुटि भयो"</string>
     <string name="screen_lock_app_setting_name" msgid="6054944352976789228">"स्क्रिन लक प्रयोग गर्नुहोस्"</string>
     <string name="screen_lock_dialog_default_subtitle" msgid="120359538048533695">"जारी राख्न आफ्नो स्क्रिन लक हाल्नुहोस्"</string>
-    <!-- no translation found for fingerprint_acquired_partial (694598777291084823) -->
-    <skip />
+    <string name="fingerprint_acquired_partial" msgid="694598777291084823">"फिंगरप्रिन्ट आंशिक रूपमा पत्ता लाग्यो"</string>
     <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"फिंगरप्रिन्ट प्रशोधन गर्न सकिएन। कृपया फेरि प्रयास गर्नुहोस्।"</string>
-    <!-- no translation found for fingerprint_acquired_imager_dirty (5236744087471419479) -->
-    <skip />
-    <!-- no translation found for fingerprint_acquired_too_fast (1254724478300787385) -->
-    <skip />
+    <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"सेन्सर सफा गर्नुहोस्"</string>
+    <string name="fingerprint_acquired_too_fast" msgid="1254724478300787385">"औँला धेरै छिटो सर्‍यो"</string>
     <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"औंला निकै सुस्त सारियो। कृपया फेरि प्रयास गर्नुहोस्।"</string>
-    <!-- no translation found for fingerprint_acquired_already_enrolled (2285166003936206785) -->
-    <skip />
-    <!-- no translation found for fingerprint_acquired_too_bright (3863560181670915607) -->
-    <skip />
-    <!-- no translation found for fingerprint_acquired_try_adjusting (3667006071003809364) -->
-    <skip />
+    <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"अर्को फिंगरप्रिन्ट प्रयोग गरी हेर्नुहोस्"</string>
+    <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"ज्यादै उज्यालो छ"</string>
+    <string name="fingerprint_acquired_try_adjusting" msgid="3667006071003809364">"सेन्सरमा सही तरिकाले औँला राखेर हेर्नुहोस्"</string>
   <string-array name="fingerprint_acquired_vendor">
   </string-array>
     <string name="fingerprint_authenticated" msgid="2024862866860283100">"फिंगरप्रिन्ट प्रमाणीकरण गरियो"</string>
     <string name="face_authenticated_no_confirmation_required" msgid="8867889115112348167">"अनुहार प्रमाणीकरण गरियो"</string>
     <string name="face_authenticated_confirmation_required" msgid="6872632732508013755">"अनुहार प्रमाणीकरण गरियो, कृपया पुष्टि गर्नुहोस् थिच्नुहोस्"</string>
     <string name="fingerprint_error_hw_not_available" msgid="4571700896929561202">"औँठाछाप हार्डवेयर उपलब्ध छैन।"</string>
-    <!-- no translation found for fingerprint_error_no_space (7285481581905967580) -->
-    <skip />
+    <string name="fingerprint_error_no_space" msgid="7285481581905967580">"फिंगरप्रिन्ट सेटअप गर्न सकिएन"</string>
     <string name="fingerprint_error_timeout" msgid="2946635815726054226">"फिंगरप्रिन्ट समय सकिएको छ। फेरि प्रयास गर्नुहोस्।"</string>
     <string name="fingerprint_error_canceled" msgid="540026881380070750">"फिंगरप्रिन्ट सञ्चालन रद्द गरियो।"</string>
     <string name="fingerprint_error_user_canceled" msgid="7685676229281231614">"प्रयोगकर्ताले फिंगरप्रिन्टसम्बन्धी कारबाही रद्द गर्नुभयो।"</string>
@@ -723,7 +709,7 @@
     <string name="permdesc_accessDrmCertificates" msgid="6983139753493781941">"DRM प्रमाणपत्रहरू प्रावधान र प्रयोग गर्ने निवेदनको अनुमति दिन्छ। साधारण अनुप्रयोगहरूको लागि कहिल्यै पनि आवश्यक पर्दैन।"</string>
     <string name="permlab_handoverStatus" msgid="7620438488137057281">"Android Beam स्थानान्तरण अवस्था प्राप्त गर्नुहोस्"</string>
     <string name="permdesc_handoverStatus" msgid="3842269451732571070">"यस आवेदनले वर्तमान Android Beam स्थानान्तरण बारेमा जानकारी प्राप्त गर्न अनुमति दिन्छ"</string>
-    <string name="permlab_removeDrmCertificates" msgid="710576248717404416">"DRM प्रमाणपत्रहरू हटाउनुहोस्"</string>
+    <string name="permlab_removeDrmCertificates" msgid="710576248717404416">"DRM सर्टिफिकेट हटाउनुहोस्"</string>
     <string name="permdesc_removeDrmCertificates" msgid="4068445390318355716">"DRM प्रमाणपत्रहरू हटाउन एपलाई अनुमति दिन्छ। सामान्य अनुप्रयोगहरूको लागि कहिल्यै आवश्यकता पर्दैन।"</string>
     <string name="permlab_bindCarrierMessagingService" msgid="3363450860593096967">"वाहक मेसेजिङ सेवामा आबद्ध हुनुहोस्"</string>
     <string name="permdesc_bindCarrierMessagingService" msgid="6316457028173478345">"धारकलाई वाहक मेसेजिङ सेवाको उच्च-स्तरको इन्टरफेसमा आबद्ध हुन अनुमति दिनुहोस्। सामान्य एपहरूको लागि कहिल्यै आवश्यकता पर्दैन।"</string>
@@ -930,10 +916,10 @@
     <string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="6399092175942158529">"तपाईंले आफ्नो अनलक शैली <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत तरिकाले कोर्नुभएको छ। थप <xliff:g id="NUMBER_1">%2$d</xliff:g> प्रयासहरू असफल भएपछि तपाईंलाई आफ्नो Google खाता मार्फत साइन इन गरेर आफ्नो Android टिभी यन्त्र अनलक गर्न अनुरोध गरिनेछ।\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> सेकेन्डपछि फेरि प्रयास गर्नुहोस्।"</string>
     <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="5691623136957148335">"तपाईँले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत तरिकाले तपाईँको अनलक ढाँचालाई कोर्नु भएको छ। पछि <xliff:g id="NUMBER_1">%2$d</xliff:g> अरू धेरै असफल कोसिसहरूपछि, तपाईँलाई तपाईँको फोन Google साइन इन प्रयोग गरेर अनलक गर्नको लागि सोधिने छ। \n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> सेकेन्डमा पुनः प्रयास गर्नुहोस्।"</string>
     <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="7914445759242151426">"तपाईँले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक ट्याब्लेटलाई अनलक गर्नको लागि गलत तरिकाले कोशिस गर्नुभएको छ। <xliff:g id="NUMBER_1">%2$d</xliff:g> अरू धेरै असफल कोसिसहरूपछि, ट्याब्लेट फ्याट्रि पूर्वनिर्धारितमा रिसेट हुने छ र सबै प्रयोगकर्ता डेटा हराउने छन्।"</string>
-    <string name="lockscreen_failed_attempts_almost_at_wipe" product="tv" msgid="4275591249631864248">"तपाईंले आफ्नो Android टिभी यन्त्र <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत तरिकाले अनलक गर्ने प्रयास गर्नुभएको छ। थप <xliff:g id="NUMBER_1">%2$d</xliff:g> प्रयासहरू असफल भएपछि तपाईंको Android टिभी यन्त्रलाई रिसेट गरेर पूर्वनिर्धारित फ्याक्ट्री सेटिङ लागू गरिने छ र प्रयोगकर्ताको सम्पूर्ण डेटा गुम्ने छ।"</string>
+    <string name="lockscreen_failed_attempts_almost_at_wipe" product="tv" msgid="4275591249631864248">"तपाईंले आफ्नो Android टिभी यन्त्र <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत तरिकाले अनलक गर्ने प्रयास गर्नुभएको छ। थप <xliff:g id="NUMBER_1">%2$d</xliff:g> प्रयासहरू असफल भएपछि तपाईंको Android टिभी यन्त्रलाई रिसेट गरेर डिफल्ट फ्याक्ट्री सेटिङ लागू गरिने छ र प्रयोगकर्ताको सम्पूर्ण डेटा गुम्ने छ।"</string>
     <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="1166532464798446579">"तपाईंले गलत तरिकाले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक फोन अनलक गर्ने प्रयत्न गर्नुभयो। <xliff:g id="NUMBER_1">%2$d</xliff:g> बढी असफल प्रयत्नहरू पछि, फोन फ्याक्ट्रि पूर्वनिर्धारितमा रिसेट हुने छ र सबै प्रयोगकर्ता डेटा हराउने छन्।"</string>
-    <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="8682445539263683414">"तपाईँले ट्यब्लेटलाई अनलक गर्न गलत तरिकाले <xliff:g id="NUMBER">%d</xliff:g> पटक प्रयास गर्नु भएको छ। अब ट्याब्लेटलाई पूर्वनिर्धारित कार्यशालामा रिसेट गरिने छ।"</string>
-    <string name="lockscreen_failed_attempts_now_wiping" product="tv" msgid="2205435033340091883">"तपाईंले आफ्नो Android टिभी यन्त्र <xliff:g id="NUMBER">%d</xliff:g> पटक गलत तरिकाले अनलक गर्ने प्रयास गर्नुभएको छ। अब तपाईंको Android टिभी यन्त्रलाई रिसेट गरेर पूर्वनिर्धारित फ्याक्ट्री सेटिङ लागू गरिनेछ।"</string>
+    <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="8682445539263683414">"तपाईँले ट्यब्लेटलाई अनलक गर्न गलत तरिकाले <xliff:g id="NUMBER">%d</xliff:g> पटक प्रयास गर्नु भएको छ। अब ट्याब्लेटलाई डिफल्ट कार्यशालामा रिसेट गरिने छ।"</string>
+    <string name="lockscreen_failed_attempts_now_wiping" product="tv" msgid="2205435033340091883">"तपाईंले आफ्नो Android टिभी यन्त्र <xliff:g id="NUMBER">%d</xliff:g> पटक गलत तरिकाले अनलक गर्ने प्रयास गर्नुभएको छ। अब तपाईंको Android टिभी यन्त्रलाई रिसेट गरेर डिफल्ट फ्याक्ट्री सेटिङ लागू गरिनेछ।"</string>
     <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="2203704707679895487">"तपाईंले गलत तरिकाले फोन <xliff:g id="NUMBER">%d</xliff:g> पटक अनलक गर्ने प्रयत्न गर्नुभयो। अब फोन फ्याक्ट्रि पूर्वनिर्धारितमा रिसेट हुने छ।"</string>
     <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6807200118164539589">"<xliff:g id="NUMBER">%d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
     <string name="lockscreen_forgot_pattern_button_text" msgid="8362442730606839031">"ढाँचा बिर्सनु भयो?"</string>
@@ -1302,8 +1288,8 @@
     <string name="volume_icon_description_incall" msgid="4491255105381227919">"कला मात्रा"</string>
     <string name="volume_icon_description_media" msgid="4997633254078171233">"मिडियाको भोल्युम"</string>
     <string name="volume_icon_description_notification" msgid="579091344110747279">"सूचना भोल्युम"</string>
-    <string name="ringtone_default" msgid="9118299121288174597">"पूर्वनिर्धारित रिङटोन"</string>
-    <string name="ringtone_default_with_actual" msgid="2709686194556159773">"पूर्वनिर्धारित (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
+    <string name="ringtone_default" msgid="9118299121288174597">"डिफल्ट रिङटोन"</string>
+    <string name="ringtone_default_with_actual" msgid="2709686194556159773">"डिफल्ट (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
     <string name="ringtone_silent" msgid="397111123930141876">"कुनै पनि होइन"</string>
     <string name="ringtone_picker_title" msgid="667342618626068253">"रिङटोनहरू"</string>
     <string name="ringtone_picker_title_alarm" msgid="7438934548339024767">"अलार्मका आवाजहरू"</string>
@@ -1400,7 +1386,7 @@
     <string name="share_remote_bugreport_action" msgid="7630880678785123682">"सेयर गर्नुहोस्"</string>
     <string name="decline_remote_bugreport_action" msgid="4040894777519784346">"अस्वीकार गर्नुहोस्"</string>
     <string name="select_input_method" msgid="3971267998568587025">"निवेश विधि छान्नुहोस्"</string>
-    <string name="show_ime" msgid="6406112007347443383">"वास्तविक किबोर्ड सक्रिय हुँदा यसलाई स्क्रिनमा राख्नुहोस्"</string>
+    <string name="show_ime" msgid="6406112007347443383">"वास्तविक किबोर्ड सक्रिय हुँदा यसलाई स्क्रिनमा राखियोस्"</string>
     <string name="hardware" msgid="1800597768237606953">"भर्चुअल किबोर्ड देखाउनुहोस्"</string>
     <string name="select_keyboard_layout_notification_title" msgid="4427643867639774118">"फिजिकल किबोर्डलाई कन्फिगर गर्नुहोस्"</string>
     <string name="select_keyboard_layout_notification_message" msgid="8835158247369158154">"भाषा र लेआउट चयन गर्न ट्याप गर्नुहोस्"</string>
@@ -1681,11 +1667,11 @@
     <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="23741434207544038">"तपाईँले गलत तरिकाले तपाईँको PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक टाइप गर्नु भएको छ। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
     <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="3328686432962224215">"तपाईँले तपाईँक पासवर्ड <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत टाइप गर्नुभएको छ। \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
     <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="7357404233979139075">"तपाईँले तपाईँको अनलक प्याटर्न गलत तरिकाले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक खिच्नु भएको छ। \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> सेकेन्डमा फेरि कोसिस गर्नुहोस्।"</string>
-    <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="3479940221343361587">"तपाईँले ट्याब्लेटलाई अनलक गर्न गलत तरिकाले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक कोसिस गर्नु भएको छ। <xliff:g id="NUMBER_1">%2$d</xliff:g> पछि थप असफल प्रयासहरू, ट्याब्लेट पूर्वनिर्धारित कार्यशालामा रिसेट गरिने छ र सबै प्रयोग डेटा हराउने छ।"</string>
-    <string name="kg_failed_attempts_almost_at_wipe" product="tv" msgid="9064457748587850217">"तपाईंले आफ्नो Android टिभी यन्त्र <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत तरिकाले अनलक गर्ने प्रयास गर्नुभएको छ। थप <xliff:g id="NUMBER_1">%2$d</xliff:g> प्रयासहरू असफल भएपछि तपाईंको Android टिभी यन्त्रलाई रिसेट गरेर पूर्वनिर्धारित फ्याक्ट्री सेटिङ लागू गरिने छ र प्रयोगकर्ताको सम्पूर्ण डेटा गुम्ने छ।"</string>
-    <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="5955398963754432548">"तपाईँले गलतसँग फोनलाई अनलक गर्न <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक कोसिस गर्नु भयो। <xliff:g id="NUMBER_1">%2$d</xliff:g> पछि थप असफल कोसिसहरू, फोनलाई पूर्वनिर्धारित कार्यशालामा रिसेट गरिने छ र सबै प्रयोग डेटा हराउने छ।"</string>
-    <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2299099385175083308">"तपाईँले ट्यब्लेटलाई अनलक गर्न गलत तरिकाले <xliff:g id="NUMBER">%d</xliff:g> पटक प्रयास गर्नु भएको छ। अब ट्याब्लेटलाई पूर्वनिर्धारित कार्यशालामा रिसेट गरिने छ।"</string>
-    <string name="kg_failed_attempts_now_wiping" product="tv" msgid="5045460916106267585">"तपाईंले आफ्नो Android टिभी यन्त्र <xliff:g id="NUMBER">%d</xliff:g> पटक गलत तरिकाले अनलक गर्ने प्रयास गर्नुभएको छ। अब तपाईंको Android टिभी यन्त्रलाई रिसेट गरेर पूर्वनिर्धारित फ्याक्ट्री सेटिङ लागू गरिनेछ।"</string>
+    <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="3479940221343361587">"तपाईँले ट्याब्लेटलाई अनलक गर्न गलत तरिकाले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक कोसिस गर्नु भएको छ। <xliff:g id="NUMBER_1">%2$d</xliff:g> पछि थप असफल प्रयासहरू, ट्याब्लेट डिफल्ट कार्यशालामा रिसेट गरिने छ र सबै प्रयोग डेटा हराउने छ।"</string>
+    <string name="kg_failed_attempts_almost_at_wipe" product="tv" msgid="9064457748587850217">"तपाईंले आफ्नो Android टिभी यन्त्र <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत तरिकाले अनलक गर्ने प्रयास गर्नुभएको छ। थप <xliff:g id="NUMBER_1">%2$d</xliff:g> प्रयासहरू असफल भएपछि तपाईंको Android टिभी यन्त्रलाई रिसेट गरेर डिफल्ट फ्याक्ट्री सेटिङ लागू गरिने छ र प्रयोगकर्ताको सम्पूर्ण डेटा गुम्ने छ।"</string>
+    <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="5955398963754432548">"तपाईँले गलतसँग फोनलाई अनलक गर्न <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक कोसिस गर्नु भयो। <xliff:g id="NUMBER_1">%2$d</xliff:g> पछि थप असफल कोसिसहरू, फोनलाई डिफल्ट कार्यशालामा रिसेट गरिने छ र सबै प्रयोग डेटा हराउने छ।"</string>
+    <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2299099385175083308">"तपाईँले ट्यब्लेटलाई अनलक गर्न गलत तरिकाले <xliff:g id="NUMBER">%d</xliff:g> पटक प्रयास गर्नु भएको छ। अब ट्याब्लेटलाई डिफल्ट कार्यशालामा रिसेट गरिने छ।"</string>
+    <string name="kg_failed_attempts_now_wiping" product="tv" msgid="5045460916106267585">"तपाईंले आफ्नो Android टिभी यन्त्र <xliff:g id="NUMBER">%d</xliff:g> पटक गलत तरिकाले अनलक गर्ने प्रयास गर्नुभएको छ। अब तपाईंको Android टिभी यन्त्रलाई रिसेट गरेर डिफल्ट फ्याक्ट्री सेटिङ लागू गरिनेछ।"</string>
     <string name="kg_failed_attempts_now_wiping" product="default" msgid="5043730590446071189">"तपाईंले गलत तरिकाले फोन <xliff:g id="NUMBER">%d</xliff:g> पटक अनलक गर्ने प्रयत्न गर्नुभयो। अब फोन फ्याक्ट्रि पूर्वनिर्धारितमा रिसेट हुने छ।"</string>
     <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="7086799295109717623">"तपाईंले गलत तरिकाले आफ्नो अनलक प्याटर्न <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="tv" msgid="4670840383567106114">"तपाईंले आफ्नो अनलक शैली <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत तरिकाले कोर्नुभएको छ। थप <xliff:g id="NUMBER_1">%2$d</xliff:g> प्रयासहरू असफल भएपछि तपाईंलाई आफ्नो इमेल खाता प्रयोग गरेर आफ्नो Android टिभी यन्त्र अनलक गर्न अनुरोध गरिनेछ।\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> सेकेन्डपछि फेरि प्रयास गर्नुहोस्।"</string>
@@ -1695,18 +1681,18 @@
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"सिफारिस तहभन्दा आवाज ठुलो गर्नुहुन्छ?\n\nलामो समय सम्म उच्च आवाजमा सुन्दा तपाईँको सुन्ने शक्तिलाई हानी गर्न सक्छ।"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"पहुँच सम्बन्धी सर्टकट प्रयोग गर्ने हो?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"यो सर्टकट सक्रिय हुँदा, ३ सेकेन्डसम्म दुवै भोल्युम बटन थिच्नुले पहुँचसम्बन्धी कुनै सुविधा सुरु गर्ने छ।"</string>
-    <string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"सर्वसुलभता कायम गर्ने सुविधाहरू प्रयोग गर्न सर्टकट अन गर्ने हो?"</string>
-    <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"केही सेकेन्डसम्म दुवै भोल्युम बटन थिचिराख्नुभयो भने पहुँचसम्बन्धी सुविधाहरू सक्रिय हुन्छ। यसले तपाईंको यन्त्रले काम गर्ने तरिका परिवर्तन गर्न सक्छ।\n\nहालका सुविधाहरू:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nतपाईं सेटिङ &gt; पहुँचमा गएर चयन गरिएका सुविधाहरू परिवर्तन गर्न सक्नुहुन्छ।"</string>
+    <string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"एक्सेसिबिलिटीसम्बन्धी सुविधा  प्रयोग गर्न सर्टकट अन गर्ने हो?"</string>
+    <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"केही सेकेन्डसम्म दुवै भोल्युम की थिचिराख्नुभयो भने पहुँचसम्बन्धी सुविधाहरू सक्रिय हुन्छ। यसले तपाईंको यन्त्रले काम गर्ने तरिका परिवर्तन गर्न सक्छ।\n\nहालका सुविधाहरू:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nतपाईं सेटिङ &gt; पहुँचमा गएर चयन गरिएका सुविधाहरू परिवर्तन गर्न सक्नुहुन्छ।"</string>
     <string name="accessibility_shortcut_multiple_service_list" msgid="6935581470716541531">"	• <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string>
     <string name="accessibility_shortcut_single_service_warning_title" msgid="1909518473488345266">"<xliff:g id="SERVICE">%1$s</xliff:g> प्रयोग गर्न सर्टकट अन गर्ने हो?"</string>
-    <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"केही सेकेन्डसम्म दुवै भोल्युम बटन थिचिराख्नुले <xliff:g id="SERVICE">%1$s</xliff:g> नामक पहुँचसम्बन्धी सुविधा  सक्रिय गर्छ। यसले तपाईंको यन्त्रले काम गर्ने तरिका परिवर्तन गर्न सक्छ।\n\nतपाईं सेटिङ &gt; पहुँचमा गई यो सर्टकटमार्फत अर्को सुविधा खुल्ने बनाउन सक्नुहुन्छ।"</string>
+    <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"केही सेकेन्डसम्म दुवै भोल्युम की थिचिराख्नुले <xliff:g id="SERVICE">%1$s</xliff:g> नामक पहुँचसम्बन्धी सुविधा  सक्रिय गर्छ। यसले तपाईंको यन्त्रले काम गर्ने तरिका परिवर्तन गर्न सक्छ।\n\nतपाईं सेटिङ &gt; पहुँचमा गई यो सर्टकटमार्फत अर्को सुविधा खुल्ने बनाउन सक्नुहुन्छ।"</string>
     <string name="accessibility_shortcut_on" msgid="5463618449556111344">"सक्रिय गरियोस्"</string>
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"सक्रिय नगरियोस्"</string>
     <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"सक्रिय"</string>
     <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"निष्क्रिय"</string>
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> लाई तपाईंको यन्त्र पूर्ण रूपमा नियन्त्रण गर्न दिने हो?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"तपाईंले <xliff:g id="SERVICE">%1$s</xliff:g> सक्रिय गर्नुभयो भने तपाईंको यन्त्रले डेटा इन्क्रिप्ट गर्ने सुविधाको स्तरोन्नति गर्न तपाईंको स्क्रिन लक सुविधाको प्रयोग गर्ने छैन।"</string>
-    <string name="accessibility_service_warning_description" msgid="291674995220940133">"तपाईंलाई पहुँच राख्न आवश्यक पर्ने कुरामा सहयोग गर्ने एपमाथि पूर्ण नियन्त्रण गर्नु उपयुक्त हुन्छ तर अधिकांश अनुप्रयोगहरूका हकमा यस्तो नियन्त्रण उपयुक्त हुँदैन।"</string>
+    <string name="accessibility_service_warning_description" msgid="291674995220940133">"एक्सेसिबिलिटीसम्बन्धी आवश्यकतामा सहयोग गर्ने एपको पूर्ण नियन्त्रण गर्नु उपयुक्त हुन्छ तर अधिकांश एपका हकमा यस्तो नियन्त्रण उपयुक्त हुँदैन।"</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"स्क्रिन हेर्नुहोस् र नियन्त्रण गर्नुहोस्"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"यसले स्क्रिनमा देखिने सबै सामग्री पढ्न सक्छ र अन्य एपहरूमा उक्त सामग्री देखाउन सक्छ।"</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"कारबाहीहरू हेर्नुहोस् र तिनमा कार्य गर्नुहोस्"</string>
@@ -1727,7 +1713,7 @@
     <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>
     <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g> प्रयोग गर्न दुवै भोल्युम कुञ्जीहरूलाई तीन सेकेन्डसम्म थिचिराख्नुहोस्"</string>
-    <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"तपाईंले पहुँचको बटन ट्याप गर्दा प्रयोग गर्न चाहनुभएको सुविधा छनौट गर्नुहोस्:"</string>
+    <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"तपाईंले एक्सेसिबिलिटी बटन ट्याप गर्दा प्रयोग गर्न चाहनुभएको सुविधा छनौट गर्नुहोस्:"</string>
     <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"तपाईंले पहुँचको इसारामार्फत प्रयोग गर्न चाहनुभएको सुविधा छनौट गर्नुहोस् (दुईवटा औँलाले स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्):"</string>
     <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"तपाईंले पहुँचको इसारामार्फत प्रयोग गर्न चाहनुभएको सुविधा छनौट गर्नुहोस् (तीनवटा औँलाले स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्):"</string>
     <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"एउटा सुविधाबाट अर्को सुविधामा जान पहुँच बटन टच एण्ड होल्ड गर्नुहोस्।"</string>
@@ -1945,6 +1931,8 @@
     <string name="close_button_text" msgid="10603510034455258">"बन्द गर्नुहोस्"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"कलको जवाफ दिनु…"</string>
+    <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
+    <skip />
     <string name="call_notification_decline_action" msgid="3700345945214000726">"अस्वीकार गर्नुहोस्"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"फोन राख्नुहोस्"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"आगमन कल"</string>
@@ -1963,7 +1951,7 @@
     <string name="language_selection_title" msgid="52674936078683285">"भाषा थप्नुहोस्"</string>
     <string name="country_selection_title" msgid="5221495687299014379">"क्षेत्रको प्राथमिकता"</string>
     <string name="search_language_hint" msgid="7004225294308793583">"भाषाको नाम टाइप गर्नुहोस्"</string>
-    <string name="language_picker_section_suggested" msgid="6556199184638990447">"सुझाव दिइयो"</string>
+    <string name="language_picker_section_suggested" msgid="6556199184638990447">"सिफारिस गरिएको"</string>
     <string name="language_picker_section_all" msgid="1985809075777564284">"सम्पूर्ण भाषाहरू"</string>
     <string name="region_picker_section_all" msgid="756441309928774155">"सबै क्षेत्रहरू"</string>
     <string name="locale_search_menu" msgid="6258090710176422934">"खोज"</string>
@@ -2084,7 +2072,7 @@
     <string name="notification_appops_microphone_active" msgid="581333393214739332">"माइक्रोफोन"</string>
     <string name="notification_appops_overlay_active" msgid="5571732753262836481">"तपाईंको स्क्रिनका अन्य एपहरूमा प्रदर्शन गरिँदै छ"</string>
     <string name="notification_feedback_indicator" msgid="663476517711323016">"प्रतिक्रिया दिनुहोस्"</string>
-    <string name="notification_feedback_indicator_alerted" msgid="6552871804121942099">"सिस्टमले स्वतः यस सूचनालाई महत्त्वपूर्ण ठानी यसका लागि पूर्वनिर्धारित मोड सेट गरिदिएको छ। प्रतिक्रिया दिन ट्याप गर्नुहोस्।"</string>
+    <string name="notification_feedback_indicator_alerted" msgid="6552871804121942099">"सिस्टमले स्वतः यस सूचनालाई महत्त्वपूर्ण ठानी यसका लागि डिफल्ट मोड सेट गरिदिएको छ। प्रतिक्रिया दिन ट्याप गर्नुहोस्।"</string>
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"यस सूचनालाई कम महत्त्वपूर्ण ठानी यसका लागि साइलेन्ट मोड सेट गरिएको छ। प्रतिक्रिया दिन ट्याप गर्नुहोस्।"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"यस सूचनालाई धेरै महत्त्वपूर्ण सूचनाका रूपमा सेट गरिएको छ। प्रतिक्रिया दिन ट्याप गर्नुहोस्।"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"यस सूचनालाई कम महत्त्वपूर्ण सूचनाका रूपमा सेट गरिएको छ। प्रतिक्रिया दिन ट्याप गर्नुहोस्।"</string>
@@ -2284,20 +2272,16 @@
     <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
     <string name="window_magnification_prompt_title" msgid="2876703640772778215">"जुम इन गर्ने सुविधासम्बन्धी नयाँ सेटिङ"</string>
-    <string name="window_magnification_prompt_content" msgid="8159173903032344891">"तपाईं अब स्क्रिनको जुनसुकै भाग जुम इन गर्न सक्नुहुन्छ"</string>
+    <string name="window_magnification_prompt_content" msgid="8159173903032344891">"तपाईं अब स्क्रिनको जुनसुकै भागमा जुम इन गर्न सक्नुहुन्छ"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"सेटिङमा गई यो सुविधा अन गर्नुहोस्"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"हटाउनुहोस्"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"डिभाइसको माइक्रोफोन अनब्लक गर्नुहोस्"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"डिभाइसको क्यामेरा अनब्लक गर्नुहोस्"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; का साथै सबै एप तथा सेवाहरूका लागि"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"अनब्लक गर्नुहोस्"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"सेन्सरसम्बन्धी गोपनीयता"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"एप जनाउने आइकन"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"एपको ब्रान्डिङ फोटो"</string>
-    <string name="view_and_control_notification_title" msgid="4300765399209912240">"हेर्ने तथा नियन्त्रण गर्ने अनुमतिसम्बन्धी सेटिङ जाँच्नु…"</string>
-    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ले तपाईंको स्क्रिन हेर्न र नियन्त्रण गर्न सक्छ। समीक्षा गर्न ट्याप गर्नुहोस्।"</string>
+    <string name="view_and_control_notification_title" msgid="4300765399209912240">"हेराइ र नियन्त्रणसम्बन्धी सेटिङ जाँच्नुहोस्"</string>
+    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> तपाईंको स्क्रिन हेर्न र नियन्त्रण गर्न सक्छ। सेटिङ मिलाउन ट्याप गर्नुहोस्।"</string>
 </resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index a8e0c0e..fcc5264 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -1108,8 +1108,8 @@
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> minuut geleden</item>
     </plurals>
     <plurals name="duration_hours_relative" formatted="false" msgid="420434788589102019">
-      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> uur geleden</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> uur geleden</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> uur geleden, </item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> uur geleden, </item>
     </plurals>
     <plurals name="duration_days_relative" formatted="false" msgid="6056425878237482431">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dagen geleden</item>
@@ -1386,7 +1386,7 @@
     <string name="share_remote_bugreport_action" msgid="7630880678785123682">"DELEN"</string>
     <string name="decline_remote_bugreport_action" msgid="4040894777519784346">"WEIGEREN"</string>
     <string name="select_input_method" msgid="3971267998568587025">"Invoermethode selecteren"</string>
-    <string name="show_ime" msgid="6406112007347443383">"Op het scherm tonen terwijl het fysieke toetsenbord actief is"</string>
+    <string name="show_ime" msgid="6406112007347443383">"Toon op het scherm terwijl het fysieke toetsenbord actief is"</string>
     <string name="hardware" msgid="1800597768237606953">"Virtueel toetsenbord tonen"</string>
     <string name="select_keyboard_layout_notification_title" msgid="4427643867639774118">"Fysiek toetsenbord instellen"</string>
     <string name="select_keyboard_layout_notification_message" msgid="8835158247369158154">"Tik om een taal en indeling te selecteren"</string>
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Geüpdatet door je beheerder"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Verwijderd door je beheerder"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Batterijbesparing zet het donkere thema aan en beperkt achtergrondactiviteit, bepaalde visuele effecten en functies zoals Hey Google of zet dit uit\n\n"<annotation id="url">"Meer informatie"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Batterijbesparing zet het donkere thema aan en beperkt achtergrondactiviteit, bepaalde visuele effecten en functies zoals Hey Google of zet dit uit."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Databesparing beperkt het datagebruik door te voorkomen dat sommige apps gegevens sturen of ontvangen op de achtergrond. De apps die je open hebt, kunnen nog steeds data verbruiken, maar doen dit minder vaak. Afbeeldingen worden dan bijvoorbeeld niet weergegeven totdat je erop tikt."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Databesparing aanzetten?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Aanzetten"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Sluiten"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Beantwoorden"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Weigeren"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Ophangen"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Inkomend gesprek"</string>
@@ -1946,9 +1945,9 @@
     <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Aangepaste app-melding"</string>
     <string name="user_creation_account_exists" msgid="2239146360099708035">"Toestaan dat <xliff:g id="APP">%1$s</xliff:g> een nieuwe gebruiker met <xliff:g id="ACCOUNT">%2$s</xliff:g> maakt (er is al een gebruiker met dit account)?"</string>
     <string name="user_creation_adding" msgid="7305185499667958364">"Toestaan dat <xliff:g id="APP">%1$s</xliff:g> een nieuwe gebruiker met <xliff:g id="ACCOUNT">%2$s</xliff:g> maakt?"</string>
-    <string name="language_selection_title" msgid="52674936078683285">"Een taal toevoegen"</string>
+    <string name="language_selection_title" msgid="52674936078683285">"Taal toevoegen"</string>
     <string name="country_selection_title" msgid="5221495687299014379">"Regiovoorkeur"</string>
-    <string name="search_language_hint" msgid="7004225294308793583">"Typ een taalnaam"</string>
+    <string name="search_language_hint" msgid="7004225294308793583">"Typ de naam van een taal"</string>
     <string name="language_picker_section_suggested" msgid="6556199184638990447">"Voorgesteld"</string>
     <string name="language_picker_section_all" msgid="1985809075777564284">"Alle talen"</string>
     <string name="region_picker_section_all" msgid="756441309928774155">"Alle regio\'s"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Deze melding is verlaagd naar Stil. Tik om feedback te geven."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Deze melding is hoger geclassificeerd. Tik om feedback te geven."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Deze melding is lager geclassificeerd. Tik om feedback te geven."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Probeer verbeterde meldingen"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Activeer verbeterde meldingen om voorgestelde acties, antwoorden en meer te blijven ontvangen. Aanpasbare Android-meldingen worden niet meer ondersteund."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Aanzetten"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Niet nu"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Meer informatie"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Verbeterde meldingen kunnen alle meldingscontent lezen, waaronder persoonlijke informatie zoals contactnamen en berichten. Deze functie kan ook meldingen sluiten of acties uitvoeren voor knoppen in meldingen, zoals telefoongesprekken aannemen.\n\nDeze functie kan ook de prioriteitsmodus aan- of uitzetten en gerelateerde instellingen wijzigen."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Informatiemelding voor routinemodus"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"De batterij raakt mogelijk leeg voordat deze normaal gesproken wordt opgeladen"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Batterijbesparing is geactiveerd om de batterijduur te verlengen"</string>
@@ -2281,5 +2274,5 @@
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"App-icoon"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Merkafbeelding voor app"</string>
     <string name="view_and_control_notification_title" msgid="4300765399209912240">"Toegangsinstellingen checken"</string>
-    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kan je scherm bekijken en beheren. Tik om te bekijken."</string>
+    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kan je scherm bekijken en bedienen. Tik om te checken."</string>
 </resources>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index 2536fa0..55bb315 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -1160,7 +1160,7 @@
     <string name="redo" msgid="7231448494008532233">"ପୁଣି କରନ୍ତୁ"</string>
     <string name="autofill" msgid="511224882647795296">"ଅଟୋଫିଲ୍‌"</string>
     <string name="textSelectionCABTitle" msgid="5151441579532476940">"ଟେକ୍ସଟ୍‍ ଚୟନ"</string>
-    <string name="addToDictionary" msgid="8041821113480950096">"ଶବ୍ଦକୋଷରେ ଯୋଡ଼ନ୍ତୁ"</string>
+    <string name="addToDictionary" msgid="8041821113480950096">"ଶବ୍ଦକୋଷରେ ଯୋଗ କରନ୍ତୁ"</string>
     <string name="deleteText" msgid="4200807474529938112">"ଡିଲିଟ୍‍ କରନ୍ତୁ"</string>
     <string name="inputMethod" msgid="1784759500516314751">"ଇନପୁଟ୍ ପଦ୍ଧତି"</string>
     <string name="editTextMenuTitle" msgid="857666911134482176">"ଟେକ୍ସଟ୍‌ କାର୍ଯ୍ୟ"</string>
@@ -1677,7 +1677,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4670840383567106114">"ଆପଣ ଆପଣଙ୍କର ଅନଲକ୍ ପାଟର୍ନକୁ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଭୁଲ ଭାବେ ଆଙ୍କିଛନ୍ତି। <xliff:g id="NUMBER_1">%2$d</xliff:g> ଥର ଅସଫଳ ଚେଷ୍ଟା ପରେ, ଏକ ଇମେଲ୍ ଆକାଉଣ୍ଟ ବ୍ୟବହାର କରି ଆପଣଙ୍କର Android TV ଡିଭାଇସ୍‌କୁ ଅନ୍‌ଲକ୍ କରିବା ପାଇଁ କୁହାଯିବ। \n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> ସେକେଣ୍ଡ ମଧ୍ୟରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"ଆପଣଙ୍କ ଅନଲକ୍‍ ପାଟର୍ନକୁ ଆପଣ <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_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
-    <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ବାହାର କରନ୍ତୁ"</string>
+    <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"କାଢ଼ି ଦିଅନ୍ତୁ"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ମାତ୍ରା ବଢ଼ାଇ ସୁପାରିଶ ସ୍ତର ବଢ଼ାଉଛନ୍ତି? \n\n ଲମ୍ବା ସମୟ ପର୍ଯ୍ୟନ୍ତ ଉଚ୍ଚ ଶବ୍ଦରେ ଶୁଣିଲେ ଆପଣଙ୍କ ଶ୍ରବଣ ଶକ୍ତି ଖରାପ ହୋଇପାରେ।"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ଆକ୍ସେସବିଲିଟି ଶର୍ଟକଟ୍‍ ବ୍ୟବହାର କରିବେ?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ସର୍ଟକଟ୍ ଚାଲୁ ଥିବା ବେଳେ, ଉଭୟ ଭଲ୍ୟୁମ୍ ବଟନ୍ 3 ସେକେଣ୍ଡ ପାଇଁ ଦବାଇବା ଦ୍ୱାରା ଏକ ଆକ୍ସେସବିଲିଟି ଫିଚର୍ ଆରମ୍ଭ ହେବ।"</string>
@@ -1852,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"ବ୍ୟାଟେରୀ ସେଭର୍ ଗାଢ଼ା ଥିମକୁ ଚାଲୁ କରେ ଏବଂ ପୃଷ୍ଠପଟ କାର୍ଯ୍ୟକଳାପ, କିଛି ଭିଜୁଆଲ୍ ଇଫେକ୍ଟ ଏବଂ “Hey Google” ପରି ଫିଚରଗୁଡ଼ିକୁ ସୀମିତ କିମ୍ବା ବନ୍ଦ କରେ\n\n"<annotation id="url">"ଅଧିକ ଜାଣନ୍ତୁ"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"ବ୍ୟାଟେରୀ ସେଭର୍ ଗାଢ଼ା ଥିମକୁ ଚାଲୁ କରେ ଏବଂ ପୃଷ୍ଠପଟ କାର୍ଯ୍ୟକଳାପ, କିଛି ଭିଜୁଆଲ୍ ଇଫେକ୍ଟ ଏବଂ “Hey Google” ପରି ଫିଚରଗୁଡ଼ିକୁ ସୀମିତ କିମ୍ବା ବନ୍ଦ କରେ।"</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"ବନ୍ଦ କରନ୍ତୁ"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"ଉତ୍ତର ଦିଅନ୍ତୁ"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ଭିଡିଓ"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"ଅଗ୍ରାହ୍ୟ କର"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ସମାପ୍ତ କରନ୍ତୁ"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"ଇନକମିଂ କଲ୍"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ଏହି ବିଜ୍ଞପ୍ତିକୁ ନୀରବ ଭାବେ ଡିମୋଟ୍ କରାଯାଇଛି। ମତାମତ ପ୍ରଦାନ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ।"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"ଏହି ବିଜ୍ଞପ୍ତିର ରେଙ୍କ ଉପରକୁ କରାଯାଇଛି। ମତାମତ ପ୍ରଦାନ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ।"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"ଏହି ବିଜ୍ଞପ୍ତିର ରେଙ୍କ ତଳକୁ କରାଯାଇଛି। ମତାମତ ପ୍ରଦାନ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ।"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"ଉନ୍ନତ ବିଜ୍ଞପ୍ତି ବ୍ୟବହାରକରି ଦେଖ"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"ପ୍ରସ୍ତାବିତ କାର୍ଯ୍ୟ, ପ୍ରତ୍ୟୁତ୍ତର ଏବଂ ଆହୁରି ଅନେକ କିଛି ପାଇବା ଜାରି ରଖିବାକୁ, ଉନ୍ନତ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଚାଲୁ କରନ୍ତୁ। Android ଆଡେପ୍ଟିଭ୍ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ଆଉ ସମର୍ଥିତ ନୁହେଁ।"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"ଚାଲୁ କରନ୍ତୁ"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"ବର୍ତ୍ତମାନ ନୁହେଁ"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"ଅଧିକ ଜାଣନ୍ତୁ"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"ଉନ୍ନତ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ଯୋଗାଯୋଗ ନାମ ଏବଂ ମେସେଜଗୁଡ଼ିକ ପରି ବ୍ୟକ୍ତିଗତ ସୂଚନା ସମେତ ସମସ୍ତ ବିଜ୍ଞପ୍ତି ବିଷୟବସ୍ତୁକୁ ପଢ଼ିପାରିବ। ଏହି ଫିଚର୍ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଖାରଜ କରିପାରିବ କିମ୍ବା ଫୋନ୍ କଲଗୁଡ଼ିକର ଉତ୍ତର ଦେବା ପରି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକରେ ଥିବା ବଟନଗୁଡ଼ିକ ଉପରେ ପଦକ୍ଷେପ ମଧ୍ୟ ନେଇପାରିବ।\n\nଏହି ଫିଚର୍ ପ୍ରାଥମିକତା ମୋଡକୁ ଚାଲୁ କିମ୍ବା ବନ୍ଦ କରିପାରିବ ଏବଂ ସମ୍ବନ୍ଧିତ ସେଟିଂସକୁ ପରିବର୍ତ୍ତନ ମଧ୍ୟ କରିପାରିବ।"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ନିୟମିତ ମୋଡ୍‍ ସୂଚନା ବିଜ୍ଞପ୍ତି"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"ସାଧାରଣ ଭାବରେ ଚାର୍ଜ୍ କରିବା ପୂର୍ବରୁ ବ୍ୟାଟେରୀ ସରିଯାଇପାରେ"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"ବ୍ୟାଟେରୀର ସମୟକୁ ବଢ଼ାଇବା ପାଇଁ ବ୍ୟଟେରୀ ସେଭର୍‍କୁ କାର୍ଯ୍ୟକାରୀ କରାଯାଇଛି"</string>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index fc8a56b..bfa5760 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -307,7 +307,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">"Calendar"</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>
@@ -319,10 +319,8 @@
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"ਆਪਣੀ ਸਰੀਰਕ ਸਰਗਰਮੀ ਤੱਕ ਪਹੁੰਚ ਕਰੋ"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"ਕੈਮਰਾ"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"ਤਸਵੀਰਾਂ ਲੈਣ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰਨ"</string>
-    <!-- no translation found for permgrouplab_nearby_devices (5529147543651181991) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_nearby_devices (3213561597116913508) -->
-    <skip />
+    <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸ"</string>
+    <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਨੂੰ ਖੋਜੋ ਅਤੇ ਉਹਨਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰੋ"</string>
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"ਕਾਲ ਲੌਗ"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"ਫ਼ੋਨ ਦੇ ਕਾਲ ਲੌਗ ਨੂੰ ਪੜ੍ਹੋ ਅਤੇ ਲਿਖੋ"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"ਫ਼ੋਨ"</string>
@@ -540,14 +538,10 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"ਐਪ ਨੂੰ ਨਜ਼ਦੀਕੀ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸਾਂ ਨੂੰ ਖੋਜਣ ਅਤੇ ਉਹਨਾਂ ਨਾਲ ਜੋੜਾਬੱਧ ਕਰਨ ਦਿੰਦੀ ਹੈ"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"ਜੋੜਾਬੱਧ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰੋ"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"ਐਪਾਂ ਨੂੰ ਜੋੜਾਬੱਧ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਦਿੰਦੀ ਹੈ"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
-    <!-- no translation found for permlab_uwb_ranging (8141915781475770665) -->
-    <skip />
-    <!-- no translation found for permdesc_uwb_ranging (2519723069604307055) -->
-    <skip />
+    <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_preferredPaymentInfo" msgid="5274423844767445054">"ਤਰਜੀਹੀ NFC ਭੁਗਤਾਨਸ਼ੁਦਾ ਸੇਵਾ ਜਾਣਕਾਰੀ"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"ਐਪ ਨੂੰ ਤਰਜੀਹੀ NFC ਭੁਗਤਾਨਸ਼ੁਦਾ ਸੇਵਾ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਦਿੰਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਰਜਿਸਟਰ ਕੀਤੇ ਸਾਧਨ ਅਤੇ ਮੰਜ਼ਿਲ ਰਸਤਾ।"</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"ਨਜ਼ਦੀਕੀ ਖੇਤਰ ਸੰਚਾਰ ਤੇ ਨਿਯੰਤਰਣ ਪਾਓ"</string>
@@ -1700,7 +1694,7 @@
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ਜੇਕਰ ਤੁਸੀਂ <xliff:g id="SERVICE">%1$s</xliff:g> ਚਾਲੂ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਇਨਕ੍ਰਿਪਸ਼ਨ ਦਾ ਵਿਸਤਾਰ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਸਕ੍ਰੀਨ ਲਾਕ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰੇਗਾ।"</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"ਪੂਰਾ ਕੰਟਰੋਲ ਉਹਨਾਂ ਐਪਾਂ ਲਈ ਢੁਕਵਾਂ ਹੈ ਜੋ ਪਹੁੰਚਯੋਗਤਾ ਸੰਬੰਧੀ ਲੋੜਾਂ ਵਿੱਚ ਤੁਹਾਡੀ ਮਦਦ ਕਰਦੀਆਂ ਹਨ, ਪਰ ਜ਼ਿਆਦਾਤਰ ਐਪਾਂ ਲਈ ਢੁਕਵਾਂ ਨਹੀਂ ਹੁੰਦਾ।"</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ਸਕ੍ਰੀਨ ਨੂੰ ਦੇਖੋ ਅਤੇ ਕੰਟਰੋਲ ਕਰੋ"</string>
-    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ਇਹ ਸਕ੍ਰੀਨ \'ਤੇ ਸਾਰੀ ਸਮੱਗਰੀ ਪੜ੍ਹ ਸਕਦੀ ਹੈ ਅਤੇ ਸਮੱਗਰੀ ਨੂੰ ਦੂਜੀਆਂ ਐਪਾਂ ਦੇ ਉੱਪਰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰ ਸਕਦੀ ਹੈ।"</string>
+    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ਇਹ ਸਕ੍ਰੀਨ \'ਤੇ ਸਾਰੀ ਸਮੱਗਰੀ ਪੜ੍ਹ ਸਕਦੀ ਹੈ ਅਤੇ ਸਮੱਗਰੀ ਨੂੰ ਦੂਜੀਆਂ ਐਪਾਂ ਦੇ ਉੱਪਰ ਦਿਖਾ ਸਕਦੀ ਹੈ।"</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"ਕਾਰਵਾਈਆਂ ਦੇਖੋ ਅਤੇ ਕਰੋ"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"ਇਹ ਕਿਸੇ ਐਪ ਜਾਂ ਹਾਰਡਵੇਅਰ ਸੈਂਸਰ ਦੇ ਨਾਲ ਤੁਹਾਡੀਆਂ ਅੰਤਰਕਿਰਿਆਵਾਂ ਨੂੰ ਟਰੈਕ ਕਰ ਸਕਦੀ ਹੈ, ਅਤੇ ਤੁਹਾਡੀ ਤਰਫ਼ੋਂ ਐਪਾਂ ਦੇ ਨਾਲ ਅੰਤਰਕਿਰਿਆ ਕਰ ਸਕਦੀ ਹੈ।"</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ਕਰਨ ਦਿਓ"</string>
@@ -1858,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"ਬੈਟਰੀ ਸੇਵਰ ਗੂੜ੍ਹੇ ਥੀਮ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ ਅਤੇ ਬੈਕਗ੍ਰਾਊਂਡ ਸਰਗਰਮੀ, ਕੁਝ ਦ੍ਰਿਸ਼ਟੀਗਤ ਪ੍ਰਭਾਵਾਂ ਅਤੇ \"Ok Google\" ਵਰਗੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਸੀਮਤ ਕਰਦਾ ਹੈ ਜਾਂ ਬੰਦ ਕਰਦਾ ਹੈ\n\n"<annotation id="url">"ਹੋਰ ਜਾਣੋ"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"ਬੈਟਰੀ ਸੇਵਰ ਗੂੜ੍ਹੇ ਥੀਮ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ ਅਤੇ ਬੈਕਗ੍ਰਾਊਂਡ ਸਰਗਰਮੀ, ਕੁਝ ਦ੍ਰਿਸ਼ਟੀਗਤ ਪ੍ਰਭਾਵਾਂ ਅਤੇ \"Ok Google\" ਵਰਗੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਸੀਮਤ ਕਰਦਾ ਹੈ ਜਾਂ ਬੰਦ ਕਰਦਾ ਹੈ।"</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>
@@ -1937,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"ਬੰਦ ਕਰੋ"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"ਜਵਾਬ ਦਿਓ"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ਵੀਡੀਓ"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"ਅਸਵੀਕਾਰ ਕਰੋ"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ਸਮਾਪਤ ਕਰੋ"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"ਇਨਕਮਿੰਗ ਕਾਲ"</string>
@@ -1954,7 +1947,7 @@
     <string name="user_creation_adding" msgid="7305185499667958364">"ਕੀ <xliff:g id="APP">%1$s</xliff:g> ਨੂੰ <xliff:g id="ACCOUNT">%2$s</xliff:g> ਨਾਲ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਬਣਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਹੈ?"</string>
     <string name="language_selection_title" msgid="52674936078683285">"ਇੱਕ ਭਾਸ਼ਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="country_selection_title" msgid="5221495687299014379">"ਖੇਤਰ ਤਰਜੀਹ"</string>
-    <string name="search_language_hint" msgid="7004225294308793583">"ਭਾਸ਼ਾ ਨਾਮ ਟਾਈਪ ਕਰੋ"</string>
+    <string name="search_language_hint" msgid="7004225294308793583">"ਭਾਸ਼ਾ ਦਾ ਨਾਮ ਟਾਈਪ ਕਰੋ"</string>
     <string name="language_picker_section_suggested" msgid="6556199184638990447">"ਸੁਝਾਈਆਂ ਗਈਆਂ"</string>
     <string name="language_picker_section_all" msgid="1985809075777564284">"ਸਾਰੀਆਂ ਭਾਸ਼ਾਵਾਂ"</string>
     <string name="region_picker_section_all" msgid="756441309928774155">"ਸਾਰੇ ਖੇਤਰ"</string>
@@ -2080,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ਇਸ ਸੂਚਨਾ ਦਾ ਦਰਜਾ ਘਟਾ ਕੇ ਸ਼ਾਂਤ \'ਤੇ ਸੈੱਟ ਕੀਤਾ ਗਿਆ। ਵਿਚਾਰ ਮੁਹੱਈਆ ਕਰਵਾਉਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"ਇਸ ਸੂਚਨਾ ਦਾ ਦਰਜਾ ਵਧਾ ਦਿੱਤਾ ਗਿਆ। ਵਿਚਾਰ ਮੁਹੱਈਆ ਕਰਵਾਉਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"ਇਸ ਸੂਚਨਾ ਦਾ ਦਰਜਾ ਘਟਾ ਦਿੱਤਾ ਗਿਆ। ਵਿਚਾਰ ਮੁਹੱਈਆ ਕਰਵਾਉਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"ਵਿਸਤ੍ਰਿਤ ਸੂਚਨਾਵਾਂ ਅਜ਼ਮਾਓ"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"ਸੁਝਾਈਆਂ ਗਈਆਂ ਕਾਰਵਾਈਆਂ, ਜਵਾਬਾਂ ਅਤੇ ਹੋਰ ਬਹੁਤ ਕੁਝ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਦੇ ਰਹਿਣ ਲਈ, ਵਿਸਤ੍ਰਿਤ ਸੂਚਨਾਵਾਂ ਨੂੰ ਚਾਲੂ ਕਰੋ। Android ਅਡੈਪਟਿਵ ਸੂਚਨਾਵਾਂ ਹੁਣ ਸਮਰਥਿਤ ਨਹੀਂ ਹਨ।"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"ਚਾਲੂ ਕਰੋ"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"ਹੁਣੇ ਨਹੀਂ"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"ਹੋਰ ਜਾਣੋ"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"ਵਿਸਤ੍ਰਿਤ ਸੂਚਨਾਵਾਂ ਸਾਰੀ ਸੂਚਨਾ ਸਮੱਗਰੀ ਨੂੰ ਪੜ੍ਹ ਸਕਦੀਆਂ ਹਨ, ਜਿਸ ਵਿੱਚ ਸੰਪਰਕ ਨਾਮ ਅਤੇ ਸੁਨੇਹੇ ਵਰਗੀ ਨਿੱਜੀ ਜਾਣਕਾਰੀ ਵੀ ਸ਼ਾਮਲ ਹੈ। ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਸੂਚਨਾਵਾਂ ਨੂੰ ਖਾਰਜ ਵੀ ਕਰ ਸਕਦੀ ਹੈ ਜਾਂ ਸੂਚਨਾਵਾਂ ਵਿੱਚ ਬਟਨਾਂ \'ਤੇ ਕਾਰਵਾਈਆਂ ਵੀ ਕਰ ਸਕਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਫ਼ੋਨ ਕਾਲਾਂ ਦਾ ਜਵਾਬ ਦੇਣਾ।\n\nਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਤਰਜੀਹੀ ਮੋਡ ਨੂੰ ਚਾਲੂ ਜਾਂ ਬੰਦ ਵੀ ਕਰ ਸਕਦੀ ਹੈ ਅਤੇ ਸੰਬੰਧਿਤ ਸੈਟਿੰਗਾਂ ਨੂੰ ਬਦਲ ਸਕਦੀ ਹੈ।"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"ਨਿਯਮਬੱਧ ਮੋਡ ਦੀ ਜਾਣਕਾਰੀ ਵਾਲੀ ਸੂਚਨਾ"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"ਬੈਟਰੀ ਚਾਰਜ ਕਰਨ ਦੇ ਮਿੱਥੇ ਸਮੇਂ ਤੋਂ ਪਹਿਲਾਂ ਸ਼ਾਇਦ ਬੈਟਰੀ ਖਤਮ ਹੋ ਜਾਵੇ"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"ਬੈਟਰੀ ਲਾਈਫ਼ ਵਧਾਉਣ ਲਈ ਬੈਟਰੀ ਸੇਵਰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string>
@@ -2276,17 +2263,13 @@
     <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
     <string name="window_magnification_prompt_title" msgid="2876703640772778215">"ਨਵੀਆਂ ਵੱਡਦਰਸ਼ੀਕਰਨ ਸੈਟਿੰਗਾਂ"</string>
-    <string name="window_magnification_prompt_content" msgid="8159173903032344891">"ਹੁਣ ਤੁਸੀਂ ਆਪਣੀ ਸਕ੍ਰੀਨ ਦਾ ਕੁਝ ਹਿੱਸਾ ਵੱਡਦਰਸ਼ੀ ਕਰ ਸਕਦੇ ਹੋ"</string>
+    <string name="window_magnification_prompt_content" msgid="8159173903032344891">"ਹੁਣ ਤੁਸੀਂ ਆਪਣੀ ਸਕ੍ਰੀਨ ਦਾ ਕੁਝ ਹਿੱਸਾ ਵੱਡਾ ਕਰ ਸਕਦੇ ਹੋ"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਚਾਲੂ ਕਰੋ"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"ਖਾਰਜ ਕਰੋ"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"ਡੀਵਾਈਸ ਦੇ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਨੂੰ ਅਣਬਲਾਕ ਕਰੋ"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"ਡੀਵਾਈਸ ਦੇ ਕੈਮਰੇ ਨੂੰ ਅਣਬਲਾਕ ਕਰੋ"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; ਅਤੇ ਸਾਰੀਆਂ ਐਪਾਂ ਅਤੇ ਸੇਵਾਵਾਂ ਲਈ"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"ਅਣਬਲਾਕ ਕਰੋ"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"ਸੈਂਸਰ ਪਰਦੇਦਾਰੀ"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"ਐਪਲੀਕੇਸ਼ਨ ਪ੍ਰਤੀਕ"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਬ੍ਰਾਂਡ ਵਾਲਾ ਚਿੱਤਰ"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 0d07cab..57037ad 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -544,10 +544,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Zezwala na wykrywanie i parowanie przez aplikację urządzeń Bluetooth w pobliżu"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"łączenie ze sparowanymi urządzeniami Bluetooth"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Zezwala na łączenie aplikacji ze sparowanymi urządzeniami Bluetooth"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"kierowanie informacji do urządzeń Bluetooth w pobliżu"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Zezwala na kierowanie przez aplikację informacji do urządzeń Bluetooth w pobliżu"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"określanie względnego położenia urządzeń ultraszerokopasmowych w pobliżu"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Zezwól na określanie przez aplikację względnego położenia urządzeń ultraszerokopasmowych w pobliżu"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Informacje o preferowanych usługach płatniczych NFC"</string>
@@ -1739,7 +1737,7 @@
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Pozwolić usłudze <xliff:g id="SERVICE">%1$s</xliff:g> na pełną kontrolę nad urządzeniem?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jeśli włączysz usługę <xliff:g id="SERVICE">%1$s</xliff:g>, Twoje urządzenie nie będzie korzystać z blokady ekranu, by usprawnić szyfrowanie danych."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Pełna kontrola jest odpowiednia dla aplikacji, które pomagają Ci radzić sobie z niepełnosprawnością, ale nie należy jej przyznawać wszystkim aplikacjom."</string>
-    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Wyświetlaj i steruj ekranem"</string>
+    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Wyświetlaj i kontroluj ekran"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Może odczytywać całą zawartość ekranu i wyświetlać treść nad innymi aplikacjami."</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Wyświetlaj i wykonuj działania"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Może śledzić Twoje interakcje z aplikacjami lub czujnikiem sprzętowym, a także obsługiwać aplikacje za Ciebie."</string>
@@ -1900,10 +1898,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Zaktualizowany przez administratora"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Usunięty przez administratora"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Oszczędzanie baterii uruchamia ciemny motyw oraz wyłącza lub ogranicza aktywność w tle, niektóre efekty wizualne i inne funkcje, np. „OK Google”\n\n"<annotation id="url">"Więcej informacji"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Oszczędzanie baterii uruchamia ciemny motyw oraz wyłącza lub ogranicza aktywność w tle, niektóre efekty wizualne i inne funkcje, np. „OK Google”."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Oszczędzanie danych uniemożliwia niektórym aplikacjom wysyłanie i odbieranie danych w tle, zmniejszając w ten sposób ich użycie. Aplikacja, z której w tej chwili korzystasz, może uzyskiwać dostęp do danych, ale rzadziej. Może to powodować, że obrazy będą się wyświetlać dopiero po kliknięciu."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Włączyć Oszczędzanie danych?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Włącz"</string>
@@ -1995,6 +1991,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Zamknij"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Odbierz"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Film"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Odrzuć"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Rozłącz"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Połączenie przychodzące"</string>
@@ -2142,18 +2139,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"To powiadomienie zostało zmienione na Ciche. Kliknij, by przesłać opinię."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Podniesiono ważność tego powiadomienia. Kliknij, by przesłać opinię."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Obniżono ważność tego powiadomienia. Kliknij, by przesłać opinię."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Wypróbuj ulepszone powiadomienia"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Aby nadal otrzymywać sugestie działań oraz odpowiedzi i inne podpowiedzi, włącz ulepszone powiadomienia. Powiadomienia adaptacyjne w Androidzie nie są już obsługiwane."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Włącz"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Nie teraz"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Więcej informacji"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Ulepszone powiadomienia mogą czytać wszystkie powiadomienia, w tym dane osobowe takie jak nazwy kontaktów i treść wiadomości. Funkcja będzie też mogła odrzucać powiadomienia oraz używać zawartych w nich przycisków, np. odbierać połączenia telefoniczne.\n\nMoże również włączać i wyłączać tryb Priorytet oraz zmieniać powiązane ustawienia."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Powiadomienie z informacją o trybie rutynowym"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Bateria może się wyczerpać przed zwykłą porą ładowania"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Włączono Oszczędzanie baterii, by wydłużyć czas pracy na baterii"</string>
@@ -2343,14 +2334,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Możesz teraz powiększyć część ekranu"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Włącz w Ustawieniach"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Odrzuć"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Odblokuj mikrofon urządzenia"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Odblokuj aparat urządzenia"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Dla aplikacji „<xliff:g id="APP">%s</xliff:g>” i wszystkich aplikacji oraz usług"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Odblokuj"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Poufność danych z czujników"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ikona aplikacji"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Wizerunek marki aplikacji"</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 69da283..102073e 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Atualizado pelo seu administrador"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Excluído pelo seu administrador"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"A Economia de bateria ativa o tema escuro e limita ou desativa as atividades em segundo plano, alguns efeitos visuais e recursos como o \"Ok Google\"\n\n"<annotation id="url">"Saiba mais"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"A Economia de bateria ativa o tema escuro e limita ou desativa as atividades em segundo plano, alguns efeitos visuais e recursos como o \"Ok Google\"."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Para ajudar a reduzir o uso de dados, a Economia de dados impede que alguns apps enviem ou recebam dados em segundo plano. Um app que você esteja usando no momento pode acessar dados, mas com menos frequência. Isso pode fazer com que imagens não sejam exibidas até que você toque nelas."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Ativar \"Economia de dados\"?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Ativar"</string>
@@ -1903,7 +1901,7 @@
     <string name="zen_mode_default_weeknights_name" msgid="7902108149994062847">"Durante a semana à noite"</string>
     <string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fim de semana"</string>
     <string name="zen_mode_default_events_name" msgid="2280682960128512257">"Evento"</string>
-    <string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Dormindo"</string>
+    <string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Dormir"</string>
     <string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> está silenciando alguns sons"</string>
     <string name="system_error_wipe_data" msgid="5910572292172208493">"Há um problema interno com seu dispositivo. Ele pode ficar instável até que você faça a redefinição para configuração original."</string>
     <string name="system_error_manufacturer" msgid="703545241070116315">"Há um problema interno com seu dispositivo. Entre em contato com o fabricante para saber mais detalhes."</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Fechar"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Atender"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vídeo"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Recusar"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Desligar"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Chamada recebida"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Esta notificação foi rebaixada a Silenciosa. Toque para enviar seu feedback."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Esta notificação foi classificada com maior prioridade. Toque para enviar seu feedback."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Esta notificação foi classificada com menor prioridade. Toque para enviar seu feedback."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Testar notif. aprimoradas"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Para continuar a receber sugestões de ações, respostas e muito mais, ative as notificações aprimoradas. As Notificações adaptáveis do Android não estão mais disponíveis."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Ativar"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Agora não"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Saiba mais"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"As notificações aprimoradas podem ler todo o conteúdo das notificações, incluindo informações pessoais como nomes de contatos e mensagens. Além disso, esse recurso pode dispensar notificações e usar os botões delas para, por exemplo, atender chamadas telefônicas.\n\nEle também pode ativar ou desativar o modo Prioridade e mudar as configurações relacionadas."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificação de informação do modo rotina"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"A bateria pode acabar antes da recarga normal"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"A Economia de bateria foi ativada para aumentar a duração da carga"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 04e282f..d0c2beb 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -538,8 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Permite que a app descubra e sincronize com dispositivos Bluetooth próximos"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"ligar-se a dispositivos Bluetooth sincronizados"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Permite que a app se ligue a dispositivos Bluetooth sincronizados"</string>
-    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"mostrar anúncios a dispositivos Bluetooth próximos"</string>
-    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Permite que a app apresente anúncios a dispositivos Bluetooth próximos"</string>
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"transmitir para dispositivos Bluetooth próximos"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Permite que a app transmita para dispositivos Bluetooth próximos"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"determinar posição relativa dispos. de banda ultralarga próximos"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Permita que a app determine a posição relativa entre os dispositivos de banda ultralarga próximos"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Informações de serviços de pagamento com NFC preferenciais"</string>
@@ -1621,7 +1621,7 @@
     <string name="wireless_display_route_description" msgid="8297563323032966831">"Visualização sem fios"</string>
     <string name="media_route_button_content_description" msgid="2299223698196869956">"Transmitir"</string>
     <string name="media_route_chooser_title" msgid="6646594924991269208">"Ligar ao dispositivo"</string>
-    <string name="media_route_chooser_title_for_remote_display" msgid="3105906508794326446">"Transmitir ecrã para o dispositivo"</string>
+    <string name="media_route_chooser_title_for_remote_display" msgid="3105906508794326446">"Transmitir ecrã para dispositivo"</string>
     <string name="media_route_chooser_searching" msgid="6119673534251329535">"A pesquisar dispositivos…"</string>
     <string name="media_route_chooser_extended_settings" msgid="2506352159381327741">"Definições"</string>
     <string name="media_route_controller_disconnect" msgid="7362617572732576959">"Desligar"</string>
@@ -1692,11 +1692,11 @@
     <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"DESATIVADO"</string>
     <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permitir que o serviço <xliff:g id="SERVICE">%1$s</xliff:g> tenha controlo total sobre o seu dispositivo?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se ativar o serviço <xliff:g id="SERVICE">%1$s</xliff:g>, o dispositivo não utilizará o bloqueio de ecrã para otimizar a encriptação de dados."</string>
-    <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controlo total é adequado para aplicações que ajudam nas necessidades de acessibilidade, mas não para a maioria das aplicações."</string>
+    <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controlo total é adequado para aplicações que ajudam nas necessidades de acessibilidade, mas não para a maioria das apps."</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ver e controlar o ecrã"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Pode ler todo o conteúdo do ecrã e sobrepor conteúdo a outras aplicações."</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Veja e execute ações"</string>
-    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pode monitorizar as suas interações com uma app ou um sensor de hardware e interagir com aplicações em seu nome."</string>
+    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pode monitorizar as suas interações com uma app ou um sensor de hardware e interagir com apps em seu nome."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Recusar"</string>
     <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toque numa funcionalidade para começar a utilizá-la:"</string>
@@ -1709,7 +1709,7 @@
     <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar atalho"</string>
     <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string>
     <string name="color_correction_feature_name" msgid="3655077237805422597">"Correção da cor"</string>
-    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Escurecimento extra"</string>
+    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mais escuro"</string>
     <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas do volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string>
     <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string>
     <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Prima sem soltar as teclas de volume durante três segundos para utilizar o serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Atualizado pelo seu gestor"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Eliminado pelo seu gestor"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"A Poupança de bateria ativa o tema escuro e limita ou desativa a atividade em segundo plano, alguns efeitos visuais e funcionalidades como \"Ok Google\".\n\n"<annotation id="url">"Saiba mais"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"A Poupança de bateria ativa o tema escuro e limita ou desativa a atividade em segundo plano, alguns efeitos visuais e funcionalidades como \"Ok Google\"."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Para ajudar a reduzir a utilização de dados, a Poupança de dados impede que algumas aplicações enviem ou recebam dados em segundo plano. Uma determinada app que esteja a utilizar atualmente pode aceder aos dados, mas é possível que o faça com menos frequência. Isto pode significar, por exemplo, que as imagens não são apresentadas até que toque nas mesmas."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Pretende ativar a Poupança de dados?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Ativar"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Fechar"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Atender"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vídeo"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Recusar"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Desligar"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Chamada recebida"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Esta notificação foi despromovida para Silenciosa. Toque para fornecer feedback."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Esta notificação passou para uma classificação superior. Toque para fornecer feedback."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Esta notificação passou para uma classificação inferior. Toque para fornecer feedback."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Experimente as not. melhoradas"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Para continuar a obter sugestões de ações, respostas e muito mais, ative as notificações melhoradas. As notificações adaptáveis do Android já não são suportadas."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Ativar"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Agora não"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Saber mais"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"As notificações melhoradas podem ler todo o conteúdo das notificações, incluindo informações pessoais como nomes de contactos e mensagens. Esta funcionalidade também pode ignorar notificações ou acionar botões em notificações, como atender chamadas telefónicas.\n\nAlém disso, esta funcionalidades pode ativar ou desativar o modo Prioridade e alterar as definições relacionadas."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificação de informações do Modo rotina"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Pode ficar sem bateria antes do carregamento habitual"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Poupança de bateria ativada para prolongar a duração da bateria"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 69da283..102073e 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Atualizado pelo seu administrador"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Excluído pelo seu administrador"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"A Economia de bateria ativa o tema escuro e limita ou desativa as atividades em segundo plano, alguns efeitos visuais e recursos como o \"Ok Google\"\n\n"<annotation id="url">"Saiba mais"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"A Economia de bateria ativa o tema escuro e limita ou desativa as atividades em segundo plano, alguns efeitos visuais e recursos como o \"Ok Google\"."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Para ajudar a reduzir o uso de dados, a Economia de dados impede que alguns apps enviem ou recebam dados em segundo plano. Um app que você esteja usando no momento pode acessar dados, mas com menos frequência. Isso pode fazer com que imagens não sejam exibidas até que você toque nelas."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Ativar \"Economia de dados\"?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Ativar"</string>
@@ -1903,7 +1901,7 @@
     <string name="zen_mode_default_weeknights_name" msgid="7902108149994062847">"Durante a semana à noite"</string>
     <string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fim de semana"</string>
     <string name="zen_mode_default_events_name" msgid="2280682960128512257">"Evento"</string>
-    <string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Dormindo"</string>
+    <string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Dormir"</string>
     <string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> está silenciando alguns sons"</string>
     <string name="system_error_wipe_data" msgid="5910572292172208493">"Há um problema interno com seu dispositivo. Ele pode ficar instável até que você faça a redefinição para configuração original."</string>
     <string name="system_error_manufacturer" msgid="703545241070116315">"Há um problema interno com seu dispositivo. Entre em contato com o fabricante para saber mais detalhes."</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Fechar"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Atender"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vídeo"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Recusar"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Desligar"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Chamada recebida"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Esta notificação foi rebaixada a Silenciosa. Toque para enviar seu feedback."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Esta notificação foi classificada com maior prioridade. Toque para enviar seu feedback."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Esta notificação foi classificada com menor prioridade. Toque para enviar seu feedback."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Testar notif. aprimoradas"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Para continuar a receber sugestões de ações, respostas e muito mais, ative as notificações aprimoradas. As Notificações adaptáveis do Android não estão mais disponíveis."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Ativar"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Agora não"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Saiba mais"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"As notificações aprimoradas podem ler todo o conteúdo das notificações, incluindo informações pessoais como nomes de contatos e mensagens. Além disso, esse recurso pode dispensar notificações e usar os botões delas para, por exemplo, atender chamadas telefônicas.\n\nEle também pode ativar ou desativar o modo Prioridade e mudar as configurações relacionadas."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificação de informação do modo rotina"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"A bateria pode acabar antes da recarga normal"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"A Economia de bateria foi ativada para aumentar a duração da carga"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 8c145bf2..e6b7ff6 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -541,10 +541,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Permite aplicației să descopere și să asocieze dispozitive Bluetooth din apropiere"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"să se conecteze la dispozitive Bluetooth asociate"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Permite aplicației să se conecteze la dispozitive Bluetooth asociate"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"să difuzeze anunțuri pe dispozitive Bluetooth din apropiere"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Permite aplicației să difuzeze anunțuri pe dispozitive Bluetooth din apropiere"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"să stabilească poziția relativă dintre dispozitivele Ultra-Wideband din apropiere"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Permiteți-i aplicației să stabilească poziția relativă dintre dispozitivele Ultra-Wideband din apropiere"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Informații despre serviciul de plăți NFC preferat"</string>
@@ -1877,10 +1875,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Actualizat de administratorul dvs."</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Șters de administratorul dvs."</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Economisirea bateriei activează Tema întunecată și limitează sau dezactivează activitatea din fundal, anumite efecte vizuale și funcții precum „Ok Google”\n\n"<annotation id="url">"Aflați mai multe"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Economisirea bateriei activează Tema întunecată și limitează sau dezactivează activitatea din fundal, anumite efecte vizuale și funcții precum „Ok Google”."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Pentru a contribui la reducerea utilizării de date, Economizorul de date împiedică unele aplicații să trimită sau să primească date în fundal. O aplicație pe care o folosiți poate accesa datele, însă mai rar. Aceasta poate însemna, de exemplu, că imaginile se afișează numai după ce le atingeți."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Activați Economizorul de date?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Activați"</string>
@@ -1964,6 +1960,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Închideți"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Răspundeți"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Respingeți"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Încheiați"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Apel primit"</string>
@@ -2109,18 +2106,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Notificarea a fost mutată în jos la Silențioasă. Atingeți pentru a oferi feedback."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Notificarea a fost mutată la un nivel superior. Atingeți pentru a oferi feedback."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Notificarea a fost mutată la un nivel inferior. Atingeți pentru a oferi feedback."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Încercați notificările optimizate"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Ca să primiți în continuare acțiuni sugerate, răspunsuri și altele, activați notificările optimizate. Notificările adaptive Android nu mai sunt acceptate."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Activați"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Nu acum"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Aflați mai multe"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Notificările optimizate pot citi tot conținutul notificărilor, inclusiv informații cu caracter personal, precum mesajele și numele persoanelor de contact. În plus, funcția poate să închidă notificări sau să acționeze asupra butoanelor din notificări, inclusiv să răspundă la apeluri telefonice.\n\nÎn plus, funcția poate să activeze sau să dezactiveze modul Cu prioritate și să schimbe setările asociate."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notificare pentru informații despre modul Rutină"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Bateria se poate descărca înainte de încărcarea obișnuită"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Economisirea bateriei este activată pentru a prelungi durata de funcționare a bateriei"</string>
@@ -2309,17 +2300,13 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Acum puteți mări o parte a ecranului"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Activați din Setări"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Respingeți"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Deblocați microfonul dispozitivului"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Deblocați camera dispozitivului"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Pentru &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; și toate aplicațiile și serviciile"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Deblocați"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Confidențialitatea privind senzorii"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Pictograma aplicației"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Imaginea de branding a aplicației"</string>
     <string name="view_and_control_notification_title" msgid="4300765399209912240">"Verificați setările pentru acces"</string>
-    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> poată să vadă și să vă controleze ecranul. Atingeți pentru a examina."</string>
+    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> poate să vadă și să vă controleze ecranul. Atingeți pentru a examina."</string>
 </resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 4612662..09f839d 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -1350,7 +1350,7 @@
     <string name="network_switch_metered_detail" msgid="1358296010128405906">"Устройство использует <xliff:g id="NEW_NETWORK">%1$s</xliff:g>, если подключение к сети <xliff:g id="PREVIOUS_NETWORK">%2$s</xliff:g> недоступно. Может взиматься плата за передачу данных."</string>
     <string name="network_switch_metered_toast" msgid="501662047275723743">"Устройство отключено от сети <xliff:g id="NEW_NETWORK">%2$s</xliff:g> и теперь использует <xliff:g id="PREVIOUS_NETWORK">%1$s</xliff:g>"</string>
   <string-array name="network_switch_type_name">
-    <item msgid="2255670471736226365">"мобильный Интернет"</item>
+    <item msgid="2255670471736226365">"мобильный интернет"</item>
     <item msgid="5520925862115353992">"Wi-Fi"</item>
     <item msgid="1055487873974272842">"Bluetooth"</item>
     <item msgid="1616528372438698248">"Ethernet"</item>
@@ -1426,7 +1426,7 @@
     <string name="share_remote_bugreport_action" msgid="7630880678785123682">"ПРЕДОСТАВИТЬ ДОСТУП"</string>
     <string name="decline_remote_bugreport_action" msgid="4040894777519784346">"ОТКЛОНИТЬ"</string>
     <string name="select_input_method" msgid="3971267998568587025">"Выберите способ ввода"</string>
-    <string name="show_ime" msgid="6406112007347443383">"Показывать на экране, когда физическая клавиатура включена"</string>
+    <string name="show_ime" msgid="6406112007347443383">"Не скрывать экранную клавиатуру, когда включена физическая"</string>
     <string name="hardware" msgid="1800597768237606953">"Виртуальная клавиатура"</string>
     <string name="select_keyboard_layout_notification_title" msgid="4427643867639774118">"Настройка физической клавиатуры"</string>
     <string name="select_keyboard_layout_notification_message" msgid="8835158247369158154">"Нажмите, чтобы выбрать язык и раскладку"</string>
@@ -1738,9 +1738,9 @@
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Если включить сервис \"<xliff:g id="SERVICE">%1$s</xliff:g>\", устройство не будет использовать блокировку экрана для защиты данных."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Полный контроль нужен приложениям для реализации специальных возможностей и не нужен большинству остальных."</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Просмотр и контроль экрана"</string>
-    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Сервис может читать весь контент на экране и отображать контент поверх других приложений."</string>
+    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Сервис может просматривать весь контент на экране и отображать контент поверх других приложений"</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Просмотр и выполнение действий"</string>
-    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Сервис может отслеживать ваше взаимодействие с приложением или датчиками устройства и давать приложениям команды от вашего имени."</string>
+    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Сервис может отслеживать ваше взаимодействие с приложениями и датчиками устройства и давать приложениям команды от вашего имени"</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Разрешить"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Отклонить"</string>
     <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Выберите, какую функцию использовать:"</string>
@@ -1898,10 +1898,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"В режиме энергосбережения включается тёмная тема. Кроме того, отключаются или ограничиваются фоновые процессы, некоторые визуальные эффекты и различные функции, например распознавание команды \"Окей, Google\".\n\n"<annotation id="url">"Подробнее…"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"В режиме энергосбережения включается тёмная тема. Кроме того, отключаются или ограничиваются фоновые процессы, некоторые визуальные эффекты и различные функции, например распознавание команды \"Окей, Google\"."</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>
@@ -1993,6 +1991,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Закрыть"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Ответить"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видео"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Отклонить"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Завершить"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Входящий вызов"</string>
@@ -2010,9 +2009,9 @@
     <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Уведомление пользовательского приложения"</string>
     <string name="user_creation_account_exists" msgid="2239146360099708035">"Разрешить приложению \"<xliff:g id="APP">%1$s</xliff:g>\" создать нового пользователя с аккаунтом <xliff:g id="ACCOUNT">%2$s</xliff:g> (пользователь с этим аккаунтом уже существует)?"</string>
     <string name="user_creation_adding" msgid="7305185499667958364">"Разрешить приложению \"<xliff:g id="APP">%1$s</xliff:g>\" создать нового пользователя с аккаунтом <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
-    <string name="language_selection_title" msgid="52674936078683285">"Добавьте язык"</string>
+    <string name="language_selection_title" msgid="52674936078683285">"Добавить язык"</string>
     <string name="country_selection_title" msgid="5221495687299014379">"Региональные настройки"</string>
-    <string name="search_language_hint" msgid="7004225294308793583">"Введите язык"</string>
+    <string name="search_language_hint" msgid="7004225294308793583">"Введите название языка"</string>
     <string name="language_picker_section_suggested" msgid="6556199184638990447">"Рекомендуемые"</string>
     <string name="language_picker_section_all" msgid="1985809075777564284">"Все языки"</string>
     <string name="region_picker_section_all" msgid="756441309928774155">"Все регионы"</string>
@@ -2140,18 +2139,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Уровень важности этого уведомления был понижен до \"Без звука\". Нажмите, чтобы отправить отзыв."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Уровень важности этого уведомления был повышен. Нажмите, чтобы отправить отзыв."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Уровень важности этого уведомления был понижен. Нажмите, чтобы отправить отзыв."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Улучшенные уведомления"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Чтобы по-прежнему пользоваться рекомендуемыми действиями, ответами и другими подсказками, включите улучшенные уведомления. Адаптивные уведомления для Android больше не поддерживаются."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Включить"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Не сейчас"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Подробнее"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Улучшенным уведомлениям доступно содержимое всех уведомлений, в том числе личная информация, такая как имена контактов и сообщения. У этой функции также есть право закрывать уведомления и нажимать кнопки в них, например отвечать на звонки.\n\nКроме того, улучшенные уведомления могут включать и отключать режим \"Только важные\" и изменять связанные с ним настройки."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Уведомление о батарее"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Батарея может разрядиться"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Чтобы увеличить время работы от батареи, был включен режим энергосбережения."</string>
@@ -2349,5 +2342,5 @@
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Значок приложения"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Образ бренда приложения"</string>
     <string name="view_and_control_notification_title" msgid="4300765399209912240">"Проверьте настройки доступа"</string>
-    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> может просматривать информацию на вашем экране и управлять им. Нажмите, чтобы узнать подробности."</string>
+    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> просматривать и контролировать то, что отображается на вашем экране. Нажмите здесь, чтобы узнать больше."</string>
 </resources>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index 5523d8f..c0577d6 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -1852,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"බැටරි සුරැකුම අඳුරු තේමාව ක්‍රියාත්මක කර පසුබිම් ක්‍රියාකාරකම්, සමහර දෘශ්‍ය ප්‍රයෝග සහ “Hey Google” වැනි විශේෂාංග සීමා කරයි\n\n"<annotation id="url">"තව දැන ගන්න"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"බැටරි සුරැකුම අඳුරු තේමාව ක්‍රියාත්මක කර පසුබිම් ක්‍රියාකාරකම්, සමහර දෘශ්‍ය ප්‍රයෝග සහ “Hey Google” වැනි විශේෂාංග සීමා කරයි."</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"වසන්න"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"පිළිතුරු දෙ."</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"වීඩියෝ"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"ප්‍රතික්ෂේප ක"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"විසන්ධි කරන්න"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"එන ඇමතුම"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"මෙම දැනුම්දීම නිහඬ වෙත පහත දමන ලදී. ප්‍රතිපෝෂණය ලබා දීමට තට්ටු කරන්න."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"මෙම දැනුම්දීම ඉහළට ශ්‍රේණිගත කරන ලදී. ප්‍රතිපෝෂණය ලබා දීමට තට්ටු කරන්න."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"මෙම දැනුම්දීම පහළට ශ්‍රේණිගත කරන ලදී. ප්‍රතිපෝෂණය ලබා දීමට තට්ටු කරන්න."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"දියුණු කළ දැනුම්දීම් උත්සාහ ක."</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"යෝජිත ක්‍රියා, පිළිතුරු සහ තවත් දේ ලබා ගැනීම සඳහා, වැඩි දියුණු කළ දැනුම්දීම් ක්‍රියාත්මක කරන්න. Android අනුවර්තී දැනුම්දීම් තවදුරටත් සහාය නොදක්වයි."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"ක්‍රියාත්මක කරන්න"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"දැන් නොවේ"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"තව දැන ගන්න"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"වැඩිදියුණු කළ දැනුම්දීම්වලට සම්බන්ධතා නම් සහ පණිවිඩ වැනි පුද්ගලික තොරතුරු ඇතුළුව, සියලු දැනුම්දීම් අන්තර්ගතය කියවිය හැකිය. මෙම විශේෂාංගයට දැනුම්දීම් ඉවත දැමීමට හෝ දුරකථන ඇමතුම්වලට පිළිතුරු දීම වැනි, දැනුම්දීම්වල බොත්තම් මත ක්‍රියා සිදු කිරීමටද හැකිය.\n\nමෙම විශේෂාංගයට ප්‍රමුඛතා ප්‍රකාරය ක්‍රියාත්මක හෝ ක්‍රියාවිරහිත කිරීමට සහ අදාළ සැකසීම් වෙනස් කිරීමටද හැකිය."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"දිනචරියා ප්‍රකාර තතු දැනුම්දීම"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"බැටරිය සුපුරුදු ආරෝපණයට පෙර ඉවර විය හැක"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"බැටරි සුරැකුම බැටරි ආයු කාලය දීර්ඝ කිරීමට සක්‍රිය කෙරිණි"</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index b2ee98a..5c9ddf7 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -1898,10 +1898,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Aktualizoval správca"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Odstránil správca"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Šetrič batérie zapne tmavý motív a obmedzí alebo vypne aktivitu na pozadí, niektoré vizuálne efekty a funkcie, napríklad „Hey Google“\n\n"<annotation id="url">"Ďalšie informácie"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Šetrič batérie zapne tmavý motív a obmedzí alebo vypne aktivitu na pozadí, niektoré vizuálne efekty a funkcie, napríklad „Hey Google“."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"S cieľom znížiť spotrebu dát bráni šetrič dát niektorým aplikáciám odosielať alebo prijímať dáta na pozadí. Aplikácia, ktorú práve používate, môže využívať dáta, ale možno to bude robiť menej často. Môže to napríklad znamenať, že sa obrázky zobrazia, až keď na ne klepnete."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Chcete zapnúť šetrič dát?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Zapnúť"</string>
@@ -1993,6 +1991,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Zavrieť"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Prijať"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Odmietnuť"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Zložiť"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Prichádzajúci hovor"</string>
@@ -2140,18 +2139,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Toto upozornenie bolo znížené na Tiché. Klepnutím nám poskytnite spätnú väzbu."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Toto upozornenie bolo preradené vyššie. Klepnutím nám poskytnite spätnú väzbu."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Toto upozornenie bolo preradené nižšie. Klepnutím nám poskytnite spätnú väzbu."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Skúste zlepšené upozornenia"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Ak chcete ďalej dostávať navrhované akcie, odpovede a ďalší obsah, zapnite zlepšené upozornenia. Adaptívne upozornenia Androidu už nie sú podporované."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Zapnúť"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Teraz nie"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Ďalšie informácie"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Zlepšené upozornenia môžu čítať všetok obsah upozornení vrátane osobných údajov, ako sú mená kontaktov a správy. Táto funkcia tiež môže rušiť upozornenia alebo aktivovať tlačidlá v upozorneniach, napríklad na prijatie telefonických hovorov.\n\nTáto funkcia môže tiež zapnúť alebo vypnúť režim priority a zmeniť súvisiace nastavenia."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Upozornenie s informáciami o rutinnom režime"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Batéria sa môže vybiť pred obvyklým nabitím"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Bol aktivovaný šetrič batérie na predĺženie výdrže batérie"</string>
@@ -2348,6 +2341,6 @@
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Ochrana súkromia senzorov"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ikona aplikácie"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Imidž značky aplikácie"</string>
-    <string name="view_and_control_notification_title" msgid="4300765399209912240">"Skontrolujte nastavenia prístupu"</string>
+    <string name="view_and_control_notification_title" msgid="4300765399209912240">"Kontrola nastavení prístupu"</string>
     <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> môže zobraziť a ovládať vašu obrazovku. Skontrolujte to klepnutím."</string>
 </resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index d62aee7..e98d0ae 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -544,8 +544,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Aplikaciji omogoča odkrivanje naprav Bluetooth v bližini in seznanjanje z njimi."</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"povezovanje s seznanjenimi napravami Bluetooth"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Aplikaciji omogoča povezovanje s seznanjenimi napravami Bluetooth."</string>
-    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"oglaševanje v napravah Bluetooth v bližini"</string>
-    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Aplikaciji dovoljuje oglaševanje v napravah Bluetooth v bližini."</string>
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"oddajanje napravam Bluetooth v bližini"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Aplikaciji dovoljuje oddajanje napravam Bluetooth v bližini."</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"določanje relativne oddaljenosti med napravami UWB v bližini"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Aplikaciji dovoli, da določi relativno oddaljenost med napravami UWB v bližini."</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Podatki o prednostni storitvi za plačevanje prek povezave NFC"</string>
@@ -1898,10 +1898,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Posodobil skrbnik"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisal skrbnik"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"V redu"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Varčevanje z energijo baterije vklopi temno temo in omeji ali izklopi dejavnost v ozadju, nekatere vizualne učinke in druge funkcije, kot je »Hey Google«.\n\n"<annotation id="url">"Več o tem"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Varčevanje z energijo baterije vklopi temno temo in omeji ali izklopi dejavnost v ozadju, nekatere vizualne učinke in druge funkcije, kot je »Hey Google«."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Zaradi zmanjševanja prenesene količine podatkov funkcija varčevanja s podatki nekaterim aplikacijam preprečuje, da bi v ozadju pošiljale ali prejemale podatke. Aplikacija, ki jo trenutno uporabljate, lahko prenaša podatke, vendar to morda počne manj pogosto. To na primer pomeni, da se slike ne prikažejo, dokler se jih ne dotaknete."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Vklop varčevanja s podatki?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Vklop"</string>
@@ -1993,6 +1991,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Zapri"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Sprejmi"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Zavrni"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Prekini klic"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Dohodni klic"</string>
@@ -2140,18 +2139,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"To obvestilo je bilo uvrščeno nižje – med obvestila brez zvoka. Dotaknite se, če želite poslati povratne informacije."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"To obvestilo je bilo uvrščeno višje. Dotaknite se, če želite poslati povratne informacije."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"To obvestilo je bilo uvrščeno nižje. Dotaknite se, če želite poslati povratne informacije."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Preizkusite pametna obvestila"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Če želite še naprej prejemati predlagana dejanja, odgovore in drugo, vklopite pametna obvestila. Prilagodljiva obvestila Android niso več podprta."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Vklopi"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Ne zdaj"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Več o tem"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Pametna obvestila lahko preberejo vso vsebino obvestil, vključno z osebnimi podatki, kot so imena in sporočila stikov. Ta funkcija lahko tudi opusti obvestila in izvaja dejanja z gumbi v obvestilih, kot je sprejemanje telefonskih klicev.\n\nPoleg tega lahko ta funkcija vklopi ali izklopi prednostni način ter spremeni povezane nastavitve."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Rutinsko informativno obvestilo o načinu delovanja"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Baterija se bo morda izpraznila, preden jo običajno priključite na polnjenje"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Vklopilo se je varčevanje z energijo baterije za podaljšanje časa delovanja baterije"</string>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 5575f16..30e13a4 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -319,10 +319,8 @@
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"qasje në aktivitetin tënd fizik"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"Kamera"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"bëj fotografi dhe regjistro video"</string>
-    <!-- no translation found for permgrouplab_nearby_devices (5529147543651181991) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_nearby_devices (3213561597116913508) -->
-    <skip />
+    <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Pajisjet në afërsi"</string>
+    <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"të zbulojë dhe të lidhet me pajisjet në afërsi"</string>
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"Evidencat e telefonatave"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"lexo dhe shkruaj evidencën e telefonatave"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"Telefoni"</string>
@@ -540,14 +538,10 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Lejon që aplikacioni të zbulojë dhe të çiftohet me pajisjet me Bluetooth në afërsi"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"të lidhet me pajisjet e çiftuara me Bluetooth"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Lejon që aplikacioni të lidhet me pajisjet e çiftuara me Bluetooth"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
-    <!-- no translation found for permlab_uwb_ranging (8141915781475770665) -->
-    <skip />
-    <!-- no translation found for permdesc_uwb_ranging (2519723069604307055) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"të reklamojë në pajisjet me Bluetooth në afërsi"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Lejon që aplikacioni të reklamojë në pajisjet me Bluetooth në afërsi"</string>
+    <string name="permlab_uwb_ranging" msgid="8141915781475770665">"të përcaktojë pozicionin e përafërt mes pajisjeve në afërsi me brezin ultra të gjerë"</string>
+    <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Lejo që aplikacioni të përcaktojë pozicionin e përafërt mes pajisjeve në afërsi me brezin ultra të gjerë"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Informacionet për shërbimin e preferuar të pagesës me NFC"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"Lejon aplikacionin të marrë informacione për shërbimin e preferuar të pagesës me NFC si p.sh. ndihmat e regjistruara dhe destinacionin e itinerarit."</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"kontrollo \"Komunikimin e fushës në afërsi\" NFC"</string>
@@ -1273,12 +1267,12 @@
     <string name="new_app_action" msgid="547772182913269801">"Hap <xliff:g id="NEW_APP">%1$s</xliff:g>"</string>
     <string name="new_app_description" msgid="1958903080400806644">"<xliff:g id="OLD_APP">%1$s</xliff:g> do të mbyllet pa u ruajtur"</string>
     <string name="dump_heap_notification" msgid="5316644945404825032">"<xliff:g id="PROC">%1$s</xliff:g> e ka kaluar kufirin e memories"</string>
-    <string name="dump_heap_ready_notification" msgid="2302452262927390268">"Stiva e skedarëve fiktivë të <xliff:g id="PROC">%1$s</xliff:g> është gati"</string>
-    <string name="dump_heap_notification_detail" msgid="8431586843001054050">"Stiva e skedarëve fiktivë është mbledhur. Trokit për t\'i ndarë."</string>
-    <string name="dump_heap_title" msgid="4367128917229233901">"Të ndahet stiva e skedarëve fiktivë?"</string>
-    <string name="dump_heap_text" msgid="1692649033835719336">"Procesi <xliff:g id="PROC">%1$s</xliff:g> ka kaluar kufirin e tij të memories prej <xliff:g id="SIZE">%2$s</xliff:g>. Ke një stivë të skedarësh fiktivë që mund ta ndash me zhvilluesin e tij. Ki kujdes pasi kjo stivë skedarësh fiktivë mund të përmbajë çdo informacion personal ku ka qasje aplikacioni."</string>
-    <string name="dump_heap_system_text" msgid="6805155514925350849">"Procesi <xliff:g id="PROC">%1$s</xliff:g> e ka kaluar kufirin e tij të memories prej <xliff:g id="SIZE">%2$s</xliff:g>. Ke një stivë skedarësh fiktivë që mund ta ndash. Ki kujdes pasi kjo stivë skedarësh fiktivë mund të përmbajë çdo informacion personal delikat ku ka qasje procesi dhe mund të përfshijë gjërat që ke shkruar ti."</string>
-    <string name="dump_heap_ready_text" msgid="5849618132123045516">"Ke një stivë skedarësh fiktivë të procesit <xliff:g id="PROC">%1$s</xliff:g> që mund ta ndash. Ki kujdes pasi kjo stivë skedarësh fiktivë mund të përmbajë çdo informacion personal delikat ku ka qasje procesi dhe mund të përfshijë gjërat që ke shkruar ti."</string>
+    <string name="dump_heap_ready_notification" msgid="2302452262927390268">"Grumbulli i skedarëve fiktivë të <xliff:g id="PROC">%1$s</xliff:g> është gati"</string>
+    <string name="dump_heap_notification_detail" msgid="8431586843001054050">"Grumbulli i skedarëve fiktivë është mbledhur. Trokit për t\'i ndarë."</string>
+    <string name="dump_heap_title" msgid="4367128917229233901">"Të ndahet grumbulli i skedarëve fiktivë?"</string>
+    <string name="dump_heap_text" msgid="1692649033835719336">"Procesi <xliff:g id="PROC">%1$s</xliff:g> ka kaluar kufirin e tij të memories prej <xliff:g id="SIZE">%2$s</xliff:g>. Ke një grumbull skedarësh fiktivë që mund ta ndash me zhvilluesin e tij. Ki kujdes pasi ky grumbull skedarësh fiktivë mund të përmbajë çdo informacion personal tëndin ku ka qasje aplikacioni."</string>
+    <string name="dump_heap_system_text" msgid="6805155514925350849">"Procesi <xliff:g id="PROC">%1$s</xliff:g> e ka kaluar kufirin e tij të memories prej <xliff:g id="SIZE">%2$s</xliff:g>. Ke një grumbull skedarësh fiktivë që mund ta ndash. Ki kujdes pasi ky grumbull skedarësh fiktivë mund të përmbajë çdo informacion personal delikat ku ka qasje procesi dhe mund të përfshijë gjërat që ke shkruar ti."</string>
+    <string name="dump_heap_ready_text" msgid="5849618132123045516">"Ke një grumbull skedarësh fiktivë të procesit <xliff:g id="PROC">%1$s</xliff:g> që mund ta ndash. Ki kujdes pasi ky grumbull skedarësh fiktivë mund të përmbajë çdo informacion personal delikat ku ka qasje procesi dhe mund të përfshijë gjërat që ke shkruar ti."</string>
     <string name="sendText" msgid="493003724401350724">"Zgjidh një veprim për tekstin"</string>
     <string name="volume_ringtone" msgid="134784084629229029">"Volumi i ziles"</string>
     <string name="volume_music" msgid="7727274216734955095">"Volumi i medias"</string>
@@ -1713,7 +1707,7 @@
     <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"U krye"</string>
     <string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Çaktivizo shkurtoren"</string>
     <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Përdor shkurtoren"</string>
-    <string name="color_inversion_feature_name" msgid="326050048927789012">"Kthimi i ngjyrës"</string>
+    <string name="color_inversion_feature_name" msgid="326050048927789012">"Anasjellja e ngjyrës"</string>
     <string name="color_correction_feature_name" msgid="3655077237805422597">"Korrigjimi i ngjyrës"</string>
     <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Shumë më i zbehtë"</string>
     <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tastet e volumit të mbajtura shtypur. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> i aktivizuar."</string>
@@ -1858,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Përditësuar nga administratori"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Fshirë nga administratori"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Në rregull"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"\"Kursyesi i baterisë\" aktivizon \"Temën e errët\" dhe kufizon ose çaktivizon aktivitetin në sfond, disa efekte vizuale dhe veçoritë si \"Ok Google\"\n\n"<annotation id="url">"Mëso më shumë"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"\"Kursyesi i baterisë\" aktivizon \"Temën e errët\" dhe kufizon ose çaktivizon aktivitetin në sfond, disa efekte vizuale dhe veçoritë si \"Ok Google\"."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Për të ndihmuar në reduktimin e përdorimit të të dhënave, \"Kursyesi i të dhënave\" pengon që disa aplikacione të dërgojnë apo të marrin të dhëna në sfond. Një aplikacion që po përdor aktualisht mund të ketë qasje te të dhënat, por këtë mund ta bëjë më rrallë. Kjo mund të nënkuptojë, për shembull, se imazhet nuk shfaqen kur troket mbi to."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Të aktivizohet \"Kursyesi i të dhënave\"?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivizo"</string>
@@ -1937,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Mbyll"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Përgjigju"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Refuzo"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Mbyll"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Telefonatë hyrëse"</string>
@@ -2080,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Ky njoftim është ulur në nivel si në heshtje. Trokit për të dhënë komente."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Ky njoftim është renditur më lart. Trokit për të dhënë komente."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Ky njoftim është renditur më poshtë. Trokit për të dhënë komente."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Provo njoftimet e përmirësuara"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Për të vazhduar të marrësh sugjerime për veprimet, përgjigjet etj., aktivizo njoftimet e përmirësuara. \"Njoftimet me përshtatje të Android\" nuk mbështeten më."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Aktivizo"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Jo tani"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Mëso më shumë"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Njoftimet e përmirësuara mund të lexojnë të gjithë përmbajtjen e njoftimeve, duke përfshirë edhe informacionet personale si emrat e kontakteve dhe mesazhet. Kjo veçori mund të heqë po ashtu njoftimet ose të veprojë mbi butonat te njoftimet, si p.sh. t\'u përgjigjet telefonatave.\n\nKjo veçori mund të aktivizojë ose të çaktivizojë po ashtu modalitetin \"Me përparësi\" dhe të ndryshojë cilësimet përkatëse."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Njoftimi i informacionit të \"Modalitetit rutinë\""</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Bateria mund të mbarojë përpara ngarkimit të zakonshëm"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"\"Kursyesi i baterisë\" u aktivizua për të rritur kohëzgjatjen e baterisë"</string>
@@ -2279,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Tani mund të zmadhosh pjesë të ekranit tënd"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Aktivizo te \"Cilësimet\""</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Hiq"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Zhblloko mikrofonin e pajisjes"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Zhblloko kamerën e pajisjes"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Për &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; dhe të gjitha aplikacionet dhe shërbimet"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Zhblloko"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Privatësia e sensorit"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ikona e aplikacionit"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Imazhi i vendosjes së aplikacionit të markës"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index d404f8c..96fa82d 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -1875,10 +1875,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Уштеда батерије укључује Тамну тему и ограничава или искључује активности у позадини, неке визуелне ефекте и функције, на пример, „Хеј Google“.\n\n"<annotation id="url">"Сазнајте више"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Уштеда батерије укључује Тамну тему и ограничава или искључује активности у позадини, неке визуелне ефекте и функције, на пример, „Хеј Google“."</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>
@@ -1962,6 +1960,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Затвори"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Одговори"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видео"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Одбиј"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Прекини везу"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Долазни позив"</string>
@@ -2107,18 +2106,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Ово обавештење је деградирано у Нечујно. Додирните да бисте навели повратне информације."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Ово обавештење је рангирано више. Додирните да бисте навели повратне информације."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Ово обавештење је рангирано ниже. Додирните да бисте навели повратне информације."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Пробајте побољшана обавештења"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Укључите побољшана обавештења да бисте и даље добијали препоручене радње, одговоре и друго. Прилагодљива обавештења за Android више нису подржана."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Укључи"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Не сада"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Сазнајте више"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Побољшана обавештења могу да читају садржај свих обавештења, укључујући личне податке, попут имена контаката и порука. Ова функција може и да одбацује обавештења или активира дугмад у обавештењима, попут јављања на телефонске позиве.\n\nОва функција може и да укључи или искључи Приоритетни режим и да мења повезана подешавања."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Обавештење о информацијама Рутинског режима"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Батерија ће се можда испразнити пре уобичајеног пуњења"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Уштеда батерије је активирана да би се продужило трајање батерије"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 4dc2ecf..0ddf34d 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -1852,11 +1852,9 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Administratören uppdaterade paketet"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administratören raderade paketet"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
-    <string name="data_saver_description" msgid="4995164271550590517">"Med databesparing kan du minska dataanvändningen genom att hindra en del appar från att skicka eller ta emot data i bakgrunden. Appar som du använder kan komma åt data, men det sker kanske inte lika ofta. Detta innebär t.ex. att bilder inte visas förrän du trycker på dem."</string>
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"I batterisparläget aktiveras mörkt tema och bakgrundsaktivitet som vissa visuella effekter och funktioner som ”Hey Google” begränsas eller inaktiveras\n\n"<annotation id="url">"Läs mer"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"I batterisparläget aktiveras mörkt tema och bakgrundsaktivitet som vissa visuella effekter och funktioner som ”Hey Google” begränsas eller inaktiveras."</string>
+    <string name="data_saver_description" msgid="4995164271550590517">"Med Databesparing kan du minska dataanvändningen genom att hindra en del appar från att skicka eller ta emot data i bakgrunden. Appar som du använder kan komma åt data, men det sker kanske inte lika ofta. Detta innebär t.ex. att bilder inte visas förrän du trycker på dem."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Vill du aktivera Databesparing?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivera"</string>
     <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273">
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Stäng"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Svara"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Avvisa"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Lägg på"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Inkommande samtal"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Den här aviseringen har ändrats till Tyst. Tryck för att lämna feedback."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Den här aviseringen har fått högre rankning. Tryck för att lämna feedback."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Den här aviseringen har fått lägre rankning. Tryck för att lämna feedback."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Testa förbättrade aviseringar"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Aktivera förbättrade aviseringar om du vill fortsätta att få rekommenderade åtgärder, svar och annat. Anpassade aviseringar för Android stöds inte längre."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Aktivera"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Inte nu"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Läs mer"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Förbättrade aviseringar kan läsa allt innehåll i aviseringar, inklusive personliga uppgifter som namn på kontakter och meddelanden. Funktionen kan även stänga aviseringar eller använda åtgärdsknappar i aviseringar, till exempel för att svara på telefonsamtal.\n\nFunktionen kan även aktivera och inaktivera prioritetsläget och ändra tillhörande inställningar."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Avisering om rutinläge"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Batteriet kan ta slut innan du brukar ladda det"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Batterisparläget har aktiverats för att utöka batteritiden"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 0156787..ea069e1 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Imesasishwa na msimamizi wako"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Imefutwa na msimamizi wako"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Sawa"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Kiokoa Betri huwasha Mandhari meusi na kudhibiti au kuzima shughuli za chinichini, baadhi ya madoido yanayoonekana na vipengele kama vile \"Ok Google\"\n\n"<annotation id="url">"Pata maelezo zaidi"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Kiokoa Betri huwasha Mandhari meusi na kudhibiti au kuzima shughuli za chinichini, baadhi ya madoido yanayoonekana na vipengele kama vile \"Ok Google\"."</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Funga"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Jibu"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Kataa"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Kata simu"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Simu uliyopigiwa"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Arifa hii ilishushwa hadhi kuwa Kimya. Gusa ili utoe maoni."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Arifa hii imeorodheshwa katika nafasi ya juu. Gusa ili utoe maoni."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Arifa hii imeorodheshwa katika nafasi ya chini. Gusa ili utoe maoni."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Jaribu arifa zilizoboreshwa"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Ili uendelee kupata vitendo, majibu na mambo mengine yanayopendekezwa, washa arifa zilizoboreshwa. Arifa Zinazojirekebisha za Android hazitumiki tena."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Washa"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Si sasa"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Pata maelezo zaidi"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Kipengele cha Arifa zilizoboreshwa kinaweza kusoma maudhui yote ya arifa, zikiwemo taarifa binafsi kama vile majina ya anwani na ujumbe. Kipengele hiki kinaweza pia kuondoa arifa au kuchukua hatua kwenye vitufe katika arifa, kama vile kujibu simu.\n\nKipengele hiki pia kinaweza kuwasha au kuzima hali ya Kipaumbele na kubadilisha mipangilio inayohusiana."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Arifa ya maelezo ya Hali ya Kawaida"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Huenda betri itakwisha chaji mapema"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Imewasha Kiokoa Betri ili kurefusha muda wa matumizi ya betri"</string>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index e625c8bb..962b9a3 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -307,7 +307,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">"Calendar"</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 அனுப்பலாம், வந்த SMSகளைப் பார்க்கலாம்"</string>
@@ -1852,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"பேட்டரி சேமிப்பான் டார்க் தீமினை ஆன் செய்து பின்னணிச் செயல்பாடு, சில விஷுவல் எஃபெக்ட்கள், “Ok Google” போன்ற அம்சங்களை ஆஃப் செய்யும் அல்லது கட்டுப்படுத்தும்\n\n"<annotation id="url">"மேலும் அறிக"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"பேட்டரி சேமிப்பான் டார்க் தீமினை ஆன் செய்து பின்னணிச் செயல்பாடு, சில விஷுவல் எஃபெக்ட்கள், “Ok Google” போன்ற அம்சங்களை ஆஃப் செய்யும் அல்லது கட்டுப்படுத்தும்."</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"மூடு"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"பதிலளி"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"வீடியோ"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"நிராகரி"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"துண்டி"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"உள்வரும் அழைப்பு"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"இந்த அறிவிப்பின் முக்கியத்துவம் நிசப்த நிலைக்குக் குறைத்து அமைக்கப்பட்டது. கருத்து தெரிவிக்க தட்டவும்."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"இந்த அறிவிப்பின் முக்கியத்துவம் உயர்த்தப்பட்டது. கருத்து தெரிவிக்க தட்டவும்."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"இந்த அறிவிப்பின் முக்கியத்துவம் குறைக்கப்பட்டது. கருத்து தெரிவிக்க தட்டவும்."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"மேம்பட்ட அறிவிப்புகளை முயல்க"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"பரிந்துரைக்கப்பட்ட செயல்பாடுகள், பதில்கள் மற்றும் பலவற்றையும் தொடர்ந்து பெற மேம்பட்ட அறிவிப்புகளை ஆன் செய்யவும். Android சூழலுக்கேற்ற அறிவிப்புகள் இனி ஆதரிக்கப்படாது."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"ஆன் செய்"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"இப்போது வேண்டாம்"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"மேலும் அறிக"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"மேம்பட்ட அறிவிப்புகளால் அனைத்து அறிவிப்புகளின் உள்ளடக்கத்தையும் (தொடர்புகளின் பெயர்கள், மெசேஜ்கள் போன்ற தனிப்பட்ட தகவல்கள் உட்பட) படிக்க முடியும். இந்த அம்சத்தால் அறிவிப்புகளை நிராகரிக்கவோ அறிவிப்புகளிலுள்ள பட்டன்களை இயக்கவோ (அழைப்புகளுக்குப் பதிலளிப்பது போன்றவை) முடியும்.\n\nஇந்த அம்சத்தால் முன்னுரிமைப் பயன்முறையை இயக்கவோ முடக்கவோ முடியும் மற்றும் தொடர்புடைய அமைப்புகளை மாற்றவும் முடியும்."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"வழக்கமான பேட்டரி சேமிப்பானுக்கான விவர அறிவிப்பு"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"வழக்கமாகச் சார்ஜ் செய்வதற்கு முன்பே பேட்டரி தீர்ந்துபோகக்கூடும்"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"பேட்டரி நிலையை நீட்டிக்க பேட்டரி சேமிப்பான் இயக்கப்பட்டுள்ளது"</string>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index faed275..f6d7133 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -251,7 +251,7 @@
     <string name="global_action_bug_report" msgid="5127867163044170003">"బగ్ నివేదిక"</string>
     <string name="global_action_logout" msgid="6093581310002476511">"సెషన్‌ను ముగించు"</string>
     <string name="global_action_screenshot" msgid="2610053466156478564">"స్క్రీన్‌షాట్"</string>
-    <string name="bugreport_title" msgid="8549990811777373050">"బగ్ నివేదిక"</string>
+    <string name="bugreport_title" msgid="8549990811777373050">"బగ్ రిపోర్ట్‌"</string>
     <string name="bugreport_message" msgid="5212529146119624326">"ఇది ఇ-మెయిల్ సందేశం రూపంలో పంపడానికి మీ ప్రస్తుత పరికర స్థితి గురించి సమాచారాన్ని సేకరిస్తుంది. బగ్ నివేదికను ప్రారంభించడం మొదలుకొని పంపడానికి సిద్ధం చేసే వరకు ఇందుకు కొంత సమయం పడుతుంది; దయచేసి ఓపిక పట్టండి."</string>
     <string name="bugreport_option_interactive_title" msgid="7968287837902871289">"ప్రభావశీల నివేదిక"</string>
     <string name="bugreport_option_interactive_summary" msgid="8493795476325339542">"చాలా సందర్భాల్లో దీన్ని ఉపయోగించండి. ఇది నివేదిక ప్రోగ్రెస్‌ను ట్రాక్ చేయడానికి, సమస్య గురించి మరిన్ని వివరాలను నమోదు చేయడానికి మరియు స్క్రీన్‌షాట్‌లు తీయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇది నివేదించడానికి ఎక్కువ సమయం పట్టే తక్కువ వినియోగ విభాగాలను విడిచిపెట్టవచ్చు."</string>
@@ -315,14 +315,12 @@
     <string name="permgroupdesc_storage" msgid="6351503740613026600">"మీ పరికరంలోని ఫోటోలు, మీడియా మరియు ఫైల్‌లను యాక్సెస్ చేయడానికి"</string>
     <string name="permgrouplab_microphone" msgid="2480597427667420076">"మైక్రోఫోన్"</string>
     <string name="permgroupdesc_microphone" msgid="1047786732792487722">"ఆడియోను రికార్డ్ చేయడానికి"</string>
-    <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"భౌతిక కార్యకలాపం"</string>
+    <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"ఫిజికల్ యాక్టివిటీ"</string>
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"భౌతిక కార్యకలాపాన్ని యాక్సెస్ చేయండి"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"కెమెరా"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"చిత్రాలను తీయడానికి మరియు వీడియోను రికార్డ్ చేయడానికి"</string>
-    <!-- no translation found for permgrouplab_nearby_devices (5529147543651181991) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_nearby_devices (3213561597116913508) -->
-    <skip />
+    <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"సమీపంలోని పరికరాలు"</string>
+    <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"సమీప పరికరాలను కనుగొనండి అలాగే కనెక్ట్ చేయండి"</string>
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"కాల్ లాగ్‌లు"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"ఫోన్ కాల్ లాగ్‌ని చదవండి మరియు రాయండి"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"ఫోన్"</string>
@@ -540,14 +538,10 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"సమీపంలోని బ్లూటూత్ పరికరాలను కనుగొనడానికి, పెయిర్ చేయడానికి యాప్‌ను అనుమతిస్తుంది"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"పెయిర్ చేసిన బ్లూటూత్ పరికరాలకు కనెక్ట్ అవ్వండి"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"పెయిర్ చేసిన బ్లూటూత్ పరికరాలకు కనెక్ట్ అవ్వడానికి యాప్‌ను అనుమతిస్తుంది"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
-    <!-- no translation found for permlab_uwb_ranging (8141915781475770665) -->
-    <skip />
-    <!-- no translation found for permdesc_uwb_ranging (2519723069604307055) -->
-    <skip />
+    <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_preferredPaymentInfo" msgid="5274423844767445054">"ప్రాధాన్యత ఇవ్వబడిన NFC చెల్లింపు సేవల సమాచారం"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"ప్రాధాన్యత ఇవ్వబడిన NFC చెల్లింపు సేవల సమాచారాన్ని, అంటే రిజిస్టర్ చేయబడిన సహాయక సాధనాలు, మార్గం, గమ్యస్థానం వంటి వాటిని పొందేందుకు యాప్‌ను అనుమతిస్తుంది."</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"సమీప క్షేత్ర కమ్యూనికేషన్‌ను నియంత్రించడం"</string>
@@ -1372,7 +1366,7 @@
     <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">"USB డీబగ్గింగ్ కనెక్ట్ చేయబడింది"</string>
-    <string name="adb_active_notification_message" msgid="5617264033476778211">"USB డీబగ్గింగ్‌ను ఆఫ్ చేయడానికి నొక్కండి"</string>
+    <string name="adb_active_notification_message" msgid="5617264033476778211">"USB డీబగ్గింగ్‌ను ఆఫ్ చేయడానికి ట్యాప్ చేయండి"</string>
     <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"డీబగ్గింగ్‌ని నిలిపివేయడానికి ఎంచుకోండి."</string>
     <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"వైర్‌లెస్ డీబగ్గింగ్ కనెక్ట్ చేయబడింది"</string>
     <string name="adbwifi_active_notification_message" msgid="930987922852867972">"వైర్‌లెస్ డీబగ్గింగ్‌ని ఆఫ్ చేయడానికి ట్యాప్ చేయండి"</string>
@@ -1485,7 +1479,7 @@
     <string name="forward_intent_to_work" msgid="3620262405636021151">"మీరు మీ కార్యాలయ ప్రొఫైల్‌లో ఈ యాప్‌ను ఉపయోగిస్తున్నారు"</string>
     <string name="input_method_binding_label" msgid="1166731601721983656">"ఇన్‌పుట్ పద్ధతి"</string>
     <string name="sync_binding_label" msgid="469249309424662147">"సమకాలీకరణ"</string>
-    <string name="accessibility_binding_label" msgid="1974602776545801715">"యాక్సెస్ సామర్థ్యం"</string>
+    <string name="accessibility_binding_label" msgid="1974602776545801715">"యాక్సెసిబిలిటీ"</string>
     <string name="wallpaper_binding_label" msgid="1197440498000786738">"వాల్‌పేపర్"</string>
     <string name="chooser_wallpaper" msgid="3082405680079923708">"వాల్‌పేపర్‌ను మార్చండి"</string>
     <string name="notification_listener_binding_label" msgid="2702165274471499713">"నోటిఫికేషన్ పరిశీలన"</string>
@@ -1569,7 +1563,7 @@
     <string name="description_target_unlock_tablet" msgid="7431571180065859551">"అన్‌లాక్ చేయడానికి స్వైప్ చేయండి."</string>
     <string name="action_bar_home_description" msgid="1501655419158631974">"హోమ్‌కు నావిగేట్ చేయండి"</string>
     <string name="action_bar_up_description" msgid="6611579697195026932">"పైకి నావిగేట్ చేయండి"</string>
-    <string name="action_menu_overflow_description" msgid="4579536843510088170">"మరిన్ని ఎంపికలు"</string>
+    <string name="action_menu_overflow_description" msgid="4579536843510088170">"మరిన్ని ఆప్షన్‌లు"</string>
     <string name="action_bar_home_description_format" msgid="5087107531331621803">"%1$s, %2$s"</string>
     <string name="action_bar_home_subtitle_description_format" msgid="4346835454749569826">"%1$s, %2$s, %3$s"</string>
     <string name="storage_internal" msgid="8490227947584914460">"షేర్ చేయబడిన అంతర్గత నిల్వ"</string>
@@ -1696,13 +1690,13 @@
     <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ఆన్ చేయకండి"</string>
     <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"ఆన్"</string>
     <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"ఆఫ్"</string>
-    <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>కి మీ పరికరంపై పూర్తి నియంత్రణను ఇవ్వాలనుకుంటున్నారా?"</string>
+    <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>కి మీ పరికరంపై పూర్తి కంట్రోల్‌ను ఇవ్వాలనుకుంటున్నారా?"</string>
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"మీరు <xliff:g id="SERVICE">%1$s</xliff:g>ని ఆన్ చేస్తే, డేటా ఎన్‌క్రిప్షన్‌ను మెరుగుపరచడానికి మీ పరికరం మీ స్క్రీన్ లాక్‌ను ఉపయోగించదు."</string>
-    <string name="accessibility_service_warning_description" msgid="291674995220940133">"అవసరమైన యాక్సెస్ సామర్ధ్యం కోసం యాప్‌లకు పూర్తి నియంత్రణ ఇవ్వడం తగిన పనే అయినా, అన్ని యాప్‌లకు అలా ఇవ్వడం సరికాదు."</string>
-    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"స్క్రీన్‌ను చూసి, నియంత్రించండి"</string>
+    <string name="accessibility_service_warning_description" msgid="291674995220940133">"అవసరమైన యాక్సెసిబిలిటీ కోసం యాప్‌లకు పూర్తి కంట్రోల్ ఇవ్వడం తగిన పనే అయినా, అన్ని యాప్‌లకు అలా ఇవ్వడం సరికాదు."</string>
+    <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"స్క్రీన్‌ను చూసి, కంట్రోల్ చేయడం"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"స్క్రీన్‌పై ఉండే కంటెంట్‌ మొత్తాన్ని చదవగలుగుతుంది మరియు ఇతర యాప్‌లలో కూడా ఈ కంటెంట్‌ను ప్రదర్శిస్తుంది."</string>
     <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"చర్యలను చూసి, అమలు చేయండి"</string>
-    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"మీరు యాప్‌‌తో చేసే పరస్పర చర్యల‌ను లేదా హార్డ్‌వేర్ సెన్సార్‌ను ట్రాక్ చేస్తూ మీ త‌ర‌ఫున యాప్‌లతో పరస్పరం సమన్వయం చేస్తుంది."</string>
+    <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"మీరు ఒక యాప్‌‌తో చేసే ఇంటరాక్షన్‌లను లేదా హార్డ్‌వేర్ సెన్సార్‌ను ట్రాక్ చేస్తూ మీ త‌ర‌ఫున యాప్‌లతో ఇంటరాక్ట్ చేయగలదు."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"అనుమతించు"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"నిరాకరించు"</string>
     <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ఫీచర్‌ని ఉపయోగించడం ప్రారంభించడానికి, దాన్ని ట్యాప్ చేయండి:"</string>
@@ -1715,7 +1709,7 @@
     <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"సత్వరమార్గాన్ని ఉపయోగించు"</string>
     <string name="color_inversion_feature_name" msgid="326050048927789012">"కలర్ మార్పిడి"</string>
     <string name="color_correction_feature_name" msgid="3655077237805422597">"కలర్ సరిచేయడం"</string>
-    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"కాంతిని మరింత డిమ్ చేసే"</string>
+    <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"కాంతిని మరింత డిమ్ చేయడం"</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>
     <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>ని ఉపయోగించడానికి వాల్యూమ్ కీలు రెండింటినీ 3 సెకన్లు నొక్కి ఉంచండి"</string>
@@ -1858,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"బ్యాటరీ సేవర్ ముదురు రంగు రూపంను ఆన్ చేస్తుంది అలాగే బ్యాక్‌గ్రౌండ్ యాక్టివిటీని, కొన్ని విజువల్ ఎఫెక్ట్‌లు, అలాగే “Ok Google” వంటి ఫీచర్‌లను పరిమితం చేస్తుంది లేదా ఆఫ్ చేస్తుంది\n\n"<annotation id="url">"మరింత తెలుసుకోండి"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"బ్యాటరీ సేవర్ ముదురు రంగు రూపంను ఆన్ చేస్తుంది అలాగే బ్యాక్‌గ్రౌండ్ యాక్టివిటీని, కొన్ని విజువల్ ఎఫెక్ట్‌లు, అలాగే “Ok Google” వంటి ఫీచర్‌లను పరిమితం చేస్తుంది లేదా ఆఫ్ చేస్తుంది."</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>
@@ -1931,12 +1923,13 @@
     <string name="usb_midi_peripheral_name" msgid="490523464968655741">"Android USB పెరిఫెరల్ పోర్ట్"</string>
     <string name="usb_midi_peripheral_manufacturer_name" msgid="7557148557088787741">"Android"</string>
     <string name="usb_midi_peripheral_product_name" msgid="2836276258480904434">"USB పెరిఫెరల్ పోర్ట్"</string>
-    <string name="floating_toolbar_open_overflow_description" msgid="2260297653578167367">"మరిన్ని ఎంపికలు"</string>
+    <string name="floating_toolbar_open_overflow_description" msgid="2260297653578167367">"మరిన్ని ఆప్షన్‌లు"</string>
     <string name="floating_toolbar_close_overflow_description" msgid="3949818077708138098">"అతివ్యాప్తిని మూసివేస్తుంది"</string>
     <string name="maximize_button_text" msgid="4258922519914732645">"గరిష్టీకరించు"</string>
     <string name="close_button_text" msgid="10603510034455258">"మూసివేయి"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"సమాధానం ఇవ్వు"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"వీడియో కాల్"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"తిరస్కరించండి"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"కాల్ ముగించు"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"ఇన్‌కమింగ్ కాల్"</string>
@@ -1985,7 +1978,7 @@
     <string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="demo_starting_message" msgid="6577581216125805905">"డెమోను ప్రారంభిస్తోంది..."</string>
     <string name="demo_restarting_message" msgid="1160053183701746766">"పరికరాన్ని రీసెట్ చేస్తోంది..."</string>
-    <string name="suspended_widget_accessibility" msgid="6331451091851326101">"<xliff:g id="LABEL">%1$s</xliff:g> నిలిపివేయబడింది"</string>
+    <string name="suspended_widget_accessibility" msgid="6331451091851326101">"<xliff:g id="LABEL">%1$s</xliff:g> డిజేబుల్ చేయబడింది"</string>
     <string name="conference_call" msgid="5731633152336490471">"కాన్ఫరెన్స్ కాల్"</string>
     <string name="tooltip_popup_title" msgid="7863719020269945722">"సాధనం చిట్కా"</string>
     <string name="app_category_game" msgid="4534216074910244790">"గేమ్‌లు"</string>
@@ -2080,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ఈ నోటిఫికేషన్ స్థాయి నిశ్శబ్దంగా ఉండేలా తగ్గించబడింది. ఫీడ్‌బ్యాక్‌ను అందించడానికి ట్యాప్ చేయండి."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"ఈ నోటిఫికేషన్‌కు ఎక్కువ ర్యాంక్ ఇవ్వబడింది. ఫీడ్‌బ్యాక్‌ను అందించడానికి ట్యాప్ చేయండి."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"ఈ నోటిఫికేషన్‌కు తక్కువ ర్యాంక్ ఇవ్వబడింది. ఫీడ్‌బ్యాక్‌ను అందించడానికి ట్యాప్ చేయండి."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"మెరుగైన నోటిఫికేషన్‌ల ట్రై"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"సూచించిన చర్యలు, రిప్లయిలు, అలాగే మరిన్ని పొందడం కొనసాగించడానికి మెరుగైన నోటిఫికేషన్‌లను ఆన్ చేయండి. Android అనుకూల నోటిఫికేషన్‌లు ఇకపై సపోర్ట్ చేయవు."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"ఆన్ చేయి"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"ఇప్పుడు కాదు"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"మరింత తెలుసుకోండి"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"కాంటాక్ట్ పేర్లు, మెసేజ్‌లు వంటి వ్యక్తిగత సమాచారంతో సహా మెరుగైన నోటిఫికేషన్‌లు అన్ని నోటిఫికేషన్ కంటెంట్‌ను చదవగలవు. ఈ ఫీచర్ నోటిఫికేషన్‌లను తీసివేయవచ్చు లేదా ఫోన్ కాల్‌లకు సమాధానం ఇవ్వడం వంటి నోటిఫికేషన్‌లలోని బటన్‌లపై చర్యలు తీసుకోవచ్చు.\n\nఈ ఫీచర్ ప్రాధాన్యత మోడ్‌ను కూడా ఆన్ లేదా ఆఫ్ చేయవచ్చు, ఇది సంబంధిత సెట్టింగ్‌లను మార్చగలదు."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"రొటీన్ మోడ్ సమాచార నోటిఫికేషన్"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"మామూలుగా ఛార్జ్ చేసేలోపు బ్యాటరీ ఖాళీ కావచ్చు"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"బ్యాటరీ జీవితకాలాన్ని పెంచడానికి బ్యాటరీ సేవర్ యాక్టివేట్ చేయబడింది"</string>
@@ -2279,17 +2266,13 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"మీరు ఇప్పుడు మీ స్క్రీన్ కొంత భాగాన్ని మాగ్నిఫై చేయవచ్చు"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"సెట్టింగ్‌లలో ఆన్ చేయండి"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"విస్మరించు"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"పరికరం మైక్రోఫోన్‌ను అన్‌బ్లాక్ చేయండి"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"పరికరం కెమెరాను అన్‌బ్లాక్ చేయండి"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; యాప్, ఇతర యాప్‌లు, సర్వీస్‌ల కోసం"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"అన్‌బ్లాక్ చేయండి"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"సెన్సార్ గోప్యత"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"యాప్ చిహ్నం"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"యాప్ బ్రాండింగ్ ఇమేజ్"</string>
     <string name="view_and_control_notification_title" msgid="4300765399209912240">"యాక్సెస్ సెట్టింగ్‌లను చెక్ చేయండి"</string>
-    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> మీ స్క్రీన్‌ను చూడవచ్చు, నియంత్రించవచ్చు. రివ్యూ చేయడానికి ట్యాప్ చేయండి."</string>
+    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> మీ స్క్రీన్‌ను చూడవచ్చు, కంట్రోల్ చేయవచ్చు. రివ్యూ చేయడానికి ట్యాప్ చేయండి."</string>
 </resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 1c00654..db38765 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -1852,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"โหมดประหยัดแบตเตอรี่จะเปิดธีมมืดและจำกัดหรือปิดกิจกรรมในเบื้องหลัง เอฟเฟกต์ภาพบางอย่าง และฟีเจอร์อย่างเช่น \"Ok Google\"\n\n"<annotation id="url">"ดูข้อมูลเพิ่มเติม"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"โหมดประหยัดแบตเตอรี่จะเปิดธีมมืดและจำกัดหรือปิดกิจกรรมในเบื้องหลัง เอฟเฟกต์ภาพบางอย่าง และฟีเจอร์อย่างเช่น \"Ok Google\""</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>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"ปิด"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"รับสาย"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"วิดีโอ"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"ปฏิเสธ"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"วางสาย"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"สายเรียกเข้า"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"การแจ้งเตือนนี้มีการลดระดับเป็นแบบปิดเสียง แตะเพื่อแสดงความคิดเห็น"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"การแจ้งเตือนนี้มีการเพิ่มระดับ แตะเพื่อแสดงความคิดเห็น"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"การแจ้งเตือนนี้มีการลดระดับ แตะเพื่อแสดงความคิดเห็น"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"ลองใช้การแจ้งเตือนที่เพิ่มประสิทธิภาพ"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"หากต้องการรับการดําเนินการ การตอบ และอื่นๆ ที่แนะนําต่อไป ให้เปิดการแจ้งเตือนที่เพิ่มประสิทธิภาพ ไม่รองรับการแจ้งเตือนแบบปรับอัตโนมัติใน Android อีกต่อไป"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"เปิด"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"ไว้ทีหลัง"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"ดูข้อมูลเพิ่มเติม"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"การแจ้งเตือนที่เพิ่มประสิทธิภาพจะอ่านเนื้อหาการแจ้งเตือนทั้งหมดได้ รวมถึงข้อมูลส่วนบุคคล เช่น ชื่อผู้ติดต่อและข้อความ ฟีเจอร์นี้ยังปิดการแจ้งเตือนหรือดำเนินการกับปุ่มต่างๆ ในการแจ้งเตือนได้ด้วย เช่น การรับสายเรียกเข้า\n\nอีกทั้งสามารถเปิดหรือปิดโหมดลำดับความสำคัญสูงและเปลี่ยนแปลงการตั้งค่าที่เกี่ยวข้อง"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"การแจ้งเตือนข้อมูลโหมดกิจวัตร"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"แบตเตอรี่อาจหมดก่อนการชาร์จปกติ"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"เปิดใช้งานโหมดประหยัดแบตเตอรี่แล้วเพื่อยืดอายุการใช้งานแบตเตอรี่"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index c05fe90..adaa774 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Na-update ng iyong admin"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Na-delete ng iyong admin"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Ino-on ng Pantipid ng Baterya ang Madilim na tema at nililimitahan o ino-off nito ang aktibidad sa background, ilang visual effect, at mga feature gaya ng “Hey Google”\n\n"<annotation id="url">"Matuto pa"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Ino-on ng Pantipid ng Baterya ang Madilim na tema at nililimitahan o ino-off nito ang aktibidad sa background, ilang visual effect, at mga feature gaya ng “Hey Google.”"</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Upang makatulong na mabawasan ang paggamit ng data, pinipigilan ng Data Saver ang ilang app na magpadala o makatanggap ng data sa background. Maaaring mag-access ng data ang isang app na ginagamit mo sa kasalukuyan, ngunit mas bihira na nito magagawa iyon. Halimbawa, maaaring hindi lumabas ang mga larawan hangga\'t hindi mo nata-tap ang mga ito."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"I-on ang Data Saver?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"I-on"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Isara"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Sagutin"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Tanggihan"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Ibaba"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Papasok na tawag"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Na-demote sa Naka-silent ang notification na ito. I-tap para magbigay ng feedback."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Itinaas ang ranggo ng notification na ito. I-tap para magbigay ng feedback."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Ibinaba ang ranggo ng notification na ito. I-tap para magbigay ng feedback."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Subukan ang enhanced notification"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Para patuloy na makakuha ng mga iminumungkahing pagkilos, sagot, at higit pa, i-on ang mga pinahusay na notification. Hindi na sinusuportahan ang Mga Adaptive na Notification ng Android."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"I-on"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Hindi ngayon"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Matuto pa"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Puwedeng basahin ng mga pinahusay na notification ang lahat ng notification, kabilang ang personal na impormasyon gaya ng mga pangalan ng contact at mga mensahe. Magagawa ring ng feature na ito na i-dismiss ang mga notification o gumawa ng mga pagkilos sa mga button sa mga notification, gaya ng pagsagot sa mga tawag sa telepono.\n\nPuwede ring i-on o i-off ng feature na ito ang Priority mode at baguhin ang mga kaugnay na setting."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notification ng impormasyon ng Routine Mode"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Maaaring maubos ang baterya bago ang karaniwang pag-charge"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Na-activate ang Pantipid ng Baterya para patagalin ang buhay ng baterya"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 87ca8e0..bd85322 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -324,7 +324,7 @@
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"Arama kayıtları"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"telefon arama kaydını okuma ve yazma"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"Telefon"</string>
-    <string name="permgroupdesc_phone" msgid="270048070781478204">"telefon çağrıları yapma ve yönetme"</string>
+    <string name="permgroupdesc_phone" msgid="270048070781478204">"telefon aramaları yapma ve yönetme"</string>
     <string name="permgrouplab_sensors" msgid="9134046949784064495">"Vücut sensörleri"</string>
     <string name="permgroupdesc_sensors" msgid="2610631290633747752">"hayati belirtilerinizle ilgili sensör verilerine erişme"</string>
     <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Pencere içeriğini alma"</string>
@@ -353,9 +353,9 @@
     <string name="permdesc_install_shortcut" msgid="4476328467240212503">"Uygulamaya, kullanıcı müdahalesi olmadan kısayolları Ana Ekrana ekleme izni verir."</string>
     <string name="permlab_uninstall_shortcut" msgid="295263654781900390">"kısayolların yüklemesini kaldırma"</string>
     <string name="permdesc_uninstall_shortcut" msgid="1924735350988629188">"Uygulamaya, kullanıcının müdahalesi olmadan kısayolları Ana Ekrandan kaldırma izni verir."</string>
-    <string name="permlab_processOutgoingCalls" msgid="4075056020714266558">"giden çağrıları yeniden yönlendirme"</string>
+    <string name="permlab_processOutgoingCalls" msgid="4075056020714266558">"giden aramaları yeniden yönlendirme"</string>
     <string name="permdesc_processOutgoingCalls" msgid="7833149750590606334">"Uygulamaya, giden bir çağrının numarası çevrilirken çağrıyı farklı bir numaraya yönlendirme ya da tamamen kapatma seçeneğiyle birlikte numarayı görme izni verir."</string>
-    <string name="permlab_answerPhoneCalls" msgid="4131324833663725855">"telefon çağrılarını yanıtla"</string>
+    <string name="permlab_answerPhoneCalls" msgid="4131324833663725855">"telefon aramalarını yanıtla"</string>
     <string name="permdesc_answerPhoneCalls" msgid="894386681983116838">"Uygulamanın gelen bir telefon çağrısına yanıt vermesine olanak tanır."</string>
     <string name="permlab_receiveSms" msgid="505961632050451881">"kısa mesajları al (SMS)"</string>
     <string name="permdesc_receiveSms" msgid="1797345626687832285">"Uygulamaya SMS iletilerini alma ve işleme izni verir. Bu izin, uygulamanın cihazınıza gönderilen iletileri takip edip size göstermeden silebileceği anlamına gelir."</string>
@@ -423,8 +423,8 @@
     <string name="permdesc_readCallLog" msgid="8964770895425873433">"Bu uygulama, çağrı geçmişinizi okuyabilir."</string>
     <string name="permlab_writeCallLog" msgid="670292975137658895">"çağrı günlüğüne yaz"</string>
     <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Uygulamaya tabletinizin çağrı günlüğünde (gelen ve giden çağrılarla ilgili veriler dahil olmak üzere) değişiklik yapma izni verir. Kötü amaçlı uygulamalar bu izni kullanarak çağrı günlüğünüzü silebilir veya değiştirebilir."</string>
-    <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Uygulamaya, Android TV cihazınızın çağrı günlüğünde (gelen ve giden çağrılarla ilgili veriler dahil olmak üzere) değişiklik yapma izni verir. Kötü amaçlı uygulamalar bu izni kullanarak çağrı günlüğünüzü silebilir veya değiştirebilir."</string>
-    <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Uygulamaya telefonunuzun çağrı günlüğünde (gelen ve giden çağrılarla ilgili veriler dahil olmak üzere) değişiklik yapma izni verir. Kötü amaçlı uygulamalar bu izni kullanarak çağrı günlüğünüzü silebilir veya değiştirebilir."</string>
+    <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Uygulamaya, Android TV cihazınızın arama günlüğünde (gelen ve giden aramalarla ilgili veriler dahil olmak üzere) değişiklik yapma izni verir. Kötü amaçlı uygulamalar bu izni kullanarak arama günlüğünüzü silebilir veya değiştirebilir."</string>
+    <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Uygulamaya telefonunuzun arama günlüğünde (gelen ve giden aramalarla ilgili veriler dahil olmak üzere) değişiklik yapma izni verir. Kötü amaçlı uygulamalar bu izni kullanarak arama günlüğünüzü silebilir veya değiştirebilir."</string>
     <string name="permlab_bodySensors" msgid="3411035315357380862">"vücut sensörlerine erişme (nabız takip cihazları gibi)"</string>
     <string name="permdesc_bodySensors" product="default" msgid="2365357960407973997">"Uygulamanın, nabzınız gibi fiziksel durumunuzu izleyen sensörlerin gönderdiği verilere erişmesine izin verir."</string>
     <string name="permlab_readCalendar" msgid="6408654259475396200">"Takvim etkinlikleri ve ayrıntılarını okuma"</string>
@@ -465,12 +465,12 @@
     <string name="permdesc_vibrate" msgid="8733343234582083721">"Uygulamaya, titreşimi denetleme izni verir."</string>
     <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Uygulamanın titreşim durumuna erişimesine izni verir."</string>
     <string name="permlab_callPhone" msgid="1798582257194643320">"telefon numaralarına doğrudan çağrı yap"</string>
-    <string name="permdesc_callPhone" msgid="5439809516131609109">"Uygulamaya sizin müdahaleniz olmadan telefon numaralarına çağrı yapma izni verir. Bu durum beklenmeyen ödemelere veya çağrılara neden olabilir. Ancak bu iznin, uygulamanın acil numaralara çağrı yapmasına olanak sağlamadığını unutmayın. Kötü amaçlı uygulamalar onayınız olmadan çağrılar yaparak sizi zarara sokabilir."</string>
+    <string name="permdesc_callPhone" msgid="5439809516131609109">"Uygulamaya sizin müdahaleniz olmadan telefon numaralarını arama izni verir. Bu durum beklenmeyen ödemelere veya aramalara neden olabilir. Ancak bu iznin, uygulamanın acil numaraları aramasına olanak sağlamadığını unutmayın. Kötü amaçlı uygulamalar onayınız olmadan aramalar yaparak sizi zarara sokabilir."</string>
     <string name="permlab_accessImsCallService" msgid="442192920714863782">"IMS çağrı hizmetine erişme"</string>
     <string name="permdesc_accessImsCallService" msgid="6328551241649687162">"Uygulamanın, sizin müdahaleniz olmadan telefon etmek için IMS hizmetini kullanmasına izin verir."</string>
     <string name="permlab_readPhoneState" msgid="8138526903259297969">"telefonun durumunu ve kimliğini okuma"</string>
     <string name="permdesc_readPhoneState" msgid="7229063553502788058">"Uygulamaya cihazdaki telefon özelliklerine erişme izni verir. Bu izin, uygulamanın telefon numarasını ve cihaz kimliğini, etkin bir çağrı olup olmadığını ve çağrıda bağlanılan karşı tarafın numarasını öğrenmesine olanak sağlar."</string>
-    <string name="permlab_manageOwnCalls" msgid="9033349060307561370">"çağrıları sistem üzerinden yönlendir"</string>
+    <string name="permlab_manageOwnCalls" msgid="9033349060307561370">"aramaları sistem üzerinden yönlendir"</string>
     <string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Uygulamanın, çağrı deneyimini iyileştirmek için çağrılarını sistem üzerinden yönlendirmesine olanak tanır."</string>
     <string name="permlab_callCompanionApp" msgid="3654373653014126884">"aramaları sistemde görüp denetleme."</string>
     <string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Uygulamanın cihazda devam eden aramaları görmesini ve denetlemesini sağlar. Bu bilgiler arasında aramaların yapıldığı numaralar ve aramaların durumu gibi bilgiler yer alır."</string>
@@ -671,8 +671,8 @@
     <string name="permdesc_sdcardRead" msgid="6872973242228240382">"Uygulamaya, paylaşılan depolama alanınızın içeriğini okuma izni verir."</string>
     <string name="permlab_sdcardWrite" msgid="4863021819671416668">"paylaşılan depolama alanımın içeriğini değiştir veya sil"</string>
     <string name="permdesc_sdcardWrite" msgid="8376047679331387102">"Uygulamanın paylaşılan depolama alanınıza içerik yazmasına izin verir."</string>
-    <string name="permlab_use_sip" msgid="8250774565189337477">"SIP çağrıları yapma/alma"</string>
-    <string name="permdesc_use_sip" msgid="3590270893253204451">"Uygulamanın SIP çağrıları yapmasına ve almasına izin verir."</string>
+    <string name="permlab_use_sip" msgid="8250774565189337477">"SIP aramaları yapma/alma"</string>
+    <string name="permdesc_use_sip" msgid="3590270893253204451">"Uygulamanın SIP aramaları yapmasına ve almasına izin verir."</string>
     <string name="permlab_register_sim_subscription" msgid="1653054249287576161">"yeni telekomünikasyon SIM bağlantılarını kaydettir"</string>
     <string name="permdesc_register_sim_subscription" msgid="4183858662792232464">"Uygulamanın yeni telekomünikasyon SIM bağlantıları kaydettirmesine izin verir."</string>
     <string name="permlab_register_call_provider" msgid="6135073566140050702">"yeni telekomünikasyon bağlantıları kaydettir"</string>
@@ -903,7 +903,7 @@
     <string name="lockscreen_transport_stop_description" msgid="1449552232598355348">"Durdur"</string>
     <string name="lockscreen_transport_rew_description" msgid="7680106856221622779">"Geri sar"</string>
     <string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"İleri sar"</string>
-    <string name="emergency_calls_only" msgid="3057351206678279851">"Yalnızca acil çağrılar için"</string>
+    <string name="emergency_calls_only" msgid="3057351206678279851">"Yalnızca acil aramalar için"</string>
     <string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Ağ kilitli"</string>
     <string name="lockscreen_sim_puk_locked_message" msgid="6618356415831082174">"SIM kart PUK kilidi devrede."</string>
     <string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Kullanıcı Rehberi\'ne bakın veya Müşteri Hizmetleri\'ne başvurun."</string>
@@ -1694,8 +1694,8 @@
     <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> hizmetini açarsanız cihazınız veri şifrelemeyi geliştirmek için ekran kilidinizi kullanmaz."</string>
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Erişebilirlik ihtiyaçlarınıza yardımcı olan uygulamalara tam kontrol verilmesi uygundur ancak diğer pek çok uygulama için uygun değildir."</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ekranı görüntüleme ve kontrol etme"</string>
-    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Ekrandaki tüm içeriği okuyabilir ve içeriği diğer uygulamaların üzerinde gösterebilir"</string>
-    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"İşlemleri görüntüleyin ve gerçekleştirin"</string>
+    <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Ekrandaki tüm içeriği okuyabilir ve içeriği diğer uygulamaların üzerinde gösterebilir."</string>
+    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"İşlemleri görüntüleme ve gerçekleştirme"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Bir uygulama veya donanım sensörüyle etkileşimlerinizi takip edebilir ve sizin adınıza uygulamalarla etkileşimde bulunabilir."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"İzin ver"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Reddet"</string>
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Yöneticiniz tarafından güncellendi"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Yöneticiniz tarafından silindi"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"Tamam"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Pil Tasarrufu, Koyu temayı açıp arka plan etkinliğini, bazı görsel efektleri ve \"Ok Google\" gibi özellikleri kapatır veya kısıtlar.\n\n"<annotation id="url">"Daha fazla bilgi"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Pil Tasarrufu, Koyu temayı açıp arka plan etkinliğini, bazı görsel efektleri ve \"Ok Google\" gibi özellikleri kapatır veya kısıtlar."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Veri kullanımını azaltmaya yardımcı olması için Veri Tasarrufu, bazı uygulamaların arka planda veri göndermesini veya almasını engeller. Şu anda kullandığınız bir uygulama veri bağlantısına erişebilir, ancak bunu daha seyrek yapabilir. Bu durumda örneğin, siz resimlere dokunmadan resimler görüntülenmez."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Veri Tasarrufu açılsın mı?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Aç"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Kapat"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Yanıtla"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Reddet"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Kapat"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Gelen çağrı"</string>
@@ -2056,8 +2055,8 @@
     <string name="harmful_app_warning_title" msgid="8794823880881113856">"Zararlı uygulama tespit edildi"</string>
     <string name="slices_permission_request" msgid="3677129866636153406">"<xliff:g id="APP_0">%1$s</xliff:g> uygulaması, <xliff:g id="APP_2">%2$s</xliff:g> dilimlerini göstermek istiyor"</string>
     <string name="screenshot_edit" msgid="7408934887203689207">"Düzenle"</string>
-    <string name="volume_dialog_ringer_guidance_vibrate" msgid="2055927873175228519">"Çağrılar ve bildirimler titreşim yapacak"</string>
-    <string name="volume_dialog_ringer_guidance_silent" msgid="1011246774949993783">"Çağrılar ve bildirimlerin sesi kapalı olacak"</string>
+    <string name="volume_dialog_ringer_guidance_vibrate" msgid="2055927873175228519">"Aramalar ve bildirimler titreşim yapacak"</string>
+    <string name="volume_dialog_ringer_guidance_silent" msgid="1011246774949993783">"Aramalar ve bildirimlerin sesi kapalı olacak"</string>
     <string name="notification_channel_system_changes" msgid="2462010596920209678">"Sistem değişiklikleri"</string>
     <string name="notification_channel_do_not_disturb" msgid="7832584281883687653">"Rahatsız Etmeyin"</string>
     <string name="zen_upgrade_notification_visd_title" msgid="2001148984371968620">"Yeni: Rahatsız Etmeyin ayarı bildirimleri gizliyor"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Bu bildirimin önem derecesi, \"Sessiz\" seviyesine düşürüldü. Geri bildirimde bulunmak için dokunun."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Bu bildirimin önem derecesi yükseltildi. Geri bildirimde bulunmak için dokunun."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Bu bildirimin önem derecesi düşürüldü. Geri bildirimde bulunmak için dokunun."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Gelişmiş bildirimleri deneyin"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Önerilen işlemleri, yanıtları ve diğer içerikleri almaya devam etmek için gelişmiş bildirimleri açın. Android Uyarlamalı Bildirimler artık desteklenmiyor."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Aç"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Şimdi değil"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Daha fazla bilgi"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Gelişmiş bildirimler, kişiler ve mesajlar gibi kişisel bilgiler dahil olmak üzere tüm bildirim içeriklerini okuyabilir. Bu özellik ayrıca bildirimleri kapatabilir veya bildirimlerdeki düğmeler üzerinde telefon çağrılarını yanıtlamak gibi işlemler yapabilir.\n\nBu özellik ayrıca Öncelik modunu açıp kapatabilir ve ilgili ayarları değiştirebilir."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Rutin Modu bilgi bildirimi"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Pil normal şarjdan önce bitebilir"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Pilin ömrünü uzatmak için Pil Tasarrufu etkinleştirildi"</string>
@@ -2271,7 +2264,7 @@
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
     <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Yeni büyütme ayarları"</string>
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Artık ekranınızın bir bölümünü büyütebilirsiniz"</string>
-    <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Ayarlar\'da aç"</string>
+    <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Ayarlar\'da etkinleştir"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Kapat"</string>
     <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Cihaz mikrofonunun engellemesini kaldır"</string>
     <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Cihaz kamerasının engellemesini kaldır"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 7a74489..b95aa88 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -544,10 +544,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Дозволяє додатку знаходити поблизу пристрої Bluetooth і створювати з ними пару"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"підключатися до пристроїв із Bluetooth, з якими є пара"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Дозволяє додатку підключатися до пристроїв із Bluetooth, з якими створено пару"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"показувати рекламу на пристроях із Bluetooth поблизу"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Додаток зможе показувати рекламу на пристроях із Bluetooth поблизу"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"визначення відстані між пристроями поблизу з надширокосмуговим зв’язком"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"З цим дозволом додаток може визначати відстань між розташованими поблизу пристроями з надширокосмуговим зв’язком"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Використання інформації з платіжного NFC-сервісу"</string>
@@ -1741,7 +1739,7 @@
     <string name="accessibility_service_warning_description" msgid="291674995220940133">"Повний доступ доречний для додатків, які надають спеціальні можливості, але його не варто відкривати для більшості інших додатків."</string>
     <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Перегляд і контроль екрана"</string>
     <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Цей сервіс може переглядати всі дані на екрані й показувати вміст над іншими додатками."</string>
-    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Переглянути й виконати дії"</string>
+    <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Перегляд і виконання дій"</string>
     <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Цей сервіс може відстежувати вашу взаємодію з додатком чи апаратним датчиком, а також взаємодіяти з додатками від вашого імені."</string>
     <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Дозволити"</string>
     <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Заборонити"</string>
@@ -1900,10 +1898,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"У режимі енергозбереження вмикається темна тема й обмежуються чи вимикаються фонова робота додатків, деякі візуальні ефекти та інші функції, як-от \"Ok Google\"\n\n"<annotation id="url">"Докладніше"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"У режимі енергозбереження вмикається темна тема й обмежуються чи вимикаються фонова робота додатків, деякі візуальні ефекти та інші функції, як-от \"Ok Google\"."</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>
@@ -1995,6 +1991,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Закрити"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Відповісти"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Відео"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Відхилити"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Завершити"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Вхідний виклик"</string>
@@ -2142,18 +2139,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Важливість цього сповіщення знижено до рівня \"Без звуку\". Натисніть, щоб надіслати відгук."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Важливість цього сповіщення підвищено. Натисніть, щоб надіслати відгук."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Важливість цього сповіщення знижено. Натисніть, щоб надіслати відгук."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Спробуйте покращені сповіщення"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Щоб і надалі отримувати пропозиції дій, відповідей тощо, увімкніть покращені сповіщення. Адаптивні сповіщення Android більше не підтримуються."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Увімкнути"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Не зараз"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Докладніше"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Покращені сповіщення дають змогу читати весь вміст сповіщень, зокрема особисту інформацію, як-от імена контактів і повідомлення. Крім того, ви зможете відхиляти сповіщення або натискати кнопки в них, щоб виконувати певні дії, наприклад відповідати на телефонні дзвінки.\n\nЦя функція також дає змогу вмикати й вимикати режим пріоритетності та змінювати відповідні налаштування."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Сповіщення про послідовнсть дій"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Акумулятор може розрядитися раніше ніж зазвичай"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Режим енергозбереження активовано для збільшення часу роботи акумулятора"</string>
@@ -2343,14 +2334,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Тепер можна збільшувати частину екрана"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Увімкнути в налаштуваннях"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Закрити"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Розблокуйте мікрофон пристрою"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Розблокуйте камеру пристрою"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Для &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; та всіх додатків і сервісів"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Розблокувати"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Конфіденційність датчиків"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Значок додатка"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Зображення фірмової символіки додатка"</string>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index 854741b..9291cd2 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -319,10 +319,8 @@
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"اپنی جسمانی سرگرمی تک رسائی حاصل کریں"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"کیمرا"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"تصاویر لیں اور ویڈیو ریکارڈ کریں"</string>
-    <!-- no translation found for permgrouplab_nearby_devices (5529147543651181991) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_nearby_devices (3213561597116913508) -->
-    <skip />
+    <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"قریبی آلات"</string>
+    <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"قریبی آلات دریافت کریں اور ان سے منسلک ہوں"</string>
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"کال لاگز"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"فون کال لاگ پڑھ کر لکھیں"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"فون"</string>
@@ -540,14 +538,10 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"ایپ کو قریبی بلوٹوتھ آلات دریافت کرنے اور ان کا جوڑا بنانے کی اجازت دیں"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"جوڑا بنائے ہوئے بلوٹوتھ آلات سے منسلک کریں"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"ایپ کو جوڑا بنائے ہوئے بلوٹوتھ آلات سے منسلک کرنے کی اجازت دیں"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
-    <!-- no translation found for permlab_uwb_ranging (8141915781475770665) -->
-    <skip />
-    <!-- no translation found for permdesc_uwb_ranging (2519723069604307055) -->
-    <skip />
+    <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_preferredPaymentInfo" msgid="5274423844767445054">"‏ترجیح شدہ NFC ادائیگی کی سروس کی معلومات"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"‏ایپ کو رجسٹرشدہ ایڈز اور روٹ ڈسٹنیشن جیسی ترجیح شدہ nfc ادائیگی سروس کی معلومات حاصل کرنے کی اجازت دیتا ہے۔"</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"‏Near Field کمیونیکیشن کنٹرول کریں"</string>
@@ -1858,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"‏بیٹری سیور گہری تھیم کو آن کرتی ہے اور پس منظر کی سرگرمی، کچھ بصری اثرات اور \"Hey Google\" جیسی خصوصیات کو محدود یا آف کرتی ہے\n\n"<annotation id="url">"مزید جانیں"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"‏بیٹری سیور گہری تھیم کو آن کرتی ہے اور پس منظر کی سرگرمی، کچھ بصری اثرات اور \"Hey Google\" جیسی خصوصیات کو محدود یا آف کرتی ہے۔"</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>
@@ -1937,6 +1929,8 @@
     <string name="close_button_text" msgid="10603510034455258">"بند کریں"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"جواب"</string>
+    <!-- no translation found for call_notification_answer_video_action (2086030940195382249) -->
+    <skip />
     <string name="call_notification_decline_action" msgid="3700345945214000726">"مسترد کریں"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"منقطع کر دیں"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"اِن کمنگ کال"</string>
@@ -2080,18 +2074,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"اس اطلاع کو خاموش پر ڈیموٹ کیا گيا۔ تاثرات فراہم کرنے کے ليے تھپتھپائیں۔"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"اس اطلاع کو اعلی درجہ دیا گیا۔ تاثرات فراہم کرنے کے ليے تھپتھپائیں۔"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"اس اطلاع کو کم درجہ دیا گیا۔ تاثرات فراہم کرنے کے ليے تھپتھپائیں۔"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"بہتر کردہ اطلاعات آزمائیں"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"‏تجویز کردہ کارروائیاں، جوابات اور مزید بہت کچھ حاصل کرنا جاری رکھنے کے لیے بہتر کردہ اطلاعات آن کریں۔ Android اڈاپٹیو اطلاعات اب تعاون یافتہ نہیں ہیں۔"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"آن کریں"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"ابھی نہیں"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"مزید جانیں"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"بہتر کردہ اطلاعات رابطوں کے نام اور پیغامات جیسی ذاتی معلومات سمیت تمام اطلاعی مواد پڑھ سکتی ہیں۔ یہ خصوصیت اطلاعات کو برخاست بھی کر سکتی ہے یا کالز کا جواب دینے جیسے اطلاعات میں نظر آنے والے بٹنوں سے کارروائیاں کر سکتی ہے۔\n\nیہ خصوصیت ترجیحی موڈ کو آن یا آف بھی کر سکتی ہے اور متعلقہ ترتیبات کو تبدیل کر سکتی ہے۔"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"روٹین موڈ معلومات کی اطلاع"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"معمول چارج سے پہلے بیٹری ختم ہو سکتی ہے"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"بیٹری لائف کو بڑھانے کے لیے بیٹری سیور کو فعال کر دیا گیا ہے"</string>
@@ -2279,17 +2267,13 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"اب آپ اپنی اسکرین کے حصے کو بڑا کر سکتے ہیں"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"ترتیبات میں آن کریں"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"برخاست کریں"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"آلے کا مائیکروفون غیر مسدود کریں"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"آلے کا کیمرا غیر مسدود کریں"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"‏‎&lt;b&gt;‎<xliff:g id="APP">%s</xliff:g>‏‎&lt;/b&gt;‎ اور سبھی ایپس اور سروسز کے لیے"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"غیر مسدود کریں"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"سینسر کی رازداری"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"ایپلیکیشن کا آئیکن"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"ایپلیکیشن کی برانڈنگ تصویر"</string>
     <string name="view_and_control_notification_title" msgid="4300765399209912240">"رسائی کی ترتیبات چیک کریں"</string>
-    <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> آپ کی اسکرین کو دیکھ اور کنٹرول کر سکتی ہیں۔ جائزے کے لیے تھپتھپائیں۔"</string>
+    <string name="view_and_control_notification_content" msgid="8003766498562604034">"‫<xliff:g id="SERVICE_NAME">%s</xliff:g> آپ کی اسکرین کو دیکھ اور کنٹرول کر سکتی ہیں۔ جائزے کے لیے تھپتھپائیں۔"</string>
 </resources>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index a40e083..012f31e 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -319,10 +319,8 @@
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"jismoniy harakatlar axborotiga ruxsat"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"Kamera"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"suratga olish va video yozib olish"</string>
-    <!-- no translation found for permgrouplab_nearby_devices (5529147543651181991) -->
-    <skip />
-    <!-- no translation found for permgroupdesc_nearby_devices (3213561597116913508) -->
-    <skip />
+    <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Yaqin-atrofdagi qurilmalar"</string>
+    <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"yaqin-atrofdagi qurilmalarni aniqlash va ulanish"</string>
     <string name="permgrouplab_calllog" msgid="7926834372073550288">"Chaqiruvlar jurnali"</string>
     <string name="permgroupdesc_calllog" msgid="2026996642917801803">"telefon chaqiruvlari jurnalini o‘qish va unga yozish"</string>
     <string name="permgrouplab_phone" msgid="570318944091926620">"Telefon"</string>
@@ -542,10 +540,8 @@
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Ilovaga juftlangan Bluetooth qurilmalariga ulanish uchun ruxsat beradi"</string>
     <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"atrofdagi Bluetooth qurilmalariga reklama berish"</string>
     <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Ilovaga yaqin-atrofdagi Bluetooth qurilmalariga reklama yuborish imkonini beradi"</string>
-    <!-- no translation found for permlab_uwb_ranging (8141915781475770665) -->
-    <skip />
-    <!-- no translation found for permdesc_uwb_ranging (2519723069604307055) -->
-    <skip />
+    <string name="permlab_uwb_ranging" msgid="8141915781475770665">"yaqin atrofdagi ultra keng polosali qurilmalarining nisbiy joylashishini aniqlash"</string>
+    <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Ilovaga yaqin atrofdagi ultra keng polosali qurilmalarining nisbiy joylashishini aniqlashga ruxsat beradi"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Asosiy NFC toʻlov xizmati haqidagi axborot"</string>
     <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"Bu ilovaga asosiy NFC toʻlov xizmati haqidagi axborotni olish imkonini beradi (masalan, qayd qilingan AID identifikatorlari va marshrutning yakuniy manzili)."</string>
     <string name="permlab_nfc" msgid="1904455246837674977">"NFC modulini boshqarish"</string>
@@ -1856,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Administrator tomonidan yangilangan"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administrator tomonidan o‘chirilgan"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Quvvat tejash funksiyasi Tungi mavzuni va cheklovlarni yoqadi va fondagi harakatlar, vizual effektlar va “Ok Google” kabi boshqa funksiyalarni faolsizlantiradi yoki cheklaydi.\n\n"<annotation id="url">"Batafsil"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Quvvat tejash funksiyasi Tungi mavzuni va cheklovlarni yoqadi va fondagi harakatlar, vizual effektlar va “Ok Google” kabi boshqa funksiyalarni faolsizlantiradi yoki cheklaydi."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Trafik tejash rejimida ayrim ilovalar uchun orqa fonda internetdan foydalanish imkoniyati cheklanadi. Siz ishlatayotgan ilova zaruratga qarab internet-trafik sarflashi mumkin, biroq cheklangan miqdorda. Masalan, rasmlar ustiga bosmaguningizcha ular yuklanmaydi."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Trafik tejash yoqilsinmi?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Yoqish"</string>
@@ -1935,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Yopish"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Javob berish"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Rad etish"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Tugatish"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Kiruvchi chaqiruv"</string>
@@ -2078,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Bu bildirishnoma darajasi Tovushsiz darajaga tushirildi Fikr-mulohaza bildirish uchun bosing."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Bu bildirishnoma darajasi oshirildi. Fikr-mulohaza bildirish uchun bosing."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Bu bildirishnoma darajasi pasaytirildi. Fikr-mulohaza bildirish uchun bosing."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Yangicha bildirishnomalar"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Amallar, javoblar va boshqa takliflarni olishda davom etish uchun yaxshilangan bildirishnomalarni yoqing. Android moslashuvchan bildirishnomalari endi ishlamaydi."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Yoqish"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Hozir emas"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Batafsil"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Yangicha bildirishnomalar funksiyasi barcha bildirishnomalarni, jumladan, shaxsiy maʼlumotlarni (kontakt nomlari va xabarlar) oʻqiy oladi. Shuningdek, bu funksiya bildirishnomalarni yopishi yoki telefon chaqiruvlariga javob berish kabi bildirishnomalarda tugmalar bilan amallar bajarishi mumkin.\n\nBu funksiya Faqat muhim rejimini yoqishi va faolsizlantirishi yoki unga aloqador sozlamalarni oʻzgartirishi ham mumkin."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Kun tartibi rejimi haqidagi bildirishnoma"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Batareya quvvati odatdagidan ertaroq tugashi mumkin"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Batareya quvvatini uzoqroq vaqtga yetkazish uchun quvvat tejash rejimi yoqildi"</string>
@@ -2284,6 +2273,6 @@
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Sensorlar maxfiyligi"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ilova belgisi"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Ilova brendining rasmi"</string>
-    <string name="view_and_control_notification_title" msgid="4300765399209912240">"Kirish sozlamalarini tekshiring"</string>
+    <string name="view_and_control_notification_title" msgid="4300765399209912240">"Ruxsat sozlamalarini tekshiring"</string>
     <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ekraningizni koʻrishi va boshqarishi mumkin. Tekshirish uchun bosing."</string>
 </resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 41edab4..7a949b7 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -531,17 +531,15 @@
     <string name="permdesc_changeWimaxState" product="tv" msgid="5373274458799425276">"Cho phép ứng dụng kết nối và ngắt kết nối thiết bị Android TV khỏi mạng WiMAX."</string>
     <string name="permdesc_changeWimaxState" product="default" msgid="1551666203780202101">"Cho phép ứng dụng kết nối điện thoại và ngắt kết nối điện thoại khỏi mạng WiMAX."</string>
     <string name="permlab_bluetooth" msgid="586333280736937209">"ghép nối với thiết bị Bluetooth"</string>
-    <string name="permdesc_bluetooth" product="tablet" msgid="3053222571491402635">"Cho phép ứng dụng xem cấu hình của Bluetooth trên máy tính bảng và tạo và chấp nhận các kết nối với các thiết bị được ghép nối."</string>
-    <string name="permdesc_bluetooth" product="tv" msgid="8851534496561034998">"Cho phép ứng dụng xem cấu hình của Bluetooth trên thiết bị Android TV, đồng thời tạo và chấp nhận các kết nối với thiết bị được ghép nối."</string>
-    <string name="permdesc_bluetooth" product="default" msgid="2779606714091276746">"Cho phép ứng dụng xem cấu hình của Bluetooth trên điện thoại, tạo và chấp nhận các kết nối với các thiết bị được ghép nối."</string>
+    <string name="permdesc_bluetooth" product="tablet" msgid="3053222571491402635">"Cho phép ứng dụng xem cấu hình của Bluetooth trên máy tính bảng và tạo và chấp nhận các kết nối với các thiết bị đã ghép nối."</string>
+    <string name="permdesc_bluetooth" product="tv" msgid="8851534496561034998">"Cho phép ứng dụng xem cấu hình của Bluetooth trên thiết bị Android TV, đồng thời tạo và chấp nhận các kết nối với thiết bị đã ghép nối."</string>
+    <string name="permdesc_bluetooth" product="default" msgid="2779606714091276746">"Cho phép ứng dụng xem cấu hình của Bluetooth trên điện thoại, tạo và chấp nhận các kết nối với các thiết bị đã ghép nối."</string>
     <string name="permlab_bluetooth_scan" msgid="5402587142833124594">"khám phá và ghép nối với thiết bị Bluetooth ở gần"</string>
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Cho phép ứng dụng khám phá và ghép nối với các thiết bị Bluetooth ở gần"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"kết nối với các thiết bị Bluetooth đã ghép nối"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Cho phép ứng dụng kết nối với thiết bị Bluetooth đã ghép nối"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"quảng cáo trên các thiết bị Bluetooth ở gần"</string>
+    <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Cho phép ứng dụng quảng cáo trên các thiết bị Bluetooth ở gần"</string>
     <string name="permlab_uwb_ranging" msgid="8141915781475770665">"xác định khoảng cách tương đối giữa các thiết bị ở gần dùng Băng tần siêu rộng"</string>
     <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Cho phép ứng dụng xác định khoảng cách tương đối giữa các thiết bị ở gần dùng Băng tần siêu rộng"</string>
     <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Thông tin về dịch vụ thanh toán qua công nghệ giao tiếp tầm gần (NFC) được ưu tiên"</string>
@@ -1388,8 +1386,8 @@
     <string name="share_remote_bugreport_action" msgid="7630880678785123682">"CHIA SẺ"</string>
     <string name="decline_remote_bugreport_action" msgid="4040894777519784346">"TỪ CHỐI"</string>
     <string name="select_input_method" msgid="3971267998568587025">"Chọn phương thức nhập"</string>
-    <string name="show_ime" msgid="6406112007347443383">"Hiển thị bàn phím ảo trên màn hình trong khi bàn phím vật lý đang hoạt động"</string>
-    <string name="hardware" msgid="1800597768237606953">"Hiển thị bàn phím ảo"</string>
+    <string name="show_ime" msgid="6406112007347443383">"Hiện bàn phím ảo trên màn hình trong khi bàn phím vật lý đang hoạt động"</string>
+    <string name="hardware" msgid="1800597768237606953">"Hiện bàn phím ảo"</string>
     <string name="select_keyboard_layout_notification_title" msgid="4427643867639774118">"Định cấu hình bàn phím vật lý"</string>
     <string name="select_keyboard_layout_notification_message" msgid="8835158247369158154">"Nhấn để chọn ngôn ngữ và bố cục"</string>
     <string name="fast_scroll_alphabet" msgid="8854435958703888376">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
@@ -1854,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Do quản trị viên của bạn cập nhật"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Do quản trị viên của bạn xóa"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Tính năng Tiết kiệm pin sẽ bật Giao diện tối, đồng thời tắt hoặc hạn chế hoạt động chạy trong nền, một số hiệu ứng hình ảnh và các tính năng như lệnh “Ok Google”\n\n"<annotation id="url">"Tìm hiểu thêm"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Tính năng Tiết kiệm pin sẽ bật Giao diện tối, đồng thời tắt hoặc hạn chế hoạt động chạy trong nền, một số hiệu ứng hình ảnh và các tính năng như lệnh “Ok Google”."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Để giúp giảm mức sử dụng dữ liệu, Trình tiết kiệm dữ liệu sẽ chặn một số ứng dụng gửi hoặc nhận dữ liệu trong nền. Ứng dụng mà bạn hiện sử dụng có thể dùng dữ liệu nhưng tần suất sẽ giảm. Ví dụ: hình ảnh sẽ không hiển thị cho đến khi bạn nhấn vào hình ảnh đó."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Bật Trình tiết kiệm dữ liệu?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Bật"</string>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Đóng"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Trả lời"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Từ chối"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Kết thúc"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Cuộc gọi đến"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Hệ thống đã hạ mức ưu tiên của thông báo này xuống thành Im lặng. Hãy nhấn để chia sẻ ý kiến phản hồi."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Hệ thống đã nâng mức ưu tiên của thông báo này. Hãy nhấn để chia sẻ ý kiến phản hồi."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Hệ thống đã hạ mức ưu tiên của thông báo này. Hãy nhấn để chia sẻ ý kiến phản hồi."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Dùng thử thông báo nâng cao"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Để tiếp tục nhận các thao tác đề xuất, câu trả lời và nhiều nội dung khác, hãy bật thông báo nâng cao. Thông báo thích ứng trên Android không được hỗ trợ nữa."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Bật"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Để sau"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Tìm hiểu thêm"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Thông báo nâng cao có thể đọc mọi nội dung thông báo, bao gồm cả thông tin cá nhân như tên liên hệ và tin nhắn. Tính năng này cũng có thể đóng các thông báo hoặc thực hiện thao tác đối với các nút trong thông báo, chẳng hạn như trả lời cuộc gọi điện thoại.\n\nTính năng này cũng có thể bật hoặc tắt Chế độ ưu tiên và thay đổi các chế độ cài đặt liên quan."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Thông báo cung cấp thông tin về chế độ sạc thông thường"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Pin có thể hết trước khi sạc bình thường"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Trình tiết kiệm pin được kích hoạt để kéo dài thời lượng pin"</string>
@@ -2271,21 +2262,17 @@
     <string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string>
     <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
-    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Chế độ cài đặt phóng to mới"</string>
+    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Chế độ phóng to mới"</string>
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Giờ đây, bạn có thể phóng to một phần màn hình"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Bật trong phần Cài đặt"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"Đóng"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Bỏ chặn micrô của thiết bị"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Bỏ chặn máy ảnh của thiết bị"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Cho &lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt; cũng như mọi ứng dụng và dịch vụ"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Bỏ chặn"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Quyền riêng tư khi sử dụng cảm biến"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Biểu tượng ứng dụng"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Hình ảnh thương hiệu của ứng dụng"</string>
-    <string name="view_and_control_notification_title" msgid="4300765399209912240">"Kiểm tra chế độ cài đặt quyền truy cập"</string>
+    <string name="view_and_control_notification_title" msgid="4300765399209912240">"Hãy kiểm tra chế độ cài đặt quyền truy cập"</string>
     <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> có thể xem và điều khiển màn hình của bạn. Nhấn để xem lại."</string>
 </resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 8d8485d..d7f3165 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"允许该应用发现附近的蓝牙设备并与其配对"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"连接到已配对的蓝牙设备"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"允许该应用连接到已配对的蓝牙设备"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <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_preferredPaymentInfo" msgid="5274423844767445054">"首选 NFC 付款服务信息"</string>
@@ -1388,7 +1386,7 @@
     <string name="share_remote_bugreport_action" msgid="7630880678785123682">"分享"</string>
     <string name="decline_remote_bugreport_action" msgid="4040894777519784346">"拒绝"</string>
     <string name="select_input_method" msgid="3971267998568587025">"选择输入法"</string>
-    <string name="show_ime" msgid="6406112007347443383">"在连接到实体键盘时保持显示"</string>
+    <string name="show_ime" msgid="6406112007347443383">"开启后,连接到实体键盘时,它会一直显示在屏幕上"</string>
     <string name="hardware" msgid="1800597768237606953">"显示虚拟键盘"</string>
     <string name="select_keyboard_layout_notification_title" msgid="4427643867639774118">"配置实体键盘"</string>
     <string name="select_keyboard_layout_notification_message" msgid="8835158247369158154">"点按即可选择语言和布局"</string>
@@ -1854,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"省电模式会开启深色主题,并限制或关闭后台活动、部分视觉效果和“Ok Google”等功能\n\n"<annotation id="url">"了解详情"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"省电模式会开启深色主题,并限制或关闭后台活动、部分视觉效果和“Ok Google”等功能。"</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>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"关闭"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>:<xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"接听"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"视频通话"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"拒接"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"挂断"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"来电"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"系统已将此通知的重要性降低为“静音”。点按即可提供反馈。"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"系统已提升此通知的重要性。点按即可提供反馈。"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"系统已降低此通知的重要性。点按即可提供反馈。"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"试用增强型通知"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"如需继续接收建议的操作、回复等内容,请开启增强型通知功能。系统不再支持 Android 自动调节通知功能。"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"开启"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"以后再说"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"了解详情"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"增强型通知功能可以读取所有通知内容,包括联系人姓名和消息等个人信息。该功能也能关闭通知或触发通知中的按钮,例如接听来电。\n\n此外,该功能还能开启或关闭“优先”模式,以及更改相关设置。"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"日常安排模式信息通知"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"电池电量可能会在您平时的充电时间之前耗尽"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"已启用省电模式以延长电池续航时间"</string>
@@ -2275,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"现在您可以放大屏幕上的部分内容"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"在“设置”中开启"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"关闭"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"取消禁用设备麦克风"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"取消禁用设备摄像头"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"针对&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt;及所有应用和服务"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"取消禁用"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"传感器隐私权"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"应用图标"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"应用品牌图片"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 68e06b13..858c179 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -311,7 +311,7 @@
     <string name="permgroupdesc_calendar" msgid="6762751063361489379">"存取您的日曆"</string>
     <string name="permgrouplab_sms" msgid="795737735126084874">"短訊"</string>
     <string name="permgroupdesc_sms" msgid="5726462398070064542">"傳送和查看短訊"</string>
-    <string name="permgrouplab_storage" msgid="1938416135375282333">"檔案及媒體"</string>
+    <string name="permgrouplab_storage" msgid="1938416135375282333">"檔案和媒體"</string>
     <string name="permgroupdesc_storage" msgid="6351503740613026600">"存取裝置上的相片、媒體和檔案"</string>
     <string name="permgrouplab_microphone" msgid="2480597427667420076">"麥克風"</string>
     <string name="permgroupdesc_microphone" msgid="1047786732792487722">"錄音"</string>
@@ -445,7 +445,7 @@
     <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"即使您不使用此應用程式,它仍可隨時存取位置。"</string>
     <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"更改音效設定"</string>
     <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"允許應用程式修改全域音頻設定,例如音量和用於輸出的喇叭。"</string>
-    <string name="permlab_recordAudio" msgid="1208457423054219147">"錄製音效"</string>
+    <string name="permlab_recordAudio" msgid="1208457423054219147">"錄音"</string>
     <string name="permdesc_recordAudio" msgid="5857246765327514062">"此應用程式在使用期間可使用麥克風錄音。"</string>
     <string name="permlab_recordBackgroundAudio" msgid="5891032812308878254">"在背景錄音"</string>
     <string name="permdesc_recordBackgroundAudio" msgid="1992623135737407516">"此應用程式可隨時使用麥克風錄音。"</string>
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"允許應用程式探索並配對附近的藍牙裝置"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"連接附近的藍牙裝置"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"允許應用程式連接已配對的藍牙裝置"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <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_preferredPaymentInfo" msgid="5274423844767445054">"由用戶允許授權的 NFC 付款服務資訊"</string>
@@ -1854,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"「省電模式」會開啟深色主題背景並限制或關閉背景活動、部分視覺效果,以及「Ok Google」啟動字詞等功能。\n\n"<annotation id="url">"瞭解詳情"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"「省電模式」會開啟深色主題背景並限制或關閉背景活動、部分視覺效果,以及「Ok Google」啟動字詞等功能。"</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>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"關閉"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>:<xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"接聽"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"視像"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"拒接"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"掛斷"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"來電"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"此通知的重要性已降低為「靜音」。輕按即可提供意見。"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"此通知的重要性已提升。輕按即可提供意見。"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"此通知的重要性已降級。輕按即可提供意見。"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"試用強化通知"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"如要繼續收到建議操作和回覆等內容,請開啟強化通知功能。系統已不再支援 Android 自動調整通知功能。"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"開啟"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"暫時不要"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"瞭解詳情"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"強化通知功能可讀取所有通知內容 (包括聯絡人姓名和訊息等個人資料),以及關閉通知或針對通知中的按鈕採取行動,例如接聽來電。\n\n此功能亦可開啟或關閉「優先」模式及變更相關設定。"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"「日常安排模式」資料通知"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"電量可能會在日常充電前耗盡"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"「省電模式」已啟用,以便延長電池壽命"</string>
@@ -2275,14 +2266,10 @@
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"您現在可以放大部分畫面"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"在「設定」中開啟"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"關閉"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"解除封鎖裝置麥克風"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"解除封鎖裝置相機"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"適用於「&lt;b&gt;<xliff:g id="APP">%s</xliff:g>&lt;/b&gt;」和所有應用程式及服務"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"解除封鎖"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"感應器私隱"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"應用程式圖示"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"應用程式品牌形象"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 78f326b..8770db7 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -315,7 +315,7 @@
     <string name="permgroupdesc_storage" msgid="6351503740613026600">"存取裝置中的相片、媒體和檔案"</string>
     <string name="permgrouplab_microphone" msgid="2480597427667420076">"麥克風"</string>
     <string name="permgroupdesc_microphone" msgid="1047786732792487722">"錄音"</string>
-    <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"體能活動記錄"</string>
+    <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"體能活動"</string>
     <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"存取你的體能活動記錄"</string>
     <string name="permgrouplab_camera" msgid="9090413408963547706">"相機"</string>
     <string name="permgroupdesc_camera" msgid="7585150538459320326">"拍照及錄製影片"</string>
@@ -350,9 +350,9 @@
     <string name="permlab_fullScreenIntent" msgid="4310888199502509104">"在已鎖定的裝置上以全螢幕活動的形式顯示通知"</string>
     <string name="permdesc_fullScreenIntent" msgid="1100721419406643997">"允許應用程式在已鎖定的裝置上以全螢幕活動的形式顯示通知"</string>
     <string name="permlab_install_shortcut" msgid="7451554307502256221">"安裝捷徑"</string>
-    <string name="permdesc_install_shortcut" msgid="4476328467240212503">"允許應用程式自動新增主螢幕捷徑。"</string>
+    <string name="permdesc_install_shortcut" msgid="4476328467240212503">"允許應用程式自動新增主畫面捷徑。"</string>
     <string name="permlab_uninstall_shortcut" msgid="295263654781900390">"解除安裝捷徑"</string>
-    <string name="permdesc_uninstall_shortcut" msgid="1924735350988629188">"允許應用程式自動移除主螢幕捷徑。"</string>
+    <string name="permdesc_uninstall_shortcut" msgid="1924735350988629188">"允許應用程式自動移除主畫面捷徑。"</string>
     <string name="permlab_processOutgoingCalls" msgid="4075056020714266558">"重設撥號路徑"</string>
     <string name="permdesc_processOutgoingCalls" msgid="7833149750590606334">"允許應用程式在撥打電話期間查看撥出的電話號碼,並可選擇改撥其他號碼或中斷通話。"</string>
     <string name="permlab_answerPhoneCalls" msgid="4131324833663725855">"接聽電話"</string>
@@ -538,10 +538,8 @@
     <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"允許應用程式探索鄰近藍牙裝置並進行配對"</string>
     <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"與已配對的藍牙裝置連線"</string>
     <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"允許應用程式與已配對的藍牙裝置連線"</string>
-    <!-- no translation found for permlab_bluetooth_advertise (2781147747928853177) -->
-    <skip />
-    <!-- no translation found for permdesc_bluetooth_advertise (6085174451034210183) -->
-    <skip />
+    <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_preferredPaymentInfo" msgid="5274423844767445054">"首選 NFC 付費服務資訊"</string>
@@ -1204,7 +1202,7 @@
     <string name="whichSendToApplicationNamed" msgid="3385686512014670003">"透過「%1$s」傳送"</string>
     <string name="whichSendToApplicationLabel" msgid="3543240188816513303">"傳送"</string>
     <string name="whichHomeApplication" msgid="8276350727038396616">"選取主畫面應用程式"</string>
-    <string name="whichHomeApplicationNamed" msgid="5855990024847433794">"使用「%1$s」做為主螢幕"</string>
+    <string name="whichHomeApplicationNamed" msgid="5855990024847433794">"使用「%1$s」做為主畫面"</string>
     <string name="whichHomeApplicationLabel" msgid="8907334282202933959">"擷取圖片"</string>
     <string name="whichImageCaptureApplication" msgid="2737413019463215284">"使用以下應用程式擷取圖片:"</string>
     <string name="whichImageCaptureApplicationNamed" msgid="8820702441847612202">"使用「%1$s」擷取圖片"</string>
@@ -1718,7 +1716,7 @@
     <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"輕觸無障礙工具按鈕後,選擇你想使用的功能:"</string>
     <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"選擇要搭配無障礙手勢 (用兩指從螢幕底部向上滑動) 使用的功能:"</string>
     <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"選擇要搭配無障礙手勢 (用三指從螢幕底部向上滑動) 使用的功能:"</string>
-    <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"如要切換不同的功能,請輕觸並按住無障礙工具按鈕。"</string>
+    <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"如要切換不同的功能,請按住無障礙工具按鈕。"</string>
     <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"如要切換不同的功能,請用兩指向上滑動並按住。"</string>
     <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"如要切換不同的功能,請用三指向上滑動並按住。"</string>
     <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"放大"</string>
@@ -1854,10 +1852,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>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"省電模式會開啟深色主題並限制或關閉背景活動、部分視覺效果,以及「Ok Google」啟動字詞等功能\n\n"<annotation id="url">"瞭解詳情"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"省電模式會開啟深色主題並限制或關閉背景活動、部分視覺效果,以及「Ok Google」啟動字詞等功能。"</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>
@@ -1933,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"關閉"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>:<xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"接聽"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"視訊"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"拒接"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"掛斷"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"來電"</string>
@@ -2076,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"這則通知的重要性已降低為「靜音」。輕觸即可提供意見。"</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"這則通知的重要性順序已調高。輕觸即可提供意見。"</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"這則通知的重要性順序已調降。輕觸即可提供意見。"</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"試試看加強型通知"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"如要繼續收到建議的操作、回覆等內容,請開啟加強型通知功能。系統已不再支援 Android 自動調整通知功能。"</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"開啟"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"暫時不要"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"瞭解詳情"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"加強型通知功能可讀取所有通知內容,包括聯絡人名稱和訊息內文等個人資訊。這項功能也能關閉通知或操作通知中的按鈕,例如接聽來電。\n\n此外,這項功能還可以開啟或關閉「優先」模式及變更相關設定。"</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"日常安排模式資訊通知"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"電池電力可能會在你平常的充電時間前耗盡"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"已啟用省電模式以延長電池續航力"</string>
@@ -2123,7 +2114,7 @@
     <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"沒有建議的分享對象"</string>
     <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"應用程式清單"</string>
     <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"這個應用程式未取得錄製內容的權限,但可以透過這部 USB 裝置錄製音訊。"</string>
-    <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"主螢幕"</string>
+    <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"主畫面"</string>
     <string name="accessibility_system_action_back_label" msgid="4205361367345537608">"返回"</string>
     <string name="accessibility_system_action_recents_label" msgid="4782875610281649728">"最近使用的應用程式"</string>
     <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"通知"</string>
@@ -2271,18 +2262,14 @@
     <string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string>
     <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
     <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
-    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"放大功能推出新設定"</string>
+    <string name="window_magnification_prompt_title" msgid="2876703640772778215">"支援新的放大功能"</string>
     <string name="window_magnification_prompt_content" msgid="8159173903032344891">"你現在可以放大局部畫面了"</string>
     <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"在「設定」中開啟"</string>
     <string name="dismiss_action" msgid="1728820550388704784">"關閉"</string>
-    <!-- no translation found for sensor_privacy_start_use_mic_notification_content_title (2420858361276370367) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_camera_notification_content_title (7287720213963466672) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_notification_content_text (7595608891015777346) -->
-    <skip />
-    <!-- no translation found for sensor_privacy_start_use_dialog_turn_on_button (7089318886628390827) -->
-    <skip />
+    <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"將裝置麥克風解除封鎖"</string>
+    <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"將裝置相機解除封鎖"</string>
+    <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"允許「<xliff:g id="APP">%s</xliff:g>」&lt;b&gt;&lt;/b&gt;及所有應用程式和服務使用"</string>
+    <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"解除封鎖"</string>
     <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"感應器隱私權"</string>
     <string name="splash_screen_view_icon_description" msgid="180638751260598187">"應用程式圖示"</string>
     <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"應用程式品牌圖片"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 1eb8438..e2a52f1 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -1852,10 +1852,8 @@
     <string name="package_updated_device_owner" msgid="7560272363805506941">"Kubuyekezwe umlawuli wakho"</string>
     <string name="package_deleted_device_owner" msgid="2292335928930293023">"Kususwe umlawuli wakho"</string>
     <string name="confirm_battery_saver" msgid="5247976246208245754">"KULUNGILE"</string>
-    <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) -->
-    <skip />
-    <!-- no translation found for battery_saver_description (7695751399533397741) -->
-    <skip />
+    <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Isilondolozi Sebhethri sivula Itimu Emnyama futhi sikhawulele noma sivale umsebenzi wendawo engemuva, izakhi ezithile ezibonakalayo, nezakhi ezinjenge-\"Ok Google\"\n\n"<annotation id="url">"Funda kabanzi"</annotation></string>
+    <string name="battery_saver_description" msgid="7695751399533397741">"Isilondolozi Sebhethri sivula Itimu Emnyama futhi sikhawulele noma sivale umsebenzi wendawo engemuva, izakhi ezithile ezibonakalayo, nezakhi ezinjenge-\"Ok Google\"."</string>
     <string name="data_saver_description" msgid="4995164271550590517">"Ukusiza ukwehlisa ukusetshenziswa kwedatha, iseva yedatha igwema ezinye izinhlelo zokusebenza ukuthi zithumele noma zamukele idatha ngasemuva. Uhlelo lokusebenza olisebenzisa okwamanje lingafinyelela idatha, kodwa lingenza kanjalo kancane. Lokhu kungachaza, isibonelo, ukuthi izithombe azibonisi uze uzithephe."</string>
     <string name="data_saver_enable_title" msgid="7080620065745260137">"Vula iseva yedatha?"</string>
     <string name="data_saver_enable_button" msgid="4399405762586419726">"Vula"</string>
@@ -1931,6 +1929,7 @@
     <string name="close_button_text" msgid="10603510034455258">"Vala"</string>
     <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
     <string name="call_notification_answer_action" msgid="5999246836247132937">"Phendula"</string>
+    <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Ividiyo"</string>
     <string name="call_notification_decline_action" msgid="3700345945214000726">"Yenqaba"</string>
     <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Vala Ucingo"</string>
     <string name="call_notification_incoming_text" msgid="6143109825406638201">"Ikholi engenayo"</string>
@@ -1946,7 +1945,7 @@
     <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Isaziso sohlelo lokusebenza olungokwezifiso"</string>
     <string name="user_creation_account_exists" msgid="2239146360099708035">"Vumela i-<xliff:g id="APP">%1$s</xliff:g> ukuthi idale umsebenzisi omusha nge-<xliff:g id="ACCOUNT">%2$s</xliff:g> (Umsebenzisi onale akhawunti usevele ukhona) ?"</string>
     <string name="user_creation_adding" msgid="7305185499667958364">"Vumela i-<xliff:g id="APP">%1$s</xliff:g> ukuthi idale umsebenzisi omusha nge-<xliff:g id="ACCOUNT">%2$s</xliff:g> ?"</string>
-    <string name="language_selection_title" msgid="52674936078683285">"Engeza ulwimi"</string>
+    <string name="language_selection_title" msgid="52674936078683285">"Engeza ulimi"</string>
     <string name="country_selection_title" msgid="5221495687299014379">"Okuncamelayo kwesifunda"</string>
     <string name="search_language_hint" msgid="7004225294308793583">"Thayipha igama lolimi"</string>
     <string name="language_picker_section_suggested" msgid="6556199184638990447">"Okuphakanyisiwe"</string>
@@ -2074,18 +2073,12 @@
     <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Lesi saziso sehliselwe esikhundleni Sokuthula. Thepha ukuze unikeze impendulo."</string>
     <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Lesi saziso sibekwe ezingeni eliphakeme. Thepha ukuze unikeze impendulo."</string>
     <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Lesi saziso sibekwe ezingeni eliphansi. Thepha ukuze unikeze impendulo."</string>
-    <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) -->
-    <skip />
-    <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) -->
-    <skip />
+    <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"Zama izaziso ezigqanyisiwe"</string>
+    <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Ukuze uqhubeke nokuthola izenzo eziphakanyisiwe, izimpendulo nokuningi, vula izaziso ezigqanyisiwe. Izaziso ze-Androin Ezivumelana Nezimo azisasekelwe."</string>
+    <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Vula"</string>
+    <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Hhayi manje"</string>
+    <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Funda kabanzi"</string>
+    <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Izaziso ezigqanyisiwe zingafunda konke okuqukethwe yizaziso zakho, kuhlanganise nolwazi lomuntu siqu njengamagama oxhumana nabo nemilayezo. Lesi sakhi singacashisa izaziso noma sithathe izinyathelo ezinkinobheni ezisezazisweni, njengokuphendula amakholi wefoni.\n\nLesi sici singavula noma sivale nemodi Yokubalulekile futhi sishintshe amasethingi ahambisanayo."</string>
     <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Isaziso solwazi lwe-Routine Mode"</string>
     <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Ibhethri lingaphela ngaphambi kokushaja okuvamile"</string>
     <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Isilondolozi sebhethri siyasebenza ngaphandle kwempilo yebhethri"</string>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index bd1d848..f097009 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -1176,6 +1176,9 @@
         <!-- Alternative color applied to surfaces on top of colorBackground. @hide -->
         <attr name="colorSurfaceHeader" format="color" />
 
+        <!-- Color applied to effects. -->
+        <attr name="effectColor" format="color" />
+
         <!-- The type of the edge effect. The default is glow. -->
         <attr name="edgeEffectType">
             <!-- Use a colored glow at the edge. -->
@@ -6540,13 +6543,8 @@
         <!-- The radius of the ripple when fully expanded. By default, the
              radius is computed based on the size of the ripple's container. -->
         <attr name="radius" />
-        <!-- The style of the ripple drawable is solid by default -->
-        <attr name="rippleStyle">
-            <!-- Solid is the default style -->
-            <enum name="solid" value="0" />
-            <!-- Patterned style-->
-            <enum name="patterned" value="1" />
-        </attr>
+        <!-- Secondary color of the ripple effect. -->
+        <attr name="effectColor" />
     </declare-styleable>
 
     <declare-styleable name="ScaleDrawable">
@@ -9577,7 +9575,7 @@
     <!-- Perceptual luminance of a color, in accessibility friendly color space. From 0 to 100. -->
     <attr name="lStar" format="float"/>
 
-    <declare-styleable name="DisplayHasherService">
+    <declare-styleable name="DisplayHashingService">
         <!-- The throttle duration for display hash requests
              @hide @SystemApi -->
         <attr name="throttleDurationMillis" format="integer" />
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 588ae79..3b155de 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -1880,6 +1880,9 @@
         apps due to inconsistencies in MediaStore collection and lower file system.
         When the flag is set, app should scan the file after file path operations to ensure
         consistency of MediaStore collection.
+        <p> The flag can be set to false if the app doesn't do many bulk file path operations or if
+        app prefers the system to ensure the consistency of the MediaStore collection for file path
+        operations without scanning the file.
 
         <p> The default value is {@code true} if
         <ul>
diff --git a/core/res/res/values/colors_device_defaults.xml b/core/res/res/values/colors_device_defaults.xml
index bec0ad1..4c5a008 100644
--- a/core/res/res/values/colors_device_defaults.xml
+++ b/core/res/res/values/colors_device_defaults.xml
@@ -17,9 +17,9 @@
 <!-- Colors specific to DeviceDefault themes. These are mostly pass-throughs to enable
      overlaying new theme colors. -->
 <resources>
-    <color name="primary_device_default_dark">@color/system_neutral1_800</color>
+    <color name="primary_device_default_dark">@color/system_neutral1_900</color>
     <color name="primary_device_default_light">@color/system_neutral1_50</color>
-    <color name="primary_device_default_settings">@color/system_neutral1_800</color>
+    <color name="primary_device_default_settings">@color/system_neutral1_900</color>
     <color name="primary_device_default_settings_light">@color/primary_device_default_light</color>
     <color name="primary_dark_device_default_dark">@color/primary_device_default_dark</color>
     <color name="primary_dark_device_default_light">@color/primary_device_default_light</color>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 419f142..c2a7e07 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -59,6 +59,7 @@
         <item><xliff:g id="id">@string/status_bar_mobile</xliff:g></item>
         <item><xliff:g id="id">@string/status_bar_airplane</xliff:g></item>
         <item><xliff:g id="id">@string/status_bar_no_calling</xliff:g></item>
+        <item><xliff:g id="id">@string/status_bar_call_strength</xliff:g></item>
         <item><xliff:g id="id">@string/status_bar_battery</xliff:g></item>
         <item><xliff:g id="id">@string/status_bar_sensors_off</xliff:g></item>
     </string-array>
@@ -96,6 +97,7 @@
     <string translatable="false" name="status_bar_camera">camera</string>
     <string translatable="false" name="status_bar_airplane">airplane</string>
     <string translatable="false" name="status_bar_no_calling">no_calling</string>
+    <string translatable="false" name="status_bar_call_strength">call_strength</string>
     <string translatable="false" name="status_bar_sensors_off">sensors_off</string>
     <string translatable="false" name="status_bar_screen_record">screen_record</string>
 
@@ -1949,6 +1951,8 @@
     <string name="config_systemTelevisionNotificationHandler" translatable="false"></string>
     <!-- The name of the package that will hold the system activity recognizer role. -->
     <string name="config_systemActivityRecognizer" translatable="false"></string>
+    <!-- The name of the package that will hold the system ui role -->
+    <string name="config_systemUi" translatable="false">com.android.systemui</string>
 
     <!-- The name of the package that will be allowed to change its components' label/icon. -->
     <string name="config_overrideComponentUiPackage" translatable="false">com.android.stk</string>
@@ -4700,6 +4704,11 @@
      -->
     <color name="config_letterboxBackgroundColor">#000</color>
 
+    <!-- Horizonal position of a center of the letterboxed app window.
+        0 corresponds to the left side of the screen and 1 to the right side. If given value < 0
+        or > 1, it is ignored and central positionis used (0.5). -->
+    <item name="config_letterboxHorizontalPositionMultiplier" format="float" type="dimen">0.5</item>
+
     <!-- If true, hide the display cutout with display area -->
     <bool name="config_hideDisplayCutoutWithDisplayArea">false</bool>
 
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index 0e436e3..43c0ec9 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -242,6 +242,9 @@
          this = conversation_content_start (80dp) - button inset (4dp) - action padding (12dp) -->
     <dimen name="call_notification_collapsible_indent">64dp</dimen>
 
+    <!-- The minimum width of the system actions added to the CallStyle notifications. -->
+    <dimen name="call_notification_system_action_min_width">100dp</dimen>
+
     <!-- The size of icons for visual actions in the notification_material_action_list -->
     <dimen name="notification_actions_icon_size">56dp</dimen>
 
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index f6a67d2..c716000 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -3099,6 +3099,7 @@
     <!-- @hide @SystemApi -->
     <public name="throttleDurationMillis" />
     <public name="showInInputMethodPicker" />
+    <public name="effectColor" />
   </staging-public-group>
 
   <staging-public-group type="drawable" first-id="0x010800b5">
@@ -3227,6 +3228,8 @@
     <public name="config_systemActivityRecognizer" />
     <!-- @hide @SystemApi -->
     <public name="config_systemCompanionDeviceProvider"/>
+    <!-- @hide @SystemApi -->
+    <public name="config_systemUi" />
   </staging-public-group>
 
   <staging-public-group type="id" first-id="0x01020055">
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index d69c7f8..cfde7a1 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2979,6 +2979,7 @@
   <java-symbol type="string" name="status_bar_clock" />
   <java-symbol type="string" name="status_bar_airplane" />
   <java-symbol type="string" name="status_bar_no_calling" />
+  <java-symbol type="string" name="status_bar_call_strength" />
   <java-symbol type="string" name="status_bar_mobile" />
   <java-symbol type="string" name="status_bar_ethernet" />
   <java-symbol type="string" name="status_bar_vpn" />
@@ -3126,6 +3127,7 @@
   <java-symbol type="color" name="call_notification_decline_color"/>
   <java-symbol type="color" name="call_notification_answer_color"/>
   <java-symbol type="dimen" name="call_notification_collapsible_indent"/>
+  <java-symbol type="dimen" name="call_notification_system_action_min_width"/>
   <java-symbol type="drawable" name="ic_call_answer" />
   <java-symbol type="drawable" name="ic_call_answer_video" />
   <java-symbol type="drawable" name="ic_call_decline" />
@@ -4186,6 +4188,7 @@
   <java-symbol type="dimen" name="config_letterboxBackgroundWallaperDarkScrimAlpha" />
   <java-symbol type="integer" name="config_letterboxBackgroundType" />
   <java-symbol type="color" name="config_letterboxBackgroundColor" />
+  <java-symbol type="dimen" name="config_letterboxHorizontalPositionMultiplier" />
 
   <java-symbol type="bool" name="config_hideDisplayCutoutWithDisplayArea" />
 
diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml
index 1d4beae..41bedb2 100644
--- a/core/res/res/values/themes_device_defaults.xml
+++ b/core/res/res/values/themes_device_defaults.xml
@@ -234,9 +234,6 @@
         <item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item>
         <item name="colorForeground">@color/foreground_device_default_dark</item>
         <item name="colorForegroundInverse">@color/foreground_device_default_light</item>
-
-        <!-- Ripple style-->
-        <item name="rippleStyle">solid</item>
     </style>
 
     <style name="Theme.DeviceDefault" parent="Theme.DeviceDefaultBase" />
diff --git a/core/tests/coretests/src/android/app/appsearch/AppSearchSessionUnitTest.java b/core/tests/coretests/src/android/app/appsearch/AppSearchSessionUnitTest.java
index 56c685a..3d18337 100644
--- a/core/tests/coretests/src/android/app/appsearch/AppSearchSessionUnitTest.java
+++ b/core/tests/coretests/src/android/app/appsearch/AppSearchSessionUnitTest.java
@@ -20,6 +20,7 @@
 
 import static org.testng.Assert.expectThrows;
 
+import android.app.appsearch.exceptions.AppSearchException;
 import android.content.Context;
 
 import androidx.test.core.app.ApplicationProvider;
@@ -89,8 +90,12 @@
                 });
 
         // Verify the NullPointException has been thrown.
-        ExecutionException executionException = expectThrows(ExecutionException.class,
-                putDocumentsFuture::get);
-        assertThat(executionException.getCause()).isInstanceOf(NullPointerException.class);
+        ExecutionException executionException =
+                expectThrows(ExecutionException.class, putDocumentsFuture::get);
+        assertThat(executionException.getCause()).isInstanceOf(AppSearchException.class);
+        AppSearchException appSearchException = (AppSearchException) executionException.getCause();
+        assertThat(appSearchException.getResultCode())
+                .isEqualTo(AppSearchResult.RESULT_INTERNAL_ERROR);
+        assertThat(appSearchException.getMessage()).startsWith("NullPointerException");
     }
 }
diff --git a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
index 4dbdc60..281ce2b 100644
--- a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
@@ -693,7 +693,7 @@
 
         @Override
         public void updateUiTranslationState(IBinder activityToken, int state,
-                TranslationSpec sourceSpec, TranslationSpec destSpec, List<AutofillId> viewIds) {
+                TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds) {
 
         }
     }
diff --git a/core/tests/coretests/src/android/app/time/TimeZoneCapabilitiesTest.java b/core/tests/coretests/src/android/app/time/TimeZoneCapabilitiesTest.java
index dd93997..0082728 100644
--- a/core/tests/coretests/src/android/app/time/TimeZoneCapabilitiesTest.java
+++ b/core/tests/coretests/src/android/app/time/TimeZoneCapabilitiesTest.java
@@ -20,6 +20,8 @@
 import static android.app.time.Capabilities.CAPABILITY_POSSESSED;
 import static android.app.timezonedetector.ParcelableTestSupport.assertRoundTripParcelable;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNull;
@@ -157,4 +159,60 @@
 
         assertNull(capabilities.tryApplyConfigChanges(oldConfiguration, configChange));
     }
+
+    @Test
+    public void copyBuilder_copiesAllFields() {
+        TimeZoneCapabilities capabilities = new TimeZoneCapabilities.Builder(TEST_USER_HANDLE)
+                .setConfigureAutoDetectionEnabledCapability(CAPABILITY_NOT_ALLOWED)
+                .setConfigureGeoDetectionEnabledCapability(CAPABILITY_NOT_ALLOWED)
+                .setSuggestManualTimeZoneCapability(CAPABILITY_NOT_ALLOWED)
+                .build();
+
+        {
+            TimeZoneCapabilities updatedCapabilities =
+                    new TimeZoneCapabilities.Builder(capabilities)
+                            .setConfigureAutoDetectionEnabledCapability(CAPABILITY_POSSESSED)
+                            .build();
+            TimeZoneCapabilities expectedCapabilities =
+                    new TimeZoneCapabilities.Builder(TEST_USER_HANDLE)
+                            .setConfigureAutoDetectionEnabledCapability(CAPABILITY_POSSESSED)
+                            .setConfigureGeoDetectionEnabledCapability(CAPABILITY_NOT_ALLOWED)
+                            .setSuggestManualTimeZoneCapability(CAPABILITY_NOT_ALLOWED)
+                            .build();
+
+            assertThat(updatedCapabilities).isEqualTo(expectedCapabilities);
+        }
+
+        {
+            TimeZoneCapabilities updatedCapabilities =
+                    new TimeZoneCapabilities.Builder(capabilities)
+                            .setConfigureGeoDetectionEnabledCapability(CAPABILITY_POSSESSED)
+                            .build();
+
+            TimeZoneCapabilities expectedCapabilities =
+                    new TimeZoneCapabilities.Builder(TEST_USER_HANDLE)
+                            .setConfigureAutoDetectionEnabledCapability(CAPABILITY_NOT_ALLOWED)
+                            .setConfigureGeoDetectionEnabledCapability(CAPABILITY_POSSESSED)
+                            .setSuggestManualTimeZoneCapability(CAPABILITY_NOT_ALLOWED)
+                            .build();
+
+            assertThat(updatedCapabilities).isEqualTo(expectedCapabilities);
+        }
+
+        {
+            TimeZoneCapabilities updatedCapabilities =
+                    new TimeZoneCapabilities.Builder(capabilities)
+                            .setSuggestManualTimeZoneCapability(CAPABILITY_POSSESSED)
+                            .build();
+
+            TimeZoneCapabilities expectedCapabilities =
+                    new TimeZoneCapabilities.Builder(TEST_USER_HANDLE)
+                            .setConfigureAutoDetectionEnabledCapability(CAPABILITY_NOT_ALLOWED)
+                            .setConfigureGeoDetectionEnabledCapability(CAPABILITY_NOT_ALLOWED)
+                            .setSuggestManualTimeZoneCapability(CAPABILITY_POSSESSED)
+                            .build();
+
+            assertThat(updatedCapabilities).isEqualTo(expectedCapabilities);
+        }
+    }
 }
diff --git a/core/tests/coretests/src/android/graphics/FontListParserTest.java b/core/tests/coretests/src/android/graphics/FontListParserTest.java
index bef1a4e..b2df98d 100644
--- a/core/tests/coretests/src/android/graphics/FontListParserTest.java
+++ b/core/tests/coretests/src/android/graphics/FontListParserTest.java
@@ -59,7 +59,7 @@
                 + "</family>";
         FontConfig.FontFamily expected = new FontConfig.FontFamily(
                 Arrays.asList(
-                        new FontConfig.Font(new File("test.ttf"), null,
+                        new FontConfig.Font(new File("test.ttf"), null, "test",
                                 new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT),
                                 0, "", null)),
                 "sans-serif", LocaleList.getEmptyLocaleList(), VARIANT_DEFAULT);
@@ -77,10 +77,10 @@
                 + "</family>";
         FontConfig.FontFamily expected = new FontConfig.FontFamily(
                 Arrays.asList(
-                        new FontConfig.Font(new File("test.ttf"), null,
+                        new FontConfig.Font(new File("test.ttf"), null, "test",
                                 new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT),
                                 0, "", null),
-                        new FontConfig.Font(new File("test.ttf"), null,
+                        new FontConfig.Font(new File("test.ttf"), null, "test",
                                 new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT),
                                 0, "", "serif")),
                 null, LocaleList.forLanguageTags("en"), VARIANT_DEFAULT);
@@ -97,7 +97,7 @@
                 + "</family>";
         FontConfig.FontFamily expected = new FontConfig.FontFamily(
                 Arrays.asList(
-                        new FontConfig.Font(new File("test.ttf"), null,
+                        new FontConfig.Font(new File("test.ttf"), null, "test",
                                 new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT),
                                 0, "", null)),
                 null, LocaleList.forLanguageTags("en"), VARIANT_COMPACT);
@@ -114,7 +114,7 @@
                 + "</family>";
         FontConfig.FontFamily expected = new FontConfig.FontFamily(
                 Arrays.asList(
-                        new FontConfig.Font(new File("test.ttf"), null,
+                        new FontConfig.Font(new File("test.ttf"), null, "test",
                                 new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT),
                                 0, "", null)),
                 null, LocaleList.forLanguageTags("en"), VARIANT_ELEGANT);
@@ -133,13 +133,13 @@
                 + "</family>";
         FontConfig.FontFamily expected = new FontConfig.FontFamily(
                 Arrays.asList(
-                        new FontConfig.Font(new File("normal.ttf"), null,
+                        new FontConfig.Font(new File("normal.ttf"), null, "test",
                                 new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT),
                                 0, "", null),
-                        new FontConfig.Font(new File("weight.ttf"), null,
+                        new FontConfig.Font(new File("weight.ttf"), null, "test",
                                 new FontStyle(100, FONT_SLANT_UPRIGHT),
                                 0, "", null),
-                        new FontConfig.Font(new File("italic.ttf"), null,
+                        new FontConfig.Font(new File("italic.ttf"), null, "test",
                                 new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_ITALIC),
                                 0, "", null)),
                 "sans-serif", LocaleList.getEmptyLocaleList(), VARIANT_DEFAULT);
@@ -162,10 +162,10 @@
                 + "</family>";
         FontConfig.FontFamily expected = new FontConfig.FontFamily(
                 Arrays.asList(
-                        new FontConfig.Font(new File("test-VF.ttf"), null,
+                        new FontConfig.Font(new File("test-VF.ttf"), null, "test",
                                 new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT),
                                 0, "'wdth' 100.0,'wght' 200.0", null),
-                        new FontConfig.Font(new File("test-VF.ttf"), null,
+                        new FontConfig.Font(new File("test-VF.ttf"), null, "test",
                                 new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT),
                                 0, "'wdth' 400.0,'wght' 700.0", null)),
                 "sans-serif", LocaleList.getEmptyLocaleList(), VARIANT_DEFAULT);
@@ -182,10 +182,30 @@
                 + "</family>";
         FontConfig.FontFamily expected = new FontConfig.FontFamily(
                 Arrays.asList(
-                        new FontConfig.Font(new File("test.ttc"), null,
+                        new FontConfig.Font(new File("test.ttc"), null, "test",
                                 new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT),
                                 0, "", null),
-                        new FontConfig.Font(new File("test.ttc"), null,
+                        new FontConfig.Font(new File("test.ttc"), null, "test",
+                                new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT),
+                                1, "", null)),
+                "sans-serif", LocaleList.getEmptyLocaleList(), VARIANT_DEFAULT);
+        FontConfig.FontFamily family = readFamily(xml);
+        assertThat(family).isEqualTo(expected);
+    }
+
+    @Test
+    public void psName() throws Exception {
+        String xml = "<?xml version='1.0' encoding='UTF-8'?>"
+                + "<family name='sans-serif'>"
+                + "  <font index='0' postScriptName='foo'>test.ttc</font>"
+                + "  <font index='1'>test.ttc</font>"
+                + "</family>";
+        FontConfig.FontFamily expected = new FontConfig.FontFamily(
+                Arrays.asList(
+                        new FontConfig.Font(new File("test.ttc"), null, "foo",
+                                new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT),
+                                0, "", null),
+                        new FontConfig.Font(new File("test.ttc"), null, "test",
                                 new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT),
                                 1, "", null)),
                 "sans-serif", LocaleList.getEmptyLocaleList(), VARIANT_DEFAULT);
diff --git a/core/tests/coretests/src/android/graphics/TypefaceTest.java b/core/tests/coretests/src/android/graphics/TypefaceTest.java
index d12f495..6defe91 100644
--- a/core/tests/coretests/src/android/graphics/TypefaceTest.java
+++ b/core/tests/coretests/src/android/graphics/TypefaceTest.java
@@ -27,6 +27,7 @@
 import android.graphics.fonts.SystemFonts;
 import android.os.SharedMemory;
 import android.text.FontConfig;
+import android.util.ArrayMap;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.LargeTest;
@@ -200,8 +201,9 @@
         Map<String, Typeface> systemFontMap = SystemFonts.buildSystemTypefaces(fontConfig,
                 fallbackMap);
         SharedMemory sharedMemory = Typeface.serializeFontMap(systemFontMap);
-        Map<String, Typeface> copiedFontMap =
-                Typeface.deserializeFontMap(sharedMemory.mapReadOnly().order(ByteOrder.BIG_ENDIAN));
+        Map<String, Typeface> copiedFontMap = new ArrayMap<>();
+        Typeface.deserializeFontMap(sharedMemory.mapReadOnly().order(ByteOrder.BIG_ENDIAN),
+                copiedFontMap);
         assertEquals(systemFontMap.size(), copiedFontMap.size());
         for (String key : systemFontMap.keySet()) {
             assertTrue(copiedFontMap.containsKey(key));
diff --git a/core/tests/coretests/src/android/view/ScrollCaptureConnectionTest.java b/core/tests/coretests/src/android/view/ScrollCaptureConnectionTest.java
index 22c71b52..e7b88c8 100644
--- a/core/tests/coretests/src/android/view/ScrollCaptureConnectionTest.java
+++ b/core/tests/coretests/src/android/view/ScrollCaptureConnectionTest.java
@@ -32,6 +32,7 @@
 import android.graphics.Rect;
 import android.os.Handler;
 import android.os.ICancellationSignal;
+import android.os.RemoteException;
 import android.platform.test.annotations.Presubmit;
 
 import androidx.test.filters.SmallTest;
@@ -189,4 +190,15 @@
         verifyNoMoreInteractions(mRemote);
     }
 
+    @Test
+    public void testClose_whileActive() throws RemoteException {
+        mConnection.startCapture(mSurface, mRemote);
+
+        mCallback.completeStartRequest();
+        assertTrue(mConnection.isActive());
+
+        mConnection.close();
+        mCallback.completeEndRequest();
+        assertFalse(mConnection.isActive());
+    }
 }
diff --git a/core/tests/coretests/src/android/view/ViewGroupScrollCaptureTest.java b/core/tests/coretests/src/android/view/ViewGroupScrollCaptureTest.java
index 2833ea3..25608c3 100644
--- a/core/tests/coretests/src/android/view/ViewGroupScrollCaptureTest.java
+++ b/core/tests/coretests/src/android/view/ViewGroupScrollCaptureTest.java
@@ -33,7 +33,6 @@
 import android.platform.test.annotations.Presubmit;
 
 import androidx.annotation.NonNull;
-import androidx.test.filters.FlakyTest;
 import androidx.test.filters.MediumTest;
 import androidx.test.filters.SmallTest;
 
@@ -92,6 +91,18 @@
                 viewGroup.getScrollCaptureHint());
     }
 
+    /** Make sure the hint flags are saved and loaded correctly. */
+    @Test
+    public void testSetScrollCaptureHint_mutuallyExclusiveFlags() throws Exception {
+        final Context context = getInstrumentation().getContext();
+        final MockViewGroup viewGroup = new MockViewGroup(context);
+
+        viewGroup.setScrollCaptureHint(
+                View.SCROLL_CAPTURE_HINT_INCLUDE | View.SCROLL_CAPTURE_HINT_EXCLUDE);
+        assertEquals("Mutually exclusive flags were not resolved correctly",
+                ViewGroup.SCROLL_CAPTURE_HINT_EXCLUDE, viewGroup.getScrollCaptureHint());
+    }
+
     /**
      * Ensure a ViewGroup with 'scrollCaptureHint=auto', but no ScrollCaptureCallback set dispatches
      * correctly. Verifies that the framework helper is called. Verifies a that non-null callback
@@ -343,6 +354,54 @@
                 target.getContainingView().getScrollCaptureHint());
     }
 
+    /**
+     * Tests the effect of padding on scroll capture search dispatch.
+     * <p>
+     * Verifies computation of child visible bounds with padding.
+     */
+    @MediumTest
+    @Test
+    public void testOnScrollCaptureSearch_withPadding() {
+        final Context context = getInstrumentation().getContext();
+
+        Rect windowBounds = new Rect(0, 0, 200, 200);
+        Point windowOffset = new Point(0, 0);
+
+        final MockViewGroup parent = new MockViewGroup(context, 0, 0, 200, 200);
+        parent.setPadding(25, 50, 25, 50);
+        parent.setClipToPadding(true); // (default)
+
+        final MockView view1 = new MockView(context, 0, -100, 200, 100);
+        parent.addView(view1);
+
+        final MockView view2 = new MockView(context, 0, 0, 200, 200);
+        parent.addView(view2);
+
+        final MockViewGroup view3 = new MockViewGroup(context, 0, 100, 200, 300);
+        parent.addView(view3);
+        view3.setPadding(25, 25, 25, 25);
+        view3.setClipToPadding(true);
+
+        // Where targets are added
+        final ScrollCaptureSearchResults results = new ScrollCaptureSearchResults(DIRECT_EXECUTOR);
+
+        // Dispatch to the ViewGroup
+        parent.dispatchScrollCaptureSearch(windowBounds, windowOffset, results::addTarget);
+
+        // Verify padding (with clipToPadding) is subtracted from visibleBounds
+        parent.assertOnScrollCaptureSearchLastArgs(new Rect(25, 50, 175, 150), new Point(0, 0));
+
+        view1.assertOnScrollCaptureSearchLastArgs(
+                new Rect(25, 150, 175, 200), new Point(0, -100));
+
+        view2.assertOnScrollCaptureSearchLastArgs(
+                new Rect(25, 50, 175, 150), new Point(0, 0));
+
+        // Account for padding on view3 as well (top == 25px)
+        view3.assertOnScrollCaptureSearchLastArgs(
+                new Rect(25, 25, 175, 50), new Point(0, 100));
+    }
+
     public static final class MockView extends View {
         private ScrollCaptureCallback mInternalCallback;
 
@@ -350,6 +409,8 @@
         private Rect mDispatchScrollCaptureSearchLastLocalVisibleRect;
         private Point mDispatchScrollCaptureSearchLastWindowOffset;
         private int mCreateScrollCaptureCallbackInternalCount;
+        private Rect mOnScrollCaptureSearchLastLocalVisibleRect;
+        private Point mOnScrollCaptureSearchLastWindowOffset;
 
         MockView(Context context) {
             this(context, /* left */ 0, /* top */0, /* right */ 0, /* bottom */0);
@@ -395,6 +456,21 @@
         }
 
         @Override
+        public void onScrollCaptureSearch(Rect localVisibleRect, Point windowOffset,
+                Consumer<ScrollCaptureTarget> targets) {
+            super.onScrollCaptureSearch(localVisibleRect, windowOffset, targets);
+            mOnScrollCaptureSearchLastLocalVisibleRect = new Rect(localVisibleRect);
+            mOnScrollCaptureSearchLastWindowOffset = new Point(windowOffset);
+        }
+
+        void assertOnScrollCaptureSearchLastArgs(Rect localVisibleRect, Point windowOffset) {
+            assertEquals("arg localVisibleRect was incorrect.",
+                    localVisibleRect, mOnScrollCaptureSearchLastLocalVisibleRect);
+            assertEquals("arg windowOffset was incorrect.",
+                    windowOffset, mOnScrollCaptureSearchLastWindowOffset);
+        }
+
+        @Override
         public void dispatchScrollCaptureSearch(Rect localVisibleRect, Point windowOffset,
                 Consumer<ScrollCaptureTarget> results) {
             mDispatchScrollCaptureSearchNumCalls++;
@@ -437,6 +513,8 @@
 
     public static final class MockViewGroup extends ViewGroup {
         private ScrollCaptureCallback mInternalCallback;
+        private Rect mOnScrollCaptureSearchLastLocalVisibleRect;
+        private Point mOnScrollCaptureSearchLastWindowOffset;
 
         MockViewGroup(Context context) {
             this(context, /* left */ 0, /* top */0, /* right */ 0, /* bottom */0);
@@ -465,6 +543,21 @@
         }
 
         @Override
+        public void onScrollCaptureSearch(Rect localVisibleRect, Point windowOffset,
+                Consumer<ScrollCaptureTarget> targets) {
+            super.onScrollCaptureSearch(localVisibleRect, windowOffset, targets);
+            mOnScrollCaptureSearchLastLocalVisibleRect = new Rect(localVisibleRect);
+            mOnScrollCaptureSearchLastWindowOffset = new Point(windowOffset);
+        }
+
+        void assertOnScrollCaptureSearchLastArgs(Rect localVisibleRect, Point windowOffset) {
+            assertEquals("arg localVisibleRect was incorrect.",
+                    localVisibleRect, mOnScrollCaptureSearchLastLocalVisibleRect);
+            assertEquals("arg windowOffset was incorrect.",
+                    windowOffset, mOnScrollCaptureSearchLastWindowOffset);
+        }
+
+        @Override
         protected void onLayout(boolean changed, int l, int t, int r, int b) {
             // We don't layout this view.
         }
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextClassificationTest.java b/core/tests/coretests/src/android/view/textclassifier/TextClassificationTest.java
index c393d68..8225afc 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextClassificationTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextClassificationTest.java
@@ -244,7 +244,8 @@
                         PendingIntent.getActivity(
                                 context, 0, new Intent("action1"), FLAG_IMMUTABLE)))
                 .addAction(new RemoteAction(icon1, "title2", "desc2",
-                          PendingIntent.getActivity(context, 0, new Intent("action2"), 0)))
+                        PendingIntent.getActivity(context, 0, new Intent("action2"),
+                                FLAG_IMMUTABLE)))
                 .setEntityType(TextClassifier.TYPE_EMAIL, 0.5f)
                 .setEntityType(TextClassifier.TYPE_PHONE, 0.4f)
                 .build();
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java
index 3a6f7b8..e0739be 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java
@@ -167,7 +167,7 @@
     }
 
     BatteryUsageStats apply(BatteryUsageStatsQuery query, PowerCalculator... calculators) {
-        final String[] customPowerComponentNames = mBatteryStats.getCustomPowerComponentNames();
+        final String[] customPowerComponentNames = mBatteryStats.getCustomEnergyConsumerNames();
         final boolean includePowerModels = (query.getFlags()
                 & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_POWER_MODELS) != 0;
         BatteryUsageStats.Builder builder = new BatteryUsageStats.Builder(
diff --git a/core/tests/coretests/src/com/android/internal/view/RecyclerViewCaptureHelperTest.java b/core/tests/coretests/src/com/android/internal/view/RecyclerViewCaptureHelperTest.java
index 88bbcc2..a6b26be 100644
--- a/core/tests/coretests/src/com/android/internal/view/RecyclerViewCaptureHelperTest.java
+++ b/core/tests/coretests/src/com/android/internal/view/RecyclerViewCaptureHelperTest.java
@@ -145,7 +145,9 @@
         ScrollResult scrollResult = rvc.onScrollRequested(mTarget, scrollBounds, request);
         assertThat(request).isEqualTo(scrollResult.requestedArea);
         assertThat(request).isEqualTo(scrollResult.availableArea);
-        assertThat(scrollResult.scrollDelta).isEqualTo(CAPTURE_HEIGHT);
+        // Capture height centered in the window
+        assertThat(scrollResult.scrollDelta).isEqualTo(
+                CAPTURE_HEIGHT + (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2);
         assertAvailableAreaCompletelyVisible(scrollResult, mTarget);
     }
 
@@ -163,7 +165,8 @@
         ScrollResult scrollResult = helper.onScrollRequested(mTarget, scrollBounds, request);
         assertThat(request).isEqualTo(scrollResult.requestedArea);
         assertThat(request).isEqualTo(scrollResult.availableArea);
-        assertThat(scrollResult.scrollDelta).isEqualTo(-CAPTURE_HEIGHT);
+        assertThat(scrollResult.scrollDelta).isEqualTo(
+                -CAPTURE_HEIGHT - (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2);
         assertAvailableAreaCompletelyVisible(scrollResult, mTarget);
     }
 
@@ -182,7 +185,8 @@
         ScrollResult scrollResult = helper.onScrollRequested(mTarget, scrollBounds, request);
         assertThat(request).isEqualTo(scrollResult.requestedArea);
         assertThat(request).isEqualTo(scrollResult.availableArea);
-        assertThat(scrollResult.scrollDelta).isEqualTo(CAPTURE_HEIGHT);
+        assertThat(scrollResult.scrollDelta).isEqualTo(
+                CAPTURE_HEIGHT + (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2);
         assertAvailableAreaCompletelyVisible(scrollResult, mTarget);
     }
 
@@ -200,7 +204,8 @@
         ScrollResult scrollResult = helper.onScrollRequested(mTarget, scrollBounds, request);
         assertThat(request).isEqualTo(scrollResult.requestedArea);
         assertThat(request).isEqualTo(scrollResult.availableArea);
-        assertThat(scrollResult.scrollDelta).isEqualTo(-CAPTURE_HEIGHT);
+        assertThat(scrollResult.scrollDelta).isEqualTo(
+                -CAPTURE_HEIGHT - (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2);
         assertAvailableAreaCompletelyVisible(scrollResult, mTarget);
     }
 
diff --git a/core/tests/nfctests/Android.bp b/core/tests/nfctests/Android.bp
new file mode 100644
index 0000000..335cea1
--- /dev/null
+++ b/core/tests/nfctests/Android.bp
@@ -0,0 +1,38 @@
+// Copyright 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 {
+    // 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"],
+}
+
+android_test {
+    name: "NfcManagerTests",
+    static_libs: [
+        "androidx.test.ext.junit",
+        "androidx.test.rules",
+        "mockito-target-minus-junit4",
+    ],
+    libs: [
+        "android.test.runner",
+    ],
+    srcs: ["src/**/*.java"],
+    platform_apis: true,
+    certificate: "platform",
+    test_suites: ["device-tests"],
+}
diff --git a/core/tests/nfctests/AndroidManifest.xml b/core/tests/nfctests/AndroidManifest.xml
new file mode 100644
index 0000000..99e2c34c
--- /dev/null
+++ b/core/tests/nfctests/AndroidManifest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.nfc">
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!-- This is a self-instrumenting test package. -->
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.nfc"
+                     android:label="NFC Manager Tests">
+    </instrumentation>
+
+</manifest>
+
diff --git a/core/tests/nfctests/AndroidTest.xml b/core/tests/nfctests/AndroidTest.xml
new file mode 100644
index 0000000..490d6f5
--- /dev/null
+++ b/core/tests/nfctests/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 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.
+-->
+<configuration description="Config for NFC Manager test cases">
+    <option name="test-suite-tag" value="apct"/>
+    <option name="test-suite-tag" value="apct-instrumentation"/>
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="NfcManagerTests.apk" />
+    </target_preparer>
+
+    <option name="test-suite-tag" value="apct"/>
+    <option name="test-tag" value="NfcManagerTests"/>
+
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.nfc" />
+        <option name="hidden-api-checks" value="false"/>
+        <option name="runner" value="androidx.test.runner.AndroidJUnitRunner"/>
+    </test>
+</configuration>
diff --git a/core/tests/nfctests/OWNERS b/core/tests/nfctests/OWNERS
new file mode 100644
index 0000000..34b095c
--- /dev/null
+++ b/core/tests/nfctests/OWNERS
@@ -0,0 +1 @@
+include /core/java/android/nfc/OWNERS
diff --git a/core/tests/nfctests/src/android/nfc/NfcControllerAlwaysOnListenerTest.java b/core/tests/nfctests/src/android/nfc/NfcControllerAlwaysOnListenerTest.java
new file mode 100644
index 0000000..43f9b6f
--- /dev/null
+++ b/core/tests/nfctests/src/android/nfc/NfcControllerAlwaysOnListenerTest.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright 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 android.nfc;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.nfc.NfcAdapter.ControllerAlwaysOnListener;
+import android.os.RemoteException;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Executor;
+
+/**
+ * Test of {@link NfcControllerAlwaysOnListener}.
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class NfcControllerAlwaysOnListenerTest {
+
+    private INfcAdapter mNfcAdapter = mock(INfcAdapter.class);
+
+    private Throwable mThrowRemoteException = new RemoteException("RemoteException");
+
+    private static Executor getExecutor() {
+        return new Executor() {
+            @Override
+            public void execute(Runnable command) {
+                command.run();
+            }
+        };
+    }
+
+    private static void verifyListenerInvoked(ControllerAlwaysOnListener listener) {
+        verify(listener, times(1)).onControllerAlwaysOnChanged(anyBoolean());
+    }
+
+    @Test
+    public void testRegister_RegisterUnregister() throws RemoteException {
+        NfcControllerAlwaysOnListener mListener =
+                new NfcControllerAlwaysOnListener(mNfcAdapter);
+        ControllerAlwaysOnListener mockListener1 = mock(ControllerAlwaysOnListener.class);
+        ControllerAlwaysOnListener mockListener2 = mock(ControllerAlwaysOnListener.class);
+
+        // Verify that the state listener registered with the NFC Adapter
+        mListener.register(getExecutor(), mockListener1);
+        verify(mNfcAdapter, times(1)).registerControllerAlwaysOnListener(any());
+
+        // Register a second client and no new call to NFC Adapter
+        mListener.register(getExecutor(), mockListener2);
+        verify(mNfcAdapter, times(1)).registerControllerAlwaysOnListener(any());
+
+        // Unregister first listener
+        mListener.unregister(mockListener1);
+        verify(mNfcAdapter, times(1)).registerControllerAlwaysOnListener(any());
+        verify(mNfcAdapter, times(0)).unregisterControllerAlwaysOnListener(any());
+
+        // Unregister second listener and the state listener registered with the NFC Adapter
+        mListener.unregister(mockListener2);
+        verify(mNfcAdapter, times(1)).registerControllerAlwaysOnListener(any());
+        verify(mNfcAdapter, times(1)).unregisterControllerAlwaysOnListener(any());
+    }
+
+    @Test
+    public void testRegister_FirstRegisterFails() throws RemoteException {
+        NfcControllerAlwaysOnListener mListener =
+                new NfcControllerAlwaysOnListener(mNfcAdapter);
+        ControllerAlwaysOnListener mockListener1 = mock(ControllerAlwaysOnListener.class);
+        ControllerAlwaysOnListener mockListener2 = mock(ControllerAlwaysOnListener.class);
+
+        // Throw a remote exception whenever first registering
+        doThrow(mThrowRemoteException).when(mNfcAdapter).registerControllerAlwaysOnListener(
+                any());
+
+        mListener.register(getExecutor(), mockListener1);
+        verify(mNfcAdapter, times(1)).registerControllerAlwaysOnListener(any());
+
+        // No longer throw an exception, instead succeed
+        doNothing().when(mNfcAdapter).registerControllerAlwaysOnListener(any());
+
+        // Register a different listener
+        mListener.register(getExecutor(), mockListener2);
+        verify(mNfcAdapter, times(2)).registerControllerAlwaysOnListener(any());
+
+        // Ensure first and second listener were invoked
+        mListener.onControllerAlwaysOnChanged(true);
+        verifyListenerInvoked(mockListener1);
+        verifyListenerInvoked(mockListener2);
+    }
+
+    @Test
+    public void testRegister_RegisterSameListenerTwice() throws RemoteException {
+        NfcControllerAlwaysOnListener mListener =
+                new NfcControllerAlwaysOnListener(mNfcAdapter);
+        ControllerAlwaysOnListener mockListener = mock(ControllerAlwaysOnListener.class);
+
+        // Register the same listener Twice
+        mListener.register(getExecutor(), mockListener);
+        mListener.register(getExecutor(), mockListener);
+        verify(mNfcAdapter, times(1)).registerControllerAlwaysOnListener(any());
+
+        // Invoke a state change and ensure the listener is only called once
+        mListener.onControllerAlwaysOnChanged(true);
+        verifyListenerInvoked(mockListener);
+    }
+
+    @Test
+    public void testNotify_AllListenersNotified() throws RemoteException {
+
+        NfcControllerAlwaysOnListener listener = new NfcControllerAlwaysOnListener(mNfcAdapter);
+        List<ControllerAlwaysOnListener> mockListeners = new ArrayList<>();
+        for (int i = 0; i < 10; i++) {
+            ControllerAlwaysOnListener mockListener = mock(ControllerAlwaysOnListener.class);
+            listener.register(getExecutor(), mockListener);
+            mockListeners.add(mockListener);
+        }
+
+        // Invoke a state change and ensure all listeners are invoked
+        listener.onControllerAlwaysOnChanged(true);
+        for (ControllerAlwaysOnListener mListener : mockListeners) {
+            verifyListenerInvoked(mListener);
+        }
+    }
+
+    @Test
+    public void testStateChange_CorrectValue() {
+        runStateChangeValue(true, true);
+        runStateChangeValue(false, false);
+
+    }
+
+    private void runStateChangeValue(boolean isEnabledIn, boolean isEnabledOut) {
+        NfcControllerAlwaysOnListener listener = new NfcControllerAlwaysOnListener(mNfcAdapter);
+        ControllerAlwaysOnListener mockListener = mock(ControllerAlwaysOnListener.class);
+        listener.register(getExecutor(), mockListener);
+        listener.onControllerAlwaysOnChanged(isEnabledIn);
+        verify(mockListener, times(1)).onControllerAlwaysOnChanged(isEnabledOut);
+        verify(mockListener, times(0)).onControllerAlwaysOnChanged(!isEnabledOut);
+    }
+}
diff --git a/data/etc/car/com.android.car.shell.xml b/data/etc/car/com.android.car.shell.xml
index ec903ad..578c46e 100644
--- a/data/etc/car/com.android.car.shell.xml
+++ b/data/etc/car/com.android.car.shell.xml
@@ -28,5 +28,9 @@
         <permission name="android.car.permission.CONTROL_CAR_CLIMATE"/>
         <permission name="android.car.permission.CAR_TIRES"/>
         <permission name="android.car.permission.READ_CAR_STEERING"/>
+        <permission name="android.car.permission.REQUEST_CAR_EVS_ACTIVITY" />
+        <permission name="android.car.permission.CONTROL_CAR_EVS_ACTIVITY" />
+        <permission name="android.car.permission.USE_CAR_EVS_CAMERA" />
+        <permission name="android.car.permission.MONITOR_CAR_EVS_STATUS" />
     </privapp-permissions>
 </permissions>
diff --git a/data/etc/car/com.google.android.car.kitchensink.xml b/data/etc/car/com.google.android.car.kitchensink.xml
index e6196c2..40dda65 100644
--- a/data/etc/car/com.google.android.car.kitchensink.xml
+++ b/data/etc/car/com.google.android.car.kitchensink.xml
@@ -87,5 +87,9 @@
         <permission name="android.car.permission.STORAGE_MONITORING"/>
         <permission name="android.car.permission.VMS_PUBLISHER"/>
         <permission name="android.car.permission.VMS_SUBSCRIBER"/>
+        <permission name="android.car.permission.REQUEST_CAR_EVS_ACTIVITY" />
+        <permission name="android.car.permission.CONTROL_CAR_EVS_ACTIVITY" />
+        <permission name="android.car.permission.USE_CAR_EVS_CAMERA" />
+        <permission name="android.car.permission.MONITOR_CAR_EVS_STATUS" />
     </privapp-permissions>
 </permissions>
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index 5f34426..64c914e 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -417,6 +417,8 @@
         <permission name="android.permission.SET_WALLPAPER" />
         <permission name="android.permission.SET_WALLPAPER_COMPONENT" />
         <permission name="android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE" />
+        <!-- Permissions required for Incremental CTS tests -->
+        <permission name="com.android.permission.USE_INSTALLER_V2"/>
         <permission name="android.permission.LOADER_USAGE_STATS"/>
         <!-- Permission required to test system only camera devices. -->
         <permission name="android.permission.SYSTEM_CAMERA" />
@@ -456,6 +458,7 @@
         <permission name="android.permission.ACCESS_TV_TUNER" />
         <permission name="android.permission.TUNER_RESOURCE_ACCESS" />
         <!-- Permissions required for CTS test - TVInputManagerTest -->
+        <permission name="android.permission.ACCESS_TUNED_INFO" />
         <permission name="android.permission.TV_INPUT_HARDWARE" />
         <!-- Permission required for CTS test - PrivilegedLocationPermissionTest -->
         <permission name="android.permission.LOCATION_HARDWARE" />
@@ -517,7 +520,9 @@
         <permission name="android.permission.CONFIGURE_DISPLAY_BRIGHTNESS" />
         <permission name="android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER" />
         <permission name="android.permission.SET_MEDIA_KEY_LISTENER" />
-        <permission name="android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER" />
+        <permission name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" />
+        <!-- Permission required for CTS test - CtsAlarmManagerTestCases -->
+        <permission name="android.permission.UPDATE_DEVICE_STATS" />
     </privapp-permissions>
 
     <privapp-permissions package="com.android.statementservice">
diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json
index 81f1021..7ed791d 100644
--- a/data/etc/services.core.protolog.json
+++ b/data/etc/services.core.protolog.json
@@ -1735,6 +1735,12 @@
       "group": "WM_DEBUG_IME",
       "at": "com\/android\/server\/wm\/InsetsSourceProvider.java"
     },
+    "-108977760": {
+      "message": "Sandbox max bounds for uid %s to bounds %s. config to never sandbox = %s, config to always sandbox = %s, letterboxing from mismatch with parent bounds = %s, has mCompatDisplayInsets = %s, should create compatDisplayInsets = %s",
+      "level": "DEBUG",
+      "group": "WM_DEBUG_CONFIGURATION",
+      "at": "com\/android\/server\/wm\/ActivityRecord.java"
+    },
     "-106400104": {
       "message": "Preload recents with %s",
       "level": "DEBUG",
@@ -2887,12 +2893,6 @@
       "group": "WM_DEBUG_BOOT",
       "at": "com\/android\/server\/wm\/WindowManagerService.java"
     },
-    "1237719089": {
-      "message": "Sandbox max bounds for uid %s to bounds %s. letterboxing from mismatch with parent bounds = %s, has mCompatDisplayInsets = %s, should create compatDisplayInsets = %s",
-      "level": "DEBUG",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
     "1246035185": {
       "message": "stopFreezingDisplayLocked: Returning waitingForConfig=%b, waitingForRemoteRotation=%b, mAppsFreezingScreen=%d, mWindowsFreezingScreen=%d, mClientFreezingScreen=%b, mOpeningApps.size()=%d",
       "level": "DEBUG",
diff --git a/data/fonts/fonts.xml b/data/fonts/fonts.xml
index 2db4c5d..1163536 100644
--- a/data/fonts/fonts.xml
+++ b/data/fonts/fonts.xml
@@ -223,7 +223,7 @@
     <alias name="sans-serif-condensed-medium" to="sans-serif-condensed" weight="500" />
 
     <family name="serif">
-        <font weight="400" style="normal">NotoSerif-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSerif">NotoSerif-Regular.ttf</font>
         <font weight="700" style="normal">NotoSerif-Bold.ttf</font>
         <font weight="400" style="italic">NotoSerif-Italic.ttf</font>
         <font weight="700" style="italic">NotoSerif-BoldItalic.ttf</font>
@@ -245,7 +245,7 @@
     <alias name="monaco" to="monospace" />
 
     <family name="serif-monospace">
-        <font weight="400" style="normal">CutiveMono.ttf</font>
+        <font weight="400" style="normal" postScriptName="CutiveMono-Regular">CutiveMono.ttf</font>
     </family>
     <alias name="courier" to="serif-monospace" />
     <alias name="courier new" to="serif-monospace" />
@@ -255,7 +255,8 @@
     </family>
 
     <family name="cursive">
-        <font weight="400" style="normal">DancingScript-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="DancingScript">DancingScript-Regular.ttf
+        </font>
         <font weight="700" style="normal">DancingScript-Bold.ttf</font>
     </family>
 
@@ -271,148 +272,195 @@
         <font weight="700" style="normal">SourceSansPro-Bold.ttf</font>
         <font weight="700" style="italic">SourceSansPro-BoldItalic.ttf</font>
     </family>
-    <alias name="source-sans-pro-semi-bold" to="source-sans-pro" weight="600" />
+    <alias name="source-sans-pro-semi-bold" to="source-sans-pro" weight="600"/>
 
     <!-- fallback fonts -->
     <family lang="und-Arab" variant="elegant">
-        <font weight="400" style="normal">NotoNaskhArabic-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoNaskhArabic">
+            NotoNaskhArabic-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoNaskhArabic-Bold.ttf</font>
     </family>
     <family lang="und-Arab" variant="compact">
-        <font weight="400" style="normal">NotoNaskhArabicUI-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoNaskhArabicUI">
+            NotoNaskhArabicUI-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoNaskhArabicUI-Bold.ttf</font>
     </family>
     <family lang="und-Ethi">
-	      <font weight="400" style="normal">NotoSansEthiopic-VF.ttf
-	          <axis tag="wght" stylevalue="400"/>
-	      </font>
-	      <font weight="500" style="normal">NotoSansEthiopic-VF.ttf
-	          <axis tag="wght" stylevalue="500"/>
-	      </font>
-	      <font weight="600" style="normal">NotoSansEthiopic-VF.ttf
-	          <axis tag="wght" stylevalue="600"/>
-	      </font>
-	      <font weight="700" style="normal">NotoSansEthiopic-VF.ttf
-	          <axis tag="wght" stylevalue="700"/>
-	      </font>
-	      <font weight="400" style="normal" fallbackFor="serif">NotoSerifEthiopic-VF.ttf
-	          <axis tag="wght" stylevalue="400"/>
-	      </font>
-	      <font weight="500" style="normal" fallbackFor="serif">NotoSerifEthiopic-VF.ttf
-	          <axis tag="wght" stylevalue="500"/>
-	      </font>
-	      <font weight="600" style="normal" fallbackFor="serif">NotoSerifEthiopic-VF.ttf
-	          <axis tag="wght" stylevalue="600"/>
-	      </font>
-	      <font weight="700" style="normal" fallbackFor="serif">NotoSerifEthiopic-VF.ttf
-	          <axis tag="wght" stylevalue="700"/>
-	      </font>
+        <font weight="400" style="normal" postScriptName="NotoSansEthiopic-Regular">
+            NotoSansEthiopic-VF.ttf
+            <axis tag="wght" stylevalue="400"/>
+        </font>
+        <font weight="500" style="normal" postScriptName="NotoSansEthiopic-Regular">
+            NotoSansEthiopic-VF.ttf
+            <axis tag="wght" stylevalue="500"/>
+        </font>
+        <font weight="600" style="normal" postScriptName="NotoSansEthiopic-Regular">
+            NotoSansEthiopic-VF.ttf
+            <axis tag="wght" stylevalue="600"/>
+        </font>
+        <font weight="700" style="normal" postScriptName="NotoSansEthiopic-Regular">
+            NotoSansEthiopic-VF.ttf
+            <axis tag="wght" stylevalue="700"/>
+        </font>
+        <font weight="400" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifEthiopic-Regular">NotoSerifEthiopic-VF.ttf
+            <axis tag="wght" stylevalue="400"/>
+        </font>
+        <font weight="500" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifEthiopic-Regular">NotoSerifEthiopic-VF.ttf
+            <axis tag="wght" stylevalue="500"/>
+        </font>
+        <font weight="600" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifEthiopic-Regular">NotoSerifEthiopic-VF.ttf
+            <axis tag="wght" stylevalue="600"/>
+        </font>
+        <font weight="700" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifEthiopic-Regular">NotoSerifEthiopic-VF.ttf
+            <axis tag="wght" stylevalue="700"/>
+        </font>
     </family>
     <family lang="und-Hebr">
-        <font weight="400" style="normal">NotoSansHebrew-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansHebrew">
+            NotoSansHebrew-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoSansHebrew-Bold.ttf</font>
         <font weight="400" style="normal" fallbackFor="serif">NotoSerifHebrew-Regular.ttf</font>
         <font weight="700" style="normal" fallbackFor="serif">NotoSerifHebrew-Bold.ttf</font>
     </family>
     <family lang="und-Thai" variant="elegant">
-        <font weight="400" style="normal">NotoSansThai-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansThai">NotoSansThai-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoSansThai-Bold.ttf</font>
-        <font weight="400" style="normal" fallbackFor="serif">NotoSerifThai-Regular.ttf</font>
+        <font weight="400" style="normal" fallbackFor="serif" postScriptName="NotoSerifThai">
+            NotoSerifThai-Regular.ttf
+        </font>
         <font weight="700" style="normal" fallbackFor="serif">NotoSerifThai-Bold.ttf</font>
     </family>
     <family lang="und-Thai" variant="compact">
-        <font weight="400" style="normal">NotoSansThaiUI-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansThaiUI">
+            NotoSansThaiUI-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoSansThaiUI-Bold.ttf</font>
     </family>
     <family lang="und-Armn">
-        <font weight="400" style="normal">NotoSansArmenian-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansArmenian-Regular">
+            NotoSansArmenian-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansArmenian-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansArmenian-Regular">
+            NotoSansArmenian-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansArmenian-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansArmenian-Regular">
+            NotoSansArmenian-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansArmenian-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansArmenian-Regular">
+            NotoSansArmenian-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
-        <font weight="400" style="normal" fallbackFor="serif">NotoSerifArmenian-VF.ttf
+        <font weight="400" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifArmenian-Regular">NotoSerifArmenian-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal" fallbackFor="serif">NotoSerifArmenian-VF.ttf
+        <font weight="500" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifArmenian-Regular">NotoSerifArmenian-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal" fallbackFor="serif">NotoSerifArmenian-VF.ttf
+        <font weight="600" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifArmenian-Regular">NotoSerifArmenian-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal" fallbackFor="serif">NotoSerifArmenian-VF.ttf
+        <font weight="700" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifArmenian-Regular">NotoSerifArmenian-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Geor,und-Geok">
-        <font weight="400" style="normal">NotoSansGeorgian-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansGeorgian-Regular">
+            NotoSansGeorgian-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansGeorgian-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansGeorgian-Regular">
+            NotoSansGeorgian-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansGeorgian-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansGeorgian-Regular">
+            NotoSansGeorgian-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansGeorgian-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansGeorgian-Regular">
+            NotoSansGeorgian-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
-        <font weight="400" style="normal" fallbackFor="serif">NotoSerifGeorgian-VF.ttf
+        <font weight="400" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifGeorgian-Regular">NotoSerifGeorgian-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal" fallbackFor="serif">NotoSerifGeorgian-VF.ttf
+        <font weight="500" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifGeorgian-Regular">NotoSerifGeorgian-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal" fallbackFor="serif">NotoSerifGeorgian-VF.ttf
+        <font weight="600" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifGeorgian-Regular">NotoSerifGeorgian-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal" fallbackFor="serif">NotoSerifGeorgian-VF.ttf
+        <font weight="700" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifGeorgian-Regular">NotoSerifGeorgian-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Deva" variant="elegant">
-        <font weight="400" style="normal">NotoSansDevanagari-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansDevanagari-Regular">
+            NotoSansDevanagari-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansDevanagari-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansDevanagari-Regular">
+            NotoSansDevanagari-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansDevanagari-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansDevanagari-Regular">
+            NotoSansDevanagari-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansDevanagari-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansDevanagari-Regular">
+            NotoSansDevanagari-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
-        <font weight="400" style="normal" fallbackFor="serif">NotoSerifDevanagari-VF.ttf
+        <font weight="400" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifDevanagari-Regular">NotoSerifDevanagari-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal" fallbackFor="serif">NotoSerifDevanagari-VF.ttf
+        <font weight="500" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifDevanagari-Regular">NotoSerifDevanagari-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal" fallbackFor="serif">NotoSerifDevanagari-VF.ttf
+        <font weight="600" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifDevanagari-Regular">NotoSerifDevanagari-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal" fallbackFor="serif">NotoSerifDevanagari-VF.ttf
+        <font weight="700" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifDevanagari-Regular">NotoSerifDevanagari-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Deva" variant="compact">
-        <font weight="400" style="normal">NotoSansDevanagariUI-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansDevanagariUI-Regular">
+            NotoSansDevanagariUI-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansDevanagariUI-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansDevanagariUI-Regular">
+            NotoSansDevanagariUI-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansDevanagariUI-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansDevanagariUI-Regular">
+            NotoSansDevanagariUI-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansDevanagariUI-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansDevanagariUI-Regular">
+            NotoSansDevanagariUI-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
@@ -421,347 +469,451 @@
          danda characters.
     -->
     <family lang="und-Gujr" variant="elegant">
-        <font weight="400" style="normal">NotoSansGujarati-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansGujarati">
+            NotoSansGujarati-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoSansGujarati-Bold.ttf</font>
-        <font weight="400" style="normal" fallbackFor="serif">NotoSerifGujarati-VF.ttf
+        <font weight="400" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifGujarati-Regular">NotoSerifGujarati-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal" fallbackFor="serif">NotoSerifGujarati-VF.ttf
+        <font weight="500" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifGujarati-Regular">NotoSerifGujarati-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal" fallbackFor="serif">NotoSerifGujarati-VF.ttf
+        <font weight="600" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifGujarati-Regular">NotoSerifGujarati-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal" fallbackFor="serif">NotoSerifGujarati-VF.ttf
+        <font weight="700" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifGujarati-Regular">NotoSerifGujarati-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Gujr" variant="compact">
-        <font weight="400" style="normal">NotoSansGujaratiUI-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansGujaratiUI">
+            NotoSansGujaratiUI-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoSansGujaratiUI-Bold.ttf</font>
     </family>
     <family lang="und-Guru" variant="elegant">
-        <font weight="400" style="normal">NotoSansGurmukhi-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansGurmukhi-Regular">
+            NotoSansGurmukhi-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansGurmukhi-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansGurmukhi-Regular">
+            NotoSansGurmukhi-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansGurmukhi-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansGurmukhi-Regular">
+            NotoSansGurmukhi-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansGurmukhi-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansGurmukhi-Regular">
+            NotoSansGurmukhi-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
-        <font weight="400" style="normal" fallbackFor="serif">NotoSerifGurmukhi-VF.ttf
+        <font weight="400" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifGurmukhi-Regular">NotoSerifGurmukhi-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal" fallbackFor="serif">NotoSerifGurmukhi-VF.ttf
+        <font weight="500" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifGurmukhi-Regular">NotoSerifGurmukhi-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal" fallbackFor="serif">NotoSerifGurmukhi-VF.ttf
+        <font weight="600" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifGurmukhi-Regular">NotoSerifGurmukhi-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal" fallbackFor="serif">NotoSerifGurmukhi-VF.ttf
+        <font weight="700" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifGurmukhi-Regular">NotoSerifGurmukhi-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Guru" variant="compact">
-        <font weight="400" style="normal">NotoSansGurmukhiUI-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansGurmukhiUI-Regular">
+            NotoSansGurmukhiUI-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansGurmukhiUI-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansGurmukhiUI-Regular">
+            NotoSansGurmukhiUI-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansGurmukhiUI-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansGurmukhiUI-Regular">
+            NotoSansGurmukhiUI-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansGurmukhiUI-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansGurmukhiUI-Regular">
+            NotoSansGurmukhiUI-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Taml" variant="elegant">
-        <font weight="400" style="normal">NotoSansTamil-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansTamil-Regular">
+            NotoSansTamil-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansTamil-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansTamil-Regular">
+            NotoSansTamil-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansTamil-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansTamil-Regular">
+            NotoSansTamil-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansTamil-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansTamil-Regular">
+            NotoSansTamil-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
-        <font weight="400" style="normal" fallbackFor="serif">NotoSerifTamil-VF.ttf
+        <font weight="400" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifTamil-Regular">NotoSerifTamil-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal" fallbackFor="serif">NotoSerifTamil-VF.ttf
+        <font weight="500" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifTamil-Regular">NotoSerifTamil-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal" fallbackFor="serif">NotoSerifTamil-VF.ttf
+        <font weight="600" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifTamil-Regular">NotoSerifTamil-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal" fallbackFor="serif">NotoSerifTamil-VF.ttf
+        <font weight="700" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifTamil-Regular">NotoSerifTamil-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Taml" variant="compact">
-        <font weight="400" style="normal">NotoSansTamilUI-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansTamilUI-Regular">
+            NotoSansTamilUI-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansTamilUI-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansTamilUI-Regular">
+            NotoSansTamilUI-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansTamilUI-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansTamilUI-Regular">
+            NotoSansTamilUI-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansTamilUI-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansTamilUI-Regular">
+            NotoSansTamilUI-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Mlym" variant="elegant">
-        <font weight="400" style="normal">NotoSansMalayalam-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansMalayalam-Regular">
+            NotoSansMalayalam-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansMalayalam-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansMalayalam-Regular">
+            NotoSansMalayalam-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansMalayalam-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansMalayalam-Regular">
+            NotoSansMalayalam-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansMalayalam-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansMalayalam-Regular">
+            NotoSansMalayalam-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
-        <font weight="400" style="normal" fallbackFor="serif">NotoSerifMalayalam-VF.ttf
+        <font weight="400" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifMalayalam-Regular">NotoSerifMalayalam-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal" fallbackFor="serif">NotoSerifMalayalam-VF.ttf
+        <font weight="500" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifMalayalam-Regular">NotoSerifMalayalam-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal" fallbackFor="serif">NotoSerifMalayalam-VF.ttf
+        <font weight="600" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifMalayalam-Regular">NotoSerifMalayalam-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal" fallbackFor="serif">NotoSerifMalayalam-VF.ttf
+        <font weight="700" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifMalayalam-Regular">NotoSerifMalayalam-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Mlym" variant="compact">
-        <font weight="400" style="normal">NotoSansMalayalamUI-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansMalayalamUI-Regular">
+            NotoSansMalayalamUI-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansMalayalamUI-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansMalayalamUI-Regular">
+            NotoSansMalayalamUI-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansMalayalamUI-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansMalayalamUI-Regular">
+            NotoSansMalayalamUI-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansMalayalamUI-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansMalayalamUI-Regular">
+            NotoSansMalayalamUI-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Beng" variant="elegant">
-        <font weight="400" style="normal">NotoSansBengali-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansBengali-Regular">
+            NotoSansBengali-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansBengali-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansBengali-Regular">
+            NotoSansBengali-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansBengali-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansBengali-Regular">
+            NotoSansBengali-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansBengali-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansBengali-Regular">
+            NotoSansBengali-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
-        <font weight="400" style="normal" fallbackFor="serif">NotoSerifBengali-VF.ttf
+        <font weight="400" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifBengali-Regular">NotoSerifBengali-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal" fallbackFor="serif">NotoSerifBengali-VF.ttf
+        <font weight="500" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifBengali-Regular">NotoSerifBengali-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal" fallbackFor="serif">NotoSerifBengali-VF.ttf
+        <font weight="600" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifBengali-Regular">NotoSerifBengali-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal" fallbackFor="serif">NotoSerifBengali-VF.ttf
+        <font weight="700" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifBengali-Regular">NotoSerifBengali-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Beng" variant="compact">
-        <font weight="400" style="normal">NotoSansBengaliUI-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansBengaliUI-Regular">
+            NotoSansBengaliUI-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansBengaliUI-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansBengaliUI-Regular">
+            NotoSansBengaliUI-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansBengaliUI-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansBengaliUI-Regular">
+            NotoSansBengaliUI-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansBengaliUI-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansBengaliUI-Regular">
+            NotoSansBengaliUI-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Telu" variant="elegant">
-        <font weight="400" style="normal">NotoSansTelugu-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansTelugu-Regular">
+            NotoSansTelugu-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansTelugu-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansTelugu-Regular">
+            NotoSansTelugu-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansTelugu-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansTelugu-Regular">
+            NotoSansTelugu-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansTelugu-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansTelugu-Regular">
+            NotoSansTelugu-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
-        <font weight="400" style="normal" fallbackFor="serif">NotoSerifTelugu-VF.ttf
+        <font weight="400" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifTelugu-Regular">NotoSerifTelugu-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal" fallbackFor="serif">NotoSerifTelugu-VF.ttf
+        <font weight="500" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifTelugu-Regular">NotoSerifTelugu-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal" fallbackFor="serif">NotoSerifTelugu-VF.ttf
+        <font weight="600" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifTelugu-Regular">NotoSerifTelugu-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal" fallbackFor="serif">NotoSerifTelugu-VF.ttf
+        <font weight="700" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifTelugu-Regular">NotoSerifTelugu-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Telu" variant="compact">
-        <font weight="400" style="normal">NotoSansTeluguUI-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansTeluguUI-Regular">
+            NotoSansTeluguUI-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansTeluguUI-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansTeluguUI-Regular">
+            NotoSansTeluguUI-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansTeluguUI-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansTeluguUI-Regular">
+            NotoSansTeluguUI-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansTeluguUI-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansTeluguUI-Regular">
+            NotoSansTeluguUI-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Knda" variant="elegant">
-        <font weight="400" style="normal">NotoSansKannada-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansKannada-Regular">
+            NotoSansKannada-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansKannada-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansKannada-Regular">
+            NotoSansKannada-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansKannada-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansKannada-Regular">
+            NotoSansKannada-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansKannada-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansKannada-Regular">
+            NotoSansKannada-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
-        <font weight="400" style="normal" fallbackFor="serif">NotoSerifKannada-VF.ttf
+        <font weight="400" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifKannada-Regular">NotoSerifKannada-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal" fallbackFor="serif">NotoSerifKannada-VF.ttf
+        <font weight="500" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifKannada-Regular">NotoSerifKannada-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal" fallbackFor="serif">NotoSerifKannada-VF.ttf
+        <font weight="600" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifKannada-Regular">NotoSerifKannada-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal" fallbackFor="serif">NotoSerifKannada-VF.ttf
+        <font weight="700" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifKannada-Regular">NotoSerifKannada-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Knda" variant="compact">
-        <font weight="400" style="normal">NotoSansKannadaUI-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansKannadaUI-Regular">
+            NotoSansKannadaUI-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansKannadaUI-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansKannadaUI-Regular">
+            NotoSansKannadaUI-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansKannadaUI-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansKannadaUI-Regular">
+            NotoSansKannadaUI-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansKannadaUI-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansKannadaUI-Regular">
+            NotoSansKannadaUI-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Orya" variant="elegant">
-        <font weight="400" style="normal">NotoSansOriya-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansOriya">NotoSansOriya-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoSansOriya-Bold.ttf</font>
     </family>
     <family lang="und-Orya" variant="compact">
-        <font weight="400" style="normal">NotoSansOriyaUI-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansOriyaUI">
+            NotoSansOriyaUI-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoSansOriyaUI-Bold.ttf</font>
     </family>
     <family lang="und-Sinh" variant="elegant">
-        <font weight="400" style="normal">NotoSansSinhala-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansSinhala-Regular">
+            NotoSansSinhala-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansSinhala-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansSinhala-Regular">
+            NotoSansSinhala-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansSinhala-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansSinhala-Regular">
+            NotoSansSinhala-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansSinhala-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansSinhala-Regular">
+            NotoSansSinhala-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
-        <font weight="400" style="normal" fallbackFor="serif">NotoSerifSinhala-VF.ttf
+        <font weight="400" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifSinhala-Regular">NotoSerifSinhala-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal" fallbackFor="serif">NotoSerifSinhala-VF.ttf
+        <font weight="500" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifSinhala-Regular">NotoSerifSinhala-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal" fallbackFor="serif">NotoSerifSinhala-VF.ttf
+        <font weight="600" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifSinhala-Regular">NotoSerifSinhala-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal" fallbackFor="serif">NotoSerifSinhala-VF.ttf
+        <font weight="700" style="normal" fallbackFor="serif"
+              postScriptName="NotoSerifSinhala-Regular">NotoSerifSinhala-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Sinh" variant="compact">
-        <font weight="400" style="normal">NotoSansSinhalaUI-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansSinhalaUI-Regular">
+            NotoSansSinhalaUI-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansSinhalaUI-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansSinhalaUI-Regular">
+            NotoSansSinhalaUI-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansSinhalaUI-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansSinhalaUI-Regular">
+            NotoSansSinhalaUI-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansSinhalaUI-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansSinhalaUI-Regular">
+            NotoSansSinhalaUI-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Khmr" variant="elegant">
-        <font weight="100" style="normal">NotoSansKhmer-VF.ttf
+        <font weight="100" style="normal" postScriptName="NotoSansKhmer-Regular">
+            NotoSansKhmer-VF.ttf
             <axis tag="wdth" stylevalue="100.0"/>
             <axis tag="wght" stylevalue="26.0"/>
         </font>
-        <font weight="200" style="normal">NotoSansKhmer-VF.ttf
+        <font weight="200" style="normal" postScriptName="NotoSansKhmer-Regular">
+            NotoSansKhmer-VF.ttf
             <axis tag="wdth" stylevalue="100.0"/>
             <axis tag="wght" stylevalue="39.0"/>
         </font>
-        <font weight="300" style="normal">NotoSansKhmer-VF.ttf
+        <font weight="300" style="normal" postScriptName="NotoSansKhmer-Regular">
+            NotoSansKhmer-VF.ttf
             <axis tag="wdth" stylevalue="100.0"/>
             <axis tag="wght" stylevalue="58.0"/>
         </font>
-        <font weight="400" style="normal">NotoSansKhmer-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansKhmer-Regular">
+            NotoSansKhmer-VF.ttf
             <axis tag="wdth" stylevalue="100.0"/>
             <axis tag="wght" stylevalue="90.0"/>
         </font>
-        <font weight="500" style="normal">NotoSansKhmer-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansKhmer-Regular">
+            NotoSansKhmer-VF.ttf
             <axis tag="wdth" stylevalue="100.0"/>
             <axis tag="wght" stylevalue="108.0"/>
         </font>
-        <font weight="600" style="normal">NotoSansKhmer-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansKhmer-Regular">
+            NotoSansKhmer-VF.ttf
             <axis tag="wdth" stylevalue="100.0"/>
             <axis tag="wght" stylevalue="128.0"/>
         </font>
-        <font weight="700" style="normal">NotoSansKhmer-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansKhmer-Regular">
+            NotoSansKhmer-VF.ttf
             <axis tag="wdth" stylevalue="100.0"/>
             <axis tag="wght" stylevalue="151.0"/>
         </font>
-        <font weight="800" style="normal">NotoSansKhmer-VF.ttf
+        <font weight="800" style="normal" postScriptName="NotoSansKhmer-Regular">
+            NotoSansKhmer-VF.ttf
             <axis tag="wdth" stylevalue="100.0"/>
             <axis tag="wght" stylevalue="169.0"/>
         </font>
-        <font weight="900" style="normal">NotoSansKhmer-VF.ttf
+        <font weight="900" style="normal" postScriptName="NotoSansKhmer-Regular">
+            NotoSansKhmer-VF.ttf
             <axis tag="wdth" stylevalue="100.0"/>
             <axis tag="wght" stylevalue="190.0"/>
         </font>
@@ -769,17 +921,23 @@
         <font weight="700" style="normal" fallbackFor="serif">NotoSerifKhmer-Bold.otf</font>
     </family>
     <family lang="und-Khmr" variant="compact">
-        <font weight="400" style="normal">NotoSansKhmerUI-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansKhmerUI">
+            NotoSansKhmerUI-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoSansKhmerUI-Bold.ttf</font>
     </family>
     <family lang="und-Laoo" variant="elegant">
-        <font weight="400" style="normal">NotoSansLao-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansLao">NotoSansLao-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoSansLao-Bold.ttf</font>
-        <font weight="400" style="normal" fallbackFor="serif">NotoSerifLao-Regular.ttf</font>
+        <font weight="400" style="normal" fallbackFor="serif" postScriptName="NotoSerifLao">
+            NotoSerifLao-Regular.ttf
+        </font>
         <font weight="700" style="normal" fallbackFor="serif">NotoSerifLao-Bold.ttf</font>
     </family>
     <family lang="und-Laoo" variant="compact">
-        <font weight="400" style="normal">NotoSansLaoUI-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansLaoUI">NotoSansLaoUI-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoSansLaoUI-Bold.ttf</font>
     </family>
     <family lang="und-Mymr" variant="elegant">
@@ -795,56 +953,78 @@
         <font weight="700" style="normal">NotoSansMyanmarUI-Bold.otf</font>
     </family>
     <family lang="und-Thaa">
-        <font weight="400" style="normal">NotoSansThaana-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansThaana">
+            NotoSansThaana-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoSansThaana-Bold.ttf</font>
     </family>
     <family lang="und-Cham">
-        <font weight="400" style="normal">NotoSansCham-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansCham">NotoSansCham-Regular.ttf
+        </font>
         <font weight="700" style="normal">NotoSansCham-Bold.ttf</font>
     </family>
     <family lang="und-Ahom">
         <font weight="400" style="normal">NotoSansAhom-Regular.otf</font>
     </family>
     <family lang="und-Adlm">
-        <font weight="400" style="normal">NotoSansAdlam-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansAdlam-Regular">
+            NotoSansAdlam-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansAdlam-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansAdlam-Regular">
+            NotoSansAdlam-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansAdlam-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansAdlam-Regular">
+            NotoSansAdlam-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansAdlam-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansAdlam-Regular">
+            NotoSansAdlam-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Avst">
-        <font weight="400" style="normal">NotoSansAvestan-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansAvestan">
+            NotoSansAvestan-Regular.ttf
+        </font>
     </family>
     <family lang="und-Bali">
-        <font weight="400" style="normal">NotoSansBalinese-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansBalinese">
+            NotoSansBalinese-Regular.ttf
+        </font>
     </family>
     <family lang="und-Bamu">
-        <font weight="400" style="normal">NotoSansBamum-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansBamum">NotoSansBamum-Regular.ttf
+        </font>
     </family>
     <family lang="und-Batk">
-        <font weight="400" style="normal">NotoSansBatak-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansBatak">NotoSansBatak-Regular.ttf
+        </font>
     </family>
     <family lang="und-Brah">
-        <font weight="400" style="normal">NotoSansBrahmi-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansBrahmi">
+            NotoSansBrahmi-Regular.ttf
+        </font>
     </family>
     <family lang="und-Bugi">
-        <font weight="400" style="normal">NotoSansBuginese-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansBuginese">
+            NotoSansBuginese-Regular.ttf
+        </font>
     </family>
     <family lang="und-Buhd">
-        <font weight="400" style="normal">NotoSansBuhid-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansBuhid">NotoSansBuhid-Regular.ttf
+        </font>
     </family>
     <family lang="und-Cans">
-        <font weight="400" style="normal">NotoSansCanadianAboriginal-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansCanadianAboriginal">
+            NotoSansCanadianAboriginal-Regular.ttf
+        </font>
     </family>
     <family lang="und-Cari">
-        <font weight="400" style="normal">NotoSansCarian-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansCarian">
+            NotoSansCarian-Regular.ttf
+        </font>
     </family>
     <family lang="und-Cakm">
         <font weight="400" style="normal">NotoSansChakma-Regular.otf</font>
@@ -853,164 +1033,255 @@
         <font weight="400" style="normal">NotoSansCherokee-Regular.ttf</font>
     </family>
     <family lang="und-Copt">
-        <font weight="400" style="normal">NotoSansCoptic-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansCoptic">
+            NotoSansCoptic-Regular.ttf
+        </font>
     </family>
     <family lang="und-Xsux">
-        <font weight="400" style="normal">NotoSansCuneiform-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansCuneiform">
+            NotoSansCuneiform-Regular.ttf
+        </font>
     </family>
     <family lang="und-Cprt">
-        <font weight="400" style="normal">NotoSansCypriot-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansCypriot">
+            NotoSansCypriot-Regular.ttf
+        </font>
     </family>
     <family lang="und-Dsrt">
-        <font weight="400" style="normal">NotoSansDeseret-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansDeseret">
+            NotoSansDeseret-Regular.ttf
+        </font>
     </family>
     <family lang="und-Egyp">
-        <font weight="400" style="normal">NotoSansEgyptianHieroglyphs-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansEgyptianHieroglyphs">
+            NotoSansEgyptianHieroglyphs-Regular.ttf
+        </font>
     </family>
     <family lang="und-Elba">
         <font weight="400" style="normal">NotoSansElbasan-Regular.otf</font>
     </family>
     <family lang="und-Glag">
-        <font weight="400" style="normal">NotoSansGlagolitic-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansGlagolitic">
+            NotoSansGlagolitic-Regular.ttf
+        </font>
     </family>
     <family lang="und-Goth">
-        <font weight="400" style="normal">NotoSansGothic-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansGothic">
+            NotoSansGothic-Regular.ttf
+        </font>
     </family>
     <family lang="und-Hano">
-        <font weight="400" style="normal">NotoSansHanunoo-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansHanunoo">
+            NotoSansHanunoo-Regular.ttf
+        </font>
     </family>
     <family lang="und-Armi">
-        <font weight="400" style="normal">NotoSansImperialAramaic-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansImperialAramaic">
+            NotoSansImperialAramaic-Regular.ttf
+        </font>
     </family>
     <family lang="und-Phli">
-        <font weight="400" style="normal">NotoSansInscriptionalPahlavi-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansInscriptionalPahlavi">
+            NotoSansInscriptionalPahlavi-Regular.ttf
+        </font>
     </family>
     <family lang="und-Prti">
-        <font weight="400" style="normal">NotoSansInscriptionalParthian-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansInscriptionalParthian">
+            NotoSansInscriptionalParthian-Regular.ttf
+        </font>
     </family>
     <family lang="und-Java">
         <font weight="400" style="normal">NotoSansJavanese-Regular.otf</font>
     </family>
     <family lang="und-Kthi">
-        <font weight="400" style="normal">NotoSansKaithi-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansKaithi">
+            NotoSansKaithi-Regular.ttf
+        </font>
     </family>
     <family lang="und-Kali">
-        <font weight="400" style="normal">NotoSansKayahLi-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansKayahLi">
+            NotoSansKayahLi-Regular.ttf
+        </font>
     </family>
     <family lang="und-Khar">
-        <font weight="400" style="normal">NotoSansKharoshthi-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansKharoshthi">
+            NotoSansKharoshthi-Regular.ttf
+        </font>
     </family>
     <family lang="und-Lepc">
-        <font weight="400" style="normal">NotoSansLepcha-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansLepcha">
+            NotoSansLepcha-Regular.ttf
+        </font>
     </family>
     <family lang="und-Limb">
-        <font weight="400" style="normal">NotoSansLimbu-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansLimbu">NotoSansLimbu-Regular.ttf
+        </font>
     </family>
     <family lang="und-Linb">
-        <font weight="400" style="normal">NotoSansLinearB-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansLinearB">
+            NotoSansLinearB-Regular.ttf
+        </font>
     </family>
     <family lang="und-Lisu">
-        <font weight="400" style="normal">NotoSansLisu-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansLisu">NotoSansLisu-Regular.ttf
+        </font>
     </family>
     <family lang="und-Lyci">
-        <font weight="400" style="normal">NotoSansLycian-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansLycian">
+            NotoSansLycian-Regular.ttf
+        </font>
     </family>
     <family lang="und-Lydi">
-        <font weight="400" style="normal">NotoSansLydian-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansLydian">
+            NotoSansLydian-Regular.ttf
+        </font>
     </family>
     <family lang="und-Mand">
-        <font weight="400" style="normal">NotoSansMandaic-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansMandaic">
+            NotoSansMandaic-Regular.ttf
+        </font>
     </family>
     <family lang="und-Mtei">
-        <font weight="400" style="normal">NotoSansMeeteiMayek-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansMeeteiMayek">
+            NotoSansMeeteiMayek-Regular.ttf
+        </font>
     </family>
     <family lang="und-Talu">
-        <font weight="400" style="normal">NotoSansNewTaiLue-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansNewTaiLue">
+            NotoSansNewTaiLue-Regular.ttf
+        </font>
     </family>
     <family lang="und-Nkoo">
-        <font weight="400" style="normal">NotoSansNKo-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansNKo">NotoSansNKo-Regular.ttf
+        </font>
     </family>
     <family lang="und-Ogam">
-        <font weight="400" style="normal">NotoSansOgham-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansOgham">NotoSansOgham-Regular.ttf
+        </font>
     </family>
     <family lang="und-Olck">
-        <font weight="400" style="normal">NotoSansOlChiki-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansOlChiki">
+            NotoSansOlChiki-Regular.ttf
+        </font>
     </family>
     <family lang="und-Ital">
-        <font weight="400" style="normal">NotoSansOldItalic-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansOldItalic">
+            NotoSansOldItalic-Regular.ttf
+        </font>
     </family>
     <family lang="und-Xpeo">
-        <font weight="400" style="normal">NotoSansOldPersian-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansOldPersian">
+            NotoSansOldPersian-Regular.ttf
+        </font>
     </family>
     <family lang="und-Sarb">
-        <font weight="400" style="normal">NotoSansOldSouthArabian-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansOldSouthArabian">
+            NotoSansOldSouthArabian-Regular.ttf
+        </font>
     </family>
     <family lang="und-Orkh">
-        <font weight="400" style="normal">NotoSansOldTurkic-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansOldTurkic">
+            NotoSansOldTurkic-Regular.ttf
+        </font>
     </family>
     <family lang="und-Osge">
         <font weight="400" style="normal">NotoSansOsage-Regular.ttf</font>
     </family>
     <family lang="und-Osma">
-        <font weight="400" style="normal">NotoSansOsmanya-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansOsmanya">
+            NotoSansOsmanya-Regular.ttf
+        </font>
     </family>
     <family lang="und-Phnx">
-        <font weight="400" style="normal">NotoSansPhoenician-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansPhoenician">
+            NotoSansPhoenician-Regular.ttf
+        </font>
     </family>
     <family lang="und-Rjng">
-        <font weight="400" style="normal">NotoSansRejang-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansRejang">
+            NotoSansRejang-Regular.ttf
+        </font>
     </family>
     <family lang="und-Runr">
-        <font weight="400" style="normal">NotoSansRunic-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansRunic">NotoSansRunic-Regular.ttf
+        </font>
     </family>
     <family lang="und-Samr">
-        <font weight="400" style="normal">NotoSansSamaritan-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansSamaritan">
+            NotoSansSamaritan-Regular.ttf
+        </font>
     </family>
     <family lang="und-Saur">
-        <font weight="400" style="normal">NotoSansSaurashtra-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansSaurashtra">
+            NotoSansSaurashtra-Regular.ttf
+        </font>
     </family>
     <family lang="und-Shaw">
-        <font weight="400" style="normal">NotoSansShavian-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansShavian">
+            NotoSansShavian-Regular.ttf
+        </font>
     </family>
     <family lang="und-Sund">
-        <font weight="400" style="normal">NotoSansSundanese-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansSundanese">
+            NotoSansSundanese-Regular.ttf
+        </font>
     </family>
     <family lang="und-Sylo">
-        <font weight="400" style="normal">NotoSansSylotiNagri-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansSylotiNagri">
+            NotoSansSylotiNagri-Regular.ttf
+        </font>
     </family>
     <!-- Esrangela should precede Eastern and Western Syriac, since it's our default form. -->
     <family lang="und-Syre">
-        <font weight="400" style="normal">NotoSansSyriacEstrangela-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansSyriacEstrangela">
+            NotoSansSyriacEstrangela-Regular.ttf
+        </font>
     </family>
     <family lang="und-Syrn">
-        <font weight="400" style="normal">NotoSansSyriacEastern-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansSyriacEastern">
+            NotoSansSyriacEastern-Regular.ttf
+        </font>
     </family>
     <family lang="und-Syrj">
-        <font weight="400" style="normal">NotoSansSyriacWestern-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansSyriacWestern">
+            NotoSansSyriacWestern-Regular.ttf
+        </font>
     </family>
     <family lang="und-Tglg">
-        <font weight="400" style="normal">NotoSansTagalog-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansTagalog">
+            NotoSansTagalog-Regular.ttf
+        </font>
     </family>
     <family lang="und-Tagb">
-        <font weight="400" style="normal">NotoSansTagbanwa-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansTagbanwa">
+            NotoSansTagbanwa-Regular.ttf
+        </font>
     </family>
     <family lang="und-Lana">
-        <font weight="400" style="normal">NotoSansTaiTham-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansTaiTham">
+            NotoSansTaiTham-Regular.ttf
+        </font>
     </family>
     <family lang="und-Tavt">
-        <font weight="400" style="normal">NotoSansTaiViet-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansTaiViet">
+            NotoSansTaiViet-Regular.ttf
+        </font>
     </family>
     <family lang="und-Tibt">
-        <font weight="400" style="normal">NotoSerifTibetan-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSerifTibetan-Regular">
+            NotoSerifTibetan-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSerifTibetan-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSerifTibetan-Regular">
+            NotoSerifTibetan-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSerifTibetan-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSerifTibetan-Regular">
+            NotoSerifTibetan-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSerifTibetan-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSerifTibetan-Regular">
+            NotoSerifTibetan-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
@@ -1018,29 +1289,48 @@
         <font weight="400" style="normal">NotoSansTifinagh-Regular.otf</font>
     </family>
     <family lang="und-Ugar">
-        <font weight="400" style="normal">NotoSansUgaritic-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansUgaritic">
+            NotoSansUgaritic-Regular.ttf
+        </font>
     </family>
     <family lang="und-Vaii">
-        <font weight="400" style="normal">NotoSansVai-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansVai">NotoSansVai-Regular.ttf
+        </font>
     </family>
     <family>
         <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted.ttf</font>
     </family>
     <family lang="zh-Hans">
-        <font weight="400" style="normal" index="2">NotoSansCJK-Regular.ttc</font>
-        <font weight="400" style="normal" index="2" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font>
+        <font weight="400" style="normal" index="2" postScriptName="NotoSansCJKjp-Regular">
+            NotoSansCJK-Regular.ttc
+        </font>
+        <font weight="400" style="normal" index="2" fallbackFor="serif"
+              postScriptName="NotoSerifCJKjp-Regular">NotoSerifCJK-Regular.ttc
+        </font>
     </family>
     <family lang="zh-Hant,zh-Bopo">
-        <font weight="400" style="normal" index="3">NotoSansCJK-Regular.ttc</font>
-        <font weight="400" style="normal" index="3" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font>
+        <font weight="400" style="normal" index="3" postScriptName="NotoSansCJKjp-Regular">
+            NotoSansCJK-Regular.ttc
+        </font>
+        <font weight="400" style="normal" index="3" fallbackFor="serif"
+              postScriptName="NotoSerifCJKjp-Regular">NotoSerifCJK-Regular.ttc
+        </font>
     </family>
     <family lang="ja">
-        <font weight="400" style="normal" index="0">NotoSansCJK-Regular.ttc</font>
-        <font weight="400" style="normal" index="0" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font>
+        <font weight="400" style="normal" index="0" postScriptName="NotoSansCJKjp-Regular">
+            NotoSansCJK-Regular.ttc
+        </font>
+        <font weight="400" style="normal" index="0" fallbackFor="serif"
+              postScriptName="NotoSerifCJKjp-Regular">NotoSerifCJK-Regular.ttc
+        </font>
     </family>
     <family lang="ko">
-        <font weight="400" style="normal" index="1">NotoSansCJK-Regular.ttc</font>
-        <font weight="400" style="normal" index="1" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font>
+        <font weight="400" style="normal" index="1" postScriptName="NotoSansCJKjp-Regular">
+            NotoSansCJK-Regular.ttc
+        </font>
+        <font weight="400" style="normal" index="1" fallbackFor="serif"
+              postScriptName="NotoSerifCJKjp-Regular">NotoSerifCJK-Regular.ttc
+        </font>
     </family>
     <family lang="und-Zsye">
         <font weight="400" style="normal">NotoColorEmoji.ttf</font>
@@ -1053,16 +1343,21 @@
         override the East Asian punctuation for Chinese.
     -->
     <family lang="und-Tale">
-        <font weight="400" style="normal">NotoSansTaiLe-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansTaiLe">NotoSansTaiLe-Regular.ttf
+        </font>
     </family>
     <family lang="und-Yiii">
-        <font weight="400" style="normal">NotoSansYi-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansYi">NotoSansYi-Regular.ttf</font>
     </family>
     <family lang="und-Mong">
-        <font weight="400" style="normal">NotoSansMongolian-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansMongolian">
+            NotoSansMongolian-Regular.ttf
+        </font>
     </family>
     <family lang="und-Phag">
-        <font weight="400" style="normal">NotoSansPhagsPa-Regular.ttf</font>
+        <font weight="400" style="normal" postScriptName="NotoSansPhagsPa">
+            NotoSansPhagsPa-Regular.ttf
+        </font>
     </family>
     <family lang="und-Hluw">
         <font weight="400" style="normal">NotoSansAnatolianHieroglyphs-Regular.otf</font>
@@ -1152,72 +1447,92 @@
         <font weight="400" style="normal">NotoSerifDogra-Regular.ttf</font>
     </family>
     <family lang="und-Medf">
-        <font weight="400" style="normal">NotoSansMedefaidrin-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansMedefaidrin-Regular">
+            NotoSansMedefaidrin-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansMedefaidrin-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansMedefaidrin-Regular">
+            NotoSansMedefaidrin-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansMedefaidrin-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansMedefaidrin-Regular">
+            NotoSansMedefaidrin-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansMedefaidrin-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansMedefaidrin-Regular">
+            NotoSansMedefaidrin-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Soyo">
-        <font weight="400" style="normal">NotoSansSoyombo-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansSoyombo-Regular">
+            NotoSansSoyombo-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansSoyombo-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansSoyombo-Regular">
+            NotoSansSoyombo-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansSoyombo-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansSoyombo-Regular">
+            NotoSansSoyombo-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansSoyombo-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansSoyombo-Regular">
+            NotoSansSoyombo-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Takr">
-        <font weight="400" style="normal">NotoSansTakri-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSansTakri-Regular">
+            NotoSansTakri-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSansTakri-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSansTakri-Regular">
+            NotoSansTakri-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSansTakri-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSansTakri-Regular">
+            NotoSansTakri-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSansTakri-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSansTakri-Regular">
+            NotoSansTakri-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Hmnp">
-        <font weight="400" style="normal">NotoSerifNyiakengPuachueHmong-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSerifHmongNyiakeng-Regular">
+            NotoSerifNyiakengPuachueHmong-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSerifNyiakengPuachueHmong-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSerifHmongNyiakeng-Regular">
+            NotoSerifNyiakengPuachueHmong-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSerifNyiakengPuachueHmong-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSerifHmongNyiakeng-Regular">
+            NotoSerifNyiakengPuachueHmong-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSerifNyiakengPuachueHmong-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSerifHmongNyiakeng-Regular">
+            NotoSerifNyiakengPuachueHmong-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
     <family lang="und-Yezi">
-        <font weight="400" style="normal">NotoSerifYezidi-VF.ttf
+        <font weight="400" style="normal" postScriptName="NotoSerifYezidi-Regular">
+            NotoSerifYezidi-VF.ttf
             <axis tag="wght" stylevalue="400"/>
         </font>
-        <font weight="500" style="normal">NotoSerifYezidi-VF.ttf
+        <font weight="500" style="normal" postScriptName="NotoSerifYezidi-Regular">
+            NotoSerifYezidi-VF.ttf
             <axis tag="wght" stylevalue="500"/>
         </font>
-        <font weight="600" style="normal">NotoSerifYezidi-VF.ttf
+        <font weight="600" style="normal" postScriptName="NotoSerifYezidi-Regular">
+            NotoSerifYezidi-VF.ttf
             <axis tag="wght" stylevalue="600"/>
         </font>
-        <font weight="700" style="normal">NotoSerifYezidi-VF.ttf
+        <font weight="700" style="normal" postScriptName="NotoSerifYezidi-Regular">
+            NotoSerifYezidi-VF.ttf
             <axis tag="wght" stylevalue="700"/>
         </font>
     </family>
diff --git a/errorprone/java/android/annotation/RequiresNoPermission.java b/errorprone/java/android/annotation/RequiresNoPermission.java
new file mode 100644
index 0000000..6ff4d6e3
--- /dev/null
+++ b/errorprone/java/android/annotation/RequiresNoPermission.java
@@ -0,0 +1,36 @@
+/*
+ * 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 android.annotation;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.CLASS;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Denotes that the annotated element requires no permissions.
+ *
+ * @hide
+ */
+@Retention(CLASS)
+@Target({ANNOTATION_TYPE,METHOD,CONSTRUCTOR,FIELD,PARAMETER})
+public @interface RequiresNoPermission {
+}
diff --git a/errorprone/java/android/annotation/RequiresPermission.java b/errorprone/java/android/annotation/RequiresPermission.java
new file mode 100644
index 0000000..303ab41
--- /dev/null
+++ b/errorprone/java/android/annotation/RequiresPermission.java
@@ -0,0 +1,136 @@
+/*
+ * 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.
+ */
+package android.annotation;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.CLASS;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Denotes that the annotated element requires (or may require) one or more permissions.
+ * <p/>
+ * Example of requiring a single permission:
+ * <pre>{@code
+ *   {@literal @}RequiresPermission(Manifest.permission.SET_WALLPAPER)
+ *   public abstract void setWallpaper(Bitmap bitmap) throws IOException;
+ *
+ *   {@literal @}RequiresPermission(ACCESS_COARSE_LOCATION)
+ *   public abstract Location getLastKnownLocation(String provider);
+ * }</pre>
+ * Example of requiring at least one permission from a set:
+ * <pre>{@code
+ *   {@literal @}RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
+ *   public abstract Location getLastKnownLocation(String provider);
+ * }</pre>
+ * Example of requiring multiple permissions:
+ * <pre>{@code
+ *   {@literal @}RequiresPermission(allOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
+ *   public abstract Location getLastKnownLocation(String provider);
+ * }</pre>
+ * Example of requiring separate read and write permissions for a content provider:
+ * <pre>{@code
+ *   {@literal @}RequiresPermission.Read(@RequiresPermission(READ_HISTORY_BOOKMARKS))
+ *   {@literal @}RequiresPermission.Write(@RequiresPermission(WRITE_HISTORY_BOOKMARKS))
+ *   public static final Uri BOOKMARKS_URI = Uri.parse("content://browser/bookmarks");
+ * }</pre>
+ * <p>
+ * When specified on a parameter, the annotation indicates that the method requires
+ * a permission which depends on the value of the parameter. For example, consider
+ * {@link android.app.Activity#startActivity(android.content.Intent)
+ * Activity#startActivity(Intent)}:
+ * <pre>{@code
+ *   public void startActivity(@RequiresPermission Intent intent) { ... }
+ * }</pre>
+ * Notice how there are no actual permission names listed in the annotation. The actual
+ * permissions required will depend on the particular intent passed in. For example,
+ * the code may look like this:
+ * <pre>{@code
+ *   Intent intent = new Intent(Intent.ACTION_CALL);
+ *   startActivity(intent);
+ * }</pre>
+ * and the actual permission requirement for this particular intent is described on
+ * the Intent name itself:
+ * <pre>{@code
+ *   {@literal @}RequiresPermission(Manifest.permission.CALL_PHONE)
+ *   public static final String ACTION_CALL = "android.intent.action.CALL";
+ * }</pre>
+ *
+ * @hide
+ */
+@Retention(CLASS)
+@Target({ANNOTATION_TYPE,METHOD,CONSTRUCTOR,FIELD,PARAMETER})
+public @interface RequiresPermission {
+    /**
+     * The name of the permission that is required, if precisely one permission
+     * is required. If more than one permission is required, specify either
+     * {@link #allOf()} or {@link #anyOf()} instead.
+     * <p>
+     * If specified, {@link #anyOf()} and {@link #allOf()} must both be null.
+     */
+    String value() default "";
+
+    /**
+     * Specifies a list of permission names that are all required.
+     * <p>
+     * If specified, {@link #anyOf()} and {@link #value()} must both be null.
+     */
+    String[] allOf() default {};
+
+    /**
+     * Specifies a list of permission names where at least one is required
+     * <p>
+     * If specified, {@link #allOf()} and {@link #value()} must both be null.
+     */
+    String[] anyOf() default {};
+
+    /**
+     * If true, the permission may not be required in all cases (e.g. it may only be
+     * enforced on certain platforms, or for certain call parameters, etc.
+     */
+    boolean conditional() default false;
+
+    /**
+     * Specifies that the given permission is required for read operations.
+     * <p>
+     * When specified on a parameter, the annotation indicates that the method requires
+     * a permission which depends on the value of the parameter (and typically
+     * the corresponding field passed in will be one of a set of constants which have
+     * been annotated with a <code>@RequiresPermission</code> annotation.)
+     */
+    @Target({FIELD, METHOD, PARAMETER})
+    @interface Read {
+        RequiresPermission value() default @RequiresPermission;
+    }
+
+    /**
+     * Specifies that the given permission is required for write operations.
+     * <p>
+     * When specified on a parameter, the annotation indicates that the method requires
+     * a permission which depends on the value of the parameter (and typically
+     * the corresponding field passed in will be one of a set of constants which have
+     * been annotated with a <code>@RequiresPermission</code> annotation.)
+     */
+    @Target({FIELD, METHOD, PARAMETER})
+    @interface Write {
+        RequiresPermission value() default @RequiresPermission;
+    }
+}
diff --git a/errorprone/java/com/google/errorprone/bugpatterns/android/BluetoothPermissionChecker.java b/errorprone/java/com/google/errorprone/bugpatterns/android/BluetoothPermissionChecker.java
new file mode 100644
index 0000000..9d1cf87
--- /dev/null
+++ b/errorprone/java/com/google/errorprone/bugpatterns/android/BluetoothPermissionChecker.java
@@ -0,0 +1,213 @@
+/*
+ * 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.google.errorprone.bugpatterns.android;
+
+import static com.google.errorprone.BugPattern.SeverityLevel.WARNING;
+import static com.google.errorprone.bugpatterns.android.RequiresPermissionChecker.simpleNameMatches;
+import static com.google.errorprone.matchers.Matchers.allOf;
+import static com.google.errorprone.matchers.Matchers.anyOf;
+import static com.google.errorprone.matchers.Matchers.enclosingClass;
+import static com.google.errorprone.matchers.Matchers.isStatic;
+import static com.google.errorprone.matchers.Matchers.isSubtypeOf;
+import static com.google.errorprone.matchers.Matchers.methodHasVisibility;
+import static com.google.errorprone.matchers.Matchers.methodIsConstructor;
+import static com.google.errorprone.matchers.Matchers.methodIsNamed;
+import static com.google.errorprone.matchers.Matchers.not;
+import static com.google.errorprone.matchers.Matchers.packageStartsWith;
+
+import android.annotation.RequiresNoPermission;
+import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
+
+import com.google.auto.service.AutoService;
+import com.google.errorprone.BugPattern;
+import com.google.errorprone.VisitorState;
+import com.google.errorprone.bugpatterns.BugChecker;
+import com.google.errorprone.bugpatterns.BugChecker.MethodTreeMatcher;
+import com.google.errorprone.matchers.Description;
+import com.google.errorprone.matchers.Matcher;
+import com.google.errorprone.matchers.MethodVisibility.Visibility;
+import com.google.errorprone.util.ASTHelpers;
+import com.sun.source.tree.ClassTree;
+import com.sun.source.tree.MethodTree;
+import com.sun.source.tree.Tree;
+import com.sun.source.util.TreePath;
+import com.sun.tools.javac.code.Symbol;
+import com.sun.tools.javac.code.Symbol.MethodSymbol;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.regex.Pattern;
+
+/**
+ * Verifies that all Bluetooth APIs have consistent permissions.
+ */
+@AutoService(BugChecker.class)
+@BugPattern(
+    name = "AndroidFrameworkBluetoothPermission",
+    summary = "Verifies that all Bluetooth APIs have consistent permissions",
+    severity = WARNING)
+public final class BluetoothPermissionChecker extends BugChecker implements MethodTreeMatcher {
+    private static final Matcher<MethodTree> BLUETOOTH_API = allOf(
+            packageStartsWith("android.bluetooth"),
+            methodHasVisibility(Visibility.PUBLIC),
+            not(isStatic()),
+            not(methodIsConstructor()),
+            not(enclosingClass(isInsideParcelable())),
+            not(enclosingClass(simpleNameMatches(Pattern.compile(".+Callback$")))),
+            not(enclosingClass(isSubtypeOf("android.bluetooth.BluetoothProfileConnector"))),
+            not(enclosingClass(isSubtypeOf("android.app.PropertyInvalidatedCache"))));
+
+    private static final Matcher<ClassTree> PARCELABLE_CLASS =
+            isSubtypeOf("android.os.Parcelable");
+    private static final Matcher<MethodTree> BINDER_METHOD = enclosingClass(
+            isSubtypeOf("android.os.IInterface"));
+
+    private static final Matcher<MethodTree> BINDER_INTERNALS = allOf(
+            enclosingClass(isSubtypeOf("android.os.IInterface")),
+            anyOf(
+                    methodIsNamed("onTransact"),
+                    methodIsNamed("dump"),
+                    enclosingClass(simpleNameMatches(Pattern.compile("^(Stub|Default|Proxy)$")))));
+
+    private static final Matcher<MethodTree> GENERIC_INTERNALS = anyOf(
+            methodIsNamed("close"),
+            methodIsNamed("finalize"),
+            methodIsNamed("equals"),
+            methodIsNamed("hashCode"),
+            methodIsNamed("toString"));
+
+    private static final String PERMISSION_ADVERTISE = "android.permission.BLUETOOTH_ADVERTISE";
+    private static final String PERMISSION_CONNECT = "android.permission.BLUETOOTH_CONNECT";
+    private static final String PERMISSION_SCAN = "android.permission.BLUETOOTH_SCAN";
+
+    private static final String ANNOTATION_ADVERTISE =
+            "android.bluetooth.annotations.RequiresBluetoothAdvertisePermission";
+    private static final String ANNOTATION_CONNECT =
+            "android.bluetooth.annotations.RequiresBluetoothConnectPermission";
+    private static final String ANNOTATION_SCAN =
+            "android.bluetooth.annotations.RequiresBluetoothScanPermission";
+
+    @Override
+    public Description matchMethod(MethodTree tree, VisitorState state) {
+        // Ignore methods outside Bluetooth area
+        if (!BLUETOOTH_API.matches(tree, state)) return Description.NO_MATCH;
+
+        // Ignore certain types of generated or internal code
+        if (BINDER_INTERNALS.matches(tree, state)) return Description.NO_MATCH;
+        if (GENERIC_INTERNALS.matches(tree, state)) return Description.NO_MATCH;
+
+        // Skip abstract methods, except for binder interfaces
+        if (tree.getBody() == null && !BINDER_METHOD.matches(tree, state)) {
+            return Description.NO_MATCH;
+        }
+
+        // Ignore callbacks which don't need permission enforcement
+        final MethodSymbol symbol = ASTHelpers.getSymbol(tree);
+        if (isCallbackOrWrapper(symbol)) return Description.NO_MATCH;
+
+        // Ignore when suppressed
+        if (isSuppressed(symbol)) return Description.NO_MATCH;
+
+        final RequiresPermission requiresPerm = ASTHelpers.getAnnotation(tree,
+                RequiresPermission.class);
+        final RequiresNoPermission requiresNoPerm = ASTHelpers.getAnnotation(tree,
+                RequiresNoPermission.class);
+
+        final boolean requiresValid = requiresPerm != null
+                && (requiresPerm.value() != null || requiresPerm.allOf() != null);
+        final boolean requiresNoValid = requiresNoPerm != null;
+        if (!requiresValid && !requiresNoValid) {
+            return buildDescription(tree)
+                    .setMessage("Method " + symbol.name.toString()
+                            + "() must be protected by at least one permission")
+                    .build();
+        }
+
+        // No additional checks needed for Binder generated code
+        if (BINDER_METHOD.matches(tree, state)) return Description.NO_MATCH;
+
+        if (ASTHelpers.hasAnnotation(tree, ANNOTATION_ADVERTISE,
+                state) != isPermissionReferenced(requiresPerm, PERMISSION_ADVERTISE)) {
+            return buildDescription(tree)
+                    .setMessage("Method " + symbol.name.toString()
+                            + "() has inconsistent annotations for " + PERMISSION_ADVERTISE)
+                    .build();
+        }
+        if (ASTHelpers.hasAnnotation(tree, ANNOTATION_CONNECT,
+                state) != isPermissionReferenced(requiresPerm, PERMISSION_CONNECT)) {
+            return buildDescription(tree)
+                    .setMessage("Method " + symbol.name.toString()
+                            + "() has inconsistent annotations for " + PERMISSION_CONNECT)
+                    .build();
+        }
+        if (ASTHelpers.hasAnnotation(tree, ANNOTATION_SCAN,
+                state) != isPermissionReferenced(requiresPerm, PERMISSION_SCAN)) {
+            return buildDescription(tree)
+                    .setMessage("Method " + symbol.name.toString()
+                            + "() has inconsistent annotations for " + PERMISSION_SCAN)
+                    .build();
+        }
+
+        return Description.NO_MATCH;
+    }
+
+    private static boolean isPermissionReferenced(RequiresPermission anno, String perm) {
+        if (anno == null) return false;
+        if (perm.equals(anno.value())) return true;
+        return anno.allOf() != null && Arrays.asList(anno.allOf()).contains(perm);
+    }
+
+    private static boolean isCallbackOrWrapper(Symbol symbol) {
+        if (symbol == null) return false;
+        final String name = symbol.name.toString();
+        return isCallbackOrWrapper(ASTHelpers.enclosingClass(symbol))
+                || name.endsWith("Callback")
+                || name.endsWith("Wrapper");
+    }
+
+    public boolean isSuppressed(Symbol symbol) {
+        if (symbol == null) return false;
+        return isSuppressed(ASTHelpers.enclosingClass(symbol))
+                || isSuppressed(ASTHelpers.getAnnotation(symbol, SuppressWarnings.class))
+                || isSuppressed(ASTHelpers.getAnnotation(symbol, SuppressLint.class));
+    }
+
+    private boolean isSuppressed(SuppressWarnings anno) {
+        return (anno != null) && !Collections.disjoint(Arrays.asList(anno.value()), allNames());
+    }
+
+    private boolean isSuppressed(SuppressLint anno) {
+        return (anno != null) && !Collections.disjoint(Arrays.asList(anno.value()), allNames());
+    }
+
+    private static Matcher<ClassTree> isInsideParcelable() {
+        return new Matcher<ClassTree>() {
+            @Override
+            public boolean matches(ClassTree tree, VisitorState state) {
+                final TreePath path = state.getPath();
+                for (Tree node : path) {
+                    if (node instanceof ClassTree
+                            && PARCELABLE_CLASS.matches((ClassTree) node, state)) {
+                        return true;
+                    }
+                }
+                return false;
+            }
+        };
+    }
+}
diff --git a/errorprone/java/com/google/errorprone/bugpatterns/android/RequiresPermissionChecker.java b/errorprone/java/com/google/errorprone/bugpatterns/android/RequiresPermissionChecker.java
index 3b5a58c..f54782d 100644
--- a/errorprone/java/com/google/errorprone/bugpatterns/android/RequiresPermissionChecker.java
+++ b/errorprone/java/com/google/errorprone/bugpatterns/android/RequiresPermissionChecker.java
@@ -143,8 +143,11 @@
                     final ParsedRequiresPermission nodePerm = parseRequiresPermissionRecursively(
                             node, state);
                     if (!expectedPerm.containsAll(nodePerm)) {
-                        return buildDescription(node).setMessage("Annotated " + expectedPerm
-                                + " but too narrow; invokes method requiring " + nodePerm).build();
+                        return buildDescription(node)
+                                .setMessage("Method " + method.name.toString() + "() annotated "
+                                        + expectedPerm
+                                        + " but too narrow; invokes method requiring " + nodePerm)
+                                .build();
                     } else {
                         actualPerm.addAll(nodePerm);
                     }
@@ -162,8 +165,10 @@
         // Second, determine if we actually used all permissions that we claim
         // to require; yell if we're too broad
         if (!actualPerm.containsAll(expectedPerm)) {
-            return buildDescription(tree).setMessage("Annotated " + expectedPerm
-                    + " but too wide; only invokes methods requiring " + actualPerm).build();
+            return buildDescription(tree)
+                    .setMessage("Method  " + method.name.toString() + "() annotated " + expectedPerm
+                            + " but too wide; only invokes methods requiring " + actualPerm)
+                    .build();
         }
 
         return Description.NO_MATCH;
@@ -316,7 +321,7 @@
         return (anno != null) && !Collections.disjoint(Arrays.asList(anno.value()), allNames());
     }
 
-    private static Matcher<ClassTree> simpleNameMatches(Pattern pattern) {
+    static Matcher<ClassTree> simpleNameMatches(Pattern pattern) {
         return new Matcher<ClassTree>() {
             @Override
             public boolean matches(ClassTree tree, VisitorState state) {
diff --git a/graphics/java/android/graphics/FontListParser.java b/graphics/java/android/graphics/FontListParser.java
index 6fdf552..13e2692 100644
--- a/graphics/java/android/graphics/FontListParser.java
+++ b/graphics/java/android/graphics/FontListParser.java
@@ -56,6 +56,7 @@
     // XML constants for Font.
     public static final String ATTR_INDEX = "index";
     public static final String ATTR_WEIGHT = "weight";
+    public static final String ATTR_POSTSCRIPT_NAME = "postScriptName";
     public static final String ATTR_STYLE = "style";
     public static final String ATTR_FALLBACK_FOR = "fallbackFor";
     public static final String STYLE_ITALIC = "italic";
@@ -209,6 +210,7 @@
         int weight = weightStr == null ? FontStyle.FONT_WEIGHT_NORMAL : Integer.parseInt(weightStr);
         boolean isItalic = STYLE_ITALIC.equals(parser.getAttributeValue(null, ATTR_STYLE));
         String fallbackFor = parser.getAttributeValue(null, ATTR_FALLBACK_FOR);
+        String postScriptName = parser.getAttributeValue(null, ATTR_POSTSCRIPT_NAME);
         StringBuilder filename = new StringBuilder();
         while (keepReading(parser)) {
             if (parser.getEventType() == XmlPullParser.TEXT) {
@@ -242,8 +244,18 @@
                     axes.toArray(new FontVariationAxis[0]));
         }
 
-        return new FontConfig.Font(new File(filePath),
+        File file = new File(filePath);
+
+        if (postScriptName == null) {
+            // If post script name was not provided, assume the file name is same to PostScript
+            // name.
+            String name = file.getName();
+            postScriptName = name.substring(0, name.length() - 4);
+        }
+
+        return new FontConfig.Font(file,
                 originalPath == null ? null : new File(originalPath),
+                postScriptName,
                 new FontStyle(
                         weight,
                         isItalic ? FontStyle.FONT_SLANT_ITALIC : FontStyle.FONT_SLANT_UPRIGHT
diff --git a/graphics/java/android/graphics/HardwareRenderer.java b/graphics/java/android/graphics/HardwareRenderer.java
index f3dba82..8f1223b 100644
--- a/graphics/java/android/graphics/HardwareRenderer.java
+++ b/graphics/java/android/graphics/HardwareRenderer.java
@@ -754,6 +754,11 @@
     }
 
     /** @hide */
+    public void setASurfaceTransactionCallback(ASurfaceTransactionCallback callback) {
+        nSetASurfaceTransactionCallback(mNativeProxy, callback);
+    }
+
+    /** @hide */
     public void setFrameCallback(FrameDrawingCallback callback) {
         nSetFrameCallback(mNativeProxy, callback);
     }
@@ -868,6 +873,23 @@
     }
 
     /**
+     * Interface used to receive callbacks when a transaction needs to be merged.
+     *
+     * @hide
+     */
+    public interface ASurfaceTransactionCallback {
+        /**
+         * Invoked during a frame drawing.
+         *
+         * @param aSurfaceTranactionNativeObj the ASurfaceTransaction native object handle
+         * @param aSurfaceControlNativeObj ASurfaceControl native object handle
+         * @param frame The id of the frame being drawn.
+         */
+        void onMergeTransaction(long aSurfaceTranactionNativeObj,
+                                long aSurfaceControlNativeObj, long frame);
+    }
+
+    /**
      * Interface used to receive callbacks when a frame is being drawn.
      *
      * @hide
@@ -1342,6 +1364,9 @@
     private static native void nSetPictureCaptureCallback(long nativeProxy,
             PictureCapturedCallback callback);
 
+    private static native void nSetASurfaceTransactionCallback(long nativeProxy,
+            ASurfaceTransactionCallback callback);
+
     private static native void nSetFrameCallback(long nativeProxy, FrameDrawingCallback callback);
 
     private static native void nSetFrameCompleteCallback(long nativeProxy,
diff --git a/graphics/java/android/graphics/RecordingCanvas.java b/graphics/java/android/graphics/RecordingCanvas.java
index 6c03ddc..e9e58c6 100644
--- a/graphics/java/android/graphics/RecordingCanvas.java
+++ b/graphics/java/android/graphics/RecordingCanvas.java
@@ -226,10 +226,12 @@
      */
     public void drawRipple(CanvasProperty<Float> cx, CanvasProperty<Float> cy,
             CanvasProperty<Float> radius, CanvasProperty<Paint> paint,
-            CanvasProperty<Float> progress, RuntimeShader shader) {
+            CanvasProperty<Float> progress, CanvasProperty<Float> turbulencePhase,
+            RuntimeShader shader) {
         nDrawRipple(mNativeCanvasWrapper, cx.getNativeContainer(), cy.getNativeContainer(),
                 radius.getNativeContainer(), paint.getNativeContainer(),
-                progress.getNativeContainer(), shader.getNativeShaderBuilder());
+                progress.getNativeContainer(), turbulencePhase.getNativeContainer(),
+                shader.getNativeShaderBuilder());
     }
 
     /**
@@ -290,7 +292,7 @@
             long propCy, long propRadius, long propPaint);
     @CriticalNative
     private static native void nDrawRipple(long renderer, long propCx, long propCy, long propRadius,
-            long propPaint, long propProgress, long runtimeEffect);
+            long propPaint, long propProgress, long turbulencePhase, long runtimeEffect);
     @CriticalNative
     private static native void nDrawRoundRect(long renderer, long propLeft, long propTop,
             long propRight, long propBottom, long propRx, long propRy, long propPaint);
diff --git a/graphics/java/android/graphics/Typeface.java b/graphics/java/android/graphics/Typeface.java
index c48fd8b..b88751a 100644
--- a/graphics/java/android/graphics/Typeface.java
+++ b/graphics/java/android/graphics/Typeface.java
@@ -1259,20 +1259,21 @@
      * @hide
      */
     @TestApi
-    public static @NonNull Map<String, Typeface> deserializeFontMap(@NonNull ByteBuffer buffer)
+    public static @NonNull long[] deserializeFontMap(
+            @NonNull ByteBuffer buffer, @NonNull Map<String, Typeface> out)
             throws IOException {
-        Map<String, Typeface> fontMap = new ArrayMap<>();
         int typefacesBytesCount = buffer.getInt();
         long[] nativePtrs = nativeReadTypefaces(buffer.slice());
         if (nativePtrs == null) {
             throw new IOException("Could not read typefaces");
         }
+        out.clear();
         buffer.position(buffer.position() + typefacesBytesCount);
         for (long nativePtr : nativePtrs) {
             String name = readString(buffer);
-            fontMap.put(name, new Typeface(nativePtr));
+            out.put(name, new Typeface(nativePtr));
         }
-        return fontMap;
+        return nativePtrs;
     }
 
     private static String readString(ByteBuffer buffer) {
@@ -1330,7 +1331,14 @@
                 return;
             }
             sSystemFontMapBuffer = sharedMemory.mapReadOnly().order(ByteOrder.BIG_ENDIAN);
-            Map<String, Typeface> systemFontMap = deserializeFontMap(sSystemFontMapBuffer);
+            Map<String, Typeface> systemFontMap = new ArrayMap<>();
+            long[] nativePtrs = deserializeFontMap(sSystemFontMapBuffer, systemFontMap);
+
+            // Initialize native font APIs. The native font API will read fonts.xml by itself if
+            // Typeface is initialized with loadPreinstalledSystemFontMap.
+            for (long ptr : nativePtrs) {
+                nativeAddFontCollections(ptr);
+            }
             setSystemFontMap(systemFontMap);
         } finally {
             Trace.traceEnd(Trace.TRACE_TAG_GRAPHICS);
@@ -1528,5 +1536,8 @@
 
     private static native void nativeForceSetStaticFinalField(String fieldName, Typeface typeface);
 
+    @CriticalNative
+    private static native void nativeAddFontCollections(long nativePtr);
+
     private static native void nativeWarmUpCache(String fileName);
 }
diff --git a/graphics/java/android/graphics/drawable/RippleAnimationSession.java b/graphics/java/android/graphics/drawable/RippleAnimationSession.java
index c317831..60f73b5 100644
--- a/graphics/java/android/graphics/drawable/RippleAnimationSession.java
+++ b/graphics/java/android/graphics/drawable/RippleAnimationSession.java
@@ -39,7 +39,9 @@
 public final class RippleAnimationSession {
     private static final String TAG = "RippleAnimationSession";
     private static final int ENTER_ANIM_DURATION = 450;
-    private static final int EXIT_ANIM_DURATION = 300;
+    private static final int EXIT_ANIM_DURATION = 225;
+    private static final long NOISE_ANIMATION_DURATION = 7000;
+    private static final long MAX_NOISE_PHASE = NOISE_ANIMATION_DURATION / 120;
     private static final TimeInterpolator LINEAR_INTERPOLATOR = new LinearInterpolator();
     private static final Interpolator FAST_OUT_SLOW_IN =
             new PathInterpolator(0.4f, 0f, 0.2f, 1f);
@@ -49,7 +51,7 @@
     private Runnable mOnUpdate;
     private long mStartTime;
     private boolean mForceSoftware;
-    private boolean mAnimateSparkle;
+    private Animator mLoopAnimation;
 
     RippleAnimationSession(@NonNull AnimationProperties<Float, Paint> properties,
             boolean forceSoftware) {
@@ -88,16 +90,6 @@
         return this;
     }
 
-    public boolean shouldAnimateSparkle() {
-        return mAnimateSparkle && ValueAnimator.getDurationScale() > 0;
-    }
-
-    public float getSparklePhase() {
-        final long now = AnimationUtils.currentAnimationTimeMillis();
-        final long elapsed = now - mStartTime;
-        return  (float) elapsed / 800;
-    }
-
     private boolean isHwAccelerated(Canvas canvas) {
         return canvas.isHardwareAccelerated() && !mForceSoftware;
     }
@@ -114,7 +106,7 @@
             @Override
             public void onAnimationEnd(Animator animation) {
                 super.onAnimationEnd(animation);
-                mAnimateSparkle = false;
+                if (mLoopAnimation != null) mLoopAnimation.cancel();
                 Consumer<RippleAnimationSession> onEnd = mOnSessionEnd;
                 if (onEnd != null) onEnd.accept(RippleAnimationSession.this);
             }
@@ -148,7 +140,7 @@
             @Override
             public void onAnimationEnd(Animator animation) {
                 super.onAnimationEnd(animation);
-                mAnimateSparkle = false;
+                if (mLoopAnimation != null) mLoopAnimation.cancel();
                 Consumer<RippleAnimationSession> onEnd = mOnSessionEnd;
                 if (onEnd != null) onEnd.accept(RippleAnimationSession.this);
             }
@@ -167,24 +159,42 @@
         RenderNodeAnimator expand =
                 new RenderNodeAnimator(props.getProgress(), .5f);
         expand.setTarget(canvas);
-        startAnimation(expand);
+        RenderNodeAnimator loop = new RenderNodeAnimator(props.getNoisePhase(), MAX_NOISE_PHASE);
+        loop.setTarget(canvas);
+        startAnimation(expand, loop);
     }
 
-    private void startAnimation(Animator expand) {
+    private void startAnimation(Animator expand, Animator loop) {
         expand.setDuration(ENTER_ANIM_DURATION);
         expand.addListener(new AnimatorListener(this));
         expand.setInterpolator(FAST_OUT_SLOW_IN);
         expand.start();
-        mAnimateSparkle = true;
+        loop.setDuration(NOISE_ANIMATION_DURATION);
+        loop.addListener(new AnimatorListener(this) {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                super.onAnimationEnd(animation);
+                mLoopAnimation = null;
+            }
+        });
+        loop.setInterpolator(LINEAR_INTERPOLATOR);
+        loop.start();
+        if (mLoopAnimation != null) mLoopAnimation.cancel();
+        mLoopAnimation = loop;
     }
 
     private void enterSoftware() {
         ValueAnimator expand = ValueAnimator.ofFloat(0f, 0.5f);
         expand.addUpdateListener(updatedAnimation -> {
             notifyUpdate();
-            mProperties.getShader().setProgress((Float) expand.getAnimatedValue());
+            mProperties.getShader().setProgress((float) expand.getAnimatedValue());
         });
-        startAnimation(expand);
+        ValueAnimator loop = ValueAnimator.ofFloat(0f, MAX_NOISE_PHASE);
+        loop.addUpdateListener(updatedAnimation -> {
+            notifyUpdate();
+            mProperties.getShader().setNoisePhase((float) loop.getAnimatedValue());
+        });
+        startAnimation(expand, loop);
     }
 
     @NonNull AnimationProperties<Float, Paint> getProperties() {
@@ -198,6 +208,7 @@
                     CanvasProperty.createFloat(mProperties.getX()),
                     CanvasProperty.createFloat(mProperties.getY()),
                     CanvasProperty.createFloat(mProperties.getMaxRadius()),
+                    CanvasProperty.createFloat(mProperties.getNoisePhase()),
                     CanvasProperty.createPaint(mProperties.getPaint()),
                     CanvasProperty.createFloat(mProperties.getProgress()),
                     mProperties.getShader());
@@ -236,16 +247,18 @@
     static class AnimationProperties<FloatType, PaintType> {
         private final FloatType mProgress;
         private final FloatType mMaxRadius;
+        private final FloatType mNoisePhase;
         private final PaintType mPaint;
         private final RippleShader mShader;
         private FloatType mX;
         private FloatType mY;
 
-        AnimationProperties(FloatType x, FloatType y, FloatType maxRadius,
+        AnimationProperties(FloatType x, FloatType y, FloatType maxRadius, FloatType noisePhase,
                 PaintType paint, FloatType progress, RippleShader shader) {
             mY = y;
             mX = x;
             mMaxRadius = maxRadius;
+            mNoisePhase = noisePhase;
             mPaint = paint;
             mShader = shader;
             mProgress = progress;
@@ -279,5 +292,9 @@
         RippleShader getShader() {
             return mShader;
         }
+
+        FloatType getNoisePhase() {
+            return mNoisePhase;
+        }
     }
 }
diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java
index 0865332..29fa09d 100644
--- a/graphics/java/android/graphics/drawable/RippleDrawable.java
+++ b/graphics/java/android/graphics/drawable/RippleDrawable.java
@@ -150,6 +150,7 @@
     /** The maximum number of ripples supported. */
     private static final int MAX_RIPPLES = 10;
     private static final LinearInterpolator LINEAR_INTERPOLATOR = new LinearInterpolator();
+    private static final int DEFAULT_EFFECT_COLOR = 0x80ffffff;
     /** Temporary flag for teamfood. **/
     private static final boolean FORCE_PATTERNED_STYLE = true;
 
@@ -465,12 +466,37 @@
      *
      * @attr ref android.R.styleable#RippleDrawable_color
      */
-    public void setColor(ColorStateList color) {
+    public void setColor(@NonNull ColorStateList color) {
+        if (color == null) {
+            throw new IllegalArgumentException("color cannot be null");
+        }
         mState.mColor = color;
         invalidateSelf(false);
     }
 
     /**
+     * Sets the ripple effect color.
+     *
+     * @param color Ripple color as a color state list.
+     *
+     * @attr ref android.R.styleable#RippleDrawable_effectColor
+     */
+    public void setEffectColor(@NonNull ColorStateList color) {
+        if (color == null) {
+            throw new IllegalArgumentException("color cannot be null");
+        }
+        mState.mEffectColor = color;
+        invalidateSelf(false);
+    }
+
+    /**
+     * @return The ripple effect color as a color state list.
+     */
+    public @NonNull ColorStateList getEffectColor() {
+        return mState.mEffectColor;
+    }
+
+    /**
      * Sets the radius in pixels of the fully expanded ripple.
      *
      * @param radius ripple radius in pixels, or {@link #RADIUS_AUTO} to
@@ -561,13 +587,14 @@
             mState.mColor = color;
         }
 
+        final ColorStateList effectColor =
+                a.getColorStateList(R.styleable.RippleDrawable_effectColor);
+        if (effectColor != null) {
+            mState.mEffectColor = effectColor;
+        }
+
         mState.mMaxRadius = a.getDimensionPixelSize(
                 R.styleable.RippleDrawable_radius, mState.mMaxRadius);
-
-        if (!FORCE_PATTERNED_STYLE) {
-            mState.mRippleStyle = a.getInteger(R.styleable.RippleDrawable_rippleStyle,
-                    mState.mRippleStyle);
-        }
     }
 
     private void verifyRequiredAttributes(@NonNull TypedArray a) throws XmlPullParserException {
@@ -858,15 +885,6 @@
         }
         for (int i = 0; i < mRunningAnimations.size(); i++) {
             RippleAnimationSession s = mRunningAnimations.get(i);
-            if (s.shouldAnimateSparkle()) {
-                final float phase = s.getSparklePhase();
-                if (useCanvasProps) {
-                    s.getCanvasProperties().getShader().setNoisePhase(phase);
-                } else {
-                    s.getProperties().getShader().setNoisePhase(phase);
-                }
-                invalidateSelf();
-            }
             if (useCanvasProps) {
                 RippleAnimationSession.AnimationProperties<CanvasProperty<Float>,
                         CanvasProperty<Paint>>
@@ -883,7 +901,7 @@
                     yProp = p.getY();
                 }
                 can.drawRipple(xProp, yProp, p.getMaxRadius(), p.getPaint(),
-                        p.getProgress(), p.getShader());
+                        p.getProgress(), p.getNoisePhase(), p.getShader());
             } else {
                 RippleAnimationSession.AnimationProperties<Float, Paint> p =
                         s.getProperties();
@@ -942,10 +960,11 @@
         float radius = getComputedRadius();
         RippleAnimationSession.AnimationProperties<Float, Paint> properties;
         RippleShader shader = new RippleShader();
-        int color = mMaskColorFilter == null
+        final int color = mMaskColorFilter == null
                 ? mState.mColor.getColorForState(getState(), Color.BLACK)
                 : mMaskColorFilter.getColor();
-        shader.setColor(color);
+        final int effectColor = mState.mEffectColor.getColorForState(getState(), Color.MAGENTA);
+        shader.setColor(color, effectColor);
         shader.setOrigin(cx, cy);
         shader.setTouch(x, y);
         shader.setResolution(w, h, mState.mDensity);
@@ -953,7 +972,7 @@
         shader.setRadius(radius);
         shader.setProgress(.0f);
         properties = new RippleAnimationSession.AnimationProperties<>(
-                cx, cy, radius, p, 0f, shader);
+                cx, cy, radius, 0f, p, 0f, shader);
         if (mMaskShader == null) {
             shader.setShader(null);
         } else {
@@ -1266,33 +1285,6 @@
         return this;
     }
 
-    /**
-     * Sets the visual style of the ripple.
-     *
-     * @see #STYLE_SOLID
-     * @see #STYLE_PATTERNED
-     *
-     * @param style The style of the ripple
-     * @hide
-     */
-    public void setRippleStyle(@RippleStyle int style) throws IllegalArgumentException {
-        if (style == STYLE_SOLID || style == STYLE_PATTERNED) {
-            mState.mRippleStyle = style;
-        } else {
-            throw new IllegalArgumentException("Invalid style value " + style);
-        }
-    }
-
-    /**
-     * Get the current ripple style
-     * @return Ripple style
-     * @hide
-     */
-    public @RippleStyle int getRippleStyle() {
-        return mState.mRippleStyle;
-    }
-
-
     @Override
     RippleState createConstantState(LayerState state, Resources res) {
         return new RippleState(state, this, res);
@@ -1302,6 +1294,7 @@
         int[] mTouchThemeAttrs;
         @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         ColorStateList mColor = ColorStateList.valueOf(Color.MAGENTA);
+        ColorStateList mEffectColor = ColorStateList.valueOf(DEFAULT_EFFECT_COLOR);
         int mMaxRadius = RADIUS_AUTO;
         int mRippleStyle = FORCE_PATTERNED_STYLE ? STYLE_PATTERNED : STYLE_SOLID;
 
@@ -1314,6 +1307,7 @@
                 mColor = origs.mColor;
                 mMaxRadius = origs.mMaxRadius;
                 mRippleStyle = origs.mRippleStyle;
+                mEffectColor = origs.mEffectColor;
 
                 if (origs.mDensity != mDensity) {
                     applyDensityScaling(orig.mDensity, mDensity);
diff --git a/graphics/java/android/graphics/drawable/RippleShader.java b/graphics/java/android/graphics/drawable/RippleShader.java
index 4608d02..e7c1081 100644
--- a/graphics/java/android/graphics/drawable/RippleShader.java
+++ b/graphics/java/android/graphics/drawable/RippleShader.java
@@ -39,6 +39,7 @@
             + "uniform vec2 in_tRotation2;\n"
             + "uniform vec2 in_tRotation3;\n"
             + "uniform vec4 in_color;\n"
+            + "uniform vec4 in_sparkleColor;\n"
             + "uniform shader in_shader;\n";
     private static final String SHADER_LIB =
             "float triangleNoise(vec2 n) {\n"
@@ -48,7 +49,6 @@
             + "    return fract(xy * 95.4307) + fract(xy * 75.04961) - 1.0;\n"
             + "}"
             + "const float PI = 3.1415926535897932384626;\n"
-            + "const float SPARKLE_OPACITY = 0.75;\n"
             + "\n"
             + "float sparkles(vec2 uv, float t) {\n"
             + "  float n = triangleNoise(uv);\n"
@@ -60,7 +60,7 @@
             + "    o *= abs(sin(PI * o * (t + 0.55 * i)));\n"
             + "    s += o;\n"
             + "  }\n"
-            + "  return saturate(s) * SPARKLE_OPACITY;\n"
+            + "  return saturate(s) * in_sparkleColor.a;\n"
             + "}\n"
             + "float softCircle(vec2 uv, vec2 xy, float radius, float blur) {\n"
             + "  float blurHalf = blur * 0.5;\n"
@@ -102,8 +102,8 @@
     private static final String SHADER_MAIN = "vec4 main(vec2 p) {\n"
             + "    float fadeIn = subProgress(0., 0.1, in_progress);\n"
             + "    float scaleIn = subProgress(0., 0.45, in_progress);\n"
-            + "    float fadeOutNoise = subProgress(0.5, 1., in_progress);\n"
-            + "    float fadeOutRipple = subProgress(0.5, 0.75, in_progress);\n"
+            + "    float fadeOutNoise = subProgress(0.5, 0.95, in_progress);\n"
+            + "    float fadeOutRipple = subProgress(0.5, 1., in_progress);\n"
             + "    vec2 center = mix(in_touch, in_origin, scaleIn);\n"
             + "    float ring = softRing(p, center, in_maxRadius, scaleIn, 0.45);\n"
             + "    float alpha = min(fadeIn, 1. - fadeOutNoise);\n"
@@ -116,7 +116,7 @@
             + "    vec4 circle = in_color * (softCircle(p, center, in_maxRadius "
             + "      * scaleIn, 0.2) * fade);\n"
             + "    float mask = in_hasMask == 1. ? sample(in_shader).a > 0. ? 1. : 0. : 1.;\n"
-            + "    return mix(circle, vec4(sparkle), sparkle) * mask;\n"
+            + "    return mix(circle, in_sparkleColor, sparkle) * mask;\n"
             + "}";
     private static final String SHADER = SHADER_UNIFORMS + SHADER_LIB + SHADER_MAIN;
     private static final double PI_ROTATE_RIGHT = Math.PI * 0.0078125;
@@ -167,6 +167,9 @@
         final float turbulencePhase = (float) ((mProgress + mNoisePhase * 0.333f) * 5f * Math.PI);
         setUniform("in_turbulencePhase", turbulencePhase);
 
+        //
+        // Keep in sync with: frameworks/base/libs/hwui/pipeline/skia/AnimatedDrawables.h
+        //
         final float scale = 1.5f;
         setUniform("in_tCircle1", new float[]{
                 (float) (scale * 0.5 + (turbulencePhase * 0.01 * Math.cos(scale * 0.55))),
@@ -197,14 +200,17 @@
     /**
      * Color of the circle that's under the sparkles. Sparkles will always be white.
      */
-    public void setColor(@ColorInt int colorIn) {
-        Color color = Color.valueOf(colorIn);
-        this.setUniform("in_color", new float[] {color.red(),
+    public void setColor(@ColorInt int colorInt, @ColorInt int sparkleColorInt) {
+        Color color = Color.valueOf(colorInt);
+        Color sparkleColor = Color.valueOf(sparkleColorInt);
+        setUniform("in_color", new float[] {color.red(),
                 color.green(), color.blue(), color.alpha()});
+        setUniform("in_sparkleColor", new float[] {sparkleColor.red(),
+                sparkleColor.green(), sparkleColor.blue(), sparkleColor.alpha()});
     }
 
     public void setResolution(float w, float h, int density) {
-        final float densityScale = density * DisplayMetrics.DENSITY_DEFAULT_SCALE * 1.25f;
+        final float densityScale = density * DisplayMetrics.DENSITY_DEFAULT_SCALE;
         setUniform("in_resolutionScale", new float[] {1f / w, 1f / h});
         setUniform("in_noiseScale", new float[] {densityScale / w, densityScale / h});
     }
diff --git a/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java b/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java
index ecb082e..62fe54f 100644
--- a/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java
+++ b/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java
@@ -62,10 +62,8 @@
      */
     @UnsupportedAppUsage
     public static long getKeyStoreOperationHandle(Object cryptoPrimitive) {
-        if (cryptoPrimitive == null) {
-            throw new NullPointerException();
-        }
-        return 0;
+        return android.security.keystore2.AndroidKeyStoreProvider
+                .getKeyStoreOperationHandle(cryptoPrimitive);
     }
 
     /**
diff --git a/libs/WindowManager/Shell/res/values-es/strings.xml b/libs/WindowManager/Shell/res/values-es/strings.xml
index f3baad7..2207e62 100644
--- a/libs/WindowManager/Shell/res/values-es/strings.xml
+++ b/libs/WindowManager/Shell/res/values-es/strings.xml
@@ -43,10 +43,10 @@
     <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Superior 50%"</string>
     <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Superior 30%"</string>
     <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Pantalla inferior completa"</string>
-    <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Utilizar el modo una mano"</string>
+    <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Usar Modo una mano"</string>
     <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Para salir, desliza el dedo hacia arriba desde la parte inferior de la pantalla o toca cualquier zona que haya encima de la aplicación"</string>
-    <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Iniciar modo una mano"</string>
-    <string name="accessibility_action_stop_one_handed" msgid="1369940261782179442">"Salir del modo una mano"</string>
+    <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Iniciar Modo una mano"</string>
+    <string name="accessibility_action_stop_one_handed" msgid="1369940261782179442">"Salir del Modo una mano"</string>
     <string name="bubbles_settings_button_description" msgid="1301286017420516912">"Ajustes de las burbujas de <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="bubble_overflow_button_content_description" msgid="8160974472718594382">"Menú adicional"</string>
     <string name="bubble_accessibility_action_add_back" msgid="1830101076853540953">"Volver a añadir a la pila"</string>
@@ -70,5 +70,5 @@
     <string name="manage_bubbles_text" msgid="7730624269650594419">"Gestionar"</string>
     <string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Burbuja cerrada."</string>
     <string name="restart_button_description" msgid="5887656107651190519">"Toca para reiniciar esta aplicación e ir a la pantalla completa."</string>
-    <string name="got_it" msgid="4428750913636945527">"Listo"</string>
+    <string name="got_it" msgid="4428750913636945527">"Entendido"</string>
 </resources>
diff --git a/libs/WindowManager/Shell/res/values-fa/strings.xml b/libs/WindowManager/Shell/res/values-fa/strings.xml
index fed3ea9..a17f543 100644
--- a/libs/WindowManager/Shell/res/values-fa/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fa/strings.xml
@@ -62,10 +62,10 @@
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"گپ بااستفاده از حبابک‌ها"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"مکالمه‌های جدید به‌صورت نمادهای شناور یا حبابک‌ها نشان داده می‌شوند. برای باز کردن حبابک‌ها ضربه بزنید. برای جابه‌جایی، آن را بکشید."</string>
     <string name="bubbles_user_education_manage_title" msgid="7042699946735628035">"کنترل حبابک‌ها در هرزمانی"</string>
-    <string name="bubbles_user_education_manage" msgid="3460756219946517198">"برای خاموش کردن «حبابک‌ها» از این برنامه، روی «مدیریت» ضربه بزنید"</string>
+    <string name="bubbles_user_education_manage" msgid="3460756219946517198">"برای خاموش کردن حبابک‌ها از این برنامه، روی «مدیریت» ضربه بزنید"</string>
     <string name="bubbles_user_education_got_it" msgid="3382046149225428296">"متوجه‌ام"</string>
     <string name="bubble_overflow_empty_title" msgid="2397251267073294968">"هیچ حبابک جدیدی وجود ندارد"</string>
-    <string name="bubble_overflow_empty_subtitle" msgid="2627417924958633713">"حبابک‌ها اخیر و حبابک‌ها ردشده اینجا ظاهر خواهند شد"</string>
+    <string name="bubble_overflow_empty_subtitle" msgid="2627417924958633713">"حبابک‌های اخیر و حبابک‌های ردشده اینجا ظاهر خواهند شد"</string>
     <string name="notification_bubble_title" msgid="6082910224488253378">"حباب"</string>
     <string name="manage_bubbles_text" msgid="7730624269650594419">"مدیریت"</string>
     <string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"حبابک رد شد."</string>
diff --git a/libs/WindowManager/Shell/res/values-hi/strings.xml b/libs/WindowManager/Shell/res/values-hi/strings.xml
index a969386..b2c0055 100644
--- a/libs/WindowManager/Shell/res/values-hi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hi/strings.xml
@@ -67,7 +67,7 @@
     <string name="bubble_overflow_empty_title" msgid="2397251267073294968">"हाल ही के बबल्स मौजूद नहीं हैं"</string>
     <string name="bubble_overflow_empty_subtitle" msgid="2627417924958633713">"हाल ही के बबल्स और हटाए गए बबल्स यहां दिखेंगे"</string>
     <string name="notification_bubble_title" msgid="6082910224488253378">"बबल"</string>
-    <string name="manage_bubbles_text" msgid="7730624269650594419">"प्रबंधित करें"</string>
+    <string name="manage_bubbles_text" msgid="7730624269650594419">"मैनेज करें"</string>
     <string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"बबल खारिज किया गया."</string>
     <string name="restart_button_description" msgid="5887656107651190519">"इस ऐप्लिकेशन को रीस्टार्ट करने और फ़ुल स्क्रीन पर देखने के लिए टैप करें."</string>
     <string name="got_it" msgid="4428750913636945527">"ठीक है"</string>
diff --git a/libs/WindowManager/Shell/res/values-iw/strings_tv.xml b/libs/WindowManager/Shell/res/values-iw/strings_tv.xml
index 8ca54e0..ef98a9c 100644
--- a/libs/WindowManager/Shell/res/values-iw/strings_tv.xml
+++ b/libs/WindowManager/Shell/res/values-iw/strings_tv.xml
@@ -19,6 +19,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="notification_channel_tv_pip" msgid="2576686079160402435">"תמונה בתוך תמונה"</string>
     <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(תוכנית ללא כותרת)"</string>
-    <string name="pip_close" msgid="9135220303720555525">"‏סגור PIP"</string>
+    <string name="pip_close" msgid="9135220303720555525">"‏סגירת PIP"</string>
     <string name="pip_fullscreen" msgid="7278047353591302554">"מסך מלא"</string>
 </resources>
diff --git a/libs/WindowManager/Shell/res/values-ky/strings.xml b/libs/WindowManager/Shell/res/values-ky/strings.xml
index 530d40a..0c64c76 100644
--- a/libs/WindowManager/Shell/res/values-ky/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ky/strings.xml
@@ -62,7 +62,7 @@
     <string name="bubbles_user_education_title" msgid="2112319053732691899">"Калкып чыкма билдирмелер аркылуу маектешүү"</string>
     <string name="bubbles_user_education_description" msgid="4215862563054175407">"Жаңы жазышуулар калкыма сүрөтчөлөр же калкып чыкма билдирмелер түрүндө көрүнөт. Калкып чыкма билдирмелерди ачуу үчүн таптап коюңуз. Жылдыруу үчүн сүйрөңүз."</string>
     <string name="bubbles_user_education_manage_title" msgid="7042699946735628035">"Калкып чыкма билдирмелерди каалаган убакта көзөмөлдөңүз"</string>
-    <string name="bubbles_user_education_manage" msgid="3460756219946517198">"Бул колдонмодогу калкып чыкма билдирмелерди өчүрүү үчүн, \"Башкарууну\" басыңыз"</string>
+    <string name="bubbles_user_education_manage" msgid="3460756219946517198">"Бул колдонмодогу калкып чыкма билдирмелерди өчүрүү үчүн \"Башкарууну\" басыңыз"</string>
     <string name="bubbles_user_education_got_it" msgid="3382046149225428296">"Түшүндүм"</string>
     <string name="bubble_overflow_empty_title" msgid="2397251267073294968">"Азырынча эч нерсе жок"</string>
     <string name="bubble_overflow_empty_subtitle" msgid="2627417924958633713">"Акыркы жана жабылган калкып чыкма билдирмелер ушул жерде көрүнөт"</string>
diff --git a/libs/WindowManager/Shell/res/values-ne/strings.xml b/libs/WindowManager/Shell/res/values-ne/strings.xml
index 882ac37..dfa364a 100644
--- a/libs/WindowManager/Shell/res/values-ne/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ne/strings.xml
@@ -30,7 +30,7 @@
     <string name="accessibility_action_pip_resize" msgid="4623966104749543182">"आकार बदल्नुहोस्"</string>
     <string name="dock_forced_resizable" msgid="1749750436092293116">"एप विभाजित स्क्रिनमा काम नगर्न सक्छ।"</string>
     <string name="dock_non_resizeble_failed_to_dock_text" msgid="7408396418008948957">"अनुप्रयोगले विभाजित-स्क्रिनलाई समर्थन गर्दैन।"</string>
-    <string name="forced_resizable_secondary_display" msgid="1768046938673582671">"यो अनुप्रयोगले सहायक प्रदर्शनमा काम नगर्नसक्छ।"</string>
+    <string name="forced_resizable_secondary_display" msgid="1768046938673582671">"यो एपले सहायक प्रदर्शनमा काम नगर्नसक्छ।"</string>
     <string name="activity_launch_on_secondary_display_failed_text" msgid="4226485344988071769">"अनुप्रयोगले सहायक प्रदर्शनहरूमा लञ्च सुविधालाई समर्थन गर्दैन।"</string>
     <string name="accessibility_divider" msgid="703810061635792791">"विभाजित-स्क्रिन छुट्याउने"</string>
     <string name="accessibility_action_divider_left_full" msgid="1792313656305328536">"बायाँ भाग फुल स्क्रिन"</string>
diff --git a/libs/WindowManager/Shell/res/values/config.xml b/libs/WindowManager/Shell/res/values/config.xml
index 6698a01..a138fee 100644
--- a/libs/WindowManager/Shell/res/values/config.xml
+++ b/libs/WindowManager/Shell/res/values/config.xml
@@ -40,7 +40,7 @@
     <integer name="long_press_dock_anim_duration">250</integer>
 
     <!-- Animation duration for translating of one handed when trigger / dismiss. -->
-    <integer name="config_one_handed_translate_animation_duration">300</integer>
+    <integer name="config_one_handed_translate_animation_duration">800</integer>
 
     <!-- One handed mode default offset % of display size -->
     <fraction name="config_one_handed_offset">40%</fraction>
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedAnimationController.java
index 125e322..25dd3ca 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedAnimationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedAnimationController.java
@@ -22,8 +22,7 @@
 import android.content.Context;
 import android.graphics.Rect;
 import android.view.SurfaceControl;
-import android.view.animation.Interpolator;
-import android.view.animation.OvershootInterpolator;
+import android.view.animation.BaseInterpolator;
 import android.window.WindowContainerToken;
 
 import androidx.annotation.VisibleForTesting;
@@ -54,7 +53,7 @@
     public @interface TransitionDirection {
     }
 
-    private final Interpolator mOvershootInterpolator;
+    private final OneHandedInterpolator mInterpolator;
     private final OneHandedSurfaceTransactionHelper mSurfaceTransactionHelper;
     private final HashMap<WindowContainerToken, OneHandedTransitionAnimator> mAnimatorMap =
             new HashMap<>();
@@ -64,7 +63,7 @@
      */
     public OneHandedAnimationController(Context context) {
         mSurfaceTransactionHelper = new OneHandedSurfaceTransactionHelper(context);
-        mOvershootInterpolator = new OvershootInterpolator();
+        mInterpolator = new OneHandedInterpolator();
     }
 
     @SuppressWarnings("unchecked")
@@ -102,7 +101,7 @@
     OneHandedTransitionAnimator setupOneHandedTransitionAnimator(
             OneHandedTransitionAnimator animator) {
         animator.setSurfaceTransactionHelper(mSurfaceTransactionHelper);
-        animator.setInterpolator(mOvershootInterpolator);
+        animator.setInterpolator(mInterpolator);
         animator.setFloatValues(FRACTION_START, FRACTION_END);
         return animator;
     }
@@ -112,6 +111,8 @@
      *
      * @param <T> Type of property to animate, either offset (float)
      */
+    // TODO: Refactoring to use SpringAnimation and DynamicAnimation instead of using ValueAnimator
+    //  to implement One-Handed transition animation. (b/185129031)
     public abstract static class OneHandedTransitionAnimator<T> extends ValueAnimator implements
             ValueAnimator.AnimatorUpdateListener,
             ValueAnimator.AnimatorListener {
@@ -297,4 +298,15 @@
             };
         }
     }
+
+    /**
+     * An Interpolator for One-Handed transition animation.
+     */
+    public class OneHandedInterpolator extends BaseInterpolator {
+        @Override
+        public float getInterpolation(float input) {
+            return (float) (Math.pow(2, -10 * input) * Math.sin(((input - 4.0f) / 4.0f)
+                    * (2.0f * Math.PI) / 4.0f) + 1);
+        }
+    }
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
index 19098fd..625f4b8 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
@@ -29,6 +29,7 @@
 import android.content.om.OverlayInfo;
 import android.content.res.Configuration;
 import android.database.ContentObserver;
+import android.graphics.Rect;
 import android.os.Handler;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -61,7 +62,8 @@
 /**
  * Manages and manipulates the one handed states, transitions, and gesture for phones.
  */
-public class OneHandedController implements RemoteCallable<OneHandedController> {
+public class OneHandedController implements RemoteCallable<OneHandedController>,
+        OneHandedTransitionCallback {
     private static final String TAG = "OneHandedController";
 
     private static final String ONE_HANDED_MODE_OFFSET_PERCENTAGE =
@@ -73,6 +75,7 @@
 
     private volatile boolean mIsOneHandedEnabled;
     private volatile boolean mIsSwipeToNotificationEnabled;
+    private volatile boolean mIsTransitioning;
     private boolean mTaskChangeToExit;
     private boolean mLockedDisabled;
     private int mUserId;
@@ -327,7 +330,7 @@
 
     @VisibleForTesting
     void startOneHanded() {
-        if (isLockedDisabled()) {
+        if (isLockedDisabled() || mIsTransitioning) {
             Slog.d(TAG, "Temporary lock disabled");
             return;
         }
@@ -337,13 +340,13 @@
             return;
         }
         if (!mDisplayAreaOrganizer.isInOneHanded()) {
+            mIsTransitioning = true;
             final int yOffSet = Math.round(
                     mDisplayAreaOrganizer.getDisplayLayout().height() * mOffSetFraction);
             mOneHandedAccessibilityUtil.announcementForScreenReader(
                     mOneHandedAccessibilityUtil.getOneHandedStartDescription());
             mDisplayAreaOrganizer.scheduleOffset(0, yOffSet);
             mTimeoutHandler.resetTimer();
-
             mOneHandedUiEventLogger.writeEvent(
                     OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_GESTURE_IN);
         }
@@ -351,16 +354,12 @@
 
     @VisibleForTesting
     void stopOneHanded() {
-        if (mDisplayAreaOrganizer.isInOneHanded()) {
-            mOneHandedAccessibilityUtil.announcementForScreenReader(
-                    mOneHandedAccessibilityUtil.getOneHandedStopDescription());
-            mDisplayAreaOrganizer.scheduleOffset(0, 0);
-            mTimeoutHandler.removeTimer();
-        }
+        stopOneHanded(OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_GESTURE_OUT);
     }
 
     private void stopOneHanded(int uiEvent) {
-        if (mDisplayAreaOrganizer.isInOneHanded()) {
+        if (mDisplayAreaOrganizer.isInOneHanded() && !mIsTransitioning) {
+            mIsTransitioning = true;
             mOneHandedAccessibilityUtil.announcementForScreenReader(
                     mOneHandedAccessibilityUtil.getOneHandedStopDescription());
             mDisplayAreaOrganizer.scheduleOffset(0, 0);
@@ -389,6 +388,7 @@
         mDisplayAreaOrganizer.registerTransitionCallback(mGestureHandler);
         mDisplayAreaOrganizer.registerTransitionCallback(mTutorialHandler);
         mDisplayAreaOrganizer.registerTransitionCallback(mBackgroundPanelOrganizer);
+        mDisplayAreaOrganizer.registerTransitionCallback(this);
         if (mTaskChangeToExit) {
             mTaskStackListener.addListener(mTaskStackListenerCallback);
         }
@@ -615,6 +615,8 @@
         pw.println(mLockedDisabled);
         pw.print(innerPrefix + "mUserId=");
         pw.println(mUserId);
+        pw.print(innerPrefix + "mIsTransitioning=");
+        pw.println(mIsTransitioning);
 
         if (mBackgroundPanelOrganizer != null) {
             mBackgroundPanelOrganizer.dump(pw);
@@ -661,6 +663,26 @@
     }
 
     /**
+     * TODO(b/185558765) To implement a state machine for One-Handed transition state machine.
+     * ONE_HANDDE_STATE_TRANSITION {
+     * STATE_DEFAULT,
+     * STATE_TRANSITIONING,
+     * STATE_ENTER_ONE_HANED,
+     * STATE_EXIT_ONE_HANDED
+     * }
+     * and we need to align the state to launcher3 quick steps through SysuiProxy.
+     */
+    @Override
+    public void onStartFinished(Rect bounds) {
+        mIsTransitioning = false;
+    }
+
+    @Override
+    public void onStopFinished(Rect bounds) {
+        mIsTransitioning = false;
+    }
+
+    /**
      * The interface for calls from outside the Shell, within the host process.
      */
     @ExternalThread
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java
index e3594d0..561dff0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java
@@ -19,10 +19,14 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.app.ActivityTaskManager;
+import android.app.PictureInPictureUiState;
 import android.content.ComponentName;
 import android.content.Context;
 import android.graphics.Point;
 import android.graphics.Rect;
+import android.os.RemoteException;
+import android.util.Log;
 import android.util.Size;
 import android.view.Display;
 
@@ -185,7 +189,18 @@
 
     /** Dictate where PiP currently should be stashed, if at all. */
     public void setStashed(@StashType int stashedState) {
+        if (mStashedState == stashedState) {
+            return;
+        }
+
         mStashedState = stashedState;
+        try {
+            ActivityTaskManager.getService().onPictureInPictureStateChanged(
+                    new PictureInPictureUiState(stashedState != STASH_TYPE_NONE /* isStashed */)
+            );
+        } catch (RemoteException e) {
+            Log.e(TAG, "Unable to set alert PiP state change.");
+        }
     }
 
     /**
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipNotificationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipNotificationController.java
index a474831..dd7e294 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipNotificationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipNotificationController.java
@@ -50,6 +50,7 @@
     // Referenced in com.android.systemui.util.NotificationChannels.
     public static final String NOTIFICATION_CHANNEL = "TVPIP";
     private static final String NOTIFICATION_TAG = "TvPip";
+    private static final String SYSTEMUI_PERMISSION = "com.android.systemui.permission.SELF";
 
     private static final String ACTION_SHOW_PIP_MENU =
             "com.android.wm.shell.pip.tv.notification.action.SHOW_PIP_MENU";
@@ -207,7 +208,8 @@
     }
 
     private static PendingIntent createPendingIntent(Context context, String action) {
-        return PendingIntent.getBroadcast(context, 0, new Intent(action),
+        return PendingIntent.getBroadcast(context, 0,
+                new Intent(action).setPackage(context.getPackageName()),
                 PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
     }
 
@@ -223,7 +225,7 @@
         void register() {
             if (mRegistered) return;
 
-            mContext.registerReceiverForAllUsers(this, mIntentFilter, null /* permission */,
+            mContext.registerReceiverForAllUsers(this, mIntentFilter, SYSTEMUI_PERMISSION,
                     mMainHandler);
             mRegistered = true;
         }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
index 516dfd0..f3ae0a1 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
@@ -16,6 +16,7 @@
 
 package com.android.wm.shell.startingsurface;
 
+import static android.os.Process.THREAD_PRIORITY_TOP_APP_BOOST;
 import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
 import static android.os.UserHandle.getUserHandleForUid;
 
@@ -35,6 +36,8 @@
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.LayerDrawable;
 import android.os.Build;
+import android.os.Handler;
+import android.os.HandlerThread;
 import android.os.Trace;
 import android.util.Slog;
 import android.view.SurfaceControl;
@@ -48,10 +51,11 @@
 import com.android.wm.shell.common.TransactionPool;
 
 import java.util.List;
+import java.util.function.Consumer;
 
 /**
  * Util class to create the view for a splash screen content.
- *
+ * Everything execute in this class should be post to mSplashscreenWorkerHandler.
  * @hide
  */
 public class SplashscreenContentDrawer {
@@ -78,6 +82,7 @@
     private int mIconEarlyExitDistance;
     private final TransactionPool mTransactionPool;
     private final SplashScreenWindowAttrs mTmpAttrs = new SplashScreenWindowAttrs();
+    private final Handler mSplashscreenWorkerHandler;
 
     SplashscreenContentDrawer(Context context, int maxAnimatableIconDuration,
             int iconExitAnimDuration, int appRevealAnimDuration, TransactionPool pool) {
@@ -87,6 +92,50 @@
         mAppRevealDuration = appRevealAnimDuration;
         mIconExitDuration = iconExitAnimDuration;
         mTransactionPool = pool;
+
+        // Initialize Splashscreen worker thread
+        // TODO(b/185288910) move it into WMShellConcurrencyModule and provide an executor to make
+        //  it easier to test stuff that happens on that thread later.
+        final HandlerThread shellSplashscreenWorkerThread =
+                new HandlerThread("wmshell.splashworker", THREAD_PRIORITY_TOP_APP_BOOST);
+        shellSplashscreenWorkerThread.start();
+        mSplashscreenWorkerHandler = shellSplashscreenWorkerThread.getThreadHandler();
+    }
+
+    /**
+     * Create a SplashScreenView object.
+     *
+     * In order to speed up the splash screen view to show on first frame, preparing the
+     * view on background thread so the view and the drawable can be create and pre-draw in
+     * parallel.
+     *
+     * @param emptyView Create a splash screen view without icon on it.
+     * @param consumer Receiving the SplashScreenView object, which will also be executed
+     *                 on splash screen thread. Note that the view can be null if failed.
+     */
+    void createContentView(Context context, boolean emptyView, int splashScreenResId,
+            ActivityInfo info, int taskId, Consumer<SplashScreenView> consumer) {
+        mSplashscreenWorkerHandler.post(() -> {
+            SplashScreenView contentView;
+            try {
+                contentView = SplashscreenContentDrawer.makeSplashscreenContent(
+                        context, splashScreenResId);
+                if (contentView == null) {
+                    Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "makeSplashScreenContentView");
+                    if (emptyView) {
+                        contentView = makeEmptySplashScreenContentView(context);
+                    } else {
+                        contentView = makeSplashScreenContentView(context, info);
+                    }
+                    Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
+                }
+            } catch (RuntimeException e) {
+                Slog.w(TAG, "failed creating starting window content at taskId: "
+                        + taskId, e);
+                contentView = null;
+            }
+            consumer.accept(contentView);
+        });
     }
 
     private void updateDensity() {
@@ -146,7 +195,19 @@
         }
     }
 
-    SplashScreenView makeSplashScreenContentView(Context context, ActivityInfo ai) {
+    private SplashScreenView makeEmptySplashScreenContentView(Context context) {
+        getWindowAttrs(context, mTmpAttrs);
+        final StartingWindowViewBuilder builder = new StartingWindowViewBuilder();
+        final int themeBGColor = peekWindowBGColor(context);
+        final SplashScreenView view =  builder
+                .setContext(context)
+                .setWindowBGColor(themeBGColor)
+                .build();
+        view.setNotCopyable();
+        return view;
+    }
+
+    private SplashScreenView makeSplashScreenContentView(Context context, ActivityInfo ai) {
         updateDensity();
 
         getWindowAttrs(context, mTmpAttrs);
@@ -199,7 +260,7 @@
         }
     }
 
-    static class SplashScreenWindowAttrs {
+    private static class SplashScreenWindowAttrs {
         private int mWindowBgResId = 0;
         private int mWindowBgColor = Color.TRANSPARENT;
         private Drawable mReplaceIcon = null;
@@ -271,9 +332,7 @@
                 if (DEBUG) {
                     Slog.d(TAG, "The icon is not an AdaptiveIconDrawable");
                 }
-                mFinalIconDrawable = SplashscreenIconDrawableFactory.makeIconDrawable(
-                        mIconBackground != Color.TRANSPARENT
-                        ? mIconBackground : mThemeColor, mIconDrawable, mIconSize);
+                createIconDrawable(mIconDrawable, mIconSize);
             }
             final int iconSize = mFinalIconDrawable != null ? (int) (mIconSize * mScale) : 0;
             mCachedResult = fillViewWithIcon(mContext, iconSize, mFinalIconDrawable);
@@ -283,8 +342,8 @@
 
         private void createIconDrawable(Drawable iconDrawable, int iconSize) {
             mFinalIconDrawable = SplashscreenIconDrawableFactory.makeIconDrawable(
-                    mIconBackground != Color.TRANSPARENT
-                    ? mIconBackground : mThemeColor, iconDrawable, iconSize);
+                    mIconBackground != Color.TRANSPARENT ? mIconBackground : mThemeColor,
+                    iconDrawable, iconSize, mSplashscreenWorkerHandler);
         }
 
         private boolean processAdaptiveIcon() {
@@ -399,7 +458,7 @@
         return root < 0.1;
     }
 
-    static SplashScreenView makeSplashscreenContent(Context ctx,
+    private static SplashScreenView makeSplashscreenContent(Context ctx,
             int splashscreenContentResId) {
         // doesn't support windowSplashscreenContent after S
         // TODO add an allowlist to skip some packages if needed
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenIconDrawableFactory.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenIconDrawableFactory.java
index 4196d68..85845d0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenIconDrawableFactory.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenIconDrawableFactory.java
@@ -37,6 +37,7 @@
 import android.graphics.drawable.Animatable;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
+import android.os.Handler;
 import android.os.Trace;
 import android.util.PathParser;
 import android.window.SplashScreenView;
@@ -50,42 +51,61 @@
 public class SplashscreenIconDrawableFactory {
 
     static Drawable makeIconDrawable(@ColorInt int backgroundColor,
-            @NonNull Drawable foregroundDrawable, int iconSize) {
+            @NonNull Drawable foregroundDrawable, int iconSize,
+            Handler splashscreenWorkerHandler) {
         if (foregroundDrawable instanceof Animatable) {
             return new AnimatableIconDrawable(backgroundColor, foregroundDrawable);
         } else if (foregroundDrawable instanceof AdaptiveIconDrawable) {
-            return new ImmobileIconDrawable((AdaptiveIconDrawable) foregroundDrawable, iconSize);
+            return new ImmobileIconDrawable((AdaptiveIconDrawable) foregroundDrawable, iconSize,
+                    splashscreenWorkerHandler);
         } else {
             return new ImmobileIconDrawable(new AdaptiveIconDrawable(
-                    new ColorDrawable(backgroundColor), foregroundDrawable), iconSize);
+                    new ColorDrawable(backgroundColor), foregroundDrawable), iconSize,
+                    splashscreenWorkerHandler);
         }
     }
 
     private static class ImmobileIconDrawable extends Drawable {
-        private Shader mLayersShader;
+        private boolean mCacheComplete;
         private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG
                 | Paint.FILTER_BITMAP_FLAG);
 
-        ImmobileIconDrawable(AdaptiveIconDrawable drawable, int iconSize) {
-            cachePaint(drawable, iconSize, iconSize);
+        ImmobileIconDrawable(AdaptiveIconDrawable drawable, int iconSize,
+                Handler splashscreenWorkerHandler) {
+            splashscreenWorkerHandler.post(() -> cachePaint(drawable, iconSize, iconSize));
         }
 
         private void cachePaint(AdaptiveIconDrawable drawable, int width, int height) {
-            Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "cachePaint");
-            final Bitmap layersBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
-            final Canvas canvas = new Canvas(layersBitmap);
-            drawable.setBounds(0, 0, width, height);
-            drawable.draw(canvas);
-            mLayersShader = new BitmapShader(layersBitmap, Shader.TileMode.CLAMP,
-                    Shader.TileMode.CLAMP);
-            mPaint.setShader(mLayersShader);
-            Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
+            synchronized (mPaint) {
+                if (mCacheComplete) {
+                    return;
+                }
+                Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "cachePaint");
+                final Bitmap layersBitmap = Bitmap.createBitmap(width, height,
+                        Bitmap.Config.ARGB_8888);
+                final Canvas canvas = new Canvas(layersBitmap);
+                drawable.setBounds(0, 0, width, height);
+                drawable.draw(canvas);
+                final Shader layersShader = new BitmapShader(layersBitmap, Shader.TileMode.CLAMP,
+                        Shader.TileMode.CLAMP);
+                mPaint.setShader(layersShader);
+                Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
+                mCacheComplete = true;
+            }
         }
 
         @Override
         public void draw(Canvas canvas) {
-            final Rect bounds = getBounds();
-            canvas.drawRect(bounds, mPaint);
+            synchronized (mPaint) {
+                if (mCacheComplete) {
+                    final Rect bounds = getBounds();
+                    canvas.drawRect(bounds, mPaint);
+                } else {
+                    // this shouldn't happen, but if it really happen, invalidate self to wait
+                    // for cachePaint finish.
+                    invalidateSelf();
+                }
+            }
         }
 
         @Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java
index e95135a..e4b2869 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java
@@ -18,8 +18,10 @@
 
 import static android.content.Context.CONTEXT_RESTRICTED;
 import static android.content.res.Configuration.EMPTY;
+import static android.view.Choreographer.CALLBACK_INSETS_ANIMATION;
 import static android.view.Display.DEFAULT_DISPLAY;
 
+import android.annotation.Nullable;
 import android.app.ActivityManager.RunningTaskInfo;
 import android.app.ActivityTaskManager;
 import android.content.Context;
@@ -29,16 +31,15 @@
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
-import android.graphics.Color;
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
-import android.graphics.drawable.ColorDrawable;
 import android.hardware.display.DisplayManager;
 import android.os.IBinder;
 import android.os.SystemClock;
 import android.os.UserHandle;
 import android.util.Slog;
 import android.util.SparseArray;
+import android.view.Choreographer;
 import android.view.Display;
 import android.view.SurfaceControl;
 import android.view.View;
@@ -54,9 +55,44 @@
 import com.android.wm.shell.common.TransactionPool;
 
 import java.util.function.Consumer;
+import java.util.function.Supplier;
 
 /**
  * A class which able to draw splash screen or snapshot as the starting window for a task.
+ *
+ * In order to speed up, there will use two threads to creating a splash screen in parallel.
+ * Right now we are still using PhoneWindow to create splash screen window, so the view is added to
+ * the ViewRootImpl, and those view won't be draw immediately because the ViewRootImpl will call
+ * scheduleTraversal to register a callback from Choreographer, so the drawing result of the view
+ * can synchronize on each frame.
+ *
+ * The bad thing is that we cannot decide when would Choreographer#doFrame happen, and drawing
+ * the AdaptiveIconDrawable object can be time consuming, so we use the splash-screen background
+ * thread to draw the AdaptiveIconDrawable object to a Bitmap and cache it to a BitmapShader after
+ * the SplashScreenView just created, once we get the BitmapShader then the #draw call can be very
+ * quickly.
+ *
+ * So basically we are using the spare time to prepare the SplashScreenView while splash screen
+ * thread is waiting for
+ * 1. WindowManager#addView(binder call to WM),
+ * 2. Choreographer#doFrame happen(uncertain time for next frame, depends on device),
+ * 3. Session#relayout(another binder call to WM which under Choreographer#doFrame, but will
+ * always happen before #draw).
+ * Because above steps are running on splash-screen thread, so pre-draw the BitmapShader on
+ * splash-screen background tread can make they execute in parallel, which ensure it is faster then
+ * to draw the AdaptiveIconDrawable when receive callback from Choreographer#doFrame.
+ *
+ * Here is the sequence to compare the difference between using single and two thread.
+ *
+ * Single thread:
+ * => makeSplashScreenContentView -> WM#addView .. waiting for Choreographer#doFrame -> relayout
+ * -> draw -> AdaptiveIconDrawable#draw
+ *
+ * Two threads:
+ * => makeSplashScreenContentView -> cachePaint(=AdaptiveIconDrawable#draw)
+ * => WM#addView -> .. waiting for Choreographer#doFrame -> relayout -> draw -> (draw the Paint
+ * directly).
+ *
  * @hide
  */
 public class StartingSurfaceDrawer {
@@ -68,7 +104,11 @@
     private final DisplayManager mDisplayManager;
     private final ShellExecutor mSplashScreenExecutor;
     private final SplashscreenContentDrawer mSplashscreenContentDrawer;
+    private Choreographer mChoreographer;
 
+    /**
+     * @param splashScreenExecutor The thread used to control add and remove starting window.
+     */
     public StartingSurfaceDrawer(Context context, ShellExecutor splashScreenExecutor,
             TransactionPool pool) {
         mContext = context;
@@ -82,6 +122,7 @@
                 com.android.wm.shell.R.integer.starting_window_app_reveal_anim_duration);
         mSplashscreenContentDrawer = new SplashscreenContentDrawer(mContext,
                 maxAnimatableIconDuration, iconExitAnimDuration, appRevealAnimDuration, pool);
+        mSplashScreenExecutor.execute(() -> mChoreographer = Choreographer.getInstance());
     }
 
     private final SparseArray<StartingWindowRecord> mStartingWindowRecords = new SparseArray<>();
@@ -267,36 +308,83 @@
         params.setTitle("Splash Screen " + activityInfo.packageName);
 
         // TODO(b/173975965) tracking performance
-        SplashScreenView sView = null;
+        // Prepare the splash screen content view on splash screen worker thread in parallel, so the
+        // content view won't be blocked by binder call like addWindow and relayout.
+        // 1. Trigger splash screen worker thread to create SplashScreenView before/while
+        // Session#addWindow.
+        // 2. Synchronize the SplashscreenView to splash screen thread before Choreographer start
+        // traversal, which will call Session#relayout on splash screen thread.
+        // 3. Pre-draw the BitmapShader if the icon is immobile on splash screen worker thread, at
+        // the same time the splash screen thread should be executing Session#relayout. Blocking the
+        // traversal -> draw on splash screen thread until the BitmapShader of the icon is ready.
+
+        // Record whether create splash screen view success, notify to current thread after
+        // create splash screen view finished.
+        final SplashScreenViewSupplier viewSupplier = new SplashScreenViewSupplier();
+        final Runnable setViewSynchronized = () -> {
+            // waiting for setContentView before relayoutWindow
+            SplashScreenView contentView = viewSupplier.get();
+            final StartingWindowRecord record = mStartingWindowRecords.get(taskId);
+            // if record == null, either the starting window added fail or removed already.
+            if (record != null) {
+                // if view == null then creation of content view was failed.
+                if (contentView != null) {
+                    try {
+                        win.setContentView(contentView);
+                        contentView.cacheRootWindow(win);
+                    } catch (RuntimeException e) {
+                        Slog.w(TAG, "failed set content view to starting window "
+                                + "at taskId: " + taskId, e);
+                        contentView = null;
+                    }
+                }
+                record.setSplashScreenView(contentView);
+            }
+        };
+        mSplashscreenContentDrawer.createContentView(context, emptyView,
+                splashscreenContentResId[0], activityInfo, taskId, viewSupplier::setView);
+
         try {
             final View view = win.getDecorView();
             final WindowManager wm = mContext.getSystemService(WindowManager.class);
-            if (!emptyView) {
-                // splash screen content will be deprecated after S.
-                sView = SplashscreenContentDrawer.makeSplashscreenContent(
-                        context, splashscreenContentResId[0]);
-                final boolean splashscreenContentCompatible = sView != null;
-                if (splashscreenContentCompatible) {
-                    win.setContentView(sView);
-                } else {
-                    sView = mSplashscreenContentDrawer
-                            .makeSplashScreenContentView(context, activityInfo);
-                    win.setContentView(sView);
-                    win.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
-                    sView.cacheRootWindow(win);
-                }
-            }
             postAddWindow(taskId, appToken, view, wm, params);
+
+            // We use the splash screen worker thread to create SplashScreenView while adding the
+            // window, as otherwise Choreographer#doFrame might be delayed on this thread.
+            // And since Choreographer#doFrame won't happen immediately after adding the window, if
+            // the view is not added to the PhoneWindow on the first #doFrame, the view will not be
+            // rendered on the first frame. So here we need to synchronize the view on the window
+            // before first round relayoutWindow, which will happen after insets animation.
+            mChoreographer.postCallback(CALLBACK_INSETS_ANIMATION, setViewSynchronized, null);
         } catch (RuntimeException e) {
             // don't crash if something else bad happens, for example a
             // failure loading resources because we are loading from an app
             // on external storage that has been unmounted.
-            Slog.w(TAG, " failed creating starting window at taskId: " + taskId, e);
-            sView = null;
-        } finally {
-            final StartingWindowRecord record = mStartingWindowRecords.get(taskId);
-            if (record != null) {
-                record.setSplashScreenView(sView);
+            Slog.w(TAG, "failed creating starting window at taskId: " + taskId, e);
+        }
+    }
+
+    private static class SplashScreenViewSupplier implements Supplier<SplashScreenView> {
+        private SplashScreenView mView;
+        private boolean mIsViewSet;
+        void setView(SplashScreenView view) {
+            synchronized (this) {
+                mView = view;
+                mIsViewSet = true;
+                notify();
+            }
+        }
+
+        @Override
+        public @Nullable SplashScreenView get() {
+            synchronized (this) {
+                while (!mIsViewSet) {
+                    try {
+                        wait();
+                    } catch (InterruptedException ignored) {
+                    }
+                }
+                return mView;
             }
         }
     }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java
index 8a629bc..e336287 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java
@@ -16,6 +16,7 @@
 package com.android.wm.shell.startingsurface;
 
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
 import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_EMPTY_SPLASH_SCREEN;
 import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_NONE;
 import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_SNAPSHOT;
@@ -30,11 +31,11 @@
 import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission;
 
 import android.app.ActivityManager.RunningTaskInfo;
-import android.app.ActivityTaskManager;
 import android.content.Context;
 import android.graphics.Rect;
 import android.os.IBinder;
 import android.os.RemoteException;
+import android.os.Trace;
 import android.util.Slog;
 import android.view.SurfaceControl;
 import android.window.StartingWindowInfo;
@@ -109,17 +110,9 @@
     }
 
     private static class StartingTypeChecker {
-        TaskSnapshot mSnapshot;
-
-        StartingTypeChecker() { }
-
-        private void reset() {
-            mSnapshot = null;
-        }
 
         private @StartingWindowInfo.StartingWindowType int
                 estimateStartingWindowType(StartingWindowInfo windowInfo) {
-            reset();
             final int parameter = windowInfo.startingWindowTypeParameter;
             final boolean newTask = (parameter & TYPE_PARAMETER_NEW_TASK) != 0;
             final boolean taskSwitch = (parameter & TYPE_PARAMETER_TASK_SWITCH) != 0;
@@ -159,7 +152,7 @@
                 }
             }
             if (taskSwitch && allowTaskSnapshot) {
-                final TaskSnapshot snapshot = getTaskSnapshot(windowInfo.taskInfo.taskId);
+                final TaskSnapshot snapshot = windowInfo.mTaskSnapshot;
                 if (isSnapshotCompatible(windowInfo, snapshot)) {
                     return STARTING_WINDOW_TYPE_SNAPSHOT;
                 }
@@ -198,20 +191,6 @@
             }
             return taskRotation == snapshotRotation;
         }
-
-        private TaskSnapshot getTaskSnapshot(int taskId) {
-            if (mSnapshot != null) {
-                return mSnapshot;
-            }
-            try {
-                mSnapshot = ActivityTaskManager.getService().getTaskSnapshot(taskId,
-                        false/* isLowResolution */);
-            } catch (RemoteException e) {
-                Slog.e(TAG, "Unable to get snapshot for task: " + taskId + ", from: " + e);
-                return null;
-            }
-            return mSnapshot;
-        }
     }
 
     /*
@@ -232,7 +211,9 @@
      */
     public void addStartingWindow(StartingWindowInfo windowInfo, IBinder appToken) {
         mSplashScreenExecutor.execute(() -> {
-            final int suggestionType = mStartingTypeChecker.estimateStartingWindowType(windowInfo);
+            Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "addStartingWindow");
+            final int suggestionType = mStartingTypeChecker.estimateStartingWindowType(
+                    windowInfo);
             final RunningTaskInfo runningTaskInfo = windowInfo.taskInfo;
             if (mTaskLaunchingCallback != null && shouldSendToListener(suggestionType)) {
                 mTaskLaunchingCallback.accept(runningTaskInfo.taskId, suggestionType);
@@ -244,10 +225,12 @@
                 mStartingSurfaceDrawer.addSplashScreenStartingWindow(windowInfo, appToken,
                         true /* emptyView */);
             } else if (suggestionType == STARTING_WINDOW_TYPE_SNAPSHOT) {
-                final TaskSnapshot snapshot = mStartingTypeChecker.mSnapshot;
-                mStartingSurfaceDrawer.makeTaskSnapshotWindow(windowInfo, appToken, snapshot);
+                final TaskSnapshot snapshot = windowInfo.mTaskSnapshot;
+                mStartingSurfaceDrawer.makeTaskSnapshotWindow(windowInfo, appToken,
+                        snapshot);
             }
             // If prefer don't show, then don't show!
+            Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
         });
     }
 
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java
index 6e43741..e9ce2ad 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java
@@ -19,6 +19,7 @@
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
 import static android.graphics.Color.WHITE;
 import static android.graphics.Color.alpha;
+import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
 import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS;
 import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS;
 import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
@@ -60,6 +61,7 @@
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.os.SystemClock;
+import android.os.Trace;
 import android.util.MergedConfiguration;
 import android.util.Slog;
 import android.view.IWindowSession;
@@ -222,8 +224,10 @@
         final InputChannel tmpInputChannel = new InputChannel();
         mainExecutor.execute(() -> {
             try {
+                Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "TaskSnapshot#addToDisplay");
                 final int res = session.addToDisplay(window, layoutParams, View.GONE, displayId,
                         mTmpInsetsState, tmpInputChannel, mTmpInsetsState, mTempControls);
+                Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
                 if (res < 0) {
                     Slog.w(TAG, "Failed to add snapshot starting window res=" + res);
                     return;
@@ -233,9 +237,11 @@
             }
             window.setOuter(snapshotSurface);
             try {
+                Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "TaskSnapshot#relayout");
                 session.relayout(window, layoutParams, -1, -1, View.VISIBLE, 0, -1,
                         tmpFrames, tmpMergedConfiguration, surfaceControl, mTmpInsetsState,
                         mTempControls, TMP_SURFACE_SIZE);
+                Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
             } catch (RemoteException e) {
                 snapshotSurface.clearWindowSynced();
             }
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenDockActivity.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenDockActivity.kt
index e50bde2..6494f89 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenDockActivity.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenDockActivity.kt
@@ -23,7 +23,7 @@
 import com.android.server.wm.flicker.FlickerParametersRunnerFactory
 import com.android.server.wm.flicker.FlickerTestParameter
 import com.android.server.wm.flicker.FlickerTestParameterFactory
-import com.android.server.wm.flicker.LAUNCHER_TITLE
+import com.android.server.wm.flicker.HOME_WINDOW_TITLE
 import com.android.server.wm.flicker.dsl.FlickerBuilder
 import com.android.server.wm.flicker.helpers.launchSplitScreen
 import com.android.server.wm.flicker.navBarWindowIsAlwaysVisible
@@ -62,7 +62,7 @@
     override val ignoredWindows: List<String>
         get() = listOf(LAUNCHER_PACKAGE_NAME, LIVE_WALLPAPER_PACKAGE_NAME,
             splitScreenApp.defaultWindowName, WindowManagerStateHelper.SPLASH_SCREEN_NAME,
-            WindowManagerStateHelper.SNAPSHOT_WINDOW_NAME, *LAUNCHER_TITLE)
+            WindowManagerStateHelper.SNAPSHOT_WINDOW_NAME, *HOME_WINDOW_TITLE)
 
     @FlakyTest(bugId = 169271943)
     @Test
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java
index dea24d3..a6215d3 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java
@@ -38,6 +38,8 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.function.Consumer;
+
 /**
  * Tests for {@link PipBoundsState}.
  */
@@ -178,4 +180,20 @@
         mPipBoundsState.setOverrideMinSize(new Size(15, 10));
         assertEquals(10, mPipBoundsState.getOverrideMinEdgeSize());
     }
+
+    @Test
+    public void testSetBounds_updatesPipExclusionBounds() {
+        final Consumer<Rect> callback = mock(Consumer.class);
+        final Rect currentBounds = new Rect(10, 10, 20, 15);
+        final Rect newBounds = new Rect(50, 50, 100, 75);
+        mPipBoundsState.setBounds(currentBounds);
+
+        mPipBoundsState.setPipExclusionBoundsChangeCallback(callback);
+        // Setting the listener immediately calls back with the current bounds.
+        verify(callback).accept(currentBounds);
+
+        mPipBoundsState.setBounds(newBounds);
+        // Updating the bounds makes the listener call back back with the new rect.
+        verify(callback).accept(newBounds);
+    }
 }
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java
index 5df391f..9d7c82b 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java
@@ -19,6 +19,7 @@
 import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_TO_PIP;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyLong;
@@ -31,6 +32,7 @@
 import android.app.PictureInPictureParams;
 import android.content.ComponentName;
 import android.content.pm.ActivityInfo;
+import android.graphics.Rect;
 import android.os.RemoteException;
 import android.test.suitebuilder.annotation.SmallTest;
 import android.testing.AndroidTestingRunner;
@@ -222,6 +224,16 @@
         assertEquals(minSize, mPipBoundsState.getOverrideMinSize());
     }
 
+    @Test
+    public void onTaskVanished_clearsPipBounds() {
+        mSpiedPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1,
+                createPipParams(null)), null /* leash */);
+        mPipBoundsState.setBounds(new Rect(100, 100, 200, 150));
+
+        mSpiedPipTaskOrganizer.onTaskVanished(createTaskInfo(mComponent1, createPipParams(null)));
+        assertTrue(mPipBoundsState.getBounds().isEmpty());
+    }
+
     private void preparePipTaskOrg() {
         final DisplayInfo info = new DisplayInfo();
         mPipBoundsState.setDisplayLayout(new DisplayLayout(info,
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawerTests.java
index d1d1313..2623535 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawerTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawerTests.java
@@ -77,9 +77,9 @@
         int mAddWindowForTask = 0;
         int mViewThemeResId;
 
-        TestStartingSurfaceDrawer(Context context, ShellExecutor animExecutor,
+        TestStartingSurfaceDrawer(Context context, ShellExecutor splashScreenExecutor,
                 TransactionPool pool) {
-            super(context, animExecutor, pool);
+            super(context, splashScreenExecutor, pool);
         }
 
         @Override
@@ -120,8 +120,9 @@
         doReturn(metrics).when(mMockWindowManager).getMaximumWindowMetrics();
         doNothing().when(mMockWindowManager).addView(any(), any());
 
-        mStartingSurfaceDrawer = spy(new TestStartingSurfaceDrawer(context,
-                new HandlerExecutor(new Handler(Looper.getMainLooper())),
+        final HandlerExecutor testExecutor =
+                new HandlerExecutor(new Handler(Looper.getMainLooper()));
+        mStartingSurfaceDrawer = spy(new TestStartingSurfaceDrawer(context, testExecutor,
                 mTransactionPool));
     }
 
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index 4c4a152..3056e97 100644
--- a/libs/hwui/SkiaCanvas.cpp
+++ b/libs/hwui/SkiaCanvas.cpp
@@ -820,10 +820,11 @@
                             uirenderer::CanvasPropertyPrimitive* radius,
                             uirenderer::CanvasPropertyPaint* paint,
                             uirenderer::CanvasPropertyPrimitive* progress,
+                            uirenderer::CanvasPropertyPrimitive* turbulencePhase,
                             const SkRuntimeShaderBuilder& effectBuilder) {
     sk_sp<uirenderer::skiapipeline::AnimatedRipple> drawable(
             new uirenderer::skiapipeline::AnimatedRipple(x, y, radius, paint, progress,
-                                                         effectBuilder));
+                                                         turbulencePhase, effectBuilder));
     mCanvas->drawDrawable(drawable.get());
 }
 
diff --git a/libs/hwui/SkiaCanvas.h b/libs/hwui/SkiaCanvas.h
index e0a0be5..995f00c 100644
--- a/libs/hwui/SkiaCanvas.h
+++ b/libs/hwui/SkiaCanvas.h
@@ -153,6 +153,7 @@
                             uirenderer::CanvasPropertyPrimitive* radius,
                             uirenderer::CanvasPropertyPaint* paint,
                             uirenderer::CanvasPropertyPrimitive* progress,
+                            uirenderer::CanvasPropertyPrimitive* turbulencePhase,
                             const SkRuntimeShaderBuilder& effectBuilder) override;
 
     virtual void drawLayer(uirenderer::DeferredLayerUpdater* layerHandle) override;
diff --git a/libs/hwui/WebViewFunctorManager.cpp b/libs/hwui/WebViewFunctorManager.cpp
index 671c66f..979678d 100644
--- a/libs/hwui/WebViewFunctorManager.cpp
+++ b/libs/hwui/WebViewFunctorManager.cpp
@@ -18,6 +18,7 @@
 
 #include <private/hwui/WebViewFunctor.h>
 #include "Properties.h"
+#include "renderthread/CanvasContext.h"
 #include "renderthread/RenderThread.h"
 
 #include <log/log.h>
@@ -115,11 +116,20 @@
     ScopedCurrentFunctor currentFunctor(this);
 
     WebViewOverlayData overlayParams = {
-            // TODO:
             .overlaysMode = OverlaysMode::Disabled,
             .getSurfaceControl = currentFunctor.getSurfaceControl,
             .mergeTransaction = currentFunctor.mergeTransaction,
     };
+
+    if (!drawInfo.isLayer) {
+        renderthread::CanvasContext* activeContext =
+                renderthread::CanvasContext::getActiveContext();
+        if (activeContext != nullptr) {
+            ASurfaceControl* rootSurfaceControl = activeContext->getSurfaceControl();
+            if (rootSurfaceControl) overlayParams.overlaysMode = OverlaysMode::Enabled;
+        }
+    }
+
     mCallbacks.gles.draw(mFunctor, mData, drawInfo, overlayParams);
 }
 
@@ -138,11 +148,12 @@
     ScopedCurrentFunctor currentFunctor(this);
 
     WebViewOverlayData overlayParams = {
-            // TODO
             .overlaysMode = OverlaysMode::Disabled,
             .getSurfaceControl = currentFunctor.getSurfaceControl,
             .mergeTransaction = currentFunctor.mergeTransaction,
     };
+
+    // TODO, enable surface control once offscreen mode figured out
     mCallbacks.vk.draw(mFunctor, mData, params, overlayParams);
 }
 
@@ -166,15 +177,43 @@
 void WebViewFunctor::removeOverlays() {
     ScopedCurrentFunctor currentFunctor(this);
     mCallbacks.removeOverlays(mFunctor, mData, currentFunctor.mergeTransaction);
+    if (mSurfaceControl) {
+        auto funcs = renderthread::RenderThread::getInstance().getASurfaceControlFunctions();
+        funcs.releaseFunc(mSurfaceControl);
+        mSurfaceControl = nullptr;
+    }
 }
 
 ASurfaceControl* WebViewFunctor::getSurfaceControl() {
-    // TODO
-    return nullptr;
+    ATRACE_NAME("WebViewFunctor::getSurfaceControl");
+    if (mSurfaceControl != nullptr) return mSurfaceControl;
+
+    renderthread::CanvasContext* activeContext = renderthread::CanvasContext::getActiveContext();
+    LOG_ALWAYS_FATAL_IF(activeContext == nullptr, "Null active canvas context!");
+
+    ASurfaceControl* rootSurfaceControl = activeContext->getSurfaceControl();
+    LOG_ALWAYS_FATAL_IF(rootSurfaceControl == nullptr, "Null root surface control!");
+
+    auto funcs = renderthread::RenderThread::getInstance().getASurfaceControlFunctions();
+    mSurfaceControl = funcs.createFunc(rootSurfaceControl, "Webview Overlay SurfaceControl");
+    ASurfaceTransaction* transaction = funcs.transactionCreateFunc();
+    funcs.transactionSetVisibilityFunc(transaction, mSurfaceControl,
+                                       ASURFACE_TRANSACTION_VISIBILITY_SHOW);
+    funcs.transactionApplyFunc(transaction);
+    funcs.transactionDeleteFunc(transaction);
+    return mSurfaceControl;
 }
 
 void WebViewFunctor::mergeTransaction(ASurfaceTransaction* transaction) {
-    // TODO
+    ATRACE_NAME("WebViewFunctor::mergeTransaction");
+    if (transaction == nullptr) return;
+    renderthread::CanvasContext* activeContext = renderthread::CanvasContext::getActiveContext();
+    LOG_ALWAYS_FATAL_IF(activeContext == nullptr, "Null active canvas context!");
+    bool done = activeContext->mergeTransaction(transaction, mSurfaceControl);
+    if (!done) {
+        auto funcs = renderthread::RenderThread::getInstance().getASurfaceControlFunctions();
+        funcs.transactionApplyFunc(transaction);
+    }
 }
 
 WebViewFunctorManager& WebViewFunctorManager::instance() {
diff --git a/libs/hwui/WebViewFunctorManager.h b/libs/hwui/WebViewFunctorManager.h
index 17b936a..a84cda5 100644
--- a/libs/hwui/WebViewFunctorManager.h
+++ b/libs/hwui/WebViewFunctorManager.h
@@ -91,6 +91,7 @@
     RenderMode mMode;
     bool mHasContext = false;
     bool mCreatedHandle = false;
+    ASurfaceControl* mSurfaceControl = nullptr;
 };
 
 class WebViewFunctorManager {
diff --git a/libs/hwui/canvas/CanvasOps.h b/libs/hwui/canvas/CanvasOps.h
index 855cd0d..173f394 100644
--- a/libs/hwui/canvas/CanvasOps.h
+++ b/libs/hwui/canvas/CanvasOps.h
@@ -152,32 +152,66 @@
     sp<uirenderer::CanvasPropertyPrimitive> radius;
     sp<uirenderer::CanvasPropertyPaint> paint;
     sp<uirenderer::CanvasPropertyPrimitive> progress;
+    sp<uirenderer::CanvasPropertyPrimitive> turbulencePhase;
     sk_sp<SkRuntimeEffect> effect;
 
+    const float PI = 3.1415926535897932384626;
+    const float PI_ROTATE_RIGHT = PI * 0.0078125;
+    const float PI_ROTATE_LEFT = PI * -0.0078125;
+    const float SCALE = 1.5;
+    const float CIRCLE_X_1 = 0.01 * cos(SCALE * 0.55);
+    const float CIRCLE_Y_1 = 0.01 * sin(SCALE * 0.55);
+    const float CIRCLE_X_2 = -0.0066 * cos(SCALE * 0.45);
+    const float CIRCLE_Y_2 = -0.0066 * sin(SCALE * 0.45);
+    const float CIRCLE_X_3 = -0.0066 * cos(SCALE * 0.35);
+    const float CIRCLE_Y_3 = -0.0066 * sin(SCALE * 0.35);
+
     void draw(SkCanvas* canvas) const {
         SkRuntimeShaderBuilder runtimeEffectBuilder(effect);
 
-        SkRuntimeShaderBuilder::BuilderUniform center = runtimeEffectBuilder.uniform("in_origin");
-        if (center.fVar != nullptr) {
-            center = SkV2{x->value, y->value};
-        }
+        setUniform2f(runtimeEffectBuilder, "in_origin", x->value, y->value);
+        setUniform(runtimeEffectBuilder, "in_radius", radius);
+        setUniform(runtimeEffectBuilder, "in_progress", progress);
+        setUniform(runtimeEffectBuilder, "in_turbulencePhase", turbulencePhase);
 
-        SkRuntimeShaderBuilder::BuilderUniform radiusU =
-                runtimeEffectBuilder.uniform("in_radius");
-        if (radiusU.fVar != nullptr) {
-            radiusU = radius->value;
-        }
-
-        SkRuntimeShaderBuilder::BuilderUniform progressU =
-                runtimeEffectBuilder.uniform("in_progress");
-        if (progressU.fVar != nullptr) {
-            progressU = progress->value;
-        }
+        //
+        // Keep in sync with:
+        // frameworks/base/graphics/java/android/graphics/drawable/RippleShader.java
+        //
+        const float turbulence = turbulencePhase->value;
+        setUniform2f(runtimeEffectBuilder, "in_tCircle1", SCALE * 0.5 + (turbulence * CIRCLE_X_1),
+                     SCALE * 0.5 + (turbulence * CIRCLE_Y_1));
+        setUniform2f(runtimeEffectBuilder, "in_tCircle2", SCALE * 0.2 + (turbulence * CIRCLE_X_2),
+                     SCALE * 0.2 + (turbulence * CIRCLE_Y_2));
+        setUniform2f(runtimeEffectBuilder, "in_tCircle3", SCALE + (turbulence * CIRCLE_X_3),
+                     SCALE + (turbulence * CIRCLE_Y_3));
+        const float rotation1 = turbulence * PI_ROTATE_RIGHT + 1.7 * PI;
+        setUniform2f(runtimeEffectBuilder, "in_tRotation1", cos(rotation1), sin(rotation1));
+        const float rotation2 = turbulence * PI_ROTATE_LEFT + 2 * PI;
+        setUniform2f(runtimeEffectBuilder, "in_tRotation2", cos(rotation2), sin(rotation2));
+        const float rotation3 = turbulence * PI_ROTATE_RIGHT + 2.75 * PI;
+        setUniform2f(runtimeEffectBuilder, "in_tRotation3", cos(rotation3), sin(rotation3));
 
         SkPaint paintMod = paint->value;
         paintMod.setShader(runtimeEffectBuilder.makeShader(nullptr, false));
         canvas->drawCircle(x->value, y->value, radius->value, paintMod);
     }
+
+    void setUniform(SkRuntimeShaderBuilder& effect, std::string name,
+                    sp<uirenderer::CanvasPropertyPrimitive> property) const {
+        SkRuntimeShaderBuilder::BuilderUniform uniform = effect.uniform(name.c_str());
+        if (uniform.fVar != nullptr) {
+            uniform = property->value;
+        }
+    }
+
+    void setUniform2f(SkRuntimeShaderBuilder effect, std::string name, float a, float b) const {
+        SkRuntimeShaderBuilder::BuilderUniform uniform = effect.uniform(name.c_str());
+        if (uniform.fVar != nullptr) {
+            uniform = SkV2{a, b};
+        }
+    }
+
     ASSERT_DRAWABLE()
 };
 
diff --git a/libs/hwui/hwui/Canvas.h b/libs/hwui/hwui/Canvas.h
index c1feb76..837b055 100644
--- a/libs/hwui/hwui/Canvas.h
+++ b/libs/hwui/hwui/Canvas.h
@@ -146,6 +146,7 @@
                             uirenderer::CanvasPropertyPrimitive* radius,
                             uirenderer::CanvasPropertyPaint* paint,
                             uirenderer::CanvasPropertyPrimitive* progress,
+                            uirenderer::CanvasPropertyPrimitive* turbulencePhase,
                             const SkRuntimeShaderBuilder& effectBuilder) = 0;
 
     virtual void drawLayer(uirenderer::DeferredLayerUpdater* layerHandle) = 0;
diff --git a/libs/hwui/jni/Typeface.cpp b/libs/hwui/jni/Typeface.cpp
index 251323d..f928baa 100644
--- a/libs/hwui/jni/Typeface.cpp
+++ b/libs/hwui/jni/Typeface.cpp
@@ -373,6 +373,12 @@
     makeSkDataCached(filePath.c_str(), false /* fs verity */);
 }
 
+// Critical Native
+static void Typeface_addFontCollection(CRITICAL_JNI_PARAMS_COMMA jlong faceHandle) {
+    std::shared_ptr<minikin::FontCollection> collection = toTypeface(faceHandle)->fFontCollection;
+    minikin::SystemFonts::addFontMap(std::move(collection));
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 
 static const JNINativeMethod gTypefaceMethods[] = {
@@ -397,6 +403,7 @@
         {"nativeGetFamilySize", "(J)I", (void*)Typeface_getFamilySize},
         {"nativeGetFamily", "(JI)J", (void*)Typeface_getFamily},
         {"nativeWarmUpCache", "(Ljava/lang/String;)V", (void*)Typeface_warmUpCache},
+        {"nativeAddFontCollections", "(J)V", (void*)Typeface_addFontCollection},
 };
 
 int register_android_graphics_Typeface(JNIEnv* env)
diff --git a/libs/hwui/jni/android_graphics_DisplayListCanvas.cpp b/libs/hwui/jni/android_graphics_DisplayListCanvas.cpp
index 855d56e..eb5a88a 100644
--- a/libs/hwui/jni/android_graphics_DisplayListCanvas.cpp
+++ b/libs/hwui/jni/android_graphics_DisplayListCanvas.cpp
@@ -141,20 +141,22 @@
     canvas->drawCircle(xProp, yProp, radiusProp, paintProp);
 }
 
-static void android_view_DisplayListCanvas_drawRippleProps(CRITICAL_JNI_PARAMS_COMMA jlong canvasPtr,
-                                                           jlong xPropPtr, jlong yPropPtr,
-                                                           jlong radiusPropPtr, jlong paintPropPtr,
-                                                           jlong progressPropPtr,
-                                                           jlong builderPtr) {
+static void android_view_DisplayListCanvas_drawRippleProps(
+        CRITICAL_JNI_PARAMS_COMMA jlong canvasPtr, jlong xPropPtr, jlong yPropPtr,
+        jlong radiusPropPtr, jlong paintPropPtr, jlong progressPropPtr, jlong turbulencePhasePtr,
+        jlong builderPtr) {
     Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr);
     CanvasPropertyPrimitive* xProp = reinterpret_cast<CanvasPropertyPrimitive*>(xPropPtr);
     CanvasPropertyPrimitive* yProp = reinterpret_cast<CanvasPropertyPrimitive*>(yPropPtr);
     CanvasPropertyPrimitive* radiusProp = reinterpret_cast<CanvasPropertyPrimitive*>(radiusPropPtr);
+    CanvasPropertyPrimitive* turbulencePhaseProp =
+            reinterpret_cast<CanvasPropertyPrimitive*>(turbulencePhasePtr);
     CanvasPropertyPaint* paintProp = reinterpret_cast<CanvasPropertyPaint*>(paintPropPtr);
     CanvasPropertyPrimitive* progressProp =
             reinterpret_cast<CanvasPropertyPrimitive*>(progressPropPtr);
     SkRuntimeShaderBuilder* builder = reinterpret_cast<SkRuntimeShaderBuilder*>(builderPtr);
-    canvas->drawRipple(xProp, yProp, radiusProp, paintProp, progressProp, *builder);
+    canvas->drawRipple(xProp, yProp, radiusProp, paintProp, progressProp, turbulencePhaseProp,
+                       *builder);
 }
 
 static void android_view_DisplayListCanvas_drawWebViewFunctor(CRITICAL_JNI_PARAMS_COMMA jlong canvasPtr, jint functor) {
@@ -169,19 +171,22 @@
 const char* const kClassPathName = "android/graphics/RecordingCanvas";
 
 static JNINativeMethod gMethods[] = {
-    // ------------ @CriticalNative --------------
-    { "nCreateDisplayListCanvas", "(JII)J",     (void*) android_view_DisplayListCanvas_createDisplayListCanvas },
-    { "nResetDisplayListCanvas",  "(JJII)V",    (void*) android_view_DisplayListCanvas_resetDisplayListCanvas },
-    { "nGetMaximumTextureWidth",  "()I",        (void*) android_view_DisplayListCanvas_getMaxTextureSize },
-    { "nGetMaximumTextureHeight", "()I",        (void*) android_view_DisplayListCanvas_getMaxTextureSize },
-    { "nEnableZ",                 "(JZ)V",      (void*) android_view_DisplayListCanvas_enableZ },
-    { "nFinishRecording",         "(JJ)V",      (void*) android_view_DisplayListCanvas_finishRecording },
-    { "nDrawRenderNode",          "(JJ)V",      (void*) android_view_DisplayListCanvas_drawRenderNode },
-    { "nDrawTextureLayer",        "(JJ)V",      (void*) android_view_DisplayListCanvas_drawTextureLayer },
-    { "nDrawCircle",              "(JJJJJ)V",   (void*) android_view_DisplayListCanvas_drawCircleProps },
-    { "nDrawRoundRect",           "(JJJJJJJJ)V",(void*) android_view_DisplayListCanvas_drawRoundRectProps },
-    { "nDrawWebViewFunctor",      "(JI)V",      (void*) android_view_DisplayListCanvas_drawWebViewFunctor },
-    { "nDrawRipple",              "(JJJJJJJ)V", (void*) android_view_DisplayListCanvas_drawRippleProps },
+        // ------------ @CriticalNative --------------
+        {"nCreateDisplayListCanvas", "(JII)J",
+         (void*)android_view_DisplayListCanvas_createDisplayListCanvas},
+        {"nResetDisplayListCanvas", "(JJII)V",
+         (void*)android_view_DisplayListCanvas_resetDisplayListCanvas},
+        {"nGetMaximumTextureWidth", "()I", (void*)android_view_DisplayListCanvas_getMaxTextureSize},
+        {"nGetMaximumTextureHeight", "()I",
+         (void*)android_view_DisplayListCanvas_getMaxTextureSize},
+        {"nEnableZ", "(JZ)V", (void*)android_view_DisplayListCanvas_enableZ},
+        {"nFinishRecording", "(JJ)V", (void*)android_view_DisplayListCanvas_finishRecording},
+        {"nDrawRenderNode", "(JJ)V", (void*)android_view_DisplayListCanvas_drawRenderNode},
+        {"nDrawTextureLayer", "(JJ)V", (void*)android_view_DisplayListCanvas_drawTextureLayer},
+        {"nDrawCircle", "(JJJJJ)V", (void*)android_view_DisplayListCanvas_drawCircleProps},
+        {"nDrawRoundRect", "(JJJJJJJJ)V", (void*)android_view_DisplayListCanvas_drawRoundRectProps},
+        {"nDrawWebViewFunctor", "(JI)V", (void*)android_view_DisplayListCanvas_drawWebViewFunctor},
+        {"nDrawRipple", "(JJJJJJJJ)V", (void*)android_view_DisplayListCanvas_drawRippleProps},
 };
 
 int register_android_view_DisplayListCanvas(JNIEnv* env) {
diff --git a/libs/hwui/jni/android_graphics_HardwareRenderer.cpp b/libs/hwui/jni/android_graphics_HardwareRenderer.cpp
index d859541..dd78d58 100644
--- a/libs/hwui/jni/android_graphics_HardwareRenderer.cpp
+++ b/libs/hwui/jni/android_graphics_HardwareRenderer.cpp
@@ -64,6 +64,10 @@
 } gHardwareRenderer;
 
 struct {
+    jmethodID onMergeTransaction;
+} gASurfaceTransactionCallback;
+
+struct {
     jmethodID onFrameDraw;
 } gFrameDrawingCallback;
 
@@ -509,6 +513,27 @@
     }
 }
 
+static void android_view_ThreadedRenderer_setASurfaceTransactionCallback(
+        JNIEnv* env, jobject clazz, jlong proxyPtr, jobject aSurfaceTransactionCallback) {
+    RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr);
+    if (!aSurfaceTransactionCallback) {
+        proxy->setASurfaceTransactionCallback(nullptr);
+    } else {
+        JavaVM* vm = nullptr;
+        LOG_ALWAYS_FATAL_IF(env->GetJavaVM(&vm) != JNI_OK, "Unable to get Java VM");
+        auto globalCallbackRef = std::make_shared<JGlobalRefHolder>(
+                vm, env->NewGlobalRef(aSurfaceTransactionCallback));
+        proxy->setASurfaceTransactionCallback(
+                [globalCallbackRef](int64_t transObj, int64_t scObj, int64_t frameNr) {
+                    JNIEnv* env = getenv(globalCallbackRef->vm());
+                    env->CallVoidMethod(globalCallbackRef->object(),
+                                        gASurfaceTransactionCallback.onMergeTransaction,
+                                        static_cast<jlong>(transObj), static_cast<jlong>(scObj),
+                                        static_cast<jlong>(frameNr));
+                });
+    }
+}
+
 static void android_view_ThreadedRenderer_setFrameCallback(JNIEnv* env,
         jobject clazz, jlong proxyPtr, jobject frameCallback) {
     RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr);
@@ -762,8 +787,7 @@
         {"nSetName", "(JLjava/lang/String;)V", (void*)android_view_ThreadedRenderer_setName},
         {"nSetSurface", "(JLandroid/view/Surface;Z)V",
          (void*)android_view_ThreadedRenderer_setSurface},
-        {"nSetSurfaceControl", "(JJ)V",
-         (void*)android_view_ThreadedRenderer_setSurfaceControl},
+        {"nSetSurfaceControl", "(JJ)V", (void*)android_view_ThreadedRenderer_setSurfaceControl},
         {"nPause", "(J)Z", (void*)android_view_ThreadedRenderer_pause},
         {"nSetStopped", "(JZ)V", (void*)android_view_ThreadedRenderer_setStopped},
         {"nSetLightAlpha", "(JFF)V", (void*)android_view_ThreadedRenderer_setLightAlpha},
@@ -804,6 +828,9 @@
         {"nSetPictureCaptureCallback",
          "(JLandroid/graphics/HardwareRenderer$PictureCapturedCallback;)V",
          (void*)android_view_ThreadedRenderer_setPictureCapturedCallbackJNI},
+        {"nSetASurfaceTransactionCallback",
+         "(JLandroid/graphics/HardwareRenderer$ASurfaceTransactionCallback;)V",
+         (void*)android_view_ThreadedRenderer_setASurfaceTransactionCallback},
         {"nSetFrameCallback", "(JLandroid/graphics/HardwareRenderer$FrameDrawingCallback;)V",
          (void*)android_view_ThreadedRenderer_setFrameCallback},
         {"nSetFrameCompleteCallback",
@@ -866,6 +893,11 @@
             GetStaticMethodIDOrDie(env, hardwareRenderer, "closeHintSession",
                                    "(Landroid/os/PerformanceHintManager$Session;)V");
 
+    jclass aSurfaceTransactionCallbackClass =
+            FindClassOrDie(env, "android/graphics/HardwareRenderer$ASurfaceTransactionCallback");
+    gASurfaceTransactionCallback.onMergeTransaction =
+            GetMethodIDOrDie(env, aSurfaceTransactionCallbackClass, "onMergeTransaction", "(JJJ)V");
+
     jclass frameCallbackClass = FindClassOrDie(env,
             "android/graphics/HardwareRenderer$FrameDrawingCallback");
     gFrameDrawingCallback.onFrameDraw = GetMethodIDOrDie(env, frameCallbackClass,
diff --git a/libs/hwui/pipeline/skia/AnimatedDrawables.h b/libs/hwui/pipeline/skia/AnimatedDrawables.h
index 7859145..7d65be1 100644
--- a/libs/hwui/pipeline/skia/AnimatedDrawables.h
+++ b/libs/hwui/pipeline/skia/AnimatedDrawables.h
@@ -19,6 +19,7 @@
 #include <SkCanvas.h>
 #include <SkDrawable.h>
 #include <SkRuntimeEffect.h>
+#include <math.h>
 #include <utils/RefBase.h>
 #include "CanvasProperty.h"
 
@@ -61,12 +62,14 @@
                    uirenderer::CanvasPropertyPrimitive* radius,
                    uirenderer::CanvasPropertyPaint* paint,
                    uirenderer::CanvasPropertyPrimitive* progress,
+                   uirenderer::CanvasPropertyPrimitive* turbulencePhase,
                    const SkRuntimeShaderBuilder& effectBuilder)
             : mX(x)
             , mY(y)
             , mRadius(radius)
             , mPaint(paint)
             , mProgress(progress)
+            , mTurbulencePhase(turbulencePhase)
             , mRuntimeEffectBuilder(effectBuilder) {}
 
 protected:
@@ -77,22 +80,28 @@
         return SkRect::MakeLTRB(x - radius, y - radius, x + radius, y + radius);
     }
     virtual void onDraw(SkCanvas* canvas) override {
-        SkRuntimeShaderBuilder::BuilderUniform center = mRuntimeEffectBuilder.uniform("in_origin");
-        if (center.fVar != nullptr) {
-            center = SkV2{mX->value, mY->value};
-        }
+        setUniform2f("in_origin", mX->value, mY->value);
+        setUniform("in_radius", mRadius);
+        setUniform("in_progress", mProgress);
+        setUniform("in_turbulencePhase", mTurbulencePhase);
 
-        SkRuntimeShaderBuilder::BuilderUniform radiusU =
-                mRuntimeEffectBuilder.uniform("in_radius");
-        if (radiusU.fVar != nullptr) {
-            radiusU = mRadius->value;
-        }
-
-        SkRuntimeShaderBuilder::BuilderUniform progressU =
-                mRuntimeEffectBuilder.uniform("in_progress");
-        if (progressU.fVar != nullptr) {
-            progressU = mProgress->value;
-        }
+        //
+        // Keep in sync with:
+        // frameworks/base/graphics/java/android/graphics/drawable/RippleShader.java
+        //
+        const float turbulencePhase = mTurbulencePhase->value;
+        setUniform2f("in_tCircle1", SCALE * 0.5 + (turbulencePhase * CIRCLE_X_1),
+                     SCALE * 0.5 + (turbulencePhase * CIRCLE_Y_1));
+        setUniform2f("in_tCircle2", SCALE * 0.2 + (turbulencePhase * CIRCLE_X_2),
+                     SCALE * 0.2 + (turbulencePhase * CIRCLE_Y_2));
+        setUniform2f("in_tCircle3", SCALE + (turbulencePhase * CIRCLE_X_3),
+                     SCALE + (turbulencePhase * CIRCLE_Y_3));
+        const float rotation1 = turbulencePhase * PI_ROTATE_RIGHT + 1.7 * PI;
+        setUniform2f("in_tRotation1", cos(rotation1), sin(rotation1));
+        const float rotation2 = turbulencePhase * PI_ROTATE_LEFT + 2 * PI;
+        setUniform2f("in_tRotation2", cos(rotation2), sin(rotation2));
+        const float rotation3 = turbulencePhase * PI_ROTATE_RIGHT + 2.75 * PI;
+        setUniform2f("in_tRotation3", cos(rotation3), sin(rotation3));
 
         SkPaint paint = mPaint->value;
         paint.setShader(mRuntimeEffectBuilder.makeShader(nullptr, false));
@@ -105,7 +114,35 @@
     sp<uirenderer::CanvasPropertyPrimitive> mRadius;
     sp<uirenderer::CanvasPropertyPaint> mPaint;
     sp<uirenderer::CanvasPropertyPrimitive> mProgress;
+    sp<uirenderer::CanvasPropertyPrimitive> mTurbulencePhase;
     SkRuntimeShaderBuilder mRuntimeEffectBuilder;
+
+    const float PI = 3.1415926535897932384626;
+    const float PI_ROTATE_RIGHT = PI * 0.0078125;
+    const float PI_ROTATE_LEFT = PI * -0.0078125;
+    const float SCALE = 1.5;
+    const float CIRCLE_X_1 = 0.01 * cos(SCALE * 0.55);
+    const float CIRCLE_Y_1 = 0.01 * sin(SCALE * 0.55);
+    const float CIRCLE_X_2 = -0.0066 * cos(SCALE * 0.45);
+    const float CIRCLE_Y_2 = -0.0066 * sin(SCALE * 0.45);
+    const float CIRCLE_X_3 = -0.0066 * cos(SCALE * 0.35);
+    const float CIRCLE_Y_3 = -0.0066 * sin(SCALE * 0.35);
+
+    virtual void setUniform(std::string name, sp<uirenderer::CanvasPropertyPrimitive> property) {
+        SkRuntimeShaderBuilder::BuilderUniform uniform =
+                mRuntimeEffectBuilder.uniform(name.c_str());
+        if (uniform.fVar != nullptr) {
+            uniform = property->value;
+        }
+    }
+
+    virtual void setUniform2f(std::string name, float a, float b) {
+        SkRuntimeShaderBuilder::BuilderUniform uniform =
+                mRuntimeEffectBuilder.uniform(name.c_str());
+        if (uniform.fVar != nullptr) {
+            uniform = SkV2{a, b};
+        }
+    }
 };
 
 class AnimatedCircle : public SkDrawable {
diff --git a/libs/hwui/pipeline/skia/GLFunctorDrawable.cpp b/libs/hwui/pipeline/skia/GLFunctorDrawable.cpp
index 71f533c..ab00dd5 100644
--- a/libs/hwui/pipeline/skia/GLFunctorDrawable.cpp
+++ b/libs/hwui/pipeline/skia/GLFunctorDrawable.cpp
@@ -24,6 +24,7 @@
 #include "SkClipStack.h"
 #include "SkRect.h"
 #include "SkM44.h"
+#include "utils/GLUtils.h"
 
 namespace android {
 namespace uirenderer {
@@ -170,6 +171,8 @@
         setScissor(info.height, clipRegion.getBounds());
     }
 
+    // WebView may swallow GL errors, so catch them here
+    GL_CHECKPOINT(LOW);
     mWebViewHandle->drawGl(info);
 
     if (clearStencilAfterFunctor) {
diff --git a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp
index 82814de..9e73f04 100644
--- a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp
+++ b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp
@@ -60,12 +60,11 @@
     // Add the marker annotation to allow HWUI to determine where the current
     // clip/transformation should be applied
     SkVector vector = rect.getSimpleRadii();
-    const int dataSize = 2;
-    float data[dataSize];
+    float data[2];
     data[0] = vector.x();
     data[1] = vector.y();
     mRecorder.drawAnnotation(rect.rect(), HOLE_PUNCH_ANNOTATION.c_str(),
-                             SkData::MakeWithCopy(data, dataSize));
+                             SkData::MakeWithCopy(data, 2 * sizeof(float)));
 
     // Clear the current rect within the layer itself
     SkPaint paint = SkPaint();
@@ -115,9 +114,10 @@
                                      uirenderer::CanvasPropertyPrimitive* radius,
                                      uirenderer::CanvasPropertyPaint* paint,
                                      uirenderer::CanvasPropertyPrimitive* progress,
+                                     uirenderer::CanvasPropertyPrimitive* turbulencePhase,
                                      const SkRuntimeShaderBuilder& effectBuilder) {
     drawDrawable(mDisplayList->allocateDrawable<AnimatedRipple>(x, y, radius, paint, progress,
-                                                                effectBuilder));
+                                                                turbulencePhase, effectBuilder));
 }
 
 void SkiaRecordingCanvas::enableZ(bool enableZ) {
diff --git a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.h b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.h
index 06f2a27..4deb3b9 100644
--- a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.h
+++ b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.h
@@ -75,6 +75,7 @@
                             uirenderer::CanvasPropertyPrimitive* radius,
                             uirenderer::CanvasPropertyPaint* paint,
                             uirenderer::CanvasPropertyPrimitive* progress,
+                            uirenderer::CanvasPropertyPrimitive* turbulencePhase,
                             const SkRuntimeShaderBuilder& effectBuilder) override;
 
     virtual void drawVectorDrawable(VectorDrawableRoot* vectorDrawable) override;
diff --git a/libs/hwui/pipeline/skia/TransformCanvas.cpp b/libs/hwui/pipeline/skia/TransformCanvas.cpp
index 6bfbb0d..a6e4c4c 100644
--- a/libs/hwui/pipeline/skia/TransformCanvas.cpp
+++ b/libs/hwui/pipeline/skia/TransformCanvas.cpp
@@ -22,7 +22,7 @@
 
 void TransformCanvas::onDrawAnnotation(const SkRect& rect, const char* key, SkData* value) {
     if (HOLE_PUNCH_ANNOTATION == key) {
-        auto* rectParams = static_cast<const float*>(value->data());
+        auto* rectParams = reinterpret_cast<const float*>(value->data());
         float radiusX = rectParams[0];
         float radiusY = rectParams[1];
         SkRRect roundRect = SkRRect::MakeRectXY(rect, radiusX, radiusY);
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 2482188..bba2207 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -56,6 +56,22 @@
 namespace uirenderer {
 namespace renderthread {
 
+namespace {
+class ScopedActiveContext {
+public:
+    ScopedActiveContext(CanvasContext* context) { sActiveContext = context; }
+
+    ~ScopedActiveContext() { sActiveContext = nullptr; }
+
+    static CanvasContext* getActiveContext() { return sActiveContext; }
+
+private:
+    static CanvasContext* sActiveContext;
+};
+
+CanvasContext* ScopedActiveContext::sActiveContext = nullptr;
+} /* namespace */
+
 CanvasContext* CanvasContext::create(RenderThread& thread, bool translucent,
                                      RenderNode* rootRenderNode, IContextFactory* contextFactory) {
     auto renderType = Properties::getRenderPipelineType();
@@ -473,6 +489,7 @@
         return;
     }
 
+    ScopedActiveContext activeContext(this);
     mCurrentFrameInfo->set(FrameInfoIndex::FrameInterval) =
             mRenderThread.timeLord().frameIntervalNanos();
 
@@ -880,6 +897,17 @@
     return windowDirty;
 }
 
+CanvasContext* CanvasContext::getActiveContext() {
+    return ScopedActiveContext::getActiveContext();
+}
+
+bool CanvasContext::mergeTransaction(ASurfaceTransaction* transaction, ASurfaceControl* control) {
+    if (!mASurfaceTransactionCallback) return false;
+    std::invoke(mASurfaceTransactionCallback, reinterpret_cast<int64_t>(transaction),
+                reinterpret_cast<int64_t>(control), getFrameNumber());
+    return true;
+}
+
 } /* namespace renderthread */
 } /* namespace uirenderer */
 } /* namespace android */
diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h
index 74f426e..af1ebb2 100644
--- a/libs/hwui/renderthread/CanvasContext.h
+++ b/libs/hwui/renderthread/CanvasContext.h
@@ -109,6 +109,8 @@
      */
     GrDirectContext* getGrContext() const { return mRenderThread.getGrContext(); }
 
+    ASurfaceControl* getSurfaceControl() const { return mSurfaceControl; }
+
     // Won't take effect until next EGLSurface creation
     void setSwapBehavior(SwapBehavior swapBehavior);
 
@@ -201,6 +203,15 @@
     static void onSurfaceStatsAvailable(void* context, ASurfaceControl* control,
             ASurfaceControlStats* stats);
 
+    void setASurfaceTransactionCallback(
+            const std::function<void(int64_t, int64_t, int64_t)>& callback) {
+        mASurfaceTransactionCallback = callback;
+    }
+
+    bool mergeTransaction(ASurfaceTransaction* transaction, ASurfaceControl* control);
+
+    static CanvasContext* getActiveContext();
+
 private:
     CanvasContext(RenderThread& thread, bool translucent, RenderNode* rootRenderNode,
                   IContextFactory* contextFactory, std::unique_ptr<IRenderPipeline> renderPipeline);
@@ -296,6 +307,8 @@
 
     // If set to true, we expect that callbacks into onSurfaceStatsAvailable
     bool mExpectSurfaceStats = false;
+
+    std::function<void(int64_t, int64_t, int64_t)> mASurfaceTransactionCallback;
 };
 
 } /* namespace renderthread */
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp
index 9361abd..1b4b4b9 100644
--- a/libs/hwui/renderthread/RenderProxy.cpp
+++ b/libs/hwui/renderthread/RenderProxy.cpp
@@ -295,6 +295,12 @@
             [this, cb = callback]() { mContext->setPictureCapturedCallback(cb); });
 }
 
+void RenderProxy::setASurfaceTransactionCallback(
+        const std::function<void(int64_t, int64_t, int64_t)>& callback) {
+    mRenderThread.queue().post(
+            [this, cb = callback]() { mContext->setASurfaceTransactionCallback(cb); });
+}
+
 void RenderProxy::setFrameCallback(std::function<void(int64_t)>&& callback) {
     mDrawFrameTask.setFrameCallback(std::move(callback));
 }
diff --git a/libs/hwui/renderthread/RenderProxy.h b/libs/hwui/renderthread/RenderProxy.h
index 8d55d3c..288f555 100644
--- a/libs/hwui/renderthread/RenderProxy.h
+++ b/libs/hwui/renderthread/RenderProxy.h
@@ -120,6 +120,8 @@
     void drawRenderNode(RenderNode* node);
     void setContentDrawBounds(int left, int top, int right, int bottom);
     void setPictureCapturedCallback(const std::function<void(sk_sp<SkPicture>&&)>& callback);
+    void setASurfaceTransactionCallback(
+            const std::function<void(int64_t, int64_t, int64_t)>& callback);
     void setFrameCallback(std::function<void(int64_t)>&& callback);
     void setFrameCompleteCallback(std::function<void(int64_t)>&& callback);
 
diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp
index 682baa6..04aa1cb 100644
--- a/libs/hwui/renderthread/RenderThread.cpp
+++ b/libs/hwui/renderthread/RenderThread.cpp
@@ -54,6 +54,10 @@
 
 ASurfaceControlFunctions::ASurfaceControlFunctions() {
     void* handle_ = dlopen("libandroid.so", RTLD_NOW | RTLD_NODELETE);
+    createFunc = (ASC_create)dlsym(handle_, "ASurfaceControl_create");
+    LOG_ALWAYS_FATAL_IF(createFunc == nullptr,
+                        "Failed to find required symbol ASurfaceControl_create!");
+
     acquireFunc = (ASC_acquire) dlsym(handle_, "ASurfaceControl_acquire");
     LOG_ALWAYS_FATAL_IF(acquireFunc == nullptr,
             "Failed to find required symbol ASurfaceControl_acquire!");
@@ -81,6 +85,23 @@
             "ASurfaceControlStats_getFrameNumber");
     LOG_ALWAYS_FATAL_IF(getFrameNumberFunc == nullptr,
             "Failed to find required symbol ASurfaceControlStats_getFrameNumber!");
+
+    transactionCreateFunc = (AST_create)dlsym(handle_, "ASurfaceTransaction_create");
+    LOG_ALWAYS_FATAL_IF(transactionCreateFunc == nullptr,
+                        "Failed to find required symbol ASurfaceTransaction_create!");
+
+    transactionDeleteFunc = (AST_delete)dlsym(handle_, "ASurfaceTransaction_delete");
+    LOG_ALWAYS_FATAL_IF(transactionDeleteFunc == nullptr,
+                        "Failed to find required symbol ASurfaceTransaction_delete!");
+
+    transactionApplyFunc = (AST_apply)dlsym(handle_, "ASurfaceTransaction_apply");
+    LOG_ALWAYS_FATAL_IF(transactionApplyFunc == nullptr,
+                        "Failed to find required symbol ASurfaceTransaction_apply!");
+
+    transactionSetVisibilityFunc =
+            (AST_setVisibility)dlsym(handle_, "ASurfaceTransaction_setVisibility");
+    LOG_ALWAYS_FATAL_IF(transactionSetVisibilityFunc == nullptr,
+                        "Failed to find required symbol ASurfaceTransaction_setVisibility!");
 }
 
 void RenderThread::frameCallback(int64_t frameTimeNanos, void* data) {
diff --git a/libs/hwui/renderthread/RenderThread.h b/libs/hwui/renderthread/RenderThread.h
index 9e5bce7..cd9b923 100644
--- a/libs/hwui/renderthread/RenderThread.h
+++ b/libs/hwui/renderthread/RenderThread.h
@@ -79,25 +79,39 @@
     virtual ~VsyncSource() {}
 };
 
+typedef ASurfaceControl* (*ASC_create)(ASurfaceControl* parent, const char* debug_name);
 typedef void (*ASC_acquire)(ASurfaceControl* control);
 typedef void (*ASC_release)(ASurfaceControl* control);
 
 typedef void (*ASC_registerSurfaceStatsListener)(ASurfaceControl* control, void* context,
         ASurfaceControl_SurfaceStatsListener func);
 typedef void (*ASC_unregisterSurfaceStatsListener)(void* context,
-                                       ASurfaceControl_SurfaceStatsListener func);
+                                                   ASurfaceControl_SurfaceStatsListener func);
 
 typedef int64_t (*ASCStats_getAcquireTime)(ASurfaceControlStats* stats);
 typedef uint64_t (*ASCStats_getFrameNumber)(ASurfaceControlStats* stats);
 
+typedef ASurfaceTransaction* (*AST_create)();
+typedef void (*AST_delete)(ASurfaceTransaction* transaction);
+typedef void (*AST_apply)(ASurfaceTransaction* transaction);
+typedef void (*AST_setVisibility)(ASurfaceTransaction* transaction,
+                                  ASurfaceControl* surface_control, int8_t visibility);
+
 struct ASurfaceControlFunctions {
     ASurfaceControlFunctions();
+
+    ASC_create createFunc;
     ASC_acquire acquireFunc;
     ASC_release releaseFunc;
     ASC_registerSurfaceStatsListener registerListenerFunc;
     ASC_unregisterSurfaceStatsListener unregisterListenerFunc;
     ASCStats_getAcquireTime getAcquireTimeFunc;
     ASCStats_getFrameNumber getFrameNumberFunc;
+
+    AST_create transactionCreateFunc;
+    AST_delete transactionDeleteFunc;
+    AST_apply transactionApplyFunc;
+    AST_setVisibility transactionSetVisibilityFunc;
 };
 
 class ChoreographerSource;
diff --git a/media/java/android/media/AudioFormat.java b/media/java/android/media/AudioFormat.java
index 24f553f..3a86786 100644
--- a/media/java/android/media/AudioFormat.java
+++ b/media/java/android/media/AudioFormat.java
@@ -273,8 +273,8 @@
 
     /** Audio data format: compressed audio wrapped in PCM for HDMI
      * or S/PDIF passthrough.
-     * IEC61937 uses a stereo stream of 16-bit samples as the wrapper.
-     * So the channel mask for the track must be {@link #CHANNEL_OUT_STEREO}.
+     * For devices whose SDK version is less than {@link android.os.Build.VERSION_CODES#S}, the
+     * channel mask of IEC61937 track must be {@link #CHANNEL_OUT_STEREO}.
      * Data should be written to the stream in a short[] array.
      * If the data is written in a byte[] array then there may be endian problems
      * on some platforms when converting to short internally.
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index 7a2b022..2ea0984 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -1676,13 +1676,11 @@
         }
         mSampleRate = sampleRateInHz;
 
-        // IEC61937 is based on stereo. We could coerce it to stereo.
-        // But the application needs to know the stream is stereo so that
-        // it is encoded and played correctly. So better to just reject it.
         if (audioFormat == AudioFormat.ENCODING_IEC61937
-                && channelConfig != AudioFormat.CHANNEL_OUT_STEREO) {
-            throw new IllegalArgumentException(
-                    "ENCODING_IEC61937 must be configured as CHANNEL_OUT_STEREO");
+                && channelConfig != AudioFormat.CHANNEL_OUT_STEREO
+                && AudioFormat.channelCountFromOutChannelMask(channelConfig) != 8) {
+            Log.w(TAG, "ENCODING_IEC61937 is configured with channel mask as " + channelConfig
+                    + ", which is not 2 or 8 channels");
         }
 
         //--------------
diff --git a/media/java/android/media/metrics/Event.java b/media/java/android/media/metrics/Event.java
index 17218f0..4a69ac5 100644
--- a/media/java/android/media/metrics/Event.java
+++ b/media/java/android/media/metrics/Event.java
@@ -32,19 +32,17 @@
         mTimeSinceCreatedMillis = MediaMetricsManager.INVALID_TIMESTAMP;
     }
 
-    // TODO: remove
-    protected Event(long timeSinceCreatedMillis) {
-        mTimeSinceCreatedMillis = timeSinceCreatedMillis;
-    }
-
     /* package */ Event(long timeSinceCreatedMillis, Bundle extras) {
         mTimeSinceCreatedMillis = timeSinceCreatedMillis;
         mMetricsBundle = extras;
     }
 
     /**
-     * Gets time since the corresponding instance is created in millisecond.
+     * Gets time since the corresponding log session is created in millisecond.
      * @return the timestamp since the instance is created, or -1 if unknown.
+     * @see LogSessionId
+     * @see PlaybackSession
+     * @see RecordingSession
      */
     @IntRange(from = -1)
     public long getTimeSinceCreatedMillis() {
diff --git a/media/java/android/media/metrics/MediaMetricsManager.java b/media/java/android/media/metrics/MediaMetricsManager.java
index b4a74a3..23b697f 100644
--- a/media/java/android/media/metrics/MediaMetricsManager.java
+++ b/media/java/android/media/metrics/MediaMetricsManager.java
@@ -25,7 +25,7 @@
  * This class gives information about, and interacts with media metrics.
  */
 @SystemService(Context.MEDIA_METRICS_SERVICE)
-public class MediaMetricsManager {
+public final class MediaMetricsManager {
     public static final long INVALID_TIMESTAMP = -1;
 
     private static final String TAG = "MediaMetricsManager";
diff --git a/media/java/android/media/metrics/NetworkEvent.java b/media/java/android/media/metrics/NetworkEvent.java
index 0e80543..7471d1d 100644
--- a/media/java/android/media/metrics/NetworkEvent.java
+++ b/media/java/android/media/metrics/NetworkEvent.java
@@ -105,10 +105,8 @@
 
     /**
      * Creates a new NetworkEvent.
-     *
-     * @hide
      */
-    public NetworkEvent(@NetworkType int type, long timeSinceCreatedMillis,
+    private NetworkEvent(@NetworkType int type, long timeSinceCreatedMillis,
             @NonNull Bundle extras) {
         this.mNetworkType = type;
         this.mTimeSinceCreatedMillis = timeSinceCreatedMillis;
@@ -124,8 +122,11 @@
     }
 
     /**
-     * Gets timestamp since the creation in milliseconds.
+     * Gets timestamp since the creation of the log session in milliseconds.
      * @return the timestamp since the creation in milliseconds, or -1 if unknown.
+     * @see LogSessionId
+     * @see PlaybackSession
+     * @see RecordingSession
      */
     @Override
     @IntRange(from = -1)
@@ -177,8 +178,7 @@
         return 0;
     }
 
-    /** @hide */
-    /* package-private */ NetworkEvent(@NonNull android.os.Parcel in) {
+    private NetworkEvent(@NonNull android.os.Parcel in) {
         int type = in.readInt();
         long timeSinceCreatedMillis = in.readLong();
         Bundle extras = in.readBundle();
@@ -230,6 +230,7 @@
          * Sets timestamp since the creation in milliseconds.
          * @param value the timestamp since the creation in milliseconds.
          *              -1 indicates the value is unknown.
+         * @see #getTimeSinceCreatedMillis()
          */
         public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) {
             mTimeSinceCreatedMillis = value;
diff --git a/media/java/android/media/metrics/PlaybackErrorEvent.java b/media/java/android/media/metrics/PlaybackErrorEvent.java
index f36c04e..d155576 100644
--- a/media/java/android/media/metrics/PlaybackErrorEvent.java
+++ b/media/java/android/media/metrics/PlaybackErrorEvent.java
@@ -150,10 +150,8 @@
 
     /**
      * Creates a new PlaybackErrorEvent.
-     *
-     * @hide
      */
-    public PlaybackErrorEvent(
+    private PlaybackErrorEvent(
             @Nullable String exceptionStack,
             int errorCode,
             int subErrorCode,
@@ -191,8 +189,10 @@
     }
 
     /**
-     * Gets the timestamp since creation in milliseconds.
+     * Gets the timestamp since creation of the playback session in milliseconds.
      * @return the timestamp since the playback is created, or -1 if unknown.
+     * @see LogSessionId
+     * @see PlaybackSession
      */
     @Override
     @IntRange(from = -1)
@@ -254,8 +254,7 @@
         return 0;
     }
 
-    /** @hide */
-    /* package-private */ PlaybackErrorEvent(@NonNull Parcel in) {
+    private PlaybackErrorEvent(@NonNull Parcel in) {
         byte flg = in.readByte();
         String exceptionStack = (flg & 0x1) == 0 ? null : in.readString();
         int errorCode = in.readInt();
@@ -330,6 +329,7 @@
          * Set the timestamp since creation in milliseconds.
          * @param value the timestamp since the creation in milliseconds.
          *              -1 indicates the value is unknown.
+         * @see #getTimeSinceCreatedMillis()
          */
         public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) {
             mTimeSinceCreatedMillis = value;
diff --git a/media/java/android/media/metrics/PlaybackMetrics.java b/media/java/android/media/metrics/PlaybackMetrics.java
index 5f606a0..bbcc484 100644
--- a/media/java/android/media/metrics/PlaybackMetrics.java
+++ b/media/java/android/media/metrics/PlaybackMetrics.java
@@ -213,6 +213,7 @@
 
     /**
      * Gets the media duration in milliseconds.
+     * <p>Media duration is the length of the media.
      * @return the media duration in milliseconds, or -1 if unknown.
      */
     @IntRange(from = -1)
@@ -328,6 +329,8 @@
 
     /**
      * Gets network transfer duration in milliseconds.
+     * <p>Total transfer time spent reading from the network in ms. For parallel requests, the
+     * overlapping time intervals are counted only once.
      */
     @IntRange(from = -1)
     public long getNetworkTransferDurationMillis() {
@@ -523,6 +526,7 @@
         /**
          * Sets the media duration in milliseconds.
          * @param value the media duration in milliseconds. -1 indicates the value is unknown.
+         * @see #getMediaDurationMillis()
          */
         public @NonNull Builder setMediaDurationMillis(@IntRange(from = -1) long value) {
             mMediaDurationMillis = value;
@@ -645,6 +649,7 @@
          * Sets the network transfer duration in milliseconds.
          * @param value the network transfer duration in milliseconds.
          *              -1 indicates the value is unknown.
+         * @see #getNetworkTransferDurationMillis()
          */
         public @NonNull Builder setNetworkTransferDurationMillis(@IntRange(from = -1) long value) {
             mNetworkTransferDurationMillis = value;
diff --git a/media/java/android/media/metrics/PlaybackStateEvent.java b/media/java/android/media/metrics/PlaybackStateEvent.java
index 449abe9..8e74825 100644
--- a/media/java/android/media/metrics/PlaybackStateEvent.java
+++ b/media/java/android/media/metrics/PlaybackStateEvent.java
@@ -132,10 +132,8 @@
 
     /**
      * Creates a new PlaybackStateEvent.
-     *
-     * @hide
      */
-    public PlaybackStateEvent(
+    private PlaybackStateEvent(
             int state,
             long timeSinceCreatedMillis,
             @NonNull Bundle extras) {
@@ -147,13 +145,16 @@
     /**
      * Gets playback state.
      */
+    @State
     public int getState() {
         return mState;
     }
 
     /**
-     * Gets time since the corresponding playback is created in millisecond.
+     * Gets time since the corresponding playback session is created in millisecond.
      * @return the timestamp since the playback is created, or -1 if unknown.
+     * @see LogSessionId
+     * @see PlaybackSession
      */
     @Override
     @IntRange(from = -1)
@@ -197,8 +198,7 @@
         return 0;
     }
 
-    /** @hide */
-    /* package-private */ PlaybackStateEvent(@NonNull Parcel in) {
+    private PlaybackStateEvent(@NonNull Parcel in) {
         int state = in.readInt();
         long timeSinceCreatedMillis = in.readLong();
         Bundle extras = in.readBundle();
@@ -247,6 +247,7 @@
          * Sets timestamp since the creation in milliseconds.
          * @param value the timestamp since the creation in milliseconds.
          *              -1 indicates the value is unknown.
+         * @see #getTimeSinceCreatedMillis()
          */
         public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) {
             mTimeSinceCreatedMillis = value;
diff --git a/media/java/android/media/metrics/TrackChangeEvent.java b/media/java/android/media/metrics/TrackChangeEvent.java
index c3670269..65d011c 100644
--- a/media/java/android/media/metrics/TrackChangeEvent.java
+++ b/media/java/android/media/metrics/TrackChangeEvent.java
@@ -184,8 +184,11 @@
     }
 
     /**
-     * Gets timestamp since the creation in milliseconds.
+     * Gets timestamp since the creation of the log session in milliseconds.
      * @return the timestamp since the creation in milliseconds, or -1 if unknown.
+     * @see LogSessionId
+     * @see PlaybackSession
+     * @see RecordingSession
      */
     @Override
     @IntRange(from = -1)
@@ -193,6 +196,11 @@
         return mTimeSinceCreatedMillis;
     }
 
+    /**
+     * Gets the track type.
+     * <p>The track type must be one of {@link #TRACK_TYPE_AUDIO}, {@link #TRACK_TYPE_VIDEO},
+     * {@link #TRACK_TYPE_TEXT}.
+     */
     @TrackType
     public int getTrackType() {
         return mType;
@@ -302,8 +310,7 @@
         return 0;
     }
 
-    /** @hide */
-    /* package-private */ TrackChangeEvent(@NonNull Parcel in) {
+    private TrackChangeEvent(@NonNull Parcel in) {
         int flg = in.readInt();
         int state = in.readInt();
         int reason = in.readInt();
@@ -429,8 +436,14 @@
 
         /**
          * Creates a new Builder.
+         * @param type the track type. It must be one of {@link #TRACK_TYPE_AUDIO},
+         *             {@link #TRACK_TYPE_VIDEO}, {@link #TRACK_TYPE_TEXT}.
          */
-        public Builder(int type) {
+        public Builder(@TrackType int type) {
+            if (type != TRACK_TYPE_AUDIO && type != TRACK_TYPE_VIDEO && type != TRACK_TYPE_TEXT) {
+                throw new IllegalArgumentException("track type must be one of TRACK_TYPE_AUDIO, "
+                    + "TRACK_TYPE_VIDEO, TRACK_TYPE_TEXT.");
+            }
             mType = type;
         }
 
@@ -499,6 +512,7 @@
          * Sets timestamp since the creation in milliseconds.
          * @param value the timestamp since the creation in milliseconds.
          *              -1 indicates the value is unknown.
+         * @see #getTimeSinceCreatedMillis()
          */
         public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) {
             checkNotUsed();
diff --git a/media/java/android/media/session/ParcelableListBinder.java b/media/java/android/media/session/ParcelableListBinder.java
index a7aacf2..bbf1e08 100644
--- a/media/java/android/media/session/ParcelableListBinder.java
+++ b/media/java/android/media/session/ParcelableListBinder.java
@@ -109,7 +109,7 @@
             throws RemoteException {
         int count = list.size();
         int i = 0;
-        while (i < count) {
+        do {
             Parcel data = Parcel.obtain();
             Parcel reply = Parcel.obtain();
             if (i == 0) {
@@ -126,6 +126,6 @@
             binder.transact(FIRST_CALL_TRANSACTION, data, reply, 0);
             reply.recycle();
             data.recycle();
-        }
+        } while (i < count);
     }
 }
diff --git a/media/java/android/media/tv/TunedInfo.java b/media/java/android/media/tv/TunedInfo.java
index 6199c89..20acefa 100644
--- a/media/java/android/media/tv/TunedInfo.java
+++ b/media/java/android/media/tv/TunedInfo.java
@@ -25,6 +25,7 @@
 import android.os.Parcelable;
 import android.text.TextUtils;
 import android.util.Log;
+import android.view.Surface;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -92,18 +93,20 @@
     private final String mInputId;
     @Nullable private final Uri mChannelUri;
     private final boolean mIsRecordingSession;
-    private final boolean mIsForeground;
+    private final boolean mIsVisible;
+    private final boolean mIsMainSession;
     @AppType private final int mAppType;
     private final int mAppTag;
 
     /** @hide */
     public TunedInfo(
             String inputId, @Nullable Uri channelUri, boolean isRecordingSession,
-            boolean isForeground, @AppType int appType, int appTag) {
+            boolean isVisible, boolean isMainSession, @AppType int appType, int appTag) {
         mInputId = inputId;
         mChannelUri = channelUri;
         mIsRecordingSession = isRecordingSession;
-        mIsForeground = isForeground;
+        mIsVisible = isVisible;
+        mIsMainSession = isMainSession;
         mAppType = appType;
         mAppTag = appTag;
     }
@@ -114,7 +117,8 @@
         String uriString = source.readString();
         mChannelUri = uriString == null ? null : Uri.parse(uriString);
         mIsRecordingSession = (source.readInt() == 1);
-        mIsForeground = (source.readInt() == 1);
+        mIsVisible = (source.readInt() == 1);
+        mIsMainSession = (source.readInt() == 1);
         mAppType = source.readInt();
         mAppTag = source.readInt();
     }
@@ -145,11 +149,23 @@
     }
 
     /**
-     * Returns {@code true} if the application is a foreground application.
-     * @see android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
+     * Returns {@code true} if the corresponding session is visible.
+     * <p>The system checks whether the {@link Surface} of the session is {@code null} or not. When
+     * it becomes invisible, the surface is destroyed and set to null.
+     * @see TvInputService.Session#onSetSurface(Surface)
+     * @see android.view.SurfaceView#notifySurfaceDestroyed
      */
-    public boolean isForeground() {
-        return mIsForeground;
+    public boolean isVisible() {
+        return mIsVisible;
+    }
+
+    /**
+     * Returns {@code true} if the corresponding session is set as main session.
+     * @see TvView#setMain
+     * @see TvInputService.Session#onSetMain
+     */
+    public boolean isMainSession() {
+        return mIsMainSession;
     }
 
     /**
@@ -180,7 +196,8 @@
         String uriString = mChannelUri == null ? null : mChannelUri.toString();
         dest.writeString(uriString);
         dest.writeInt(mIsRecordingSession ? 1 : 0);
-        dest.writeInt(mIsForeground ? 1 : 0);
+        dest.writeInt(mIsVisible ? 1 : 0);
+        dest.writeInt(mIsMainSession ? 1 : 0);
         dest.writeInt(mAppType);
         dest.writeInt(mAppTag);
     }
@@ -190,7 +207,8 @@
         return "inputID=" + mInputId
                 + ";channelUri=" + mChannelUri
                 + ";isRecording=" + mIsRecordingSession
-                + ";isForeground=" + mIsForeground
+                + ";isVisible=" + mIsVisible
+                + ";isMainSession=" + mIsMainSession
                 + ";appType=" + mAppType
                 + ";appTag=" + mAppTag;
     }
@@ -206,7 +224,8 @@
         return TextUtils.equals(mInputId, other.getInputId())
                 && Objects.equals(mChannelUri, other.mChannelUri)
                 && mIsRecordingSession == other.mIsRecordingSession
-                && mIsForeground == other.mIsForeground
+                && mIsVisible == other.mIsVisible
+                && mIsMainSession == other.mIsMainSession
                 && mAppType == other.mAppType
                 && mAppTag == other.mAppTag;
     }
@@ -214,6 +233,7 @@
     @Override
     public int hashCode() {
         return Objects.hash(
-                mInputId, mChannelUri, mIsRecordingSession, mIsForeground, mAppType, mAppTag);
+                mInputId, mChannelUri, mIsRecordingSession, mIsVisible, mIsMainSession, mAppType,
+                mAppTag);
     }
 }
diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java
index c0185dc..34e4609 100644
--- a/media/java/android/media/tv/TvInputManager.java
+++ b/media/java/android/media/tv/TvInputManager.java
@@ -907,6 +907,7 @@
          * @hide
          */
         @SystemApi
+        @RequiresPermission(android.Manifest.permission.ACCESS_TUNED_INFO)
         public void onCurrentTunedInfosUpdated(@NonNull List<TunedInfo> tunedInfos) {
         }
     }
@@ -1989,7 +1990,7 @@
      * @hide
      */
     @SystemApi
-    @RequiresPermission("com.android.providers.tv.permission.ACCESS_WATCHED_PROGRAMS")
+    @RequiresPermission(android.Manifest.permission.ACCESS_TUNED_INFO)
     @NonNull
     public List<TunedInfo> getCurrentTunedInfos() {
         try {
diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp
index 0aae940..4bdbe36 100644
--- a/media/jni/android_media_tv_Tuner.cpp
+++ b/media/jni/android_media_tv_Tuner.cpp
@@ -3029,7 +3029,8 @@
     }
 }
 
-static FrontendSettingsExt1_1 getFrontendSettingsExt1_1(JNIEnv *env, int type, jobject settings) {
+static FrontendSettingsExt1_1 getFrontendSettingsExt1_1(
+        JNIEnv *env, int type, jobject settings, int tunerVersion) {
     ALOGD("getFrontendSettingsExt1_1 %d", type);
 
     FrontendSettingsExt1_1 settingsExt1_1 {
@@ -3038,6 +3039,10 @@
     };
     settingsExt1_1.settingExt.noinit();
 
+    if (tunerVersion < TUNER_VERSION_1_1) {
+        return settingsExt1_1;
+    }
+
     if (type == static_cast<int>(::android::hardware::tv::tuner::V1_1::FrontendType::DTMB)) {
         getDtmbFrontendSettings(env, settings, settingsExt1_1);
     } else {
@@ -3220,7 +3225,8 @@
 static int android_media_tv_Tuner_tune(JNIEnv *env, jobject thiz, jint type, jobject settings) {
     sp<JTuner> tuner = getTuner(env, thiz);
     FrontendSettings setting = getFrontendSettings(env, type, settings);
-    FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1(env, type, settings);
+    FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1(
+            env, type, settings, tuner->getTunerVersion());
     return tuner->tune(setting, settingExt);
 }
 
@@ -3233,7 +3239,8 @@
         JNIEnv *env, jobject thiz, jint settingsType, jobject settings, jint scanType) {
     sp<JTuner> tuner = getTuner(env, thiz);
     FrontendSettings setting = getFrontendSettings(env, settingsType, settings);
-    FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1(env, settingsType, settings);
+    FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1(
+            env, settingsType, settings, tuner->getTunerVersion());
     return tuner->scan(setting, static_cast<FrontendScanType>(scanType), settingExt);
 }
 
diff --git a/media/jni/android_media_tv_Tuner.h b/media/jni/android_media_tv_Tuner.h
index fafef42..2a933b2 100644
--- a/media/jni/android_media_tv_Tuner.h
+++ b/media/jni/android_media_tv_Tuner.h
@@ -73,6 +73,8 @@
 
 using MQ = MessageQueue<uint8_t, kSynchronizedReadWrite>;
 
+const static int TUNER_VERSION_1_1 = ((1 << 16) | 1);
+
 namespace android {
 
 struct LnbClientCallbackImpl : public LnbClientCallback {
diff --git a/media/jni/tuner/FilterClient.cpp b/media/jni/tuner/FilterClient.cpp
index 2995572..dc1d8b7 100644
--- a/media/jni/tuner/FilterClient.cpp
+++ b/media/jni/tuner/FilterClient.cpp
@@ -596,11 +596,11 @@
             sectionBits.mask.resize(hidlSectionBits.mask.size());
             sectionBits.mode.resize(hidlSectionBits.mode.size());
             copy(hidlSectionBits.filter.begin(), hidlSectionBits.filter.end(),
-                    hidlSectionBits.filter.begin());
+                    sectionBits.filter.begin());
             copy(hidlSectionBits.mask.begin(), hidlSectionBits.mask.end(),
-                    hidlSectionBits.mask.begin());
+                    sectionBits.mask.begin());
             copy(hidlSectionBits.mode.begin(), hidlSectionBits.mode.end(),
-                    hidlSectionBits.mode.begin());
+                    sectionBits.mode.begin());
             aidlSection.condition.set<TunerFilterSectionCondition::sectionBits>(sectionBits);
             break;
         }
@@ -921,7 +921,7 @@
         Status s = mTunerFilter->getQueueDesc(&aidlMqDesc);
         res = ClientHelper::getServiceSpecificErrorCode(s);
         if (res == Result::SUCCESS) {
-            mFilterMQ = new (nothrow) AidlMQ(aidlMqDesc);
+            mFilterMQ = new (nothrow) AidlMQ(aidlMqDesc, false/*resetPointer*/);
             EventFlag::createEventFlag(mFilterMQ->getEventFlagWord(), &mFilterMQEventFlag);
         }
         return res;
@@ -938,7 +938,7 @@
             AidlMQDesc aidlMQDesc;
             unsafeHidlToAidlMQDescriptor<uint8_t, int8_t, SynchronizedReadWrite>(
                     filterMQDesc,  &aidlMQDesc);
-            mFilterMQ = new (nothrow) AidlMessageQueue(aidlMQDesc);
+            mFilterMQ = new (nothrow) AidlMessageQueue(aidlMQDesc, false/*resetPointer*/);
             EventFlag::createEventFlag(mFilterMQ->getEventFlagWord(), &mFilterMQEventFlag);
         }
     }
diff --git a/media/jni/tuner/FrontendClient.cpp b/media/jni/tuner/FrontendClient.cpp
index f54e266..5d9b12d 100644
--- a/media/jni/tuner/FrontendClient.cpp
+++ b/media/jni/tuner/FrontendClient.cpp
@@ -982,7 +982,7 @@
 TunerFrontendIsdbsSettings FrontendClient::getAidlIsdbsSettings(const FrontendSettings& settings) {
     TunerFrontendIsdbsSettings isdbsSettings{
         .frequency = (int)settings.isdbs().frequency,
-        .streamId = (int)settings.isdbs().streamId,
+        .streamId = (char16_t)settings.isdbs().streamId,
         .streamIdType = (int)settings.isdbs().streamIdType,
         .modulation = (int)settings.isdbs().modulation,
         .codeRate = (int)settings.isdbs().coderate,
@@ -996,7 +996,7 @@
         const FrontendSettings& settings) {
     TunerFrontendIsdbs3Settings isdbs3Settings{
         .frequency = (int)settings.isdbs3().frequency,
-        .streamId = (int)settings.isdbs3().streamId,
+        .streamId = (char16_t)settings.isdbs3().streamId,
         .streamIdType = (int)settings.isdbs3().streamIdType,
         .modulation = (int)settings.isdbs3().modulation,
         .codeRate = (int)settings.isdbs3().coderate,
diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt
index 4d137e0..9729524 100644
--- a/native/android/libandroid.map.txt
+++ b/native/android/libandroid.map.txt
@@ -260,8 +260,9 @@
     ASurfaceTransaction_setHdrMetadata_smpte2086; # introduced=29
     ASurfaceTransaction_setOnComplete; # introduced=29
     ASurfaceTransaction_setPosition; # introduced=31
-    ASurfaceTransaction_setSourceRect; # introduced=31
-    ASurfaceTransaction_setTransform; # introduced=31
+    ASurfaceTransaction_setCrop; # introduced=31
+    ASurfaceTransaction_setBufferTransform; # introduced=31
+    ASurfaceTransaction_setScale; # introduced=31
     ASurfaceTransaction_setVisibility; # introduced=29
     ASurfaceTransaction_setZOrder; # introduced=29
     ASystemFontIterator_open; # introduced=29
diff --git a/native/android/surface_control.cpp b/native/android/surface_control.cpp
index 7433cf9..3d14c42 100644
--- a/native/android/surface_control.cpp
+++ b/native/android/surface_control.cpp
@@ -459,34 +459,31 @@
     transaction->setTransformToDisplayInverse(surfaceControl, transformToInverseDisplay);
 }
 
-void ASurfaceTransaction_setSourceRect(ASurfaceTransaction* aSurfaceTransaction,
-                                       ASurfaceControl* aSurfaceControl, const ARect& source) {
+void ASurfaceTransaction_setCrop(ASurfaceTransaction* aSurfaceTransaction,
+                                 ASurfaceControl* aSurfaceControl, const ARect& crop) {
     CHECK_NOT_NULL(aSurfaceTransaction);
     CHECK_NOT_NULL(aSurfaceControl);
-    CHECK_VALID_RECT(source);
+    CHECK_VALID_RECT(crop);
 
     sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
     Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
 
-    transaction->setCrop(surfaceControl, static_cast<const Rect&>(source));
+    transaction->setCrop(surfaceControl, static_cast<const Rect&>(crop));
 }
 
-void ASurfaceTransaction_setPosition(ASurfaceTransaction* /* aSurfaceTransaction */,
-                                     ASurfaceControl* /* aSurfaceControl */,
-                                     const ARect& /* destination */) {
-    // TODO: Fix this function
-    /* CHECK_NOT_NULL(aSurfaceTransaction);
+void ASurfaceTransaction_setPosition(ASurfaceTransaction* aSurfaceTransaction,
+                                     ASurfaceControl* aSurfaceControl, int32_t x, int32_t y) {
+    CHECK_NOT_NULL(aSurfaceTransaction);
     CHECK_NOT_NULL(aSurfaceControl);
-    CHECK_VALID_RECT(destination);
 
     sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
     Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
 
-    transaction->setFrame(surfaceControl, static_cast<const Rect&>(destination));*/
+    transaction->setPosition(surfaceControl, x, y);
 }
 
-void ASurfaceTransaction_setTransform(ASurfaceTransaction* aSurfaceTransaction,
-                                      ASurfaceControl* aSurfaceControl, int32_t transform) {
+void ASurfaceTransaction_setBufferTransform(ASurfaceTransaction* aSurfaceTransaction,
+                                            ASurfaceControl* aSurfaceControl, int32_t transform) {
     CHECK_NOT_NULL(aSurfaceTransaction);
     CHECK_NOT_NULL(aSurfaceControl);
 
@@ -499,6 +496,19 @@
     transaction->setTransformToDisplayInverse(surfaceControl, transformToInverseDisplay);
 }
 
+void ASurfaceTransaction_setScale(ASurfaceTransaction* aSurfaceTransaction,
+                                  ASurfaceControl* aSurfaceControl, float xScale, float yScale) {
+    CHECK_NOT_NULL(aSurfaceTransaction);
+    CHECK_NOT_NULL(aSurfaceControl);
+    LOG_ALWAYS_FATAL_IF(xScale < 0, "negative value passed in for xScale");
+    LOG_ALWAYS_FATAL_IF(yScale < 0, "negative value passed in for yScale");
+
+    sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
+    Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
+
+    transaction->setMatrix(surfaceControl, xScale, 0, 0, yScale);
+}
+
 void ASurfaceTransaction_setBufferTransparency(ASurfaceTransaction* aSurfaceTransaction,
                                                ASurfaceControl* aSurfaceControl,
                                                int8_t transparency) {
diff --git a/native/android/system_fonts.cpp b/native/android/system_fonts.cpp
index 48d7380..60b0f1e 100644
--- a/native/android/system_fonts.cpp
+++ b/native/android/system_fonts.cpp
@@ -54,21 +54,51 @@
     XmlCharUniquePtr mLocale;
 };
 
-struct ASystemFontIterator {
-    XmlDocUniquePtr mXmlDoc;
-    ParserState state;
-
-    // The OEM customization XML.
-    XmlDocUniquePtr mCustomizationXmlDoc;
-};
-
 struct AFont {
     std::string mFilePath;
-    std::unique_ptr<std::string> mLocale;
+    std::optional<std::string> mLocale;
     uint16_t mWeight;
     bool mItalic;
     uint32_t mCollectionIndex;
     std::vector<std::pair<uint32_t, float>> mAxes;
+
+    bool operator==(const AFont& o) const {
+        return mFilePath == o.mFilePath && mLocale == o.mLocale && mWeight == o.mWeight &&
+                mItalic == o.mItalic && mCollectionIndex == o.mCollectionIndex && mAxes == o.mAxes;
+    }
+
+    AFont() = default;
+    AFont(const AFont&) = default;
+};
+
+struct FontHasher {
+    std::size_t operator()(const AFont& font) const {
+        std::size_t r = std::hash<std::string>{}(font.mFilePath);
+        if (font.mLocale) {
+            r = combine(r, std::hash<std::string>{}(*font.mLocale));
+        }
+        r = combine(r, std::hash<uint16_t>{}(font.mWeight));
+        r = combine(r, std::hash<uint32_t>{}(font.mCollectionIndex));
+        for (const auto& [tag, value] : font.mAxes) {
+            r = combine(r, std::hash<uint32_t>{}(tag));
+            r = combine(r, std::hash<float>{}(value));
+        }
+        return r;
+    }
+
+    std::size_t combine(std::size_t l, std::size_t r) const { return l ^ (r << 1); }
+};
+
+struct ASystemFontIterator {
+    std::vector<AFont> fonts;
+    uint32_t index;
+
+    XmlDocUniquePtr mXmlDoc;
+
+    ParserState state;
+
+    // The OEM customization XML.
+    XmlDocUniquePtr mCustomizationXmlDoc;
 };
 
 struct AFontMatcher {
@@ -147,10 +177,9 @@
     out->mCollectionIndex =  indexStr ?
             strtol(reinterpret_cast<const char*>(indexStr.get()), nullptr, 10) : 0;
 
-    out->mLocale.reset(
-            state.mLocale ?
-            new std::string(reinterpret_cast<const char*>(state.mLocale.get()))
-            : nullptr);
+    if (state.mLocale) {
+        out->mLocale.emplace(reinterpret_cast<const char*>(state.mLocale.get()));
+    }
 
     const xmlChar* TAG_ATTR_NAME = BAD_CAST("tag");
     const xmlChar* STYLEVALUE_ATTR_NAME = BAD_CAST("stylevalue");
@@ -214,8 +243,44 @@
 
 ASystemFontIterator* ASystemFontIterator_open() {
     std::unique_ptr<ASystemFontIterator> ite(new ASystemFontIterator());
-    ite->mXmlDoc.reset(xmlReadFile("/system/etc/fonts.xml", nullptr, 0));
-    ite->mCustomizationXmlDoc.reset(xmlReadFile("/product/etc/fonts_customization.xml", nullptr, 0));
+
+    std::unordered_set<AFont, FontHasher> fonts;
+    minikin::SystemFonts::getFontMap(
+            [&fonts](const std::vector<std::shared_ptr<minikin::FontCollection>>& collections) {
+                for (const auto& fc : collections) {
+                    for (const auto& family : fc->getFamilies()) {
+                        for (uint32_t i = 0; i < family->getNumFonts(); ++i) {
+                            const minikin::Font* font = family->getFont(i);
+
+                            std::optional<std::string> locale;
+                            uint32_t localeId = font->getLocaleListId();
+                            if (localeId != minikin::kEmptyLocaleListId) {
+                                locale.emplace(minikin::getLocaleString(localeId));
+                            }
+                            std::vector<std::pair<uint32_t, float>> axes;
+                            for (const auto& [tag, value] : font->typeface()->GetAxes()) {
+                                axes.push_back(std::make_pair(tag, value));
+                            }
+
+                            fonts.insert(
+                                    {font->typeface()->GetFontPath(), std::move(locale),
+                                     font->style().weight(),
+                                     font->style().slant() == minikin::FontStyle::Slant::ITALIC,
+                                     static_cast<uint32_t>(font->typeface()->GetFontIndex()),
+                                     axes});
+                        }
+                    }
+                }
+            });
+
+    if (fonts.empty()) {
+        ite->mXmlDoc.reset(xmlReadFile("/system/etc/fonts.xml", nullptr, 0));
+        ite->mCustomizationXmlDoc.reset(
+                xmlReadFile("/product/etc/fonts_customization.xml", nullptr, 0));
+    } else {
+        ite->index = 0;
+        ite->fonts.assign(fonts.begin(), fonts.end());
+    }
     return ite.release();
 }
 
@@ -308,6 +373,13 @@
 
 AFont* ASystemFontIterator_next(ASystemFontIterator* ite) {
     LOG_ALWAYS_FATAL_IF(ite == nullptr, "nullptr has passed as iterator argument");
+    if (!ite->fonts.empty()) {
+        if (ite->index >= ite->fonts.size()) {
+            return nullptr;
+        }
+        return new AFont(ite->fonts[ite->index++]);
+    }
+
     if (ite->mXmlDoc) {
         if (!findNextFontNode(ite->mXmlDoc, &ite->state)) {
             // Reached end of the XML file. Continue OEM customization.
diff --git a/packages/CompanionDeviceManager/res/values-fa/strings.xml b/packages/CompanionDeviceManager/res/values-fa/strings.xml
index 83cc263..07d04aa 100644
--- a/packages/CompanionDeviceManager/res/values-fa/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fa/strings.xml
@@ -22,6 +22,6 @@
     <string name="profile_name_watch" msgid="576290739483672360">"ساعت"</string>
     <string name="confirmation_title" msgid="8455544820286920304">"‏مجاز کردن &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_summary" msgid="2059360676631420073">"این برنامه برای مدیریت <xliff:g id="PROFILE_NAME">%1$s</xliff:g> شما لازم است. <xliff:g id="PRIVILEGES_DISCPLAIMER">%2$s</xliff:g>"</string>
-    <string name="consent_yes" msgid="8344487259618762872">"مجاز"</string>
-    <string name="consent_no" msgid="2640796915611404382">"مجاز نیست"</string>
+    <string name="consent_yes" msgid="8344487259618762872">"مجاز بودن"</string>
+    <string name="consent_no" msgid="2640796915611404382">"مجاز نبودن"</string>
 </resources>
diff --git a/packages/Connectivity/framework/Android.bp b/packages/Connectivity/framework/Android.bp
index c62402d..bb93af9 100644
--- a/packages/Connectivity/framework/Android.bp
+++ b/packages/Connectivity/framework/Android.bp
@@ -100,6 +100,7 @@
         "//frameworks/base",
 
         // Tests using hidden APIs
+        "//cts/tests/netlegacy22.api",
         "//external/sl4a:__subpackages__",
         "//frameworks/base/tests/net:__subpackages__",
         "//frameworks/libs/net/common/testutils",
diff --git a/packages/Connectivity/framework/api/module-lib-current.txt b/packages/Connectivity/framework/api/module-lib-current.txt
index 9e2cd3e..c8b04a3 100644
--- a/packages/Connectivity/framework/api/module-lib-current.txt
+++ b/packages/Connectivity/framework/api/module-lib-current.txt
@@ -7,7 +7,7 @@
 
   public class ConnectivityManager {
     method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void factoryReset();
-    method @NonNull @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public java.util.List<android.net.NetworkStateSnapshot> getAllNetworkStateSnapshot();
+    method @NonNull @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public java.util.List<android.net.NetworkStateSnapshot> getAllNetworkStateSnapshots();
     method @Nullable public android.net.ProxyInfo getGlobalProxy();
     method @NonNull public static android.util.Range<java.lang.Integer> getIpSecNetIdRange();
     method @NonNull public static String getPrivateDnsMode(@NonNull android.content.Context);
diff --git a/packages/Connectivity/framework/api/system-current.txt b/packages/Connectivity/framework/api/system-current.txt
index 2194575..3ca7475 100644
--- a/packages/Connectivity/framework/api/system-current.txt
+++ b/packages/Connectivity/framework/api/system-current.txt
@@ -277,7 +277,7 @@
     method @NonNull public int[] getAdministratorUids();
     method @Nullable public static String getCapabilityCarrierName(int);
     method @Nullable public String getSsid();
-    method @NonNull public java.util.Set<java.lang.Integer> getSubIds();
+    method @NonNull public java.util.Set<java.lang.Integer> getSubscriptionIds();
     method @NonNull public int[] getTransportTypes();
     method public boolean isPrivateDnsBroken();
     method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities);
@@ -308,7 +308,7 @@
     method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setRequestorUid(int);
     method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkCapabilities.Builder setSignalStrength(int);
     method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) public android.net.NetworkCapabilities.Builder setSsid(@Nullable String);
-    method @NonNull public android.net.NetworkCapabilities.Builder setSubIds(@NonNull java.util.Set<java.lang.Integer>);
+    method @NonNull public android.net.NetworkCapabilities.Builder setSubscriptionIds(@NonNull java.util.Set<java.lang.Integer>);
     method @NonNull public android.net.NetworkCapabilities.Builder setTransportInfo(@Nullable android.net.TransportInfo);
   }
 
@@ -338,7 +338,7 @@
 
   public static class NetworkRequest.Builder {
     method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkRequest.Builder setSignalStrength(int);
-    method @NonNull public android.net.NetworkRequest.Builder setSubIds(@NonNull java.util.Set<java.lang.Integer>);
+    method @NonNull public android.net.NetworkRequest.Builder setSubscriptionIds(@NonNull java.util.Set<java.lang.Integer>);
   }
 
   public final class NetworkScore implements android.os.Parcelable {
diff --git a/packages/Connectivity/framework/src/android/net/ConnectivityFrameworkInitializer.java b/packages/Connectivity/framework/src/android/net/ConnectivityFrameworkInitializer.java
index 92a792b..a2e218d 100644
--- a/packages/Connectivity/framework/src/android/net/ConnectivityFrameworkInitializer.java
+++ b/packages/Connectivity/framework/src/android/net/ConnectivityFrameworkInitializer.java
@@ -68,5 +68,11 @@
                     return cm.startOrGetTestNetworkManager();
                 }
         );
+
+        SystemServiceRegistry.registerContextAwareService(
+                DnsResolverServiceManager.DNS_RESOLVER_SERVICE,
+                DnsResolverServiceManager.class,
+                (context, serviceBinder) -> new DnsResolverServiceManager(serviceBinder)
+        );
     }
 }
diff --git a/packages/Connectivity/framework/src/android/net/ConnectivityManager.java b/packages/Connectivity/framework/src/android/net/ConnectivityManager.java
index 96f2de6..b3c1997 100644
--- a/packages/Connectivity/framework/src/android/net/ConnectivityManager.java
+++ b/packages/Connectivity/framework/src/android/net/ConnectivityManager.java
@@ -1425,9 +1425,9 @@
             android.Manifest.permission.NETWORK_STACK,
             android.Manifest.permission.NETWORK_SETTINGS})
     @NonNull
-    public List<NetworkStateSnapshot> getAllNetworkStateSnapshot() {
+    public List<NetworkStateSnapshot> getAllNetworkStateSnapshots() {
         try {
-            return mService.getAllNetworkStateSnapshot();
+            return mService.getAllNetworkStateSnapshots();
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/packages/Connectivity/framework/src/android/net/DnsResolverServiceManager.java b/packages/Connectivity/framework/src/android/net/DnsResolverServiceManager.java
new file mode 100644
index 0000000..79009e8
--- /dev/null
+++ b/packages/Connectivity/framework/src/android/net/DnsResolverServiceManager.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.net;
+
+import android.annotation.NonNull;
+import android.os.IBinder;
+
+/**
+ * Provides a way to obtain the DnsResolver binder objects.
+ *
+ * @hide
+ */
+public class DnsResolverServiceManager {
+    /** Service name for the DNS resolver. Keep in sync with DnsResolverService.h */
+    public static final String DNS_RESOLVER_SERVICE = "dnsresolver";
+
+    private final IBinder mResolver;
+
+    DnsResolverServiceManager(IBinder resolver) {
+        mResolver = resolver;
+    }
+
+    /**
+     * Get an {@link IBinder} representing the DnsResolver stable AIDL interface
+     *
+     * @return {@link android.net.IDnsResolver} IBinder.
+     */
+    @NonNull
+    public IBinder getService() {
+        return mResolver;
+    }
+}
diff --git a/packages/Connectivity/framework/src/android/net/IConnectivityManager.aidl b/packages/Connectivity/framework/src/android/net/IConnectivityManager.aidl
index 728f375..c434bbc 100644
--- a/packages/Connectivity/framework/src/android/net/IConnectivityManager.aidl
+++ b/packages/Connectivity/framework/src/android/net/IConnectivityManager.aidl
@@ -82,7 +82,7 @@
     @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     NetworkState[] getAllNetworkState();
 
-    List<NetworkStateSnapshot> getAllNetworkStateSnapshot();
+    List<NetworkStateSnapshot> getAllNetworkStateSnapshots();
 
     boolean isActiveNetworkMetered();
 
diff --git a/packages/Connectivity/framework/src/android/net/NetworkCapabilities.java b/packages/Connectivity/framework/src/android/net/NetworkCapabilities.java
index c4277c3..775c88f 100644
--- a/packages/Connectivity/framework/src/android/net/NetworkCapabilities.java
+++ b/packages/Connectivity/framework/src/android/net/NetworkCapabilities.java
@@ -1749,7 +1749,7 @@
         combineSSIDs(nc);
         combineRequestor(nc);
         combineAdministratorUids(nc);
-        combineSubIds(nc);
+        combineSubscriptionIds(nc);
     }
 
     /**
@@ -1771,7 +1771,7 @@
                 && (onlyImmutable || satisfiedByUids(nc))
                 && (onlyImmutable || satisfiedBySSID(nc))
                 && (onlyImmutable || satisfiedByRequestor(nc))
-                && (onlyImmutable || satisfiedBySubIds(nc)));
+                && (onlyImmutable || satisfiedBySubscriptionIds(nc)));
     }
 
     /**
@@ -1868,7 +1868,7 @@
                 && equalsPrivateDnsBroken(that)
                 && equalsRequestor(that)
                 && equalsAdministratorUids(that)
-                && equalsSubIds(that);
+                && equalsSubscriptionIds(that);
     }
 
     @Override
@@ -2346,7 +2346,7 @@
      * @hide
      */
     @NonNull
-    public NetworkCapabilities setSubIds(@NonNull Set<Integer> subIds) {
+    public NetworkCapabilities setSubscriptionIds(@NonNull Set<Integer> subIds) {
         mSubIds = new ArraySet(Objects.requireNonNull(subIds));
         return this;
     }
@@ -2362,14 +2362,14 @@
      */
     @NonNull
     @SystemApi
-    public Set<Integer> getSubIds() {
+    public Set<Integer> getSubscriptionIds() {
         return new ArraySet<>(mSubIds);
     }
 
     /**
      * Tests if the subscription ID set of this network is the same as that of the passed one.
      */
-    private boolean equalsSubIds(@NonNull NetworkCapabilities nc) {
+    private boolean equalsSubscriptionIds(@NonNull NetworkCapabilities nc) {
         return Objects.equals(mSubIds, nc.mSubIds);
     }
 
@@ -2378,7 +2378,7 @@
      * If specified in the request, the passed one need to have at least one subId and at least
      * one of them needs to be in the request set.
      */
-    private boolean satisfiedBySubIds(@NonNull NetworkCapabilities nc) {
+    private boolean satisfiedBySubscriptionIds(@NonNull NetworkCapabilities nc) {
         if (mSubIds.isEmpty()) return true;
         if (nc.mSubIds.isEmpty()) return false;
         for (final Integer subId : nc.mSubIds) {
@@ -2395,7 +2395,7 @@
      * <p>If both subscription IDs are not equal, they belong to different subscription
      * (or no subscription). In this case, it would not make sense to add them together.
      */
-    private void combineSubIds(@NonNull NetworkCapabilities nc) {
+    private void combineSubscriptionIds(@NonNull NetworkCapabilities nc) {
         if (!Objects.equals(mSubIds, nc.mSubIds)) {
             throw new IllegalStateException("Can't combine two subscription ID sets");
         }
@@ -2737,8 +2737,8 @@
          */
         @NonNull
         @SystemApi
-        public Builder setSubIds(@NonNull final Set<Integer> subIds) {
-            mCaps.setSubIds(subIds);
+        public Builder setSubscriptionIds(@NonNull final Set<Integer> subIds) {
+            mCaps.setSubscriptionIds(subIds);
             return this;
         }
 
diff --git a/packages/Connectivity/framework/src/android/net/NetworkRequest.java b/packages/Connectivity/framework/src/android/net/NetworkRequest.java
index 78e1011..90aac0e 100644
--- a/packages/Connectivity/framework/src/android/net/NetworkRequest.java
+++ b/packages/Connectivity/framework/src/android/net/NetworkRequest.java
@@ -508,8 +508,8 @@
          */
         @NonNull
         @SystemApi
-        public Builder setSubIds(@NonNull Set<Integer> subIds) {
-            mNetworkCapabilities.setSubIds(subIds);
+        public Builder setSubscriptionIds(@NonNull Set<Integer> subIds) {
+            mNetworkCapabilities.setSubscriptionIds(subIds);
             return this;
         }
     }
diff --git a/packages/Connectivity/service/ServiceConnectivityResources/Android.bp b/packages/Connectivity/service/ServiceConnectivityResources/Android.bp
index d783738..515498e 100644
--- a/packages/Connectivity/service/ServiceConnectivityResources/Android.bp
+++ b/packages/Connectivity/service/ServiceConnectivityResources/Android.bp
@@ -21,7 +21,7 @@
 
 android_app {
     name: "ServiceConnectivityResources",
-    sdk_version: "module_current",
+    sdk_version: "module_30",
     min_sdk_version: "30",
     resource_dirs: [
         "res",
diff --git a/packages/DynamicSystemInstallationService/res/values-fi/strings.xml b/packages/DynamicSystemInstallationService/res/values-fi/strings.xml
index f32fc37..3e474d8 100644
--- a/packages/DynamicSystemInstallationService/res/values-fi/strings.xml
+++ b/packages/DynamicSystemInstallationService/res/values-fi/strings.xml
@@ -7,7 +7,7 @@
     <string name="notification_install_failed" msgid="4066039210317521404">"Asennus epäonnistui"</string>
     <string name="notification_image_validation_failed" msgid="2720357826403917016">"Levykuvan vahvistus epäonnistui. Keskeytä asennus."</string>
     <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Käyttää tällä hetkellä dynaamista järjestelmää. Käynnistä uudelleen käyttääksesi alkuperäistä Android-versiota."</string>
-    <string name="notification_action_cancel" msgid="5929299408545961077">"Peruuta"</string>
+    <string name="notification_action_cancel" msgid="5929299408545961077">"Peru"</string>
     <string name="notification_action_discard" msgid="1817481003134947493">"Hylkää"</string>
     <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Käynn. uudelleen"</string>
     <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Käynn. uudelleen"</string>
diff --git a/packages/DynamicSystemInstallationService/res/values-ky/strings.xml b/packages/DynamicSystemInstallationService/res/values-ky/strings.xml
index 320faff..4e1ba66 100644
--- a/packages/DynamicSystemInstallationService/res/values-ky/strings.xml
+++ b/packages/DynamicSystemInstallationService/res/values-ky/strings.xml
@@ -2,11 +2,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="keyguard_description" msgid="8582605799129954556">"Сырсөзүңүздү киргизип, системаны динамикалык жаңыртууга өтүңүз"</string>
-    <string name="notification_install_completed" msgid="6252047868415172643">"Динамикалык система даяр. Аны колдонуу үчүн, түзмөктү өчүрүп күйгүзүңүз."</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Динамикалык система даяр. Аны колдонуу үчүн түзмөктү өчүрүп күйгүзүңүз."</string>
     <string name="notification_install_inprogress" msgid="7383334330065065017">"Орнотулууда"</string>
     <string name="notification_install_failed" msgid="4066039210317521404">"Орнотулбай койду"</string>
     <string name="notification_image_validation_failed" msgid="2720357826403917016">"Дисктин сүрөтү текшерилбей калды. Орнотууну токтотуңуз."</string>
-    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Учурда динамикалык система колдонулууда. Android\'дин түпнуска версиясын колдонуу үчүн, өчүрүп күйгүзүңүз."</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Учурда динамикалык система колдонулууда. Android\'дин түпнуска версиясын колдонуу үчүн өчүрүп күйгүзүңүз."</string>
     <string name="notification_action_cancel" msgid="5929299408545961077">"Жок"</string>
     <string name="notification_action_discard" msgid="1817481003134947493">"Жоюу"</string>
     <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Өчүрүп күйгүзүү"</string>
diff --git a/packages/DynamicSystemInstallationService/res/values-ne/strings.xml b/packages/DynamicSystemInstallationService/res/values-ne/strings.xml
index 7afbfd9..de92306 100644
--- a/packages/DynamicSystemInstallationService/res/values-ne/strings.xml
+++ b/packages/DynamicSystemInstallationService/res/values-ne/strings.xml
@@ -2,11 +2,11 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="keyguard_description" msgid="8582605799129954556">"कृपया आफ्नो पासवर्ड प्रविष्टि गर्नुहोस् र Dynamic System Updates को प्रक्रियालाई निरन्तरता दिनुहोस्"</string>
-    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamic System तयार छ। यसको प्रयोग सुरु गर्न आफ्नो यन्त्र रिस्टार्ट गर्नुहोस्।"</string>
+    <string name="notification_install_completed" msgid="6252047868415172643">"Dynamic System तयार छ। यसको प्रयोग सुरु गर्न आफ्नो डिभाइस रिस्टार्ट गर्नुहोस्।"</string>
     <string name="notification_install_inprogress" msgid="7383334330065065017">"इन्स्टल हुँदै छ"</string>
     <string name="notification_install_failed" msgid="4066039210317521404">"स्थापना गर्न सकिएन"</string>
     <string name="notification_image_validation_failed" msgid="2720357826403917016">"डिस्कको इमेज पुष्टि गर्न सकिएन। स्थापना गर्ने प्रक्रिया रद्द गर्नुहोस्।"</string>
-    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"हाल Dynamic System चलिरहेको छ। Android को मूल संस्करण प्रयोग गर्न यन्त्र रिस्टार्ट गर्नुहोस्।"</string>
+    <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"हाल Dynamic System चलिरहेको छ। Android को मूल संस्करण प्रयोग गर्न डिभाइस रिस्टार्ट गर्नुहोस्।"</string>
     <string name="notification_action_cancel" msgid="5929299408545961077">"रद्द गर्नुहोस्"</string>
     <string name="notification_action_discard" msgid="1817481003134947493">"खारेज गर्नुहोस्"</string>
     <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"रिस्टार्ट गर्नु…"</string>
diff --git a/packages/DynamicSystemInstallationService/res/values-pa/strings.xml b/packages/DynamicSystemInstallationService/res/values-pa/strings.xml
index 8f2fd18..ac12bb7 100644
--- a/packages/DynamicSystemInstallationService/res/values-pa/strings.xml
+++ b/packages/DynamicSystemInstallationService/res/values-pa/strings.xml
@@ -8,7 +8,7 @@
     <string name="notification_image_validation_failed" msgid="2720357826403917016">"ਇਮੇਜ ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲ ਰਹੀ। ਸਥਾਪਨਾ ਨੂੰ ਰੱਦ ਕਰੋ।"</string>
     <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"ਫ਼ਿਲਹਾਲ ਪਰਿਵਰਤਨਸ਼ੀਲ ਸਿਸਟਮ ਚੱਲ ਰਿਹਾ ਹੈ। ਮੂਲ Android ਵਰਜਨ ਵਰਤਣ ਲਈ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ।"</string>
     <string name="notification_action_cancel" msgid="5929299408545961077">"ਰੱਦ ਕਰੋ"</string>
-    <string name="notification_action_discard" msgid="1817481003134947493">"ਖਾਰਜ ਕਰੋ"</string>
+    <string name="notification_action_discard" msgid="1817481003134947493">"ਬਰਖਾਸਤ ਕਰੋ"</string>
     <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ"</string>
     <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ"</string>
     <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"ਪਰਿਵਰਤਨਸ਼ੀਲ ਸਿਸਟਮ ਰੱਦ ਕੀਤਾ ਗਿਆ"</string>
diff --git a/packages/PackageInstaller/res/values-es/strings.xml b/packages/PackageInstaller/res/values-es/strings.xml
index 3a0757b..7431241 100644
--- a/packages/PackageInstaller/res/values-es/strings.xml
+++ b/packages/PackageInstaller/res/values-es/strings.xml
@@ -19,7 +19,7 @@
     <string name="app_name" msgid="7488448184431507488">"Instalador de paquetes"</string>
     <string name="install" msgid="711829760615509273">"Instalar"</string>
     <string name="update" msgid="3932142540719227615">"Actualizar"</string>
-    <string name="done" msgid="6632441120016885253">"Listo"</string>
+    <string name="done" msgid="6632441120016885253">"Hecho"</string>
     <string name="cancel" msgid="1018267193425558088">"Cancelar"</string>
     <string name="installing" msgid="4921993079741206516">"Instalando…"</string>
     <string name="installing_app" msgid="1165095864863849422">"Instalando <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
diff --git a/packages/PackageInstaller/res/values-gl/strings.xml b/packages/PackageInstaller/res/values-gl/strings.xml
index 9d3b775..637e15a 100644
--- a/packages/PackageInstaller/res/values-gl/strings.xml
+++ b/packages/PackageInstaller/res/values-gl/strings.xml
@@ -46,7 +46,7 @@
     <string name="out_of_space_dlg_text" msgid="8727714096031856231">"Non se puido instalar a aplicación <xliff:g id="APP_NAME">%1$s</xliff:g>. Libera espazo e téntao de novo."</string>
     <string name="app_not_found_dlg_title" msgid="5107924008597470285">"Non se atopou a aplicación"</string>
     <string name="app_not_found_dlg_text" msgid="5219983779377811611">"Non se atopou a aplicación na lista de aplicacións instaladas."</string>
-    <string name="user_is_not_allowed_dlg_title" msgid="6915293433252210232">"Acción non-permitida"</string>
+    <string name="user_is_not_allowed_dlg_title" msgid="6915293433252210232">"Sen permiso"</string>
     <string name="user_is_not_allowed_dlg_text" msgid="3468447791330611681">"O usuario actual non pode realizar esta desinstalación."</string>
     <string name="generic_error_dlg_title" msgid="5863195085927067752">"Erro"</string>
     <string name="generic_error_dlg_text" msgid="5287861443265795232">"Non se puido desinstalar a aplicación."</string>
@@ -54,10 +54,10 @@
     <string name="uninstall_update_title" msgid="824411791011583031">"Desinstalar actualización"</string>
     <string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> forma parte da seguinte aplicación:"</string>
     <string name="uninstall_application_text" msgid="3816830743706143980">"Queres desinstalar esta aplicación?"</string>
-    <string name="uninstall_application_text_all_users" msgid="575491774380227119">"Queres desinstalar esta aplicación para "<b>"todos"</b>" os usuarios? A aplicación e os seus datos eliminaranse de "<b>"todos"</b>" os usuarios do dispositivo."</string>
+    <string name="uninstall_application_text_all_users" msgid="575491774380227119">"Queres desinstalar esta aplicación para "<b>"todos"</b>" os usuarios? A aplicación e os seus datos quitaranse de "<b>"todos"</b>" os usuarios do dispositivo."</string>
     <string name="uninstall_application_text_user" msgid="498072714173920526">"Queres desinstalar esta aplicación para o usuario que se chama <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
-    <string name="uninstall_update_text" msgid="863648314632448705">"Queres substituír esta aplicación pola versión que viña de fábrica? Eliminaranse todos os datos."</string>
-    <string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Queres substituír esta aplicación pola versión que viña de fábrica? Eliminaranse todos os datos. Isto afectará a todos os usuarios do dispositivo, incluídos os que teñan perfís de traballo."</string>
+    <string name="uninstall_update_text" msgid="863648314632448705">"Queres substituír esta aplicación pola versión que viña de fábrica? Quitaranse todos os datos."</string>
+    <string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Queres substituír esta aplicación pola versión que viña de fábrica? Quitaranse todos os datos. Isto afectará a todos os usuarios do dispositivo, incluídos os que teñan perfís de traballo."</string>
     <string name="uninstall_keep_data" msgid="7002379587465487550">"Conservar os datos da aplicación, que ocupan <xliff:g id="SIZE">%1$s</xliff:g>."</string>
     <string name="uninstalling_notification_channel" msgid="840153394325714653">"Desinstalacións en curso"</string>
     <string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Erros nas desinstalacións"</string>
diff --git a/packages/PackageInstaller/res/values-it/strings.xml b/packages/PackageInstaller/res/values-it/strings.xml
index 42c3cfe..c554aab 100644
--- a/packages/PackageInstaller/res/values-it/strings.xml
+++ b/packages/PackageInstaller/res/values-it/strings.xml
@@ -46,7 +46,7 @@
     <string name="out_of_space_dlg_text" msgid="8727714096031856231">"Impossibile installare <xliff:g id="APP_NAME">%1$s</xliff:g>. Libera dello spazio e riprova."</string>
     <string name="app_not_found_dlg_title" msgid="5107924008597470285">"App non trovata"</string>
     <string name="app_not_found_dlg_text" msgid="5219983779377811611">"Impossibile trovare l\'applicazione nell\'elenco di applicazioni installate."</string>
-    <string name="user_is_not_allowed_dlg_title" msgid="6915293433252210232">"Non consentita"</string>
+    <string name="user_is_not_allowed_dlg_title" msgid="6915293433252210232">"Autorizzazione non concessa"</string>
     <string name="user_is_not_allowed_dlg_text" msgid="3468447791330611681">"L\'utente corrente non è autorizzato a eseguire questa disinstallazione."</string>
     <string name="generic_error_dlg_title" msgid="5863195085927067752">"Errore"</string>
     <string name="generic_error_dlg_text" msgid="5287861443265795232">"Impossibile disinstallare l\'app."</string>
diff --git a/packages/PrintSpooler/res/values-az/strings.xml b/packages/PrintSpooler/res/values-az/strings.xml
index 4193afc..887434b 100644
--- a/packages/PrintSpooler/res/values-az/strings.xml
+++ b/packages/PrintSpooler/res/values-az/strings.xml
@@ -83,7 +83,7 @@
     <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> ləğv edilir"</string>
     <string name="failed_notification_title_template" msgid="2256217208186530973">"Printer xətası <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
     <string name="blocked_notification_title_template" msgid="1175435827331588646">"Printer <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> işini blokladı"</string>
-    <string name="cancel" msgid="4373674107267141885">"Ləğv et"</string>
+    <string name="cancel" msgid="4373674107267141885">"Ləğv edin"</string>
     <string name="restart" msgid="2472034227037808749">"Yenidən başlat"</string>
     <string name="no_connection_to_printer" msgid="2159246915977282728">"Printerə heç bir bağlantı yoxdur"</string>
     <string name="reason_unknown" msgid="5507940196503246139">"naməlum"</string>
diff --git a/packages/PrintSpooler/res/values-eu/strings.xml b/packages/PrintSpooler/res/values-eu/strings.xml
index 7ccccc9f..49ca881 100644
--- a/packages/PrintSpooler/res/values-eu/strings.xml
+++ b/packages/PrintSpooler/res/values-eu/strings.xml
@@ -49,10 +49,10 @@
     <string name="print_options_collapsed" msgid="7455930445670414332">"Inprimatzeko aukerak tolestuta daude"</string>
     <string name="search" msgid="5421724265322228497">"Bilatu"</string>
     <string name="all_printers_label" msgid="3178848870161526399">"Inprimagailu guztiak"</string>
-    <string name="add_print_service_label" msgid="5356702546188981940">"Gehitu zerbitzua"</string>
+    <string name="add_print_service_label" msgid="5356702546188981940">"Gehitu zerbitzu bat"</string>
     <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Bilaketa-koadroa erakutsi da"</string>
     <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Bilaketa-koadroa ezkutatu da"</string>
-    <string name="print_add_printer" msgid="1088656468360653455">"Gehitu inprimagailua"</string>
+    <string name="print_add_printer" msgid="1088656468360653455">"Gehitu inprimagailu bat"</string>
     <string name="print_select_printer" msgid="7388760939873368698">"Hautatu inprimagailua"</string>
     <string name="print_forget_printer" msgid="5035287497291910766">"Ahaztu inprimagailua"</string>
     <plurals name="print_search_result_count_utterance" formatted="false" msgid="6997663738361080868">
diff --git a/packages/PrintSpooler/res/values-fi/strings.xml b/packages/PrintSpooler/res/values-fi/strings.xml
index 724d1d7..4289399 100644
--- a/packages/PrintSpooler/res/values-fi/strings.xml
+++ b/packages/PrintSpooler/res/values-fi/strings.xml
@@ -83,7 +83,7 @@
     <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Peruutetaan työ <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
     <string name="failed_notification_title_template" msgid="2256217208186530973">"Tulostinvirhe työlle <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
     <string name="blocked_notification_title_template" msgid="1175435827331588646">"Tulostin esti työn <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
-    <string name="cancel" msgid="4373674107267141885">"Peruuta"</string>
+    <string name="cancel" msgid="4373674107267141885">"Peru"</string>
     <string name="restart" msgid="2472034227037808749">"Käynnistä uudelleen"</string>
     <string name="no_connection_to_printer" msgid="2159246915977282728">"Ei yhteyttä tulostimeen"</string>
     <string name="reason_unknown" msgid="5507940196503246139">"tuntematon"</string>
diff --git a/packages/PrintSpooler/res/values-gu/strings.xml b/packages/PrintSpooler/res/values-gu/strings.xml
index 4149a86..7419c2a 100644
--- a/packages/PrintSpooler/res/values-gu/strings.xml
+++ b/packages/PrintSpooler/res/values-gu/strings.xml
@@ -65,7 +65,7 @@
     <string name="notification_channel_failure" msgid="9042250774797916414">"નિષ્ફળ થયેલ છાપવાના Tasks"</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/PrintSpooler/res/values-kk/strings.xml b/packages/PrintSpooler/res/values-kk/strings.xml
index a822d1c..29126bc 100644
--- a/packages/PrintSpooler/res/values-kk/strings.xml
+++ b/packages/PrintSpooler/res/values-kk/strings.xml
@@ -94,7 +94,7 @@
     <item msgid="2762241247228983754">"Түс"</item>
   </string-array>
   <string-array name="duplex_mode_labels">
-    <item msgid="3882302912790928315">"Ешқандай"</item>
+    <item msgid="3882302912790928315">"Жоқ"</item>
     <item msgid="7296563835355641719">"Ұзын жиек"</item>
     <item msgid="79513688117503758">"Қысқа жиек"</item>
   </string-array>
diff --git a/packages/PrintSpooler/res/values-mk/strings.xml b/packages/PrintSpooler/res/values-mk/strings.xml
index 504c956..3fd32b1 100644
--- a/packages/PrintSpooler/res/values-mk/strings.xml
+++ b/packages/PrintSpooler/res/values-mk/strings.xml
@@ -49,7 +49,7 @@
     <string name="print_options_collapsed" msgid="7455930445670414332">"Опциите на печатачот се сокриени"</string>
     <string name="search" msgid="5421724265322228497">"Пребарај"</string>
     <string name="all_printers_label" msgid="3178848870161526399">"Сите печатачи"</string>
-    <string name="add_print_service_label" msgid="5356702546188981940">"Додај услуга"</string>
+    <string name="add_print_service_label" msgid="5356702546188981940">"Додајте услуга"</string>
     <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Полето за пребарување е прикажано"</string>
     <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Полето за пребарување е скриено"</string>
     <string name="print_add_printer" msgid="1088656468360653455">"Додај печатач"</string>
diff --git a/packages/PrintSpooler/res/values-my/strings.xml b/packages/PrintSpooler/res/values-my/strings.xml
index a6b07e1..cb0b899 100644
--- a/packages/PrintSpooler/res/values-my/strings.xml
+++ b/packages/PrintSpooler/res/values-my/strings.xml
@@ -52,7 +52,7 @@
     <string name="add_print_service_label" msgid="5356702546188981940">"ဝန်ဆောင်မှုထည့်ရန်"</string>
     <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"ရှာဖွေစရာ နေရာ မြင်တွေ့ရပါသည်"</string>
     <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"ရှာဖွေရန် နေရာ ပျောက်ကွယ်နေပါသည်"</string>
-    <string name="print_add_printer" msgid="1088656468360653455">"စာထုတ်စက်ကို ထည့်ပါ"</string>
+    <string name="print_add_printer" msgid="1088656468360653455">"ပရင်တာထည့်ရန်"</string>
     <string name="print_select_printer" msgid="7388760939873368698">"စာထုတ်စက်ကို ရွေးရန်"</string>
     <string name="print_forget_printer" msgid="5035287497291910766">"စာထုတ်စက်ကို မေ့လိုက်ရန်"</string>
     <plurals name="print_search_result_count_utterance" formatted="false" msgid="6997663738361080868">
@@ -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/PrintSpooler/res/values-ne/strings.xml b/packages/PrintSpooler/res/values-ne/strings.xml
index d0b7a5e4..be7af70 100644
--- a/packages/PrintSpooler/res/values-ne/strings.xml
+++ b/packages/PrintSpooler/res/values-ne/strings.xml
@@ -35,7 +35,7 @@
     <string name="install_for_print_preview" msgid="6366303997385509332">"पूर्वावलोकनको लागि PDF भ्यूअर स्थापना गर्नुहोस्"</string>
     <string name="printing_app_crashed" msgid="854477616686566398">"प्रिन्टिङ एप क्र्यास भयो"</string>
     <string name="generating_print_job" msgid="3119608742651698916">"प्रिन्ट कार्य निर्माण गरिँदै"</string>
-    <string name="save_as_pdf" msgid="5718454119847596853">"PDF को रूपमा सुरक्षित गर्नुहोस्"</string>
+    <string name="save_as_pdf" msgid="5718454119847596853">"PDF को रूपमा सेभ गर्नुहोस्"</string>
     <string name="all_printers" msgid="5018829726861876202">"सबै प्रिन्टरहरू..."</string>
     <string name="print_dialog" msgid="32628687461331979">"सम्वाद प्रिन्ट गर्नुहोस्"</string>
     <string name="current_page_template" msgid="5145005201131935302">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
@@ -44,7 +44,7 @@
     <string name="expand_handle" msgid="7282974448109280522">"ह्यान्डल विस्तार गर्नुहोस्"</string>
     <string name="collapse_handle" msgid="6886637989442507451">"ह्यान्डल कोल्याप्स गर्नुहोस्"</string>
     <string name="print_button" msgid="645164566271246268">"प्रिन्ट गर्नुहोस्"</string>
-    <string name="savetopdf_button" msgid="2976186791686924743">"PDF सुरक्षित गर्नुहोस्"</string>
+    <string name="savetopdf_button" msgid="2976186791686924743">"PDF सेभ गर्नुहोस्"</string>
     <string name="print_options_expanded" msgid="6944679157471691859">"विस्तार गरेका विकल्पहरू प्रिन्ट गर्नुहोस्"</string>
     <string name="print_options_collapsed" msgid="7455930445670414332">"कोल्याप्स गरेका विकल्पहरू प्रिन्ट गर्नुहोस्"</string>
     <string name="search" msgid="5421724265322228497">"खोज्नुहोस्"</string>
@@ -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/PrintSpooler/res/values-pa/strings.xml b/packages/PrintSpooler/res/values-pa/strings.xml
index 1cacc10..601fa83 100644
--- a/packages/PrintSpooler/res/values-pa/strings.xml
+++ b/packages/PrintSpooler/res/values-pa/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/PrintSpooler/res/values-te/strings.xml b/packages/PrintSpooler/res/values-te/strings.xml
index 79944bb..cf0e0f6 100644
--- a/packages/PrintSpooler/res/values-te/strings.xml
+++ b/packages/PrintSpooler/res/values-te/strings.xml
@@ -17,7 +17,7 @@
 <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="4469836075319831821">"ముద్రణ స్పూలర్"</string>
-    <string name="more_options_button" msgid="2243228396432556771">"మరిన్ని ఎంపికలు"</string>
+    <string name="more_options_button" msgid="2243228396432556771">"మరిన్ని ఆప్షన్‌లు"</string>
     <string name="label_destination" msgid="9132510997381599275">"గమ్యం"</string>
     <string name="label_copies" msgid="3634531042822968308">"కాపీలు"</string>
     <string name="label_copies_summary" msgid="3861966063536529540">"కాపీలు:"</string>
diff --git a/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml b/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml
index 5ff0dc7..403e417 100644
--- a/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml
+++ b/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml
@@ -65,9 +65,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearanceListItem"
-            android:ellipsize="marquee"
-            android:fadingEdge="horizontal"/>
+            android:textAppearance="?android:attr/textAppearanceListItem"/>
 
         <LinearLayout
             android:id="@+id/summary_container"
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-gu/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-gu/strings.xml
index a24456e..f57061a 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-gu/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-gu/strings.xml
@@ -18,5 +18,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="enabled_by_admin" msgid="6630472777476410137">"વ્યવસ્થાપકે ચાલુ કરેલ"</string>
-    <string name="disabled_by_admin" msgid="4023569940620832713">"વ્યવસ્થાપકે બંધ કરેલ"</string>
+    <string name="disabled_by_admin" msgid="4023569940620832713">"વ્યવસ્થાપકે બંધ કરેલું"</string>
 </resources>
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-it/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-it/strings.xml
index 199a2d6..bddf43c 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-it/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-it/strings.xml
@@ -18,5 +18,5 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="enabled_by_admin" msgid="6630472777476410137">"Attivata dall\'amministratore"</string>
-    <string name="disabled_by_admin" msgid="4023569940620832713">"Disattivata dall\'amministratore"</string>
+    <string name="disabled_by_admin" msgid="4023569940620832713">"Opzione disattivata dall\'amministratore"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-or/strings.xml b/packages/SettingsLib/SearchWidget/res/values-or/strings.xml
index c2379ac..cf824de 100644
--- a/packages/SettingsLib/SearchWidget/res/values-or/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-or/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"ସନ୍ଧାନ ସେଟିଂସ୍"</string>
+    <string name="search_menu" msgid="1914043873178389845">"ସେଟିଂସ୍ ସନ୍ଧାନ କରନ୍ତୁ"</string>
 </resources>
diff --git a/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml b/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml
index 5fe116e..02229b8 100644
--- a/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="search_menu" msgid="1914043873178389845">"Pesquisar nas definições"</string>
+    <string name="search_menu" msgid="1914043873178389845">"Pesquise nas definições"</string>
 </resources>
diff --git a/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml b/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml
index 31b3fe5..d2c6fa2 100644
--- a/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml
+++ b/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml
@@ -24,29 +24,27 @@
     android:orientation="vertical"
     android:layout_marginStart="16dp"
     android:layout_marginEnd="16dp"
-    android:paddingTop="32dp"
-    android:paddingBottom="32dp">
+    android:paddingTop="16dp"
+    android:paddingBottom="16dp">
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
         <TextView
             android:id="@+id/usage_summary"
-            android:layout_width="0dp"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            app:layout_constraintWidth_percent="0.45"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintBaseline_toBaselineOf="@id/total_summary"
             android:ellipsize="marquee"
-            android:fontFamily="@*android:string/config_headlineFontFamily"
-            android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Display1"
+            android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Body1"
             android:textSize="14sp"
             android:textAlignment="viewStart"/>
         <TextView
             android:id="@+id/total_summary"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
-            app:layout_constraintWidth_percent="0.45"
+            app:layout_constraintStart_toEndOf="@id/usage_summary"
             app:layout_constraintEnd_toStartOf="@id/custom_content"
             android:ellipsize="marquee"
             android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Body1"
@@ -54,12 +52,11 @@
             android:textAlignment="viewEnd"/>
         <FrameLayout
             android:id="@+id/custom_content"
-            android:layout_width="0dp"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:visibility="gone"
             app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintBottom_toBottomOf="@id/total_summary"
-            app:layout_constraintWidth_percent="0.1"/>
+            app:layout_constraintBottom_toBottomOf="@id/total_summary"/>
     </androidx.constraintlayout.widget.ConstraintLayout>
 
     <ProgressBar
@@ -67,8 +64,7 @@
         style="?android:attr/progressBarStyleHorizontal"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:scaleY="2"
-        android:layout_marginTop="4dp"
+        android:scaleY="4"
         android:max="100"/>
 
     <TextView
diff --git a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
index a2b1de2..fbf325c 100644
--- a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
+++ b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
@@ -20,7 +20,7 @@
 import android.text.SpannableString;
 import android.text.Spanned;
 import android.text.TextUtils;
-import android.text.style.RelativeSizeSpan;
+import android.text.style.AbsoluteSizeSpan;
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.FrameLayout;
@@ -192,7 +192,7 @@
         final Matcher matcher = mNumberPattern.matcher(summary);
         if (matcher.find()) {
             final SpannableString spannableSummary =  new SpannableString(summary);
-            spannableSummary.setSpan(new RelativeSizeSpan(2.4f), matcher.start(),
+            spannableSummary.setSpan(new AbsoluteSizeSpan(64, true /* dip */), matcher.start(),
                     matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
             return spannableSummary;
         }
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java
index 8f7006e..2c2ca3b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java
@@ -80,9 +80,6 @@
         @Override
         public void onCapabilitiesChanged(
                 Network network, NetworkCapabilities networkCapabilities) {
-            if (mDefaultNetwork != null && mDefaultNetwork.getNetId() != network.getNetId()) {
-                return;
-            }
             if (!mNetworks.contains(network.getNetId())) {
                 // New network
                 boolean isVcnOverWifi =
@@ -117,9 +114,6 @@
 
         @Override
         public void onLost(Network network) {
-            if (mDefaultNetwork != null && mDefaultNetwork.getNetId() != network.getNetId()) {
-                return;
-            }
             String log = new StringBuilder()
                     .append(SSDF.format(System.currentTimeMillis())).append(",")
                     .append("onLost: ")
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java
index cd78add..ddafa3c 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java
@@ -22,7 +22,7 @@
 
 import android.content.Context;
 import android.text.SpannedString;
-import android.text.style.RelativeSizeSpan;
+import android.text.style.AbsoluteSizeSpan;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.FrameLayout;
@@ -56,38 +56,38 @@
     }
 
     @Test
-    public void setUsageSummary_noNumber_noRelativeSizeSpan() {
+    public void setUsageSummary_noNumber_noAbsoluteSizeSpan() {
         mUsageProgressBarPreference.setUsageSummary("test");
 
         mUsageProgressBarPreference.onBindViewHolder(mViewHolder);
 
         final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary);
         final SpannedString summary = new SpannedString(usageSummary.getText());
-        assertThat(summary.getSpans(0, summary.length(), RelativeSizeSpan.class).length)
+        assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length)
                 .isEqualTo(0);
     }
 
     @Test
-    public void setUsageSummary_integerNumber_findRelativeSizeSpan() {
+    public void setUsageSummary_integerNumber_findAbsoluteSizeSpan() {
         mUsageProgressBarPreference.setUsageSummary("10Test");
 
         mUsageProgressBarPreference.onBindViewHolder(mViewHolder);
 
         final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary);
         final SpannedString summary = new SpannedString(usageSummary.getText());
-        assertThat(summary.getSpans(0, summary.length(), RelativeSizeSpan.class).length)
+        assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length)
                 .isEqualTo(1);
     }
 
     @Test
-    public void setUsageSummary_floatNumber_findRelativeSizeSpan() {
+    public void setUsageSummary_floatNumber_findAbsoluteSizeSpan() {
         mUsageProgressBarPreference.setUsageSummary("3.14Test");
 
         mUsageProgressBarPreference.onBindViewHolder(mViewHolder);
 
         final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary);
         final SpannedString summary = new SpannedString(usageSummary.getText());
-        assertThat(summary.getSpans(0, summary.length(), RelativeSizeSpan.class).length)
+        assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length)
                 .isEqualTo(1);
     }
 
diff --git a/packages/SettingsProvider/res/values-es/strings.xml b/packages/SettingsProvider/res/values-es/strings.xml
index a3d3469..c799689 100644
--- a/packages/SettingsProvider/res/values-es/strings.xml
+++ b/packages/SettingsProvider/res/values-es/strings.xml
@@ -20,6 +20,6 @@
 <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="4567566098528588863">"Almacenamiento de configuración"</string>
-    <string name="wifi_softap_config_change" msgid="5688373762357941645">"Se han cambiado los ajustes del punto de acceso"</string>
+    <string name="wifi_softap_config_change" msgid="5688373762357941645">"Se han cambiado los ajustes de Compartir Internet"</string>
     <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Toca para ver información detallada"</string>
 </resources>
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index f685d88..0958e54 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -162,6 +162,7 @@
     <uses-permission android:name="android.permission.READ_INPUT_STATE" />
     <uses-permission android:name="android.permission.SET_ORIENTATION" />
     <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
+    <uses-permission android:name="com.android.permission.USE_INSTALLER_V2" />
     <uses-permission android:name="com.android.permission.USE_SYSTEM_DATA_LOADERS" />
     <uses-permission android:name="android.permission.MOVE_PACKAGE" />
     <uses-permission android:name="android.permission.KEEP_UNINSTALLED_PACKAGES" />
@@ -413,6 +414,9 @@
     <!-- Permission required for testing system audio effect APIs. -->
     <uses-permission android:name="android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS"/>
 
+    <!-- Permission required for running networking unit tests -->
+    <uses-permission android:name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" />
+
     <!-- Permissions required for CTS test - TunerTest -->
     <uses-permission android:name="android.permission.ACCESS_TV_DESCRAMBLER" />
     <uses-permission android:name="android.permission.ACCESS_TV_TUNER" />
@@ -425,6 +429,7 @@
     <uses-permission android:name="android.permission.ACCESS_SHARED_LIBRARIES" />
 
     <!-- Permissions required for CTS test - TVInputManagerTest -->
+    <uses-permission android:name="android.permission.ACCESS_TUNED_INFO" />
     <uses-permission android:name="android.permission.TV_INPUT_HARDWARE" />
 
     <!-- Permission needed for CTS test - PrivilegedLocationPermissionTest -->
@@ -544,6 +549,9 @@
     <!-- Permission required for CTS test - CtsUwbTestCases -->
     <uses-permission android:name="android.permission.UWB_PRIVILEGED" />
 
+    <!-- Permission required for CTS test - CtsAlarmManagerTestCases -->
+    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
+
     <application android:label="@string/app_label"
                 android:theme="@android:style/Theme.DeviceDefault.DayNight"
                 android:defaultToDeviceProtectedStorage="true"
diff --git a/packages/Shell/TEST_MAPPING b/packages/Shell/TEST_MAPPING
index a149b5c..9bb1b4b 100644
--- a/packages/Shell/TEST_MAPPING
+++ b/packages/Shell/TEST_MAPPING
@@ -18,6 +18,20 @@
           "exclude-annotation": "androidx.test.filters.FlakyTest"
         }
       ]
+    },
+    {
+      "name": "CtsUiAutomationTestCases",
+      "options": [
+        {
+          "include-filter": "android.app.uiautomation.cts.UiAutomationTest#testAdoptAllShellPermissions"
+        },
+        {
+          "include-filter": "android.app.uiautomation.cts.UiAutomationTest#testAdoptSomeShellPermissions"
+        },
+        {
+          "exclude-annotation": "androidx.test.filters.FlakyTest"
+        }
+      ]
     }
   ],
   "postsubmit": [
diff --git a/packages/Shell/res/values-ne/strings.xml b/packages/Shell/res/values-ne/strings.xml
index 3c58796..69da552 100644
--- a/packages/Shell/res/values-ne/strings.xml
+++ b/packages/Shell/res/values-ne/strings.xml
@@ -42,6 +42,6 @@
     <string name="bugreport_info_name" msgid="4414036021935139527">"फाइलको नाम"</string>
     <string name="bugreport_info_title" msgid="2306030793918239804">"बगको शीर्षक"</string>
     <string name="bugreport_info_description" msgid="5072835127481627722">"बगको सारांश"</string>
-    <string name="save" msgid="4781509040564835759">"सुरक्षित गर्नुहोस्"</string>
+    <string name="save" msgid="4781509040564835759">"सेभ गर्नुहोस्"</string>
     <string name="bugreport_intent_chooser_title" msgid="7605709494790894076">"बग रिपोर्ट सेयर गर्नुहोस्"</string>
 </resources>
diff --git a/packages/Shell/res/values-vi/strings.xml b/packages/Shell/res/values-vi/strings.xml
index 1f91a5a..2aaa094 100644
--- a/packages/Shell/res/values-vi/strings.xml
+++ b/packages/Shell/res/values-vi/strings.xml
@@ -29,7 +29,7 @@
     <string name="bugreport_finished_pending_screenshot_text" product="watch" msgid="1474435374470177193">"Bấm để chia sẻ báo cáo lỗi mà không cần ảnh chụp màn hình hoặc đợi hoàn tất ảnh chụp màn hình"</string>
     <string name="bugreport_finished_pending_screenshot_text" product="default" msgid="1474435374470177193">"Bấm để chia sẻ báo cáo lỗi mà không cần ảnh chụp màn hình hoặc đợi hoàn tất ảnh chụp màn hình"</string>
     <string name="bugreport_confirm" msgid="5917407234515812495">"Các báo cáo lỗi chứa dữ liệu từ nhiều tệp nhật ký khác nhau của hệ thống, có thể bao gồm dữ liệu mà bạn coi là nhạy cảm (chẳng hạn như dữ liệu vị trí và dữ liệu sử dụng ứng dụng). Chỉ chia sẻ báo cáo lỗi với những người và ứng dụng mà bạn tin tưởng."</string>
-    <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Không hiển thị lại"</string>
+    <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Không hiện lại"</string>
     <string name="bugreport_storage_title" msgid="5332488144740527109">"Báo cáo lỗi"</string>
     <string name="bugreport_unreadable_text" msgid="586517851044535486">"Không thể đọc tệp báo cáo lỗi"</string>
     <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Không thể thêm chi tiết báo cáo lỗi vào tệp zip"</string>
diff --git a/packages/SoundPicker/res/values-gu/strings.xml b/packages/SoundPicker/res/values-gu/strings.xml
index f50dc9a..209769f 100644
--- a/packages/SoundPicker/res/values-gu/strings.xml
+++ b/packages/SoundPicker/res/values-gu/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"ડિફોલ્ટ રિંગટોન"</string>
     <string name="notification_sound_default" msgid="8133121186242636840">"ડિફૉલ્ટ નોટિફિકેશન સાઉન્ડ"</string>
-    <string name="alarm_sound_default" msgid="4787646764557462649">"ડિફૉલ્ટ એલાર્મ સાઉન્ડ"</string>
+    <string name="alarm_sound_default" msgid="4787646764557462649">"ડિફૉલ્ટ અલાર્મ સાઉન્ડ"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"રિંગટોન ઉમેરો"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"અલાર્મ ઉમેરો"</string>
     <string name="add_notification_text" msgid="4431129543300614788">"નોટિફિકેશન ઉમેરો"</string>
diff --git a/packages/SoundPicker/res/values-it/strings.xml b/packages/SoundPicker/res/values-it/strings.xml
index 20965d0..632cb41 100644
--- a/packages/SoundPicker/res/values-it/strings.xml
+++ b/packages/SoundPicker/res/values-it/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Suoneria predefinita"</string>
     <string name="notification_sound_default" msgid="8133121186242636840">"Suono di notifica predefinito"</string>
-    <string name="alarm_sound_default" msgid="4787646764557462649">"Suono sveglia predefinito"</string>
+    <string name="alarm_sound_default" msgid="4787646764557462649">"Suoneria sveglia predefinita"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Aggiungi suoneria"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Aggiungi sveglia"</string>
     <string name="add_notification_text" msgid="4431129543300614788">"Aggiungi notifica"</string>
diff --git a/packages/SoundPicker/res/values-kk/strings.xml b/packages/SoundPicker/res/values-kk/strings.xml
index ad6d0e0..8c4c169 100644
--- a/packages/SoundPicker/res/values-kk/strings.xml
+++ b/packages/SoundPicker/res/values-kk/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Әдепкі рингтон"</string>
     <string name="notification_sound_default" msgid="8133121186242636840">"Әдепкі хабарландыру дыбысы"</string>
-    <string name="alarm_sound_default" msgid="4787646764557462649">"Әдепкі дабыл дыбысы"</string>
+    <string name="alarm_sound_default" msgid="4787646764557462649">"Әдепкі оятқыш дыбысы"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Рингтон қосу"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Оятқыш енгізу"</string>
     <string name="add_notification_text" msgid="4431129543300614788">"Хабарландыру енгізу"</string>
diff --git a/packages/SoundPicker/res/values-mr/strings.xml b/packages/SoundPicker/res/values-mr/strings.xml
index eb55fc7..3ddb991 100644
--- a/packages/SoundPicker/res/values-mr/strings.xml
+++ b/packages/SoundPicker/res/values-mr/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"डीफॉल्ट रिंगटोन"</string>
     <string name="notification_sound_default" msgid="8133121186242636840">"डीफॉल्ट सूचना आवाज"</string>
-    <string name="alarm_sound_default" msgid="4787646764557462649">"डीफॉल्ट अलार्म ध्वनी"</string>
+    <string name="alarm_sound_default" msgid="4787646764557462649">"डीफॉल्ट अलार्म आवाज"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"रिंगटोन जोडा"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"अलार्म जोडा"</string>
     <string name="add_notification_text" msgid="4431129543300614788">"सूचना जोडा"</string>
diff --git a/packages/SoundPicker/res/values-ne/strings.xml b/packages/SoundPicker/res/values-ne/strings.xml
index 7dc7893..0a2bceb 100644
--- a/packages/SoundPicker/res/values-ne/strings.xml
+++ b/packages/SoundPicker/res/values-ne/strings.xml
@@ -16,9 +16,9 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="ringtone_default" msgid="798836092118824500">"पूर्वनिर्धारित रिङटोन"</string>
-    <string name="notification_sound_default" msgid="8133121186242636840">"सूचनाको पूर्वनिर्धारित ध्वनि"</string>
-    <string name="alarm_sound_default" msgid="4787646764557462649">"अलार्मका लागि पूर्वनिर्धारित ध्वनि"</string>
+    <string name="ringtone_default" msgid="798836092118824500">"डिफल्ट रिङटोन"</string>
+    <string name="notification_sound_default" msgid="8133121186242636840">"सूचनाको डिफल्ट साउन्ड"</string>
+    <string name="alarm_sound_default" msgid="4787646764557462649">"अलार्मको डिफल्ट साउन्ड"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"रिङटोन थप्नुहोस्"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"अलार्म थप्नुहोस्"</string>
     <string name="add_notification_text" msgid="4431129543300614788">"सूचना थप्नुहोस्"</string>
diff --git a/packages/SoundPicker/res/values-pa/strings.xml b/packages/SoundPicker/res/values-pa/strings.xml
index eb630c9..1e62f64 100644
--- a/packages/SoundPicker/res/values-pa/strings.xml
+++ b/packages/SoundPicker/res/values-pa/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਰਿੰਗਟੋਨ"</string>
     <string name="notification_sound_default" msgid="8133121186242636840">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਸੂਚਨਾ ਧੁਨੀ"</string>
-    <string name="alarm_sound_default" msgid="4787646764557462649">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਅਲਾਰਮ ਧੁਨੀ"</string>
+    <string name="alarm_sound_default" msgid="4787646764557462649">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਅਲਾਰਮ ਧੁਨੀ"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"ਰਿੰਗਟੋਨ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"ਅਲਾਰਮ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="add_notification_text" msgid="4431129543300614788">"ਸੂਚਨਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
diff --git a/packages/SoundPicker/res/values-vi/strings.xml b/packages/SoundPicker/res/values-vi/strings.xml
index bf5c33a..bed0e96 100644
--- a/packages/SoundPicker/res/values-vi/strings.xml
+++ b/packages/SoundPicker/res/values-vi/strings.xml
@@ -18,7 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="ringtone_default" msgid="798836092118824500">"Nhạc chuông mặc định"</string>
     <string name="notification_sound_default" msgid="8133121186242636840">"Âm thanh thông báo mặc định"</string>
-    <string name="alarm_sound_default" msgid="4787646764557462649">"Âm thanh báo thức mặc định"</string>
+    <string name="alarm_sound_default" msgid="4787646764557462649">"Âm thanh chuông báo mặc định"</string>
     <string name="add_ringtone_text" msgid="6642389991738337529">"Thêm nhạc chuông"</string>
     <string name="add_alarm_text" msgid="3545497316166999225">"Thêm báo thức"</string>
     <string name="add_notification_text" msgid="4431129543300614788">"Thêm thông báo"</string>
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index a834784..173e959 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -762,7 +762,7 @@
                   android:showForAllUsers="true"
                   android:finishOnTaskLaunch="true"
                   android:launchMode="singleInstance"
-                  android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboard|keyboardHidden"
+                  android:configChanges="screenSize|smallestScreenSize|screenLayout|keyboard|keyboardHidden"
                   android:visibleToInstantApps="true">
         </activity>
 
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 3363f8e..03d844a 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt
@@ -31,14 +31,16 @@
     companion object {
         const val ANIMATION_DURATION = 500L
         const val ANIMATION_DURATION_FADE_OUT_CONTENT = 183L
-        const val ANIMATION_DURATION_FADE_IN_WINDOW = 216L
-        const val ANIMATION_DELAY_FADE_IN_WINDOW = 166L
+        const val ANIMATION_DURATION_FADE_IN_WINDOW = 217L
+        const val ANIMATION_DELAY_FADE_IN_WINDOW = 167L
         private const val ANIMATION_DURATION_NAV_FADE_IN = 266L
         private const val ANIMATION_DURATION_NAV_FADE_OUT = 133L
         private const val ANIMATION_DELAY_NAV_FADE_IN =
                 ANIMATION_DURATION - ANIMATION_DURATION_NAV_FADE_IN
         private const val LAUNCH_TIMEOUT = 1000L
 
+        private val CONTENT_FADE_OUT_INTERPOLATOR = PathInterpolator(0f, 0f, 0.2f, 1f)
+        private val WINDOW_FADE_IN_INTERPOLATOR = PathInterpolator(0f, 0f, 0.6f, 1f)
         private val NAV_FADE_IN_INTERPOLATOR = PathInterpolator(0f, 0f, 0f, 1f)
         private val NAV_FADE_OUT_INTERPOLATOR = PathInterpolator(0.2f, 0f, 1f, 1f)
 
@@ -418,12 +420,12 @@
                 val contentAlphaProgress = getProgress(linearProgress, 0,
                         ANIMATION_DURATION_FADE_OUT_CONTENT)
                 state.contentAlpha =
-                        1 - Interpolators.ALPHA_OUT.getInterpolation(contentAlphaProgress)
+                        1 - CONTENT_FADE_OUT_INTERPOLATOR.getInterpolation(contentAlphaProgress)
 
                 val backgroundAlphaProgress = getProgress(linearProgress,
                         ANIMATION_DELAY_FADE_IN_WINDOW, ANIMATION_DURATION_FADE_IN_WINDOW)
                 state.backgroundAlpha =
-                        1 - Interpolators.ALPHA_IN.getInterpolation(backgroundAlphaProgress)
+                        1 - WINDOW_FADE_IN_INTERPOLATOR.getInterpolation(backgroundAlphaProgress)
 
                 applyStateToWindow(window, state)
                 navigationBar?.let { applyStateToNavigationBar(it, state, linearProgress) }
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewLaunchAnimatorController.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewLaunchAnimatorController.kt
index 01ec447..3da4521 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewLaunchAnimatorController.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewLaunchAnimatorController.kt
@@ -9,6 +9,7 @@
 import android.graphics.Rect
 import android.graphics.drawable.Drawable
 import android.graphics.drawable.GradientDrawable
+import android.graphics.drawable.InsetDrawable
 import android.graphics.drawable.LayerDrawable
 import android.view.GhostView
 import android.view.View
@@ -186,6 +187,10 @@
                 return drawable
             }
 
+            if (drawable is InsetDrawable) {
+                return drawable.drawable?.let { findGradientDrawable(it) }
+            }
+
             if (drawable is LayerDrawable) {
                 for (i in 0 until drawable.numberOfLayers) {
                     val maybeGradient = drawable.getDrawable(i)
@@ -255,6 +260,11 @@
         }
 
         private fun setXfermode(background: Drawable, mode: PorterDuffXfermode?) {
+            if (background is InsetDrawable) {
+                background.drawable?.let { setXfermode(it, mode) }
+                return
+            }
+
             if (background !is LayerDrawable) {
                 background.setXfermode(mode)
                 return
@@ -323,6 +333,11 @@
                 return
             }
 
+            if (drawable is InsetDrawable) {
+                drawable.drawable?.let { applyBackgroundRadii(it, radii) }
+                return
+            }
+
             if (drawable !is LayerDrawable) {
                 return
             }
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/ActivityStarter.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/ActivityStarter.java
index 00bea8d..47a373e 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/ActivityStarter.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/ActivityStarter.java
@@ -60,6 +60,8 @@
      */
     void startActivity(Intent intent, boolean onlyProvisioned, boolean dismissShade, int flags);
     void startActivity(Intent intent, boolean dismissShade);
+    void startActivity(Intent intent, boolean dismissShade,
+            @Nullable ActivityLaunchAnimator.Controller animationController);
     void startActivity(Intent intent, boolean onlyProvisioned, boolean dismissShade);
     void startActivity(Intent intent, boolean dismissShade, Callback callback);
     void postStartActivityDismissingKeyguard(Intent intent, int delay);
diff --git a/packages/SystemUI/res-keyguard/values-eu/strings.xml b/packages/SystemUI/res-keyguard/values-eu/strings.xml
index 93fe516..9f00e66 100644
--- a/packages/SystemUI/res-keyguard/values-eu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-eu/strings.xml
@@ -106,7 +106,7 @@
     <string name="kg_prompt_reason_restart_pin" msgid="1587671566498057656">"PIN kodea idatzi beharko duzu gailua berrabiarazten denean"</string>
     <string name="kg_prompt_reason_restart_password" msgid="8061279087240952002">"Pasahitza idatzi beharko duzu gailua berrabiarazten denean"</string>
     <string name="kg_prompt_reason_timeout_pattern" msgid="9170360502528959889">"Eredua behar da gailua babestuago izateko"</string>
-    <string name="kg_prompt_reason_timeout_pin" msgid="5945186097160029201">"PIN kodea behar da gailua babestuago izateko"</string>
+    <string name="kg_prompt_reason_timeout_pin" msgid="5945186097160029201">"PINa behar da gailua babestuago izateko"</string>
     <string name="kg_prompt_reason_timeout_password" msgid="2258263949430384278">"Pasahitza behar da gailua babestuago izateko"</string>
     <string name="kg_prompt_reason_switch_profiles_pattern" msgid="1922016914701991230">"Eredua marraztu beharko duzu profilez aldatzen baduzu"</string>
     <string name="kg_prompt_reason_switch_profiles_pin" msgid="6490434826361055400">"PIN kodea idatzi beharko duzu profilez aldatzen baduzu"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml
index 6f8a108..707488d 100644
--- a/packages/SystemUI/res-keyguard/values-ne/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml
@@ -51,7 +51,7 @@
     <string name="keyguard_sim_puk_locked_message" msgid="6253830777745450550">"SIM कार्ड PUK-लक भएको छ।"</string>
     <string name="keyguard_sim_unlock_progress_dialog_message" msgid="2394023844117630429">"SIM कार्ड अनलक गरिँदै..."</string>
     <string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN क्षेत्र"</string>
-    <string name="keyguard_accessibility_password" msgid="3524161948484801450">"यन्त्रको पासवर्ड"</string>
+    <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="keyguard_accessibility_next_alarm" msgid="4492876946798984630">"अर्को अलार्म <xliff:g id="ALARM">%1$s</xliff:g> का लागि सेट गरियो"</string>
@@ -71,7 +71,7 @@
     <string name="kg_pattern_instructions" msgid="5376036737065051736">"आफ्नो ढाँचा कोर्नुहोस्"</string>
     <string name="kg_sim_pin_instructions" msgid="1942424305184242951">"SIM को PIN प्रविष्टि गर्नुहोस्।"</string>
     <string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" को SIM को PIN प्रविष्टि गर्नुहोस्।"</string>
-    <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g> मोबाइल सेवा बिना यन्त्रको प्रयोग गर्न eSIM लाई असक्षम पार्नुहोस्।"</string>
+    <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g> मोबाइल सेवा बिना डिभाइसको प्रयोग गर्न eSIM लाई असक्षम पार्नुहोस्।"</string>
     <string name="kg_pin_instructions" msgid="822353548385014361">"PIN प्रविष्टि गर्नुहोस्"</string>
     <string name="kg_password_instructions" msgid="324455062831719903">"पासवर्ड प्रविष्टि गर्नुहोस्"</string>
     <string name="kg_puk_enter_puk_hint" msgid="3005288372875367017">"SIM कार्ड अहिले असक्षम छ। सुचारु गर्नको लागि PUK कोड प्रविष्टि गर्नुहोस्।  विवरणको लागि सेवा प्रदायकलाई सम्पर्क गर्नुहोस्।"</string>
@@ -85,7 +85,7 @@
     <string name="kg_login_too_many_attempts" msgid="4519957179182578690">"अत्यन्त धेरै ढाँचा कोर्ने प्रयासहरू"</string>
     <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"तपाईंले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत तरिकाले आफ्नो PIN प्रविष्ट गर्नुभएको छ। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
     <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="190984061975729494">"तपाईंले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक आफ्नो गलत पासवर्ड  प्रविष्ट गर्नुभएको छ। \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
-    <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="4252405904570284368">"तपाईंले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत तरिकाले आफ्नो अनलक ढाँचा कोर्नुभएको छ। \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> सेकेन्डमा फेरि कोसिस गर्नुहोस्।"</string>
+    <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="4252405904570284368">"तपाईंले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत तरिकाले आफ्नो अनलक प्याटर्न कोर्नुभएको छ। \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> सेकेन्डमा फेरि कोसिस गर्नुहोस्।"</string>
     <string name="kg_password_wrong_pin_code_pukked" msgid="8047350661459040581">"SIM को PIN कोड गलत छ। तपाईंले अब आफ्नो यन्त्र खोल्न आफ्नो सेवा प्रदायकलाई सम्पर्क गर्नै पर्ने हुन्छ।"</string>
     <plurals name="kg_password_wrong_pin_code" formatted="false" msgid="7030584350995485026">
       <item quantity="other">SIM को PIN कोड गलत छ, तपाईं अझै <xliff:g id="NUMBER_1">%d</xliff:g> पटक प्रयास गर्न सक्नुहुन्छ।</item>
@@ -135,7 +135,7 @@
       <item quantity="other">SIM लाई असक्षम पारिएको छ। जारी राख्न PUK कोड प्रविष्टि गर्नुहोस्। तपाईंसँग <xliff:g id="_NUMBER_1">%d</xliff:g> प्रयासहरू बाँकी छन्, त्यसपछि SIM सदाका लागि प्रयोग गर्न नमिल्ने हुन्छ। विवरणहरूका लागि सेवा प्रदायकलाई सम्पर्क गर्नुहोस्।</item>
       <item quantity="one">SIM लाई असक्षम पारिएको छ। जारी राख्न PUK कोड प्रविष्टि गर्नुहोस्। तपाईंसँग <xliff:g id="_NUMBER_0">%d</xliff:g> प्रयास बाँकी छ, त्यसपछि SIM सदाका लागि प्रयोग गर्न नमिल्ने हुन्छ। विवरणहरूका लागि सेवा प्रदायकलाई सम्पर्क गर्नुहोस्।</item>
     </plurals>
-    <string name="clock_title_default" msgid="6342735240617459864">"पूर्वनिर्धारित"</string>
+    <string name="clock_title_default" msgid="6342735240617459864">"डिफल्ट"</string>
     <string name="clock_title_bubble" msgid="2204559396790593213">"बबल"</string>
     <string name="clock_title_analog" msgid="8409262532900918273">"एनालग"</string>
 </resources>
diff --git a/packages/SystemUI/res-keyguard/values/styles.xml b/packages/SystemUI/res-keyguard/values/styles.xml
index 0fef9f1..72b027a 100644
--- a/packages/SystemUI/res-keyguard/values/styles.xml
+++ b/packages/SystemUI/res-keyguard/values/styles.xml
@@ -17,7 +17,7 @@
 */
 -->
 
-<resources xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+<resources>
     <!-- Keyguard PIN pad styles -->
     <style name="Keyguard.TextView" parent="@android:style/Widget.DeviceDefault.TextView">
         <item name="android:textSize">@dimen/kg_status_line_font_size</item>
@@ -32,7 +32,9 @@
         <item name="android:stateListAnimator">@null</item>
     </style>
     <style name="NumPadKey" parent="Theme.SystemUI">
-      <item name="android:colorControlNormal">?androidprv:attr/colorSurface</item>
+      <!-- Studio can't directly reference ?androidprv:attr/colorSurface here, so this value
+           is resolved in {@link NumPadAnimator}. -->
+      <item name="android:colorControlNormal">@null</item>
       <item name="android:colorControlHighlight">?android:attr/colorAccent</item>
       <item name="android:background">@drawable/num_pad_key_background</item>
     </style>
diff --git a/packages/SystemUI/res-product/values-ne/strings.xml b/packages/SystemUI/res-product/values-ne/strings.xml
index 148cb51..1d368f4 100644
--- a/packages/SystemUI/res-product/values-ne/strings.xml
+++ b/packages/SystemUI/res-product/values-ne/strings.xml
@@ -22,7 +22,7 @@
     <string name="dock_alignment_slow_charging" product="default" msgid="6997633396534416792">"अझ छिटो चार्ज गर्न फोनलाई फेरि मिलाउनुहोस्"</string>
     <string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"तारविनै चार्ज गर्न फोनलाई फेरि मिलाउनुहोस्"</string>
     <string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android टिभी यन्त्र चाँडै निष्क्रिय हुने छ; सक्रिय राख्न कुनै बटन थिच्नुहोस्।"</string>
-    <string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"यो यन्त्र चाँडै निष्क्रिय हुने छ; सक्रिय राख्न थिच्नुहोस्।"</string>
+    <string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"यो डिभाइस चाँडै निष्क्रिय हुने छ; सक्रिय राख्न थिच्नुहोस्।"</string>
     <string name="keyguard_missing_sim_message" product="tablet" msgid="5018086454277963787">"ट्याब्लेटमा SIM कार्ड छैन।"</string>
     <string name="keyguard_missing_sim_message" product="default" msgid="7053347843877341391">"फोनमा SIM कार्ड छैन।"</string>
     <string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN कोडहरू मिलेनन्"</string>
diff --git a/packages/SystemUI/res/drawable/ic_brightness.xml b/packages/SystemUI/res/drawable/ic_brightness.xml
index f443332..842af26 100644
--- a/packages/SystemUI/res/drawable/ic_brightness.xml
+++ b/packages/SystemUI/res/drawable/ic_brightness.xml
@@ -1,29 +1,23 @@
 <!--
-Copyright (C) 2020 The Android Open Source Project
+  ~ 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.
+  -->
 
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-
-    <path
-        android:pathData="M18,14.48V18h-3.52L12,20.48L9.52,18H6v-3.52L3.52,12L6,9.52V6h3.52L12,3.52L14.48,6H18v3.52L20.48,12L18,14.48z"
-    />
-
-    <path
-        android:pathData=" M20,8.69 V4h-4.69L12,0.69L8.69,4H4v4.69L0.69,12L4,15.31V20h4.69L12,23.31L15.31,20H20v-4.69L23.31,12L20,8.69z M18,14.48V18h-3.52L12,20.48L9.52,18H6v-3.52L3.52,12L6,9.52V6h3.52L12,3.52L14.48,6H18v3.52L20.48,12L18,14.48z M12,7c-2.76,0 -5,2.24 -5,5s2.24,5 5,5s5,-2.24 5,-5S14.76,7 12,7z"
-        android:fillColor="#FFFFFF" />
-</vector>
+<level-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Levels in drawables go from 0 to 10000 -->
+    <!-- "One third" of the range per icon -->
+    <item android:maxLevel="3333" android:drawable="@drawable/ic_brightness_low" />
+    <item android:maxLevel="6666" android:drawable="@drawable/ic_brightness_medium" />
+    <item android:maxLevel="10000" android:drawable="@drawable/ic_brightness_full" />
+</level-list>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_brightness_thumb.xml b/packages/SystemUI/res/drawable/ic_brightness_full.xml
similarity index 86%
rename from packages/SystemUI/res/drawable/ic_brightness_thumb.xml
rename to packages/SystemUI/res/drawable/ic_brightness_full.xml
index d721988..f443332 100644
--- a/packages/SystemUI/res/drawable/ic_brightness_thumb.xml
+++ b/packages/SystemUI/res/drawable/ic_brightness_full.xml
@@ -1,5 +1,5 @@
 <!--
-Copyright (C) 2017 The Android Open Source Project
+Copyright (C) 2020 The Android Open Source Project
 
    Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -21,9 +21,9 @@
 
     <path
         android:pathData="M18,14.48V18h-3.52L12,20.48L9.52,18H6v-3.52L3.52,12L6,9.52V6h3.52L12,3.52L14.48,6H18v3.52L20.48,12L18,14.48z"
-        android:fillColor="?android:attr/colorBackgroundFloating" />
+    />
 
     <path
         android:pathData=" M20,8.69 V4h-4.69L12,0.69L8.69,4H4v4.69L0.69,12L4,15.31V20h4.69L12,23.31L15.31,20H20v-4.69L23.31,12L20,8.69z M18,14.48V18h-3.52L12,20.48L9.52,18H6v-3.52L3.52,12L6,9.52V6h3.52L12,3.52L14.48,6H18v3.52L20.48,12L18,14.48z M12,7c-2.76,0 -5,2.24 -5,5s2.24,5 5,5s5,-2.24 5,-5S14.76,7 12,7z"
-        android:fillColor="?android:attr/colorControlActivated" />
+        android:fillColor="#FFFFFF" />
 </vector>
diff --git a/packages/SystemUI/res/drawable/ic_brightness_low.xml b/packages/SystemUI/res/drawable/ic_brightness_low.xml
new file mode 100644
index 0000000..b463556
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_brightness_low.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,8.69L20,4h-4.69L12,0.69 8.69,4L4,4v4.69L0.69,12 4,15.31L4,20h4.69L12,23.31 15.31,20L20,20v-4.69L23.31,12 20,8.69zM18,14.48L18,18h-3.52L12,20.48 9.52,18L6,18v-3.52L3.52,12 6,9.52L6,6h3.52L12,3.52 14.48,6L18,6v3.52L20.48,12 18,14.48zM12,9c1.65,0 3,1.35 3,3s-1.35,3 -3,3 -3,-1.35 -3,-3 1.35,-3 3,-3m0,-2c-2.76,0 -5,2.24 -5,5s2.24,5 5,5 5,-2.24 5,-5 -2.24,-5 -5,-5z"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_brightness_medium.xml b/packages/SystemUI/res/drawable/ic_brightness_medium.xml
new file mode 100644
index 0000000..80acc4d
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_brightness_medium.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M20,8.69L20,4h-4.69L12,0.69 8.69,4L4,4v4.69L0.69,12 4,15.31L4,20h4.69L12,23.31 15.31,20L20,20v-4.69L23.31,12 20,8.69zM18,14.48L18,18h-3.52L12,20.48 9.52,18L6,18v-3.52L3.52,12 6,9.52L6,6h3.52L12,3.52 14.48,6L18,6v3.52L20.48,12 18,14.48zM12,17c2.76,0 5,-2.24 5,-5s-2.24,-5 -5,-5v10z"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable/qs_footer_action_chip_background.xml b/packages/SystemUI/res/drawable/qs_footer_action_chip_background.xml
index 6022206..77b9871 100644
--- a/packages/SystemUI/res/drawable/qs_footer_action_chip_background.xml
+++ b/packages/SystemUI/res/drawable/qs_footer_action_chip_background.xml
@@ -23,13 +23,18 @@
         <item android:id="@android:id/mask">
             <shape android:shape="rectangle">
                 <solid android:color="@android:color/white"/>
+                <corners android:radius="@dimen/screenshot_button_corner_radius"/>
+            </shape>
+        </item>
+        <item>
+            <shape android:shape="rectangle">
+                <solid android:color="?attr/underSurfaceColor"/>
                 <corners android:radius="@dimen/qs_footer_action_corner_radius"/>
             </shape>
         </item>
         <item>
             <shape android:shape="rectangle">
-            <stroke android:width="1dp" android:color="@color/qs_footer_action_border"/>
-                <solid android:color="@android:color/transparent"/>
+                <stroke android:width="1dp" android:color="@color/qs_footer_action_border"/>
                 <corners android:radius="@dimen/qs_footer_action_corner_radius"/>
             </shape>
         </item>
diff --git a/packages/SystemUI/res/drawable/rounded_rect_background.xml b/packages/SystemUI/res/drawable/rounded_rect_background.xml
new file mode 100644
index 0000000..83b0f71
--- /dev/null
+++ b/packages/SystemUI/res/drawable/rounded_rect_background.xml
@@ -0,0 +1,22 @@
+<!--
+  ~ 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.
+  -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <size android:height="48dp"
+        android:width="48dp" />
+    <solid android:color="@android:color/transparent" />
+    <corners android:radius="4dp"></corners>
+</shape>
diff --git a/packages/SystemUI/res/drawable/system_animation_ongoing_dot.xml b/packages/SystemUI/res/drawable/system_animation_ongoing_dot.xml
new file mode 100644
index 0000000..4e9d380
--- /dev/null
+++ b/packages/SystemUI/res/drawable/system_animation_ongoing_dot.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<!-- dot drawable for ongoing system privacy events -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid
+        android:color="@color/privacy_circle"/>
+    <size
+        android:width="6dp"
+        android:height="6dp"
+        />
+</shape>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/thumbnail_delete_btn_bg.xml b/packages/SystemUI/res/drawable/thumbnail_delete_btn_bg.xml
new file mode 100644
index 0000000..ea7d45d
--- /dev/null
+++ b/packages/SystemUI/res/drawable/thumbnail_delete_btn_bg.xml
@@ -0,0 +1,23 @@
+<!--
+  ~ 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.
+  -->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+    android:shape="oval">
+    <size android:height="24dp"
+        android:width="24dp" />
+    <solid android:color="#FFFFFF" />
+</shape>
diff --git a/packages/SystemUI/res/layout/long_screenshot.xml b/packages/SystemUI/res/layout/long_screenshot.xml
index fb783a7..ceba4e3 100644
--- a/packages/SystemUI/res/layout/long_screenshot.xml
+++ b/packages/SystemUI/res/layout/long_screenshot.xml
@@ -19,6 +19,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:background="?android:colorBackgroundFloating"
+    android:id="@+id/root"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
@@ -119,4 +120,14 @@
         app:layout_constraintRight_toRightOf="parent"
     />
 
+    <ImageView
+        android:id="@+id/transition"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        app:layout_constraintTop_toBottomOf="@id/save"
+        app:layout_constraintStart_toStartOf="parent"
+        android:scaleType="matrix"
+        android:visibility="gone"
+        />
+
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/packages/SystemUI/res/layout/media_output_list_item.xml b/packages/SystemUI/res/layout/media_output_list_item.xml
index c98c3a0..b563633 100644
--- a/packages/SystemUI/res/layout/media_output_list_item.xml
+++ b/packages/SystemUI/res/layout/media_output_list_item.xml
@@ -28,7 +28,7 @@
         <FrameLayout
             android:layout_width="36dp"
             android:layout_height="36dp"
-            android:layout_gravity="center_vertical"
+            android:layout_gravity="center_vertical|start"
             android:layout_marginStart="16dp">
             <ImageView
                 android:id="@+id/title_icon"
@@ -41,7 +41,7 @@
             android:id="@+id/title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
+            android:layout_gravity="center_vertical|start"
             android:layout_marginStart="68dp"
             android:ellipsize="end"
             android:maxLines="1"
diff --git a/packages/SystemUI/res/layout/people_tile_medium_empty.xml b/packages/SystemUI/res/layout/people_tile_medium_empty.xml
index 7d9cbb9..4236493 100644
--- a/packages/SystemUI/res/layout/people_tile_medium_empty.xml
+++ b/packages/SystemUI/res/layout/people_tile_medium_empty.xml
@@ -14,7 +14,7 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:theme="@android:style/Theme.DeviceDefault.DayNight"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -22,57 +22,49 @@
     <LinearLayout
         android:background="@drawable/people_space_tile_view_card"
         android:id="@+id/item"
-        android:orientation="vertical"
+        android:gravity="center"
+        android:paddingHorizontal="16dp"
+        android:orientation="horizontal"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
-
+        <ImageView
+            android:id="@+id/person_icon"
+            android:layout_marginTop="-2dp"
+            android:layout_marginStart="-2dp"
+            android:layout_width="64dp"
+            android:layout_height="64dp" />
+        <ImageView
+            android:id="@+id/availability"
+            android:layout_marginStart="-2dp"
+            android:layout_width="10dp"
+            android:layout_height="10dp"
+            android:background="@drawable/circle_green_10dp" />
         <LinearLayout
-            android:orientation="horizontal"
-            android:gravity="center"
-            android:layout_gravity="center"
-            android:paddingVertical="2dp"
-            android:paddingHorizontal="8dp"
+            android:orientation="vertical"
+            android:paddingStart="6dp"
+            android:gravity="top"
             android:layout_width="match_parent"
-            android:layout_height="match_parent">
-            <ImageView
-                android:id="@+id/person_icon"
-                android:layout_width="64dp"
-                android:layout_height="64dp"/>
-            <ImageView
-                android:id="@+id/availability"
-                android:layout_marginStart="-2dp"
-                android:layout_width="10dp"
-                android:layout_height="10dp"
-                android:background="@drawable/circle_green_10dp"/>
-            <LinearLayout
-                android:orientation="vertical"
-                android:paddingStart="6dp"
-                android:gravity="top"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <TextView
-                    android:id="@+id/name"
-                    android:text="@string/empty_user_name"
-                    android:textAppearance="@*android:style/TextAppearance.DeviceDefault.ListItem"
-                    android:textColor="?android:attr/textColorPrimary"
-                    android:textSize="14sp"
-                    android:maxLines="1"
-                    android:ellipsize="end"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"/>
-
-                <TextView
-                    android:id="@+id/last_interaction"
-                    android:text="@string/empty_status"
-                    android:textColor="?android:attr/textColorSecondary"
-                    android:textAppearance="@*android:style/TextAppearance.DeviceDefault.ListItem"
-                    android:textSize="12sp"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:maxLines="3"
-                    android:ellipsize="end"/>
-            </LinearLayout>
+            android:layout_height="wrap_content">
+            <TextView
+                android:id="@+id/name"
+                android:text="@string/empty_user_name"
+                android:textAppearance="@*android:style/TextAppearance.DeviceDefault.ListItem"
+                android:textColor="?android:attr/textColorPrimary"
+                android:textSize="14sp"
+                android:maxLines="1"
+                android:ellipsize="end"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content" />
+            <TextView
+                android:id="@+id/last_interaction"
+                android:text="@string/empty_status"
+                android:textColor="?android:attr/textColorSecondary"
+                android:textAppearance="@*android:style/TextAppearance.DeviceDefault.ListItem"
+                android:textSize="12sp"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:maxLines="3"
+                android:ellipsize="end" />
         </LinearLayout>
     </LinearLayout>
-</LinearLayout>
\ No newline at end of file
+</FrameLayout>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/people_tile_medium_with_content.xml b/packages/SystemUI/res/layout/people_tile_medium_with_content.xml
index c9e4945..7070660 100644
--- a/packages/SystemUI/res/layout/people_tile_medium_with_content.xml
+++ b/packages/SystemUI/res/layout/people_tile_medium_with_content.xml
@@ -97,7 +97,7 @@
             android:gravity="bottom"
             android:layout_gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingTop="4dp"
+            android:paddingTop="2dp"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:clipToOutline="true">
diff --git a/packages/SystemUI/res/layout/people_tile_small.xml b/packages/SystemUI/res/layout/people_tile_small.xml
index 34aa8e4..7c28fc1 100644
--- a/packages/SystemUI/res/layout/people_tile_small.xml
+++ b/packages/SystemUI/res/layout/people_tile_small.xml
@@ -21,7 +21,7 @@
     <LinearLayout
         android:id="@+id/item"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
+        android:layout_height="match_parent"
         android:layout_gravity="center"
         android:background="@drawable/people_space_tile_view_card"
         android:orientation="vertical"
@@ -42,12 +42,12 @@
             android:tint="?android:attr/colorAccent"
             android:layout_gravity="center"
             android:layout_width="18dp"
-            android:layout_height="22dp"
-            android:layout_weight="1" />
+            android:layout_height="22dp" />
 
         <TextView
             android:id="@+id/messages_count"
             android:layout_gravity="center"
+            android:gravity="center"
             android:paddingStart="8dp"
             android:paddingEnd="8dp"
             android:textAppearance="@*android:style/TextAppearance.DeviceDefault.ListItem"
@@ -59,7 +59,6 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:visibility="gone"
-            android:layout_weight="1"
             />
 
         <TextView
@@ -67,7 +66,6 @@
             android:layout_gravity="center"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_weight="1"
             android:ellipsize="end"
             android:maxLines="1"
             android:paddingHorizontal="4dp"
diff --git a/packages/SystemUI/res/layout/privacy_dialog_item.xml b/packages/SystemUI/res/layout/privacy_dialog_item.xml
index 0c8ed9f..b91fb29c 100644
--- a/packages/SystemUI/res/layout/privacy_dialog_item.xml
+++ b/packages/SystemUI/res/layout/privacy_dialog_item.xml
@@ -31,7 +31,6 @@
         android:layout_width="@dimen/ongoing_appops_dialog_circle_size"
         android:layout_height="@dimen/ongoing_appops_dialog_circle_size"
         android:layout_gravity="center_vertical"
-        android:importantForAccessibility="no"
     />
 
     <TextView
diff --git a/packages/SystemUI/res/layout/qs_customize_tile_divider.xml b/packages/SystemUI/res/layout/qs_customize_tile_divider.xml
index 0d932ac..19c2fc8 100644
--- a/packages/SystemUI/res/layout/qs_customize_tile_divider.xml
+++ b/packages/SystemUI/res/layout/qs_customize_tile_divider.xml
@@ -18,8 +18,5 @@
 <View
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_marginStart="16dp"
-    android:layout_marginEnd="16dp"
-    android:background="?android:attr/listDivider"
+    android:layout_height="32dp"
     android:importantForAccessibility="no" />
diff --git a/packages/SystemUI/res/layout/qs_detail.xml b/packages/SystemUI/res/layout/qs_detail.xml
index 59e1a75..f056402 100644
--- a/packages/SystemUI/res/layout/qs_detail.xml
+++ b/packages/SystemUI/res/layout/qs_detail.xml
@@ -23,6 +23,7 @@
     android:clickable="true"
     android:orientation="vertical"
     android:layout_marginTop="@*android:dimen/quick_qs_offset_height"
+    android:layout_marginBottom="@dimen/qs_container_bottom_padding"
     android:paddingBottom="8dp"
     android:visibility="invisible"
     android:elevation="4dp"
diff --git a/packages/SystemUI/res/layout/qs_panel.xml b/packages/SystemUI/res/layout/qs_panel.xml
index 3d2a621..30e52e9 100644
--- a/packages/SystemUI/res/layout/qs_panel.xml
+++ b/packages/SystemUI/res/layout/qs_panel.xml
@@ -32,6 +32,7 @@
         android:id="@+id/expanded_qs_scroll_view"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:paddingBottom="@dimen/qs_container_bottom_padding"
         android:elevation="4dp"
         android:importantForAccessibility="no"
         android:scrollbars="none"
diff --git a/packages/SystemUI/res/layout/remote_input.xml b/packages/SystemUI/res/layout/remote_input.xml
index ae3adb8..a909d0d 100644
--- a/packages/SystemUI/res/layout/remote_input.xml
+++ b/packages/SystemUI/res/layout/remote_input.xml
@@ -22,29 +22,75 @@
         android:id="@+id/remote_input"
         android:layout_height="match_parent"
         android:layout_width="match_parent">
+    <LinearLayout
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:id="@+id/remote_input_content"
+        android:orientation="vertical"
+        android:clipToPadding="false"
+        android:layout_marginEnd="20dp"
+        android:layout_marginStart="20dp"
+        android:layout_marginTop="5dp"
+        android:layout_marginBottom="16dp"
+        android:layout_weight="1">
+        <FrameLayout
+            android:id="@+id/remote_input_content_container"
+            android:layout_marginTop="-6dp"
+            android:layout_height="60dp"
+            android:layout_width="60dp"
+            android:layout_marginStart="4dp"
+            android:layout_marginBottom="12dp"
+            android:visibility="gone"
+            android:layout_gravity="center_vertical">
+            <ImageView
+                android:id="@+id/remote_input_attachment_image"
+                android:layout_width="48dp"
+                android:layout_height="48dp"
+                android:layout_gravity="start|bottom"
+                android:clipToOutline="true"
+                android:background="@drawable/rounded_rect_background"
+                android:scaleType="centerCrop" />
+            <ImageView
+                android:id="@+id/remote_input_delete_bg"
+                android:paddingStart="24dp"
+                android:paddingBottom="24dp"
+                android:layout_width="48dp"
+                android:layout_height="48dp"
+                android:layout_gravity="end|top"
+                android:src="@drawable/thumbnail_delete_btn_bg"/>
+            <ImageView
+                android:id="@+id/remote_input_delete"
+                android:paddingTop="3dp"
+                android:paddingEnd="3dp"
+                android:paddingStart="27dp"
+                android:paddingBottom="27dp"
+                android:layout_width="48dp"
+                android:layout_height="48dp"
+                android:layout_gravity="end|top"
+                android:src="@drawable/ic_close"
+                android:contentDescription="@string/notif_inline_reply_remove_attachment_description"/>
+        </FrameLayout>
 
-    <view class="com.android.systemui.statusbar.policy.RemoteInputView$RemoteEditText"
-            android:id="@+id/remote_input_text"
-            android:layout_height="wrap_content"
-            android:layout_width="0dp"
-            android:layout_weight="1"
-            android:paddingTop="2dp"
-            android:paddingStart="16dp"
-            android:paddingEnd="12dp"
-            android:layout_marginRight="20dp"
-            android:layout_marginLeft="20dp"
-            android:layout_marginTop="5dp"
-            android:layout_marginBottom="16dp"
-            android:layout_gravity="start|center_vertical"
-            android:textAppearance="?android:attr/textAppearance"
-            android:textColor="@color/remote_input_text"
-            android:textColorHint="@color/remote_input_hint"
-            android:textSize="16sp"
-            android:background="@null"
-            android:maxLines="4"
-            android:ellipsize="start"
-            android:inputType="textShortMessage|textMultiLine|textAutoCorrect|textCapSentences"
-            android:imeOptions="actionSend|flagNoExtractUi|flagNoFullscreen" />
+        <view class="com.android.systemui.statusbar.policy.RemoteInputView$RemoteEditText"
+                android:id="@+id/remote_input_text"
+                android:layout_height="wrap_content"
+                android:layout_width="match_parent"
+                android:layout_weight="1"
+                android:paddingTop="2dp"
+                android:paddingStart="4dp"
+                android:paddingBottom="4dp"
+                android:paddingEnd="12dp"
+                android:layout_gravity="start|center_vertical"
+                android:textAppearance="?android:attr/textAppearance"
+                android:textColor="@color/remote_input_text"
+                android:textColorHint="@color/remote_input_hint"
+                android:textSize="16sp"
+                android:background="@null"
+                android:maxLines="4"
+                android:ellipsize="start"
+                android:inputType="textShortMessage|textMultiLine|textAutoCorrect|textCapSentences"
+                android:imeOptions="actionSend|flagNoExtractUi|flagNoFullscreen" />
+    </LinearLayout>
 
     <FrameLayout
             android:layout_width="wrap_content"
@@ -52,12 +98,10 @@
             android:layout_gravity="center_vertical">
 
         <ImageButton
-        android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                android:layout_gravity="center"
-                android:paddingLeft="10dp"
-                android:layout_marginBottom="12dp"
-                android:layout_marginEnd="12dp"
+                android:layout_width="48dp"
+                android:layout_height="48dp"
+                android:layout_gravity="center_horizontal|bottom"
+                android:layout_marginBottom="22dp"
                 android:id="@+id/remote_input_send"
                 android:src="@drawable/ic_send"
                 android:contentDescription="@*android:string/ime_action_send"
@@ -69,8 +113,8 @@
                 android:id="@+id/remote_input_progress"
                 android:layout_width="24dp"
                 android:layout_height="24dp"
-                android:layout_marginBottom="12dp"
-                android:layout_gravity="center_vertical"
+                android:layout_marginBottom="34dp"
+                android:layout_gravity="center_horizontal|bottom"
                 android:visibility="invisible"
                 android:indeterminate="true"
                 style="?android:attr/progressBarStyleSmall" />
diff --git a/packages/SystemUI/res/layout/rounded_corners.xml b/packages/SystemUI/res/layout/rounded_corners.xml
index db892d7..04fe918 100644
--- a/packages/SystemUI/res/layout/rounded_corners.xml
+++ b/packages/SystemUI/res/layout/rounded_corners.xml
@@ -14,6 +14,8 @@
 ** See the License for the specific language governing permissions and
 ** limitations under the License.
 -->
+
+<!-- TODO: remove this in favor of requiring top and bottom layouts -->
 <com.android.systemui.RegionInterceptingFrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/rounded_corners_default"
@@ -26,6 +28,25 @@
         android:layout_gravity="left|top"
         android:tint="#ff000000"
         android:src="@drawable/rounded"/>
+
+    <FrameLayout
+        android:id="@+id/privacy_dot_left_container"
+        android:layout_height="@dimen/status_bar_height"
+        android:layout_width="wrap_content"
+        android:layout_marginTop="@dimen/status_bar_padding_top"
+        android:layout_marginLeft="8dp"
+        android:layout_gravity="left|top"
+        android:visibility="invisible" >
+        <ImageView
+            android:id="@+id/privacy_dot_left"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center"
+            android:src="@drawable/system_animation_ongoing_dot"
+            android:visibility="visible" />
+    </FrameLayout>
+
+
     <ImageView
         android:id="@+id/right"
         android:layout_width="12dp"
@@ -33,4 +54,22 @@
         android:tint="#ff000000"
         android:layout_gravity="right|bottom"
         android:src="@drawable/rounded"/>
+    <FrameLayout
+        android:id="@+id/privacy_dot_right_container"
+        android:layout_height="@dimen/status_bar_height"
+        android:layout_width="wrap_content"
+        android:layout_marginTop="@dimen/status_bar_padding_top"
+        android:layout_marginRight="8dp"
+        android:layout_gravity="right|top"
+        android:visibility="invisible" >
+        <ImageView
+            android:id="@+id/privacy_dot_right"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center"
+            android:src="@drawable/system_animation_ongoing_dot"
+            android:visibility="visible" />
+
+    </FrameLayout>
+
 </com.android.systemui.RegionInterceptingFrameLayout>
diff --git a/packages/SystemUI/res/layout/rounded_corners_bottom.xml b/packages/SystemUI/res/layout/rounded_corners_bottom.xml
index dde1248..720e47b 100644
--- a/packages/SystemUI/res/layout/rounded_corners_bottom.xml
+++ b/packages/SystemUI/res/layout/rounded_corners_bottom.xml
@@ -26,6 +26,24 @@
         android:layout_gravity="left|bottom"
         android:tint="#ff000000"
         android:src="@drawable/rounded_corner_bottom"/>
+
+    <FrameLayout
+        android:id="@+id/privacy_dot_left_container"
+        android:layout_height="@dimen/status_bar_height"
+        android:layout_width="wrap_content"
+        android:layout_marginTop="@dimen/status_bar_padding_top"
+        android:layout_marginLeft="0dp"
+        android:layout_gravity="left|bottom"
+        android:visibility="invisible" >
+        <ImageView
+            android:id="@+id/privacy_dot"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_vertical|right"
+            android:src="@drawable/system_animation_ongoing_dot"
+            android:visibility="visible" />
+    </FrameLayout>
+
     <ImageView
         android:id="@+id/right"
         android:layout_width="12dp"
@@ -33,4 +51,21 @@
         android:tint="#ff000000"
         android:layout_gravity="right|bottom"
         android:src="@drawable/rounded_corner_bottom"/>
+    <FrameLayout
+        android:id="@+id/privacy_dot_right_container"
+        android:layout_height="@dimen/status_bar_height"
+        android:layout_width="wrap_content"
+        android:layout_marginTop="@dimen/status_bar_padding_top"
+        android:layout_marginRight="0dp"
+        android:layout_gravity="right|bottom"
+        android:visibility="invisible" >
+        <ImageView
+            android:id="@+id/privacy_dot"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_vertical|left"
+            android:src="@drawable/system_animation_ongoing_dot"
+            android:visibility="visible" />
+    </FrameLayout>
+
 </com.android.systemui.RegionInterceptingFrameLayout>
diff --git a/packages/SystemUI/res/layout/rounded_corners_top.xml b/packages/SystemUI/res/layout/rounded_corners_top.xml
index 813c97d..6abe406 100644
--- a/packages/SystemUI/res/layout/rounded_corners_top.xml
+++ b/packages/SystemUI/res/layout/rounded_corners_top.xml
@@ -26,6 +26,24 @@
         android:layout_gravity="left|top"
         android:tint="#ff000000"
         android:src="@drawable/rounded_corner_top"/>
+
+    <FrameLayout
+        android:id="@+id/privacy_dot_left_container"
+        android:layout_height="@*android:dimen/status_bar_height_portrait"
+        android:layout_width="wrap_content"
+        android:layout_marginTop="@dimen/status_bar_padding_top"
+        android:layout_marginLeft="0dp"
+        android:layout_gravity="left|top"
+        android:visibility="invisible" >
+        <ImageView
+            android:id="@+id/privacy_dot"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_vertical|right"
+            android:src="@drawable/system_animation_ongoing_dot"
+            android:visibility="visible" />
+    </FrameLayout>
+
     <ImageView
         android:id="@+id/right"
         android:layout_width="12dp"
@@ -33,4 +51,24 @@
         android:tint="#ff000000"
         android:layout_gravity="right|top"
         android:src="@drawable/rounded_corner_top"/>
+
+    <FrameLayout
+        android:id="@+id/privacy_dot_right_container"
+        android:layout_height="@*android:dimen/status_bar_height_portrait"
+        android:layout_width="wrap_content"
+        android:layout_marginTop="@dimen/status_bar_padding_top"
+        android:layout_marginRight="0dp"
+        android:layout_gravity="right|top"
+        android:visibility="invisible" >
+        <ImageView
+            android:id="@+id/privacy_dot"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_vertical|left"
+            android:src="@drawable/system_animation_ongoing_dot"
+            android:visibility="visible" />
+
+    </FrameLayout>
+
+
 </com.android.systemui.RegionInterceptingFrameLayout>
diff --git a/packages/SystemUI/res/layout/system_event_animation_window.xml b/packages/SystemUI/res/layout/system_event_animation_window.xml
new file mode 100644
index 0000000..c92dec9
--- /dev/null
+++ b/packages/SystemUI/res/layout/system_event_animation_window.xml
@@ -0,0 +1,35 @@
+<?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.
+-->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_gravity="center_vertical|end"
+    android:paddingTop="@dimen/status_bar_padding_top"
+    android:paddingEnd="8dp"
+    >
+
+    <ImageView
+        android:id="@+id/dot_view"
+        android:layout_width="10dp"
+        android:layout_height="10dp"
+        android:layout_gravity="center_vertical|end"
+        android:src="@drawable/system_animation_ongoing_dot"
+        android:visibility="invisible"
+        />
+
+</FrameLayout>
\ No newline at end of file
diff --git a/packages/SystemUI/res/values-land/dimens.xml b/packages/SystemUI/res/values-land/dimens.xml
index 007f81b..5f50fd4 100644
--- a/packages/SystemUI/res/values-land/dimens.xml
+++ b/packages/SystemUI/res/values-land/dimens.xml
@@ -33,7 +33,7 @@
     <dimen name="battery_detail_graph_space_top">9dp</dimen>
     <dimen name="battery_detail_graph_space_bottom">9dp</dimen>
 
-    <dimen name="qs_detail_margin_top">0dp</dimen>
+    <dimen name="qs_detail_margin_top">14dp</dimen>
 
     <dimen name="volume_tool_tip_right_margin">136dp</dimen>
     <dimen name="volume_tool_tip_top_margin">12dp</dimen>
diff --git a/packages/SystemUI/res/values-night/styles.xml b/packages/SystemUI/res/values-night/styles.xml
index cd2395e..fe52dee 100644
--- a/packages/SystemUI/res/values-night/styles.xml
+++ b/packages/SystemUI/res/values-night/styles.xml
@@ -31,6 +31,7 @@
 
     <!-- Screenshots -->
     <style name="LongScreenshotActivity" parent="@android:style/Theme.DeviceDefault.DayNight">
+        <item name="android:windowNoTitle">true</item>
         <item name="android:windowLightStatusBar">false</item>
         <item name="android:windowLightNavigationBar">false</item>
     </style>
diff --git a/packages/SystemUI/res/values-pt-ldrtl/strings.xml b/packages/SystemUI/res/values-pt-ldrtl/strings.xml
index 6fd2bc1..53b2473 100644
--- a/packages/SystemUI/res/values-pt-ldrtl/strings.xml
+++ b/packages/SystemUI/res/values-pt-ldrtl/strings.xml
@@ -19,5 +19,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="recents_quick_scrub_onboarding" msgid="2452671841151577157">"Arraste para a esquerda para alternar rapidamente entre os apps"</string>
+    <string name="recents_quick_scrub_onboarding" msgid="2452671841151577157">"Arraste para a esquerda para mudar rapidamente de app"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pt-rBR-ldrtl/strings.xml b/packages/SystemUI/res/values-pt-rBR-ldrtl/strings.xml
index 6fd2bc1..53b2473 100644
--- a/packages/SystemUI/res/values-pt-rBR-ldrtl/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR-ldrtl/strings.xml
@@ -19,5 +19,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="recents_quick_scrub_onboarding" msgid="2452671841151577157">"Arraste para a esquerda para alternar rapidamente entre os apps"</string>
+    <string name="recents_quick_scrub_onboarding" msgid="2452671841151577157">"Arraste para a esquerda para mudar rapidamente de app"</string>
 </resources>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 62ac75e..62c2d23 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -528,7 +528,7 @@
     <!-- The size of the gesture span needed to activate the "pull" notification expansion -->
     <dimen name="pull_span_min">25dp</dimen>
 
-    <dimen name="qs_corner_radius">14dp</dimen>
+    <dimen name="qs_corner_radius">28dp</dimen>
     <dimen name="qs_tile_height">88dp</dimen>
     <!--notification_side_paddings + notification_content_margin_start - (qs_quick_tile_size - qs_tile_background_size) / 2 -->
     <dimen name="qs_tile_layout_margin_side">18dp</dimen>
@@ -610,6 +610,8 @@
 
     <dimen name="qs_notif_collapsed_space">64dp</dimen>
 
+    <dimen name="qs_container_bottom_padding">24dp</dimen>
+
     <!-- Desired qs icon overlay size. -->
     <dimen name="qs_detail_icon_overlay_size">24dp</dimen>
 
@@ -871,7 +873,9 @@
     <dimen name="keyguard_affordance_width">48dp</dimen>
     <dimen name="keyguard_affordance_horizontal_offset">32dp</dimen>
     <dimen name="keyguard_affordance_vertical_offset">32dp</dimen>
-
+    <!-- Value should be at least sum of 'keyguard_affordance_width' +
+         'keyguard_affordance_horizontal_offset' -->
+    <dimen name="keyguard_indication_area_padding">82dp</dimen>
 
     <!-- The width/height of the unlock icon view on keyguard. -->
     <dimen name="keyguard_lock_height">42dp</dimen>
@@ -1397,6 +1401,7 @@
     <dimen name="max_people_avatar_size_for_large_content">64dp</dimen>
     <dimen name="max_people_avatar_size">108dp</dimen>
     <dimen name="name_text_size_for_small">14sp</dimen>
+    <dimen name="name_text_size_for_medium">14sp</dimen>
     <dimen name="name_text_size_for_large">24sp</dimen>
     <dimen name="content_text_size_for_medium">12sp</dimen>
     <dimen name="content_text_size_for_large">14sp</dimen>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index e55142b..8a3ba4b 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -2096,7 +2096,8 @@
     <string name="keyboard_key_num_lock">Num Lock</string>
     <!-- Name used to refer to keys on the numeric pad of the keyboard, e.g. "Numpad 9". -->
     <string name="keyboard_key_numpad_template">Numpad <xliff:g id="name">%1$s</xliff:g></string>
-
+    <!-- Content description for the delete button on an image attachment when using inline reply via notification [CHAR LIMIT=NONE] -->
+    <string name="notif_inline_reply_remove_attachment_description">Remove attachment</string>
     <!-- User visible title for the system-wide keyboard shortcuts list. -->
     <string name="keyboard_shortcut_group_system">System</string>
     <!-- User visible title for the keyboard shortcut that takes the user to the home screen. -->
@@ -2620,19 +2621,19 @@
     <string name="ongoing_privacy_dialog_last_separator">\u0020and\u0020</string>
 
     <!-- Text for privacy dialog, using sensitive app op (one of camera, location, microphone) right now [CHAR LIMIT=NONE] -->
-    <string name="ongoing_privacy_dialog_using_op"><xliff:g id="application_name" example="Photos">%1$s</xliff:g> is using the <xliff:g id="app_opp_name" example="camera">%2$s</xliff:g></string>
+    <string name="ongoing_privacy_dialog_using_op">Being used by <xliff:g id="application_name" example="Photos">%1$s</xliff:g></string>
 
     <!-- Text for privacy dialog, recently used sensitive app op (one of camera, location, microphone) [CHAR LIMIT=NONE] -->
-    <string name="ongoing_privacy_dialog_recent_op"><xliff:g id="application_name" example="Photos">%1$s</xliff:g> used the <xliff:g id="app_opp_name" example="camera">%2$s</xliff:g> recently</string>
+    <string name="ongoing_privacy_dialog_recent_op">Recently used by <xliff:g id="application_name" example="Photos">%1$s</xliff:g></string>
 
     <!-- Text for privacy dialog, indicating that the application is the enterprise version [CHAR LIMIT=NONE] -->
-    <string name="ongoing_privacy_dialog_enterprise">(enterprise)</string>
+    <string name="ongoing_privacy_dialog_enterprise">(work)</string>
 
     <!-- Text for privacy dialog, identifying the phone call app [CHAR LIMIT=NONE]-->
     <string name="ongoing_privacy_dialog_phonecall">Phone call</string>
 
-    <!-- Text for privacy dialog, indicating that an app is using an op on behalf of another [CHAR LIMIT=NONE] -->
-    <string name="ongoing_privacy_dialog_attribution_text">(through <xliff:g id="attribution" example="Special app">%s</xliff:g>)</string>
+    <!-- Text for privacy dialog, indicating that an app (or multiple) is using an op on behalf of another [CHAR LIMIT=NONE] -->
+    <string name="ongoing_privacy_dialog_attribution_text">(through <xliff:g id="application name(s)" example="Maps, and Assistant">%s</xliff:g>)</string>
 
     <!-- Text for camera app op [CHAR LIMIT=20]-->
     <string name="privacy_type_camera">camera</string>
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
index f89e365..96421f3 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
@@ -23,8 +23,6 @@
 import android.app.smartspace.SmartspaceConfig;
 import android.app.smartspace.SmartspaceManager;
 import android.app.smartspace.SmartspaceSession;
-import android.content.ContentResolver;
-import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Color;
 import android.text.TextUtils;
@@ -39,14 +37,13 @@
 import com.android.keyguard.clock.ClockManager;
 import com.android.settingslib.Utils;
 import com.android.systemui.R;
+import com.android.systemui.SystemUIFactory;
 import com.android.systemui.broadcast.BroadcastDispatcher;
 import com.android.systemui.colorextraction.SysuiColorExtractor;
 import com.android.systemui.dagger.qualifiers.Main;
 import com.android.systemui.plugins.BcSmartspaceDataPlugin;
 import com.android.systemui.plugins.ClockPlugin;
-import com.android.systemui.plugins.PluginListener;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
-import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.notification.AnimatableProperty;
 import com.android.systemui.statusbar.notification.PropertyAnimator;
@@ -69,14 +66,16 @@
 public class KeyguardClockSwitchController extends ViewController<KeyguardClockSwitch> {
     private static final boolean CUSTOM_CLOCKS_ENABLED = true;
 
-    private final Resources mResources;
     private final StatusBarStateController mStatusBarStateController;
     private final SysuiColorExtractor mColorExtractor;
     private final ClockManager mClockManager;
     private final KeyguardSliceViewController mKeyguardSliceViewController;
     private final NotificationIconAreaController mNotificationIconAreaController;
     private final BroadcastDispatcher mBroadcastDispatcher;
+    private final Executor mUiExecutor;
     private final BatteryController mBatteryController;
+    private final FeatureFlags mFeatureFlags;
+    private final SystemUIFactory mSystemUIFactory;
 
     /**
      * Clock for both small and large sizes
@@ -86,12 +85,8 @@
     private AnimatableClockController mLargeClockViewController;
     private FrameLayout mLargeClockFrame;
 
-    private PluginManager mPluginManager;
-    private boolean mIsSmartspaceEnabled;
-    PluginListener mPluginListener;
-    private Executor mUiExecutor;
     private SmartspaceSession mSmartspaceSession;
-    private SmartspaceSession.Callback mSmartspaceCallback;
+    private SmartspaceSession.OnTargetsAvailableListener mSmartspaceCallback;
     private float mDozeAmount;
     private int mWallpaperTextColor;
     private int mDozeColor = Color.WHITE;
@@ -137,31 +132,28 @@
     @Inject
     public KeyguardClockSwitchController(
             KeyguardClockSwitch keyguardClockSwitch,
-            @Main Resources resources,
             StatusBarStateController statusBarStateController,
             SysuiColorExtractor colorExtractor, ClockManager clockManager,
             KeyguardSliceViewController keyguardSliceViewController,
             NotificationIconAreaController notificationIconAreaController,
-            ContentResolver contentResolver,
             BroadcastDispatcher broadcastDispatcher,
-            PluginManager pluginManager,
             FeatureFlags featureFlags,
             @Main Executor uiExecutor,
             BatteryController batteryController,
-            ConfigurationController configurationController) {
+            ConfigurationController configurationController,
+            SystemUIFactory systemUIFactory) {
         super(keyguardClockSwitch);
-        mResources = resources;
         mStatusBarStateController = statusBarStateController;
         mColorExtractor = colorExtractor;
         mClockManager = clockManager;
         mKeyguardSliceViewController = keyguardSliceViewController;
         mNotificationIconAreaController = notificationIconAreaController;
         mBroadcastDispatcher = broadcastDispatcher;
-        mPluginManager = pluginManager;
-        mIsSmartspaceEnabled = featureFlags.isSmartspaceEnabled();
+        mFeatureFlags = featureFlags;
         mUiExecutor = uiExecutor;
         mBatteryController = batteryController;
         mConfigurationController = configurationController;
+        mSystemUIFactory = systemUIFactory;
     }
 
     /**
@@ -206,75 +198,45 @@
         mStatusBarStateController.addCallback(mStatusBarStateListener);
         mConfigurationController.addCallback(mConfigurationListener);
 
-        // If a smartspace plugin is detected, replace the existing smartspace
-        // (keyguard_status_area), and initialize a new session
-        mPluginListener = new PluginListener<BcSmartspaceDataPlugin>() {
+        BcSmartspaceDataPlugin smartspaceDataPlugin = mSystemUIFactory.getSmartspaceDataProvider();
+        if (mFeatureFlags.isSmartspaceEnabled() && smartspaceDataPlugin != null) {
+            View ksa = mView.findViewById(R.id.keyguard_status_area);
+            int ksaIndex = mView.indexOfChild(ksa);
+            ksa.setVisibility(View.GONE);
 
-            @Override
-            public void onPluginConnected(BcSmartspaceDataPlugin plugin, Context pluginContext) {
-                if (!mIsSmartspaceEnabled) return;
+            mSmartspaceView = smartspaceDataPlugin.getView(mView);
+            mSmartspaceView.registerDataProvider(smartspaceDataPlugin);
+            updateSmartspaceColor();
+            View asView = (View) mSmartspaceView;
 
-                View ksa = mView.findViewById(R.id.keyguard_status_area);
-                int ksaIndex = mView.indexOfChild(ksa);
-                ksa.setVisibility(View.GONE);
+            // Place smartspace view below normal clock...
+            RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
+                    MATCH_PARENT, WRAP_CONTENT);
+            lp.addRule(RelativeLayout.BELOW, R.id.lockscreen_clock_view);
 
-                mSmartspaceView = plugin.getView(mView);
-                mSmartspaceView.registerDataProvider(plugin);
-                updateSmartspaceColor();
-                View asView = (View) mSmartspaceView;
+            mView.addView(asView, ksaIndex, lp);
+            int padding = getContext().getResources()
+                    .getDimensionPixelSize(R.dimen.below_clock_padding_start);
+            asView.setPadding(padding, 0, padding, 0);
 
-                // Place plugin view below normal clock...
-                RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
-                        MATCH_PARENT, WRAP_CONTENT);
-                lp.addRule(RelativeLayout.BELOW, R.id.lockscreen_clock_view);
+            // ... but above the large clock
+            lp = new RelativeLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT);
+            lp.addRule(RelativeLayout.BELOW, asView.getId());
+            mLargeClockFrame.setLayoutParams(lp);
 
-                mView.addView(asView, ksaIndex, lp);
-                int padding = getContext().getResources()
-                        .getDimensionPixelSize(R.dimen.below_clock_padding_start);
-                asView.setPadding(padding, 0, padding, 0);
+            View nic = mView.findViewById(
+                    R.id.left_aligned_notification_icon_container);
+            lp = (RelativeLayout.LayoutParams) nic.getLayoutParams();
+            lp.addRule(RelativeLayout.BELOW, asView.getId());
+            nic.setLayoutParams(lp);
 
-                // ... but above the large clock
-                lp = new RelativeLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT);
-                lp.addRule(RelativeLayout.BELOW, asView.getId());
-                mLargeClockFrame.setLayoutParams(lp);
-
-                View nic = mView.findViewById(
-                        com.android.systemui.R.id.left_aligned_notification_icon_container);
-                lp = (RelativeLayout.LayoutParams) nic.getLayoutParams();
-                lp.addRule(RelativeLayout.BELOW, asView.getId());
-                nic.setLayoutParams(lp);
-
-                createSmartspaceSession(plugin);
-            }
-
-            @Override
-            public void onPluginDisconnected(BcSmartspaceDataPlugin plugin) {
-                if (!mIsSmartspaceEnabled) return;
-
-                mView.removeView((View) mSmartspaceView);
-                mView.findViewById(R.id.keyguard_status_area).setVisibility(View.VISIBLE);
-
-                View nic = mView.findViewById(
-                        com.android.systemui.R.id.left_aligned_notification_icon_container);
-                RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams)
-                        nic.getLayoutParams();
-                lp.addRule(RelativeLayout.BELOW, R.id.keyguard_status_area);
-                nic.setLayoutParams(lp);
-                mLargeClockFrame.setLayoutParams(lp);
-
-                mSmartspaceView = null;
-            }
-
-            private void createSmartspaceSession(BcSmartspaceDataPlugin plugin) {
-                mSmartspaceSession = getContext().getSystemService(SmartspaceManager.class)
-                        .createSmartspaceSession(
-                                new SmartspaceConfig.Builder(getContext(), "lockscreen").build());
-                mSmartspaceCallback = targets -> plugin.onTargetsAvailable(targets);
-                mSmartspaceSession.registerSmartspaceUpdates(mUiExecutor, mSmartspaceCallback);
-                mSmartspaceSession.requestSmartspaceUpdate();
-            }
-        };
-        mPluginManager.addPluginListener(mPluginListener, BcSmartspaceDataPlugin.class, false);
+            mSmartspaceSession = getContext().getSystemService(SmartspaceManager.class)
+                    .createSmartspaceSession(
+                            new SmartspaceConfig.Builder(getContext(), "lockscreen").build());
+            mSmartspaceCallback = targets -> smartspaceDataPlugin.onTargetsAvailable(targets);
+            mSmartspaceSession.addOnTargetsAvailableListener(mUiExecutor, mSmartspaceCallback);
+            mSmartspaceSession.requestSmartspaceUpdate();
+        }
     }
 
     private void updateWallpaperColor() {
@@ -299,11 +261,10 @@
         mView.setClockPlugin(null, mStatusBarStateController.getState());
 
         if (mSmartspaceSession != null) {
-            mSmartspaceSession.unregisterSmartspaceUpdates(mSmartspaceCallback);
-            mSmartspaceSession.destroy();
+            mSmartspaceSession.removeOnTargetsAvailableListener(mSmartspaceCallback);
+            mSmartspaceSession.close();
             mSmartspaceSession = null;
         }
-        mPluginManager.removePluginListener(mPluginListener);
         mStatusBarStateController.removeCallback(mStatusBarStateListener);
         mConfigurationController.removeCallback(mConfigurationListener);
     }
diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
index 570854e..abdd770 100644
--- a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
+++ b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
@@ -29,6 +29,7 @@
 
 import com.android.systemui.R;
 import com.android.systemui.animation.Interpolators;
+import com.android.systemui.util.Utils;
 
 /**
  * Provides background color and radius animations for key pad buttons.
@@ -100,7 +101,8 @@
 
         ContextThemeWrapper ctw = new ContextThemeWrapper(context, mStyle);
         TypedArray a = ctw.obtainStyledAttributes(customAttrs);
-        mNormalColor = a.getColor(0, 0);
+        mNormalColor = Utils.getPrivateAttrColorIfUnset(ctw, a, 0, 0,
+                com.android.internal.R.attr.colorSurface);
         mHighlightColor = a.getColor(1, 0);
         a.recycle();
 
diff --git a/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java b/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java
index 983b1bb..62d5a45 100644
--- a/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java
+++ b/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java
@@ -91,6 +91,13 @@
     }
 
     @Override
+    public void startActivity(Intent intent, boolean dismissShade,
+            @Nullable ActivityLaunchAnimator.Controller animationController) {
+        mActualStarter.ifPresent(
+                starter -> starter.get().startActivity(intent, dismissShade, animationController));
+    }
+
+    @Override
     public void startActivity(Intent intent, boolean onlyProvisioned, boolean dismissShade) {
         mActualStarter.ifPresent(
                 starter -> starter.get().startActivity(intent, onlyProvisioned, dismissShade));
diff --git a/packages/SystemUI/src/com/android/systemui/Dependency.java b/packages/SystemUI/src/com/android/systemui/Dependency.java
index a686fc0..cbfdce5 100644
--- a/packages/SystemUI/src/com/android/systemui/Dependency.java
+++ b/packages/SystemUI/src/com/android/systemui/Dependency.java
@@ -79,6 +79,8 @@
 import com.android.systemui.statusbar.NotificationViewHierarchyManager;
 import com.android.systemui.statusbar.SmartReplyController;
 import com.android.systemui.statusbar.VibratorHelper;
+import com.android.systemui.statusbar.events.PrivacyDotViewController;
+import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.NotificationEntryManager.KeyguardEnvironment;
 import com.android.systemui.statusbar.notification.NotificationFilter;
@@ -352,6 +354,8 @@
     @Inject Lazy<DeviceConfigProxy> mDeviceConfigProxy;
     @Inject Lazy<NavigationBarOverlayController> mNavbarButtonsControllerLazy;
     @Inject Lazy<TelephonyListenerManager> mTelephonyListenerManager;
+    @Inject Lazy<SystemStatusAnimationScheduler> mSystemStatusAnimationSchedulerLazy;
+    @Inject Lazy<PrivacyDotViewController> mPrivacyDotViewControllerLazy;
 
     @Inject
     public Dependency() {
@@ -561,6 +565,10 @@
 
         mProviders.put(NavigationBarOverlayController.class, mNavbarButtonsControllerLazy::get);
 
+        mProviders.put(SystemStatusAnimationScheduler.class,
+                mSystemStatusAnimationSchedulerLazy::get);
+        mProviders.put(PrivacyDotViewController.class, mPrivacyDotViewControllerLazy::get);
+
         Dependency.setInstance(this);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
index c8e6741..38b3dfd 100644
--- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
@@ -30,6 +30,7 @@
 import android.util.MathUtils;
 import android.util.Size;
 import android.view.Choreographer;
+import android.view.DisplayInfo;
 import android.view.SurfaceHolder;
 import android.view.WindowManager;
 
@@ -62,8 +63,7 @@
     private final StatusBarStateController mStatusBarStateController;
     private final ArrayList<RectF> mLocalColorsToAdd = new ArrayList<>();
     private final ArraySet<RectF> mColorAreas = new ArraySet<>();
-    private float mShift;
-    private volatile int mPages;
+    private volatile int mPages = 1;
     private HandlerThread mWorker;
     // scaled down version
     private Bitmap mMiniBitmap;
@@ -100,9 +100,9 @@
         // Surface is rejected if size below a threshold on some devices (ie. 8px on elfin)
         // set min to 64 px (CTS covers this), please refer to ag/4867989 for detail.
         @VisibleForTesting
-        static final int MIN_SURFACE_WIDTH = 64;
+        static final int MIN_SURFACE_WIDTH = 128;
         @VisibleForTesting
-        static final int MIN_SURFACE_HEIGHT = 64;
+        static final int MIN_SURFACE_HEIGHT = 128;
 
         private ImageWallpaperRenderer mRenderer;
         private EglHelper mEglHelper;
@@ -112,6 +112,8 @@
         private int mHeight = 1;
         private int mImgWidth = 1;
         private int mImgHeight = 1;
+        private float mPageWidth = 1.f;
+        private float mPageOffset = 1.f;
         private volatile float mDozeAmount;
         private volatile boolean mNewDozeValue = false;
         private volatile boolean mShouldScheduleFrame = false;
@@ -158,15 +160,15 @@
         public void onOffsetsChanged(float xOffset, float yOffset,
                 float xOffsetStep, float yOffsetStep,
                 int xPixelOffset, int yPixelOffset) {
-            if (mMiniBitmap == null || mMiniBitmap.isRecycled()) return;
             final int pages;
             if (xOffsetStep > 0 && xOffsetStep <= 1) {
-                pages = (int) (1 / xOffsetStep + 1);
+                pages = (int) Math.round(1 / xOffsetStep) + 1;
             } else {
                 pages = 1;
             }
             if (pages == mPages) return;
             mPages = pages;
+            if (mMiniBitmap == null || mMiniBitmap.isRecycled()) return;
             updateShift();
             mWorker.getThreadHandler().post(() ->
                     computeAndNotifyLocalColors(new ArrayList<>(mColorAreas), mMiniBitmap));
@@ -174,19 +176,17 @@
 
         private void updateShift() {
             if (mImgHeight == 0) {
-                mShift = 0;
+                mPageOffset = 0;
+                mPageWidth = 1;
                 return;
             }
             // calculate shift
-            float imgWidth = (float) mImgWidth / (float) mImgHeight;
-            float displayWidth =
-                    (float) mWidth / (float) mHeight;
-            // if need to shift
-            if (imgWidth > displayWidth) {
-                mShift = imgWidth / imgWidth - displayWidth / imgWidth;
-            } else {
-                mShift = 0;
-            }
+            DisplayInfo displayInfo = new DisplayInfo();
+            getDisplayContext().getDisplay().getDisplayInfo(displayInfo);
+            int screenWidth = displayInfo.getNaturalWidth();
+            float imgWidth = Math.min(mImgWidth > 0 ? screenWidth / (float) mImgWidth : 1.f, 1.f);
+            mPageWidth = imgWidth;
+            mPageOffset = (1 - imgWidth) / (float) (mPages - 1);
         }
 
         private void updateMiniBitmap() {
@@ -198,8 +198,8 @@
                 }
                 mImgHeight = b.getHeight();
                 mImgWidth = b.getWidth();
-                mMiniBitmap = Bitmap.createScaledBitmap(b, (int) Math.ceil(scale * b.getWidth()),
-                        (int) Math.ceil(scale * b.getHeight()), false);
+                mMiniBitmap = Bitmap.createScaledBitmap(b,  (int) Math.max(scale * b.getWidth(), 1),
+                        (int) Math.max(scale * b.getHeight(), 1), false);
                 computeAndNotifyLocalColors(mLocalColorsToAdd, mMiniBitmap);
                 mLocalColorsToAdd.clear();
             });
@@ -274,27 +274,39 @@
             });
         }
 
+        /**
+         * Transform the logical coordinates into wallpaper coordinates.
+         *
+         * Logical coordinates are organised such that the various pages are non-overlapping. So,
+         * if there are n pages, the first page will have its X coordinate on the range [0-1/n].
+         *
+         * The real pages are overlapping. If the Wallpaper are a width Ww and the screen a width
+         * Ws, the relative width of a page Wr is Ws/Ww. This does not change if the number of
+         * pages increase.
+         * If there are n pages, the page k starts at the offset k * (1 - Wr) / (n - 1), as the
+         * last page is at position (1-Wr) and the others are regularly spread on the range [0-
+         * (1-Wr)].
+         */
         private RectF pageToImgRect(RectF area) {
-            float pageWidth = 1f / (float) mPages;
-            if (pageWidth < 1 && pageWidth >= 0) pageWidth = 1;
-            float imgWidth = (float) mImgWidth / (float) mImgHeight;
-            float displayWidth =
-                    (float) mWidth / (float) mHeight;
-            float expansion = imgWidth > displayWidth ? displayWidth / imgWidth : 1;
-            int page = (int) Math.floor(area.centerX() / pageWidth);
-            float shiftWidth = mShift * page * pageWidth;
+            // Width of a page for the caller of this API.
+            float virtualPageWidth = 1f / (float) mPages;
+            float leftPosOnPage = (area.left % virtualPageWidth) / virtualPageWidth;
+            float rightPosOnPage = (area.right % virtualPageWidth) / virtualPageWidth;
+            int currentPage = (int) Math.floor(area.centerX() / virtualPageWidth);
+
             RectF imgArea = new RectF();
             imgArea.bottom = area.bottom;
             imgArea.top = area.top;
-            imgArea.left = MathUtils.constrain(area.left % pageWidth, 0, 1)
-                    * expansion + shiftWidth;
-            imgArea.right = MathUtils.constrain(area.right % pageWidth, 0, 1)
-                    * expansion + shiftWidth;
+            imgArea.left = MathUtils.constrain(
+                    leftPosOnPage * mPageWidth + currentPage * mPageOffset, 0, 1);
+            imgArea.right = MathUtils.constrain(
+                    rightPosOnPage * mPageWidth + currentPage * mPageOffset, 0, 1);
             if (imgArea.left > imgArea.right) {
                 // take full page
-                imgArea.left = shiftWidth;
-                imgArea.right = 1 - (mShift - shiftWidth);
+                imgArea.left = 0;
+                imgArea.right = 1;
             }
+
             return imgArea;
         }
 
diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
index 5fa98bc..d07723e 100644
--- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
+++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
@@ -88,6 +88,7 @@
 import com.android.systemui.dagger.qualifiers.Main;
 import com.android.systemui.qs.SecureSetting;
 import com.android.systemui.settings.UserTracker;
+import com.android.systemui.statusbar.events.PrivacyDotViewController;
 import com.android.systemui.tuner.TunerService;
 import com.android.systemui.tuner.TunerService.Tunable;
 import com.android.systemui.util.settings.SecureSettings;
@@ -126,6 +127,7 @@
     private DisplayManager.DisplayListener mDisplayListener;
     private CameraAvailabilityListener mCameraListener;
     private final UserTracker mUserTracker;
+    private final PrivacyDotViewController mDotViewController;
 
     //TODO: These are piecemeal being updated to Points for now to support non-square rounded
     // corners. for now it is only supposed when reading the intrinsic size from the drawables with
@@ -140,6 +142,11 @@
     protected View[] mOverlays;
     @Nullable
     private DisplayCutoutView[] mCutoutViews;
+    //TODO:
+    View mTopLeftDot;
+    View mTopRightDot;
+    View mBottomLeftDot;
+    View mBottomRightDot;
     private float mDensity;
     private WindowManager mWindowManager;
     private int mRotation;
@@ -147,6 +154,8 @@
     private Handler mHandler;
     private boolean mPendingRotationChange;
     private boolean mIsRoundedCornerMultipleRadius;
+    private int mStatusBarHeightPortrait;
+    private int mStatusBarHeightLandscape;
 
     private CameraAvailabilityListener.CameraTransitionCallback mCameraTransitionCallback =
             new CameraAvailabilityListener.CameraTransitionCallback() {
@@ -205,13 +214,15 @@
             SecureSettings secureSettings,
             BroadcastDispatcher broadcastDispatcher,
             TunerService tunerService,
-            UserTracker userTracker) {
+            UserTracker userTracker,
+            PrivacyDotViewController dotViewController) {
         super(context);
         mMainHandler = handler;
         mSecureSettings = secureSettings;
         mBroadcastDispatcher = broadcastDispatcher;
         mTunerService = tunerService;
         mUserTracker = userTracker;
+        mDotViewController = dotViewController;
     }
 
     @Override
@@ -222,6 +233,7 @@
         }
         mHandler = startHandlerThread();
         mHandler.post(this::startOnScreenDecorationsThread);
+        mDotViewController.setUiExecutor(mHandler::post);
     }
 
     @VisibleForTesting
@@ -286,6 +298,7 @@
 
     private void setupDecorations() {
         if (hasRoundedCorners() || shouldDrawCutout()) {
+            updateStatusBarHeight();
             final DisplayCutout cutout = getCutout();
             final Rect[] bounds = cutout == null ? null : cutout.getBoundingRectsAll();
             int rotatedPos;
@@ -298,6 +311,10 @@
                     removeOverlay(i);
                 }
             }
+            // Overlays have been created, send the dots to the controller
+            //TODO: need a better way to do this
+            mDotViewController.initialize(
+                    mTopLeftDot, mTopRightDot, mBottomLeftDot, mBottomRightDot);
         } else {
             removeAllOverlays();
         }
@@ -431,14 +448,21 @@
     private View overlayForPosition(@BoundsPosition int pos) {
         switch (pos) {
             case BOUNDS_POSITION_TOP:
-                return LayoutInflater.from(mContext)
+            case BOUNDS_POSITION_LEFT:
+                View top = LayoutInflater.from(mContext)
                         .inflate(R.layout.rounded_corners_top, null);
+                mTopLeftDot = top.findViewById(R.id.privacy_dot_left_container);
+                mTopRightDot = top.findViewById(R.id.privacy_dot_right_container);
+                return top;
             case BOUNDS_POSITION_BOTTOM:
-                return LayoutInflater.from(mContext)
+            case BOUNDS_POSITION_RIGHT:
+                View bottom =  LayoutInflater.from(mContext)
                         .inflate(R.layout.rounded_corners_bottom, null);
+                mBottomLeftDot = bottom.findViewById(R.id.privacy_dot_left_container);
+                mBottomRightDot = bottom.findViewById(R.id.privacy_dot_right_container);
+                return bottom;
             default:
-                return LayoutInflater.from(mContext)
-                        .inflate(R.layout.rounded_corners, null);
+                throw new IllegalArgumentException("Unknown bounds position");
         }
     }
 
@@ -575,6 +599,11 @@
             View child;
             for (int j = 0; j < size; j++) {
                 child = ((ViewGroup) mOverlays[i]).getChildAt(j);
+                if (child.getId() == R.id.privacy_dot_left_container
+                        || child.getId() == R.id.privacy_dot_right_container) {
+                    // Exclude privacy dot from color inversion (for now?)
+                    continue;
+                }
                 if (child instanceof ImageView) {
                     ((ImageView) child).setImageTintList(tintList);
                 } else if (child instanceof DisplayCutoutView) {
@@ -611,10 +640,15 @@
         Preconditions.checkState(mHandler.getLooper().getThread() == Thread.currentThread(),
                 "must call on " + mHandler.getLooper().getThread()
                         + ", but was " + Thread.currentThread());
+
+        int newRotation = mContext.getDisplay().getRotation();
+        if (mRotation != newRotation) {
+            mDotViewController.updateRotation(newRotation);
+        }
+
         if (mPendingRotationChange) {
             return;
         }
-        int newRotation = mContext.getDisplay().getRotation();
         if (newRotation != mRotation) {
             mRotation = newRotation;
 
@@ -630,6 +664,14 @@
         }
     }
 
+    private void updateStatusBarHeight() {
+        mStatusBarHeightLandscape = mContext.getResources().getDimensionPixelSize(
+                com.android.internal.R.dimen.status_bar_height_landscape);
+        mStatusBarHeightPortrait = mContext.getResources().getDimensionPixelSize(
+                com.android.internal.R.dimen.status_bar_height_portrait);
+        mDotViewController.setStatusBarHeights(mStatusBarHeightPortrait, mStatusBarHeightLandscape);
+    }
+
     private void updateRoundedCornerRadii() {
         // We should eventually move to just using the intrinsic size of the drawables since
         // they should be sized to the exact pixels they want to cover. Therefore I'm purposely not
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
index cc167b9..af064e1 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
@@ -29,6 +29,7 @@
 import com.android.systemui.dagger.SysUIComponent;
 import com.android.systemui.dagger.WMComponent;
 import com.android.systemui.navigationbar.gestural.BackGestureTfClassifierProvider;
+import com.android.systemui.plugins.BcSmartspaceDataPlugin;
 import com.android.systemui.screenshot.ScreenshotNotificationSmartActionsProvider;
 import com.android.wm.shell.transition.Transitions;
 
@@ -209,4 +210,8 @@
             AssetManager am, String modelName) {
         return new BackGestureTfClassifierProvider();
     }
+
+    public BcSmartspaceDataPlugin getSmartspaceDataProvider() {
+        return null;
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/appops/AppOpsController.java b/packages/SystemUI/src/com/android/systemui/appops/AppOpsController.java
index 2661d89..b544599 100644
--- a/packages/SystemUI/src/com/android/systemui/appops/AppOpsController.java
+++ b/packages/SystemUI/src/com/android/systemui/appops/AppOpsController.java
@@ -60,17 +60,31 @@
     /**
      * Returns a copy of the list containing all the active AppOps that the controller tracks.
      *
-     * @return List of active AppOps information
+     * @return List of active AppOps information, without paused elements.
      */
     List<AppOpItem> getActiveAppOps();
 
     /**
+     * Returns a copy of the list containing all the active AppOps that the controller tracks.
+     *
+     * @param showPaused {@code true} to also obtain paused items. {@code false} otherwise.
+     * @return List of active AppOps information
+     */
+    List<AppOpItem> getActiveAppOps(boolean showPaused);
+
+    /**
      * Returns a copy of the list containing all the active AppOps that the controller tracks, for
      * a given user id.
      *
      * @param userId User id to track
+     * @param showPaused {@code true} to also obtain paused items. {@code false} otherwise.
      *
      * @return List of active AppOps information for that user id
      */
-    List<AppOpItem> getActiveAppOpsForUser(int userId);
+    List<AppOpItem> getActiveAppOpsForUser(int userId, boolean showPaused);
+
+    /**
+     * @return whether this controller is considering the microphone as muted.
+     */
+    boolean isMicMuted();
 }
diff --git a/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java b/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
index 994401d..534f93e 100644
--- a/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
@@ -241,9 +241,9 @@
             AppOpItem item = getAppOpItemLocked(mActiveItems, code, uid, packageName);
             if (item == null && active) {
                 item = new AppOpItem(code, uid, packageName, mClock.elapsedRealtime());
-                if (code == AppOpsManager.OP_RECORD_AUDIO) {
+                if (isOpMicrophone(code)) {
                     item.setDisabled(isAnyRecordingPausedLocked(uid));
-                } else if (code == AppOpsManager.OP_CAMERA) {
+                } else if (isOpCamera(code)) {
                     item.setDisabled(mCameraDisabled);
                 }
                 mActiveItems.add(item);
@@ -298,6 +298,11 @@
         return PermissionManager.shouldShowPackageForIndicatorCached(mContext, packageName);
     }
 
+    @WorkerThread
+    public List<AppOpItem> getActiveAppOps() {
+        return getActiveAppOps(false);
+    }
+
     /**
      * Returns a copy of the list containing all the active AppOps that the controller tracks.
      *
@@ -306,8 +311,8 @@
      * @return List of active AppOps information
      */
     @WorkerThread
-    public List<AppOpItem> getActiveAppOps() {
-        return getActiveAppOpsForUser(UserHandle.USER_ALL);
+    public List<AppOpItem> getActiveAppOps(boolean showPaused) {
+        return getActiveAppOpsForUser(UserHandle.USER_ALL, showPaused);
     }
 
     /**
@@ -321,7 +326,7 @@
      * @return List of active AppOps information for that user id
      */
     @WorkerThread
-    public List<AppOpItem> getActiveAppOpsForUser(int userId) {
+    public List<AppOpItem> getActiveAppOpsForUser(int userId, boolean showPaused) {
         Assert.isNotMainThread();
         List<AppOpItem> list = new ArrayList<>();
         synchronized (mActiveItems) {
@@ -330,7 +335,8 @@
                 AppOpItem item = mActiveItems.get(i);
                 if ((userId == UserHandle.USER_ALL
                         || UserHandle.getUserId(item.getUid()) == userId)
-                        && isUserVisible(item.getPackageName()) && !item.isDisabled()) {
+                        && isUserVisible(item.getPackageName())
+                        && (showPaused || !item.isDisabled())) {
                     list.add(item);
                 }
             }
@@ -441,9 +447,9 @@
                 AppOpItem item = mActiveItems.get(i);
 
                 boolean paused = false;
-                if (item.getCode() == AppOpsManager.OP_RECORD_AUDIO) {
+                if (isOpMicrophone(item.getCode())) {
                     paused = isAnyRecordingPausedLocked(item.getUid());
-                } else if (item.getCode() == AppOpsManager.OP_CAMERA) {
+                } else if (isOpCamera(item.getCode())) {
                     paused = mCameraDisabled;
                 }
 
@@ -502,6 +508,19 @@
         });
     }
 
+    @Override
+    public boolean isMicMuted() {
+        return mMicMuted;
+    }
+
+    private boolean isOpCamera(int op) {
+        return op == AppOpsManager.OP_CAMERA || op == AppOpsManager.OP_PHONE_CALL_CAMERA;
+    }
+
+    private boolean isOpMicrophone(int op) {
+        return op == AppOpsManager.OP_RECORD_AUDIO || op == AppOpsManager.OP_PHONE_CALL_MICROPHONE;
+    }
+
     protected class H extends Handler {
         H(Looper looper) {
             super(looper);
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/Classifier.java b/packages/SystemUI/src/com/android/systemui/classifier/Classifier.java
index 6a012eb..6f70672 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/Classifier.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/Classifier.java
@@ -42,6 +42,7 @@
     public static final int QS_COLLAPSE = 12;
     public static final int UDFPS_AUTHENTICATION = 13;
     public static final int DISABLED_UDFPS_AFFORDANCE = 14;
+    public static final int QS_SWIPE = 15;
 
     @IntDef({
             QUICK_SETTINGS,
@@ -59,7 +60,8 @@
             QS_COLLAPSE,
             BRIGHTNESS_SLIDER,
             UDFPS_AUTHENTICATION,
-            DISABLED_UDFPS_AFFORDANCE
+            DISABLED_UDFPS_AFFORDANCE,
+            QS_SWIPE
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface InteractionType {}
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/DistanceClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/DistanceClassifier.java
index a4e1637..2298010 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/DistanceClassifier.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/DistanceClassifier.java
@@ -155,7 +155,8 @@
                 || interactionType == SHADE_DRAG
                 || interactionType == QS_COLLAPSE
                 || interactionType == Classifier.UDFPS_AUTHENTICATION
-                || interactionType == Classifier.DISABLED_UDFPS_AFFORDANCE) {
+                || interactionType == Classifier.DISABLED_UDFPS_AFFORDANCE
+                || interactionType == Classifier.QS_SWIPE) {
             return Result.passed(0);
         }
 
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/ProximityClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/ProximityClassifier.java
index 3bc24c7..72d4303 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/ProximityClassifier.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/ProximityClassifier.java
@@ -19,6 +19,7 @@
 import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.BRIGHTLINE_FALSING_PROXIMITY_PERCENT_COVERED_THRESHOLD;
 import static com.android.systemui.classifier.Classifier.BRIGHTNESS_SLIDER;
 import static com.android.systemui.classifier.Classifier.QS_COLLAPSE;
+import static com.android.systemui.classifier.Classifier.QS_SWIPE;
 import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS;
 
 import android.provider.DeviceConfig;
@@ -118,7 +119,7 @@
             @Classifier.InteractionType int interactionType,
             double historyBelief, double historyConfidence) {
         if (interactionType == QUICK_SETTINGS || interactionType == BRIGHTNESS_SLIDER
-                || interactionType == QS_COLLAPSE) {
+                || interactionType == QS_COLLAPSE || interactionType == QS_SWIPE) {
             return Result.passed(0);
         }
 
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/TypeClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/TypeClassifier.java
index 1042516..c2ad7e6 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/TypeClassifier.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/TypeClassifier.java
@@ -24,6 +24,7 @@
 import static com.android.systemui.classifier.Classifier.NOTIFICATION_DRAG_DOWN;
 import static com.android.systemui.classifier.Classifier.PULSE_EXPAND;
 import static com.android.systemui.classifier.Classifier.QS_COLLAPSE;
+import static com.android.systemui.classifier.Classifier.QS_SWIPE;
 import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS;
 import static com.android.systemui.classifier.Classifier.RIGHT_AFFORDANCE;
 import static com.android.systemui.classifier.Classifier.SHADE_DRAG;
@@ -85,6 +86,9 @@
             case QS_COLLAPSE:
                 wrongDirection = !vertical || !up;
                 break;
+            case QS_SWIPE:
+                wrongDirection = vertical;
+                break;
             default:
                 wrongDirection = true;
                 break;
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
index 365a102..126724c 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
@@ -26,6 +26,7 @@
 import com.android.keyguard.dagger.KeyguardBouncerComponent;
 import com.android.systemui.BootCompleteCache;
 import com.android.systemui.BootCompleteCacheImpl;
+import com.android.systemui.SystemUIFactory;
 import com.android.systemui.appops.dagger.AppOpsModule;
 import com.android.systemui.assist.AssistModule;
 import com.android.systemui.classifier.FalsingModule;
@@ -159,6 +160,11 @@
     @Binds
     abstract SystemClock bindSystemClock(SystemClockImpl systemClock);
 
+    @Provides
+    static SystemUIFactory getSystemUIFactory() {
+        return SystemUIFactory.getInstance();
+    }
+
     // TODO: This should provided by the WM component
     /** Provides Optional of BubbleManager */
     @SysUISingleton
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java b/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java
index de00d50..2e03d9a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java
@@ -17,10 +17,20 @@
 package com.android.systemui.keyguard;
 
 import android.annotation.IntDef;
+import android.app.IWallpaperManager;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.graphics.Point;
+import android.os.Bundle;
 import android.os.PowerManager;
+import android.os.RemoteException;
 import android.os.Trace;
+import android.util.DisplayMetrics;
+
+import androidx.annotation.Nullable;
 
 import com.android.systemui.Dumpable;
+import com.android.systemui.R;
 import com.android.systemui.dagger.SysUISingleton;
 
 import java.io.FileDescriptor;
@@ -31,7 +41,7 @@
 import javax.inject.Inject;
 
 /**
- * Tracks the wakefulness lifecycle.
+ * Tracks the wakefulness lifecycle, including why we're waking or sleeping.
  */
 @SysUISingleton
 public class WakefulnessLifecycle extends Lifecycle<WakefulnessLifecycle.Observer> implements
@@ -51,13 +61,32 @@
     public static final int WAKEFULNESS_AWAKE = 2;
     public static final int WAKEFULNESS_GOING_TO_SLEEP = 3;
 
+    private final Context mContext;
+    private final DisplayMetrics mDisplayMetrics;
+
+    @Nullable
+    private final IWallpaperManager mWallpaperManagerService;
+
     private int mWakefulness = WAKEFULNESS_ASLEEP;
+
     private @PowerManager.WakeReason int mLastWakeReason = PowerManager.WAKE_REASON_UNKNOWN;
+
+    @Nullable
+    private Point mLastWakeOriginLocation = null;
+
     private @PowerManager.GoToSleepReason int mLastSleepReason =
             PowerManager.GO_TO_SLEEP_REASON_MIN;
 
+    @Nullable
+    private Point mLastSleepOriginLocation = null;
+
     @Inject
-    public WakefulnessLifecycle() {
+    public WakefulnessLifecycle(
+            Context context,
+            @Nullable IWallpaperManager wallpaperManagerService) {
+        mContext = context;
+        mDisplayMetrics = context.getResources().getDisplayMetrics();
+        mWallpaperManagerService = wallpaperManagerService;
     }
 
     public @Wakefulness int getWakefulness() {
@@ -85,6 +114,17 @@
         }
         setWakefulness(WAKEFULNESS_WAKING);
         mLastWakeReason = pmWakeReason;
+        updateLastWakeOriginLocation();
+
+        if (mWallpaperManagerService != null) {
+            try {
+                mWallpaperManagerService.notifyWakingUp(
+                        mLastWakeOriginLocation.x, mLastWakeOriginLocation.y, new Bundle());
+            } catch (RemoteException e) {
+                e.printStackTrace();
+            }
+        }
+
         dispatch(Observer::onStartedWakingUp);
     }
 
@@ -102,6 +142,17 @@
         }
         setWakefulness(WAKEFULNESS_GOING_TO_SLEEP);
         mLastSleepReason = pmSleepReason;
+        updateLastSleepOriginLocation();
+
+        if (mWallpaperManagerService != null) {
+            try {
+                mWallpaperManagerService.notifyGoingToSleep(
+                        mLastSleepOriginLocation.x, mLastSleepOriginLocation.y, new Bundle());
+            } catch (RemoteException e) {
+                e.printStackTrace();
+            }
+        }
+
         dispatch(Observer::onStartedGoingToSleep);
     }
 
@@ -124,6 +175,60 @@
         Trace.traceCounter(Trace.TRACE_TAG_APP, "wakefulness", wakefulness);
     }
 
+    private void updateLastWakeOriginLocation() {
+        mLastWakeOriginLocation = null;
+
+        switch (mLastWakeReason) {
+            case PowerManager.WAKE_REASON_POWER_BUTTON:
+                mLastWakeOriginLocation = getPowerButtonOrigin();
+                break;
+            default:
+                mLastWakeOriginLocation = getDefaultWakeSleepOrigin();
+                break;
+        }
+    }
+
+    private void updateLastSleepOriginLocation() {
+        mLastSleepOriginLocation = null;
+
+        switch (mLastSleepReason) {
+            case PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON:
+                mLastSleepOriginLocation = getPowerButtonOrigin();
+                break;
+            default:
+                mLastSleepOriginLocation = getDefaultWakeSleepOrigin();
+                break;
+        }
+    }
+
+    /**
+     * Returns the point on the screen closest to the physical power button.
+     */
+    private Point getPowerButtonOrigin() {
+        final boolean isPortrait = mContext.getResources().getConfiguration().orientation
+                == Configuration.ORIENTATION_PORTRAIT;
+
+        if (isPortrait) {
+            return new Point(
+                    mDisplayMetrics.widthPixels,
+                    mContext.getResources().getDimensionPixelSize(
+                            R.dimen.physical_power_button_center_screen_location_y));
+        } else {
+            return new Point(
+                    mContext.getResources().getDimensionPixelSize(
+                            R.dimen.physical_power_button_center_screen_location_y),
+                    mDisplayMetrics.heightPixels);
+        }
+    }
+
+    /**
+     * Returns the point on the screen used as the default origin for wake/sleep events. This is the
+     * middle-bottom of the screen.
+     */
+    private Point getDefaultWakeSleepOrigin() {
+        return new Point(mDisplayMetrics.widthPixels / 2, mDisplayMetrics.heightPixels);
+    }
+
     public interface Observer {
         default void onStartedWakingUp() {}
         default void onFinishedWakingUp() {}
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
index 574ce0d..5ba04a0 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
@@ -227,7 +227,7 @@
         smartspaceSession = smartspaceManager.createSmartspaceSession(
             SmartspaceConfig.Builder(context, SMARTSPACE_UI_SURFACE_LABEL).build())
         smartspaceSession?.let {
-            it.registerSmartspaceUpdates(
+            it.addOnTargetsAvailableListener(
                 // Use a new thread listening to Smartspace updates instead of using the existing
                 // backgroundExecutor. SmartspaceSession has scheduled routine updates which can be
                 // unpredictable on test simulators, using the backgroundExecutor makes it's hard to
@@ -235,7 +235,7 @@
                 // Switch to use backgroundExecutor when SmartspaceSession has a good way to be
                 // mocked.
                 Executors.newCachedThreadPool(),
-                SmartspaceSession.Callback { targets ->
+                SmartspaceSession.OnTargetsAvailableListener { targets ->
                     smartspaceMediaDataProvider.onTargetsAvailable(targets)
                 })
         }
diff --git a/packages/SystemUI/src/com/android/systemui/people/NotificationHelper.java b/packages/SystemUI/src/com/android/systemui/people/NotificationHelper.java
new file mode 100644
index 0000000..68a829c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/people/NotificationHelper.java
@@ -0,0 +1,213 @@
+/*
+ * 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.systemui.people;
+
+import static android.Manifest.permission.READ_CONTACTS;
+import static android.app.Notification.CATEGORY_MISSED_CALL;
+import static android.app.Notification.EXTRA_MESSAGES;
+import static android.app.Notification.EXTRA_PEOPLE_LIST;
+
+import android.annotation.Nullable;
+import android.app.Notification;
+import android.app.Person;
+import android.content.pm.PackageManager;
+import android.os.Parcelable;
+import android.service.notification.StatusBarNotification;
+import android.util.Log;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.ArrayUtils;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+
+/** Helper functions to handle notifications in People Tiles. */
+public class NotificationHelper {
+    private static final boolean DEBUG = PeopleSpaceUtils.DEBUG;
+    private static final String TAG = "PeopleNotificationHelper";
+
+    /** Returns the notification with highest priority to be shown in People Tiles. */
+    public static NotificationEntry getHighestPriorityNotification(
+            Set<NotificationEntry> notificationEntries) {
+        if (notificationEntries == null || notificationEntries.isEmpty()) {
+            return null;
+        }
+
+        return notificationEntries
+                .stream()
+                .filter(NotificationHelper::isMissedCallOrHasContent)
+                .sorted(notificationEntryComparator)
+                .findFirst().orElse(null);
+    }
+
+
+    /** Notification comparator, checking category and timestamps, in reverse order of priority. */
+    public static Comparator<NotificationEntry> notificationEntryComparator =
+            new Comparator<NotificationEntry>() {
+                @Override
+                public int compare(NotificationEntry e1, NotificationEntry e2) {
+                    Notification n1 = e1.getSbn().getNotification();
+                    Notification n2 = e2.getSbn().getNotification();
+
+                    boolean missedCall1 = isMissedCall(n1);
+                    boolean missedCall2 = isMissedCall(n2);
+                    if (missedCall1 && !missedCall2) {
+                        return -1;
+                    }
+                    if (!missedCall1 && missedCall2) {
+                        return 1;
+                    }
+
+                    // Get messages in reverse chronological order.
+                    List<Notification.MessagingStyle.Message> messages1 =
+                            getMessagingStyleMessages(n1);
+                    List<Notification.MessagingStyle.Message> messages2 =
+                            getMessagingStyleMessages(n2);
+
+                    if (messages1 != null && messages2 != null) {
+                        Notification.MessagingStyle.Message message1 = messages1.get(0);
+                        Notification.MessagingStyle.Message message2 = messages2.get(0);
+                        return (int) (message2.getTimestamp() - message1.getTimestamp());
+                    }
+
+                    if (messages1 == null) {
+                        return 1;
+                    }
+                    if (messages2 == null) {
+                        return -1;
+                    }
+                    return (int) (n2.when - n1.when);
+                }
+            };
+
+    /** Returns whether {@code e} is a missed call notification. */
+    public static boolean isMissedCall(NotificationEntry e) {
+        return e != null && e.getSbn().getNotification() != null
+                && isMissedCall(e.getSbn().getNotification());
+    }
+
+    /** Returns whether {@code notification} is a missed call notification. */
+    public static boolean isMissedCall(Notification notification) {
+        return notification != null && Objects.equals(notification.category, CATEGORY_MISSED_CALL);
+    }
+
+    private static boolean hasContent(NotificationEntry e) {
+        if (e == null) {
+            return false;
+        }
+        List<Notification.MessagingStyle.Message> messages =
+                getMessagingStyleMessages(e.getSbn().getNotification());
+        return messages != null && !messages.isEmpty();
+    }
+
+    /** Returns whether {@code e} is a valid conversation notification. */
+    public static boolean isValid(NotificationEntry e) {
+        return e != null && e.getRanking() != null
+                && e.getRanking().getConversationShortcutInfo() != null
+                && e.getSbn().getNotification() != null;
+    }
+
+    /** Returns whether conversation notification should be shown in People Tile. */
+    public static boolean isMissedCallOrHasContent(NotificationEntry e) {
+        return isMissedCall(e) || hasContent(e);
+    }
+
+    /** Returns whether {@code sbn}'s package has permission to read contacts. */
+    public static boolean hasReadContactsPermission(
+            PackageManager packageManager, StatusBarNotification sbn) {
+        return packageManager.checkPermission(READ_CONTACTS,
+                sbn.getPackageName()) == PackageManager.PERMISSION_GRANTED;
+    }
+
+    /**
+     * Returns whether a notification should be matched to other Tiles by Uri.
+     *
+     * <p>Currently only matches missed calls.
+     */
+    public static boolean shouldMatchNotificationByUri(StatusBarNotification sbn) {
+        Notification notification = sbn.getNotification();
+        if (notification == null) {
+            if (DEBUG) Log.d(TAG, "Notification is null");
+            return false;
+        }
+        boolean isMissedCall = isMissedCall(notification);
+        if (!isMissedCall) {
+            if (DEBUG) Log.d(TAG, "Not missed call");
+        }
+        return isMissedCall;
+    }
+
+    /**
+     * Try to retrieve a valid Uri via {@code sbn}, falling back to the {@code
+     * contactUriFromShortcut} if valid.
+     */
+    @Nullable
+    public static String getContactUri(StatusBarNotification sbn) {
+        // First, try to get a Uri from the Person directly set on the Notification.
+        ArrayList<Person> people = sbn.getNotification().extras.getParcelableArrayList(
+                EXTRA_PEOPLE_LIST);
+        if (people != null && people.get(0) != null) {
+            String contactUri = people.get(0).getUri();
+            if (contactUri != null && !contactUri.isEmpty()) {
+                return contactUri;
+            }
+        }
+
+        // Then, try to get a Uri from the Person set on the Notification message.
+        List<Notification.MessagingStyle.Message> messages =
+                getMessagingStyleMessages(sbn.getNotification());
+        if (messages != null && !messages.isEmpty()) {
+            Notification.MessagingStyle.Message message = messages.get(0);
+            Person sender = message.getSenderPerson();
+            if (sender != null && sender.getUri() != null && !sender.getUri().isEmpty()) {
+                return sender.getUri();
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Returns {@link Notification.MessagingStyle.Message}s from the Notification in chronological
+     * order from most recent to least.
+     */
+    @VisibleForTesting
+    @Nullable
+    public static List<Notification.MessagingStyle.Message> getMessagingStyleMessages(
+            Notification notification) {
+        if (notification == null) {
+            return null;
+        }
+        if (Notification.MessagingStyle.class.equals(notification.getNotificationStyle())
+                && notification.extras != null) {
+            final Parcelable[] messages = notification.extras.getParcelableArray(EXTRA_MESSAGES);
+            if (!ArrayUtils.isEmpty(messages)) {
+                List<Notification.MessagingStyle.Message> sortedMessages =
+                        Notification.MessagingStyle.Message.getMessagesFromBundleArray(messages);
+                sortedMessages.sort(Collections.reverseOrder(
+                        Comparator.comparing(Notification.MessagingStyle.Message::getTimestamp)));
+                return sortedMessages;
+            }
+        }
+        return null;
+    }
+}
+
diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleProvider.java b/packages/SystemUI/src/com/android/systemui/people/PeopleProvider.java
index 59329d1..a964056 100644
--- a/packages/SystemUI/src/com/android/systemui/people/PeopleProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/people/PeopleProvider.java
@@ -16,36 +16,28 @@
 
 package com.android.systemui.people;
 
-import android.app.people.IPeopleManager;
 import android.content.ContentProvider;
 import android.content.ContentValues;
-import android.content.Context;
-import android.content.pm.LauncherApps;
 import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Binder;
 import android.os.Bundle;
-import android.os.ServiceManager;
 import android.os.UserHandle;
 import android.util.Log;
 import android.widget.RemoteViews;
 
-import com.android.systemui.Dependency;
+import com.android.systemui.people.widget.PeopleSpaceWidgetManager;
 import com.android.systemui.shared.system.PeopleProviderUtils;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
 
 /** API that returns a People Tile preview. */
 public class PeopleProvider extends ContentProvider {
-
-    LauncherApps mLauncherApps;
-    IPeopleManager mPeopleManager;
-    NotificationEntryManager mNotificationEntryManager;
-
     private static final String TAG = "PeopleProvider";
     private static final boolean DEBUG = PeopleSpaceUtils.DEBUG;
     private static final String EMPTY_STRING = "";
 
+    PeopleSpaceWidgetManager mPeopleSpaceWidgetManager;
+
     @Override
     public Bundle call(String method, String arg, Bundle extras) {
         if (!doesCallerHavePermission()) {
@@ -83,17 +75,11 @@
             throw new IllegalArgumentException("Null user handle");
         }
 
-        // If services are not set as mocks in tests, fetch them now.
-        mPeopleManager = mPeopleManager != null ? mPeopleManager
-                : IPeopleManager.Stub.asInterface(
-                        ServiceManager.getService(Context.PEOPLE_SERVICE));
-        mLauncherApps = mLauncherApps != null ? mLauncherApps
-                : getContext().getSystemService(LauncherApps.class);
-        mNotificationEntryManager = mNotificationEntryManager != null ? mNotificationEntryManager
-                : Dependency.get(NotificationEntryManager.class);
-
-        RemoteViews view = PeopleSpaceUtils.getPreview(getContext(), mPeopleManager, mLauncherApps,
-                mNotificationEntryManager, shortcutId, userHandle, packageName);
+        if (mPeopleSpaceWidgetManager == null) {
+            mPeopleSpaceWidgetManager = new PeopleSpaceWidgetManager(getContext());
+        }
+        RemoteViews view =
+                mPeopleSpaceWidgetManager.getPreview(shortcutId, userHandle, packageName, extras);
         if (view == null) {
             if (DEBUG) Log.d(TAG, "No preview available for shortcutId: " + shortcutId);
             return null;
diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java
index a0b5521..ff14abe 100644
--- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java
@@ -23,18 +23,14 @@
 import static com.android.systemui.people.PeopleTileViewHelper.getSizeInDp;
 
 import android.app.Activity;
-import android.app.INotificationManager;
-import android.app.people.IPeopleManager;
 import android.app.people.PeopleSpaceTile;
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.LauncherApps;
 import android.content.res.TypedArray;
 import android.graphics.Color;
 import android.graphics.Outline;
 import android.graphics.drawable.GradientDrawable;
 import android.os.Bundle;
-import android.os.ServiceManager;
 import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
@@ -43,7 +39,7 @@
 
 import com.android.systemui.R;
 import com.android.systemui.people.widget.PeopleSpaceWidgetManager;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import com.android.systemui.people.widget.PeopleTileKey;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -56,19 +52,13 @@
     private static final String TAG = "PeopleSpaceActivity";
     private static final boolean DEBUG = PeopleSpaceUtils.DEBUG;
 
-    private IPeopleManager mPeopleManager;
     private PeopleSpaceWidgetManager mPeopleSpaceWidgetManager;
-    private INotificationManager mNotificationManager;
-    private LauncherApps mLauncherApps;
     private Context mContext;
-    private NotificationEntryManager mNotificationEntryManager;
     private int mAppWidgetId;
 
     @Inject
-    public PeopleSpaceActivity(NotificationEntryManager notificationEntryManager,
-            PeopleSpaceWidgetManager peopleSpaceWidgetManager) {
+    public PeopleSpaceActivity(PeopleSpaceWidgetManager peopleSpaceWidgetManager) {
         super();
-        mNotificationEntryManager = notificationEntryManager;
         mPeopleSpaceWidgetManager = peopleSpaceWidgetManager;
 
     }
@@ -77,11 +67,6 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         mContext = getApplicationContext();
-        mNotificationManager = INotificationManager.Stub.asInterface(
-                ServiceManager.getService(Context.NOTIFICATION_SERVICE));
-        mPeopleManager = IPeopleManager.Stub.asInterface(
-                ServiceManager.getService(Context.PEOPLE_SERVICE));
-        mLauncherApps = mContext.getSystemService(LauncherApps.class);
         mAppWidgetId = getIntent().getIntExtra(EXTRA_APPWIDGET_ID,
                 INVALID_APPWIDGET_ID);
         setResult(RESULT_CANCELED);
@@ -92,10 +77,8 @@
         List<PeopleSpaceTile> priorityTiles = new ArrayList<>();
         List<PeopleSpaceTile> recentTiles = new ArrayList<>();
         try {
-            priorityTiles = PeopleSpaceUtils.getPriorityTiles(mContext, mNotificationManager,
-                    mPeopleManager, mLauncherApps, mNotificationEntryManager);
-            recentTiles = PeopleSpaceUtils.getRecentTiles(mContext, mNotificationManager,
-                    mPeopleManager, mLauncherApps, mNotificationEntryManager);
+            priorityTiles = mPeopleSpaceWidgetManager.getPriorityTiles();
+            recentTiles = mPeopleSpaceWidgetManager.getRecentTiles();
         } catch (Exception e) {
             Log.e(TAG, "Couldn't retrieve conversations", e);
         }
@@ -154,14 +137,15 @@
                     getSizeInDp(mContext, R.dimen.avatar_size_for_medium,
                             mContext.getResources().getDisplayMetrics().density)));
 
-            tileView.setOnClickListener(v -> storeWidgetConfiguration(tile));
+            PeopleTileKey key = new PeopleTileKey(tile);
+            tileView.setOnClickListener(v -> storeWidgetConfiguration(tile, key));
         } catch (Exception e) {
             Log.e(TAG, "Couldn't retrieve shortcut information", e);
         }
     }
 
     /** Stores the user selected configuration for {@code mAppWidgetId}. */
-    private void storeWidgetConfiguration(PeopleSpaceTile tile) {
+    private void storeWidgetConfiguration(PeopleSpaceTile tile, PeopleTileKey key) {
         if (PeopleSpaceUtils.DEBUG) {
             if (DEBUG) {
                 Log.d(TAG, "Put " + tile.getUserName() + "'s shortcut ID: "
@@ -169,7 +153,7 @@
                         + mAppWidgetId);
             }
         }
-        mPeopleSpaceWidgetManager.addNewWidget(mAppWidgetId, tile);
+        mPeopleSpaceWidgetManager.addNewWidget(mAppWidgetId, key);
         finishActivity();
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java
index 0fbe1f7..eefe5ca 100644
--- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java
+++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java
@@ -16,11 +16,12 @@
 
 package com.android.systemui.people;
 
-import static android.app.Notification.CATEGORY_MISSED_CALL;
-import static android.app.Notification.EXTRA_MESSAGES;
+import static com.android.systemui.people.NotificationHelper.getContactUri;
+import static com.android.systemui.people.NotificationHelper.getMessagingStyleMessages;
+import static com.android.systemui.people.NotificationHelper.hasReadContactsPermission;
+import static com.android.systemui.people.NotificationHelper.isMissedCall;
+import static com.android.systemui.people.NotificationHelper.shouldMatchNotificationByUri;
 
-import android.annotation.NonNull;
-import android.app.INotificationManager;
 import android.app.Notification;
 import android.app.people.ConversationChannel;
 import android.app.people.IPeopleManager;
@@ -29,6 +30,7 @@
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.content.pm.LauncherApps;
+import android.content.pm.PackageManager;
 import android.content.pm.ShortcutInfo;
 import android.database.Cursor;
 import android.database.SQLException;
@@ -36,16 +38,10 @@
 import android.graphics.Canvas;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
-import android.icu.text.MeasureFormat;
-import android.icu.util.Measure;
-import android.icu.util.MeasureUnit;
 import android.net.Uri;
 import android.os.Bundle;
-import android.os.Parcelable;
-import android.os.ServiceManager;
-import android.os.UserHandle;
+import android.os.UserManager;
 import android.provider.ContactsContract;
-import android.service.notification.ConversationChannelWrapper;
 import android.service.notification.StatusBarNotification;
 import android.text.TextUtils;
 import android.util.Log;
@@ -61,21 +57,16 @@
 import com.android.systemui.R;
 import com.android.systemui.people.widget.AppWidgetOptionsHelper;
 import com.android.systemui.people.widget.PeopleTileKey;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 
 import java.text.SimpleDateFormat;
-import java.time.Duration;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -85,9 +76,6 @@
     /** Turns on debugging information about People Space. */
     public static final boolean DEBUG = true;
     private static final String TAG = "PeopleSpaceUtils";
-    private static final int DAYS_IN_A_WEEK = 7;
-    private static final int MIN_HOUR = 1;
-    private static final int ONE_DAY = 1;
     public static final String PACKAGE_NAME = "package_name";
     public static final String USER_ID = "user_id";
     public static final String SHORTCUT_ID = "shortcut_id";
@@ -127,58 +115,6 @@
         }
     }
 
-    /** Returns a list of map entries corresponding to user's priority conversations. */
-    @NonNull
-    public static List<PeopleSpaceTile> getPriorityTiles(
-            Context context, INotificationManager notificationManager, IPeopleManager peopleManager,
-            LauncherApps launcherApps, NotificationEntryManager notificationEntryManager)
-            throws Exception {
-        List<ConversationChannelWrapper> conversations =
-                notificationManager.getConversations(
-                        false).getList();
-        // Add priority conversations to tiles list.
-        Stream<ShortcutInfo> priorityConversations = conversations.stream()
-                .filter(c -> c.getNotificationChannel() != null
-                        && c.getNotificationChannel().isImportantConversation())
-                .map(c -> c.getShortcutInfo());
-        List<PeopleSpaceTile> priorityTiles = getSortedTiles(peopleManager, launcherApps,
-                priorityConversations);
-        priorityTiles = augmentTilesFromVisibleNotifications(
-                context, priorityTiles, notificationEntryManager);
-        return priorityTiles;
-    }
-
-    /** Returns a list of map entries corresponding to user's recent conversations. */
-    @NonNull
-    public static List<PeopleSpaceTile> getRecentTiles(
-            Context context, INotificationManager notificationManager, IPeopleManager peopleManager,
-            LauncherApps launcherApps, NotificationEntryManager notificationEntryManager)
-            throws Exception {
-        if (DEBUG) Log.d(TAG, "Add recent conversations");
-        List<ConversationChannelWrapper> conversations =
-                notificationManager.getConversations(
-                        false).getList();
-        Stream<ShortcutInfo> nonPriorityConversations = conversations.stream()
-                .filter(c -> c.getNotificationChannel() == null
-                        || !c.getNotificationChannel().isImportantConversation())
-                .map(c -> c.getShortcutInfo());
-
-        List<ConversationChannel> recentConversationsList =
-                peopleManager.getRecentConversations().getList();
-        Stream<ShortcutInfo> recentConversations = recentConversationsList
-                .stream()
-                .map(c -> c.getShortcutInfo());
-
-        Stream<ShortcutInfo> mergedStream = Stream.concat(nonPriorityConversations,
-                recentConversations);
-        List<PeopleSpaceTile> recentTiles =
-                getSortedTiles(peopleManager, launcherApps, mergedStream);
-
-        recentTiles = augmentTilesFromVisibleNotifications(
-                context, recentTiles, notificationEntryManager);
-        return recentTiles;
-    }
-
     /** Returns stored widgets for the conversation specified. */
     public static Set<String> getStoredWidgetIds(SharedPreferences sp, PeopleTileKey key) {
         if (!key.isValid()) {
@@ -247,72 +183,85 @@
         editor.putStringSet(storageKey, storedWidgetIds);
     }
 
-    /** Augments a single {@link PeopleSpaceTile} with notification content, if one is present. */
-    public static PeopleSpaceTile augmentSingleTileFromVisibleNotifications(Context context,
-            PeopleSpaceTile tile, NotificationEntryManager notificationEntryManager) {
-        List<PeopleSpaceTile> augmentedTile = augmentTilesFromVisibleNotifications(
-                context, Arrays.asList(tile), notificationEntryManager);
-        return augmentedTile.get(0);
-    }
-
-    static List<PeopleSpaceTile> augmentTilesFromVisibleNotifications(Context context,
-            List<PeopleSpaceTile> tiles, NotificationEntryManager notificationEntryManager) {
-        if (notificationEntryManager == null) {
-            Log.w(TAG, "NotificationEntryManager is null");
-            return tiles;
+    /** Returns notifications that match provided {@code contactUri}. */
+    public static List<NotificationEntry> getNotificationsByUri(
+            PackageManager packageManager, String contactUri,
+            Map<PeopleTileKey, Set<NotificationEntry>> notifications) {
+        if (DEBUG) Log.d(TAG, "Getting notifications by contact URI.");
+        if (TextUtils.isEmpty(contactUri)) {
+            return new ArrayList<>();
         }
-        Map<PeopleTileKey, NotificationEntry> visibleNotifications = notificationEntryManager
-                .getVisibleNotifications()
-                .stream()
-                .filter(entry -> entry.getRanking() != null
-                        && entry.getRanking().getConversationShortcutInfo() != null)
-                .collect(Collectors.toMap(PeopleTileKey::new, e -> e,
-                        // Handle duplicate keys to avoid crashes.
-                        (e1, e2) -> e1.getSbn().getNotification().when
-                                > e2.getSbn().getNotification().when ? e1 : e2));
-        if (DEBUG) {
-            Log.d(TAG, "Number of visible notifications:" + visibleNotifications.size());
-        }
-        return tiles
-                .stream()
-                .map(entry -> augmentTileFromVisibleNotifications(
-                        context, entry, visibleNotifications))
+        return notifications.entrySet().stream().flatMap(e -> e.getValue().stream())
+                .filter(e ->
+                        hasReadContactsPermission(packageManager, e.getSbn())
+                                && shouldMatchNotificationByUri(e.getSbn())
+                                && Objects.equals(contactUri, getContactUri(e.getSbn()))
+                )
                 .collect(Collectors.toList());
     }
 
-    static PeopleSpaceTile augmentTileFromVisibleNotifications(Context context,
-            PeopleSpaceTile tile, Map<PeopleTileKey, NotificationEntry> visibleNotifications) {
-        PeopleTileKey key = new PeopleTileKey(
-                tile.getId(), getUserId(tile), tile.getPackageName());
-        // TODO: Match missed calls with matching Uris in addition to keys.
-        if (!visibleNotifications.containsKey(key)) {
-            if (DEBUG) Log.d(TAG, "No existing notifications for key:" + key.toString());
-            return tile;
+    /** Returns the total messages in {@code notificationEntries}.*/
+    public static int getMessagesCount(Set<NotificationEntry> notificationEntries) {
+        if (DEBUG) {
+            Log.d(TAG, "Calculating messages count from " + notificationEntries.size()
+                    + " notifications.");
         }
-        if (DEBUG) Log.d(TAG, "Augmenting tile from visible notifications, key:" + key.toString());
-        return augmentTileFromNotification(context, tile, visibleNotifications.get(key).getSbn());
+        int messagesCount = 0;
+        for (NotificationEntry entry : notificationEntries) {
+            Notification notification = entry.getSbn().getNotification();
+            // Should not count messages from missed call notifications.
+            if (isMissedCall(notification)) {
+                continue;
+            }
+
+            List<Notification.MessagingStyle.Message> messages =
+                    getMessagingStyleMessages(notification);
+            if (messages != null) {
+                messagesCount += messages.size();
+            }
+        }
+        return messagesCount;
     }
 
-    /** Augments {@code tile} with the notification content from {@code sbn}. */
-    public static PeopleSpaceTile augmentTileFromNotification(Context context, PeopleSpaceTile tile,
-            StatusBarNotification sbn) {
-        Notification notification = sbn.getNotification();
-        if (notification == null) {
-            if (DEBUG) Log.d(TAG, "Notification is null");
-            return tile;
+    /** Removes all notification related fields from {@code tile}. */
+    public static PeopleSpaceTile removeNotificationFields(PeopleSpaceTile tile) {
+        if (DEBUG) {
+            Log.i(TAG, "Removing any notification stored for tile Id: " + tile.getId());
         }
-        boolean isMissedCall = Objects.equals(notification.category, CATEGORY_MISSED_CALL);
+        return tile
+                .toBuilder()
+                // Reset notification content.
+                .setNotificationKey(null)
+                .setNotificationContent(null)
+                .setNotificationDataUri(null)
+                .setMessagesCount(0)
+                // Reset missed calls category.
+                .setNotificationCategory(null)
+                .build();
+    }
+
+    /**
+     * Augments {@code tile} with the notification content from {@code notificationEntry} and
+     * {@code messagesCount}.
+     */
+    public static PeopleSpaceTile augmentTileFromNotification(Context context, PeopleSpaceTile tile,
+            NotificationEntry notificationEntry, int messagesCount) {
+        if (notificationEntry == null || notificationEntry.getSbn().getNotification() == null) {
+            if (DEBUG) Log.d(TAG, "Notification is null");
+            return removeNotificationFields(tile);
+        }
+        Notification notification = notificationEntry.getSbn().getNotification();
+        boolean isMissedCall = isMissedCall(notification);
         List<Notification.MessagingStyle.Message> messages =
                 getMessagingStyleMessages(notification);
 
         if (!isMissedCall && ArrayUtils.isEmpty(messages)) {
             if (DEBUG) Log.d(TAG, "Notification has no content");
-            return tile;
+            return removeNotificationFields(tile);
         }
 
         // messages are in chronological order from most recent to least.
         Notification.MessagingStyle.Message message = messages != null ? messages.get(0) : null;
-        int messagesCount = messages != null ? messages.size() : 0;
         // If it's a missed call notification and it doesn't include content, use fallback value,
         // otherwise, use notification content.
         boolean hasMessageText = message != null && !TextUtils.isEmpty(message.getText());
@@ -323,7 +272,7 @@
 
         return tile
                 .toBuilder()
-                .setNotificationKey(sbn.getKey())
+                .setNotificationKey(notificationEntry.getSbn().getKey())
                 .setNotificationCategory(notification.category)
                 .setNotificationContent(content)
                 .setNotificationDataUri(dataUri)
@@ -331,36 +280,13 @@
                 .build();
     }
 
-    /**
-     * Returns {@link Notification.MessagingStyle.Message}s from the Notification in chronological
-     * order from most recent to least.
-     */
-    @VisibleForTesting
-    public static List<Notification.MessagingStyle.Message> getMessagingStyleMessages(
-            Notification notification) {
-        if (notification == null) {
-            return null;
-        }
-        if (Notification.MessagingStyle.class.equals(notification.getNotificationStyle())
-                && notification.extras != null) {
-            final Parcelable[] messages = notification.extras.getParcelableArray(EXTRA_MESSAGES);
-            if (!ArrayUtils.isEmpty(messages)) {
-                List<Notification.MessagingStyle.Message> sortedMessages =
-                        Notification.MessagingStyle.Message.getMessagesFromBundleArray(messages);
-                sortedMessages.sort(Collections.reverseOrder(
-                        Comparator.comparing(Notification.MessagingStyle.Message::getTimestamp)));
-                return sortedMessages;
-            }
-        }
-        return null;
-    }
-
     /** Returns a list sorted by ascending last interaction time from {@code stream}. */
-    private static List<PeopleSpaceTile> getSortedTiles(IPeopleManager peopleManager,
-            LauncherApps launcherApps,
+    public static List<PeopleSpaceTile> getSortedTiles(IPeopleManager peopleManager,
+            LauncherApps launcherApps, UserManager userManager,
             Stream<ShortcutInfo> stream) {
         return stream
                 .filter(Objects::nonNull)
+                .filter(c -> !userManager.isQuietModeEnabled(c.getUserHandle()))
                 .map(c -> new PeopleSpaceTile.Builder(c, launcherApps).build())
                 .filter(c -> shouldKeepConversation(c))
                 .map(c -> c.toBuilder().setLastInteractionTimestamp(
@@ -426,36 +352,6 @@
         return bitmap;
     }
 
-    /** Returns a readable status describing the {@code lastInteraction}. */
-    public static String getLastInteractionString(Context context, long lastInteraction) {
-        if (lastInteraction == 0L) {
-            Log.e(TAG, "Could not get valid last interaction");
-            return context.getString(R.string.basic_status);
-        }
-        long now = System.currentTimeMillis();
-        Duration durationSinceLastInteraction = Duration.ofMillis(now - lastInteraction);
-        MeasureFormat formatter = MeasureFormat.getInstance(Locale.getDefault(),
-                MeasureFormat.FormatWidth.WIDE);
-        if (durationSinceLastInteraction.toHours() < MIN_HOUR) {
-            return context.getString(R.string.timestamp, formatter.formatMeasures(
-                    new Measure(durationSinceLastInteraction.toMinutes(), MeasureUnit.MINUTE)));
-        } else if (durationSinceLastInteraction.toDays() < ONE_DAY) {
-            return context.getString(R.string.timestamp, formatter.formatMeasures(
-                    new Measure(durationSinceLastInteraction.toHours(),
-                            MeasureUnit.HOUR)));
-        } else if (durationSinceLastInteraction.toDays() < DAYS_IN_A_WEEK) {
-            return context.getString(R.string.timestamp, formatter.formatMeasures(
-                    new Measure(durationSinceLastInteraction.toHours(),
-                            MeasureUnit.DAY)));
-        } else {
-            return context.getString(durationSinceLastInteraction.toDays() == DAYS_IN_A_WEEK
-                            ? R.string.timestamp : R.string.over_timestamp,
-                    formatter.formatMeasures(
-                            new Measure(durationSinceLastInteraction.toDays() / DAYS_IN_A_WEEK,
-                                    MeasureUnit.WEEK)));
-        }
-    }
-
     /**
      * Returns whether the {@code conversation} should be kept for display in the People Space.
      *
@@ -557,7 +453,14 @@
     /** Updates the current widget view with provided {@link PeopleSpaceTile}. */
     public static void updateAppWidgetViews(AppWidgetManager appWidgetManager,
             Context context, int appWidgetId, PeopleSpaceTile tile, Bundle options) {
-        if (DEBUG) Log.d(TAG, "Widget: " + appWidgetId + ", " + tile.getUserName());
+        if (tile == null) {
+            if (DEBUG) Log.d(TAG, "Widget: " + appWidgetId + ". Tile is null, skipping update");
+            return;
+        }
+        if (DEBUG) {
+            Log.d(TAG, "Widget: " + appWidgetId + ", " + tile.getUserName() + ", "
+                    + tile.getPackageName());
+        }
         RemoteViews views = new PeopleTileViewHelper(context, tile, appWidgetId,
                 options).getViews();
 
@@ -568,10 +471,24 @@
     /** Updates tile in app widget options and the current view. */
     public static void updateAppWidgetOptionsAndView(AppWidgetManager appWidgetManager,
             Context context, int appWidgetId, PeopleSpaceTile tile) {
+        if (tile == null) {
+            Log.d(TAG, "Tile is null, skipping storage and update.");
+            return;
+        }
         Bundle options = AppWidgetOptionsHelper.setPeopleTile(appWidgetManager, appWidgetId, tile);
         updateAppWidgetViews(appWidgetManager, context, appWidgetId, tile, options);
     }
 
+    /** Wrapper around {@link #updateAppWidgetOptionsAndView} with optional tile as a parameter. */
+    public static void updateAppWidgetOptionsAndView(AppWidgetManager appWidgetManager,
+            Context context, int appWidgetId, Optional<PeopleSpaceTile> optionalTile) {
+        if (!optionalTile.isPresent()) {
+            Log.d(TAG, "Tile is null, skipping storage and update.");
+            return;
+        }
+        updateAppWidgetOptionsAndView(appWidgetManager, context, appWidgetId, optionalTile.get());
+    }
+
     /**
      * Returns lookup keys for all contacts with a birthday today.
      *
@@ -613,43 +530,6 @@
         return lookupKeysWithBirthdaysToday;
     }
 
-    /**
-     * Returns a {@link RemoteViews} preview of a Conversation's People Tile. Returns null if one
-     * is not available.
-     */
-    public static RemoteViews getPreview(Context context, IPeopleManager peopleManager,
-            LauncherApps launcherApps, NotificationEntryManager notificationEntryManager,
-            String shortcutId, UserHandle userHandle, String packageName) {
-        peopleManager = (peopleManager != null) ? peopleManager : IPeopleManager.Stub.asInterface(
-                ServiceManager.getService(Context.PEOPLE_SERVICE));
-        launcherApps = (launcherApps != null) ? launcherApps
-                : context.getSystemService(LauncherApps.class);
-        if (peopleManager == null || launcherApps == null) {
-            return null;
-        }
-
-        ConversationChannel channel;
-        try {
-            channel = peopleManager.getConversation(
-                    packageName, userHandle.getIdentifier(), shortcutId);
-        } catch (Exception e) {
-            Log.w(TAG, "Exception getting tiles: " + e);
-            return null;
-        }
-        PeopleSpaceTile tile = PeopleSpaceUtils.getTile(channel, launcherApps);
-
-        if (tile == null) {
-            if (DEBUG) Log.i(TAG, "No tile was returned");
-            return null;
-        }
-        PeopleSpaceTile augmentedTile = augmentSingleTileFromVisibleNotifications(
-                context, tile, notificationEntryManager);
-
-        if (DEBUG) Log.i(TAG, "Returning tile preview for shortcutId: " + shortcutId);
-        Bundle bundle = new Bundle();
-        return new PeopleTileViewHelper(context, augmentedTile, 0, bundle).getViews();
-    }
-
     /** Returns the userId associated with a {@link PeopleSpaceTile} */
     public static int getUserId(PeopleSpaceTile tile) {
         return tile.getUserHandle().getIdentifier();
diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java b/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java
index 51af47d..dd89f74 100644
--- a/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java
@@ -33,7 +33,6 @@
 import static com.android.systemui.people.PeopleSpaceUtils.convertDrawableToBitmap;
 import static com.android.systemui.people.PeopleSpaceUtils.getUserId;
 
-import android.annotation.ColorInt;
 import android.annotation.Nullable;
 import android.app.PendingIntent;
 import android.app.people.ConversationStatus;
@@ -41,27 +40,28 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Configuration;
-import android.content.res.TypedArray;
 import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
+import android.icu.text.MeasureFormat;
+import android.icu.util.Measure;
+import android.icu.util.MeasureUnit;
 import android.net.Uri;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.util.IconDrawableFactory;
 import android.util.Log;
-import android.view.ContextThemeWrapper;
 import android.view.View;
 import android.widget.RemoteViews;
 import android.widget.TextView;
 
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.settingslib.Utils;
 import com.android.systemui.R;
 import com.android.systemui.people.widget.LaunchConversationActivity;
 import com.android.systemui.people.widget.PeopleSpaceWidgetProvider;
 
 import java.text.NumberFormat;
+import java.time.Duration;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
@@ -71,11 +71,16 @@
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
-class PeopleTileViewHelper {
+/** Functions that help creating the People tile layouts. */
+public class PeopleTileViewHelper {
     /** Turns on debugging information about People Space. */
     public static final boolean DEBUG = true;
     private static final String TAG = "PeopleTileView";
 
+    private static final int DAYS_IN_A_WEEK = 7;
+    private static final int ONE_DAY = 1;
+    private static final int MAX_WEEKS = 2;
+
     public static final int LAYOUT_SMALL = 0;
     public static final int LAYOUT_MEDIUM = 1;
     public static final int LAYOUT_LARGE = 2;
@@ -83,7 +88,9 @@
     private static final int MIN_CONTENT_MAX_LINES = 2;
 
     private static final int FIXED_HEIGHT_DIMENS_FOR_LARGE_CONTENT = 14 + 12 + 4 + 16;
-    private static final int FIXED_HEIGHT_DIMENS_FOR_MEDIUM_CONTENT = 8 + 4 + 4 + 8;
+    private static final int MIN_MEDIUM_VERTICAL_PADDING = 4;
+    private static final int MAX_MEDIUM_PADDING = 16;
+    private static final int FIXED_HEIGHT_DIMENS_FOR_MEDIUM_CONTENT_BEFORE_PADDING = 4 + 4;
     private static final int FIXED_HEIGHT_DIMENS_FOR_SMALL = 6 + 4 + 8;
     private static final int FIXED_WIDTH_DIMENS_FOR_SMALL = 4 + 4;
 
@@ -96,6 +103,8 @@
 
     public static final String EMPTY_STRING = "";
 
+    private int mMediumVerticalPadding;
+
     private Context mContext;
     private PeopleSpaceTile mTile;
     private float mDensity;
@@ -107,7 +116,7 @@
     private Locale mLocale;
     private NumberFormat mIntegerFormat;
 
-    PeopleTileViewHelper(Context context, PeopleSpaceTile tile,
+    public PeopleTileViewHelper(Context context, PeopleSpaceTile tile,
             int appWidgetId, Bundle options) {
         mContext = context;
         mTile = tile;
@@ -205,7 +214,8 @@
     private int getContentHeightForLayout(int lineHeight) {
         switch (mLayoutSize) {
             case LAYOUT_MEDIUM:
-                return mHeight - (lineHeight + FIXED_HEIGHT_DIMENS_FOR_MEDIUM_CONTENT);
+                return mHeight - (lineHeight + FIXED_HEIGHT_DIMENS_FOR_MEDIUM_CONTENT_BEFORE_PADDING
+                        + mMediumVerticalPadding * 2);
             case LAYOUT_LARGE:
                 return mHeight - (getSizeInDp(
                         R.dimen.max_people_avatar_size_for_large_content) + lineHeight
@@ -224,7 +234,16 @@
         }
         // Small layout used below a certain minimum mWidth with any mHeight.
         if (mWidth >= getSizeInDp(R.dimen.required_width_for_medium)) {
-            if (DEBUG) Log.d(TAG, "Medium view for mWidth: " + mWidth + " mHeight: " + mHeight);
+            int spaceAvailableForPadding =
+                    mHeight - (getSizeInDp(R.dimen.avatar_size_for_medium) + 4 + getLineHeight(
+                            getSizeInDp(R.dimen.name_text_size_for_medium)));
+            if (DEBUG) {
+                Log.d(TAG, "Medium view for mWidth: " + mWidth + " mHeight: " + mHeight
+                        + " with padding space: " + spaceAvailableForPadding);
+            }
+            int maxVerticalPadding = Math.min(Math.floorDiv(spaceAvailableForPadding, 2),
+                    MAX_MEDIUM_PADDING);
+            mMediumVerticalPadding = Math.max(MIN_MEDIUM_VERTICAL_PADDING, maxVerticalPadding);
             return LAYOUT_MEDIUM;
         }
         // Small layout can always handle our minimum mWidth and mHeight for our widget.
@@ -328,6 +347,7 @@
     private RemoteViews createMissedCallRemoteViews() {
         RemoteViews views = getViewForContentLayout();
         views.setViewVisibility(R.id.predefined_icon, View.VISIBLE);
+        views.setViewVisibility(R.id.messages_count, View.GONE);
         setMaxLines(views);
         views.setTextViewText(R.id.text_content, mTile.getNotificationContent());
         views.setImageViewResource(R.id.predefined_icon, R.drawable.ic_phone_missed);
@@ -347,11 +367,7 @@
             setMaxLines(views);
             CharSequence content = mTile.getNotificationContent();
             views = setPunctuationRemoteViewsFields(views, content);
-            // TODO(b/184931139): Update to RemoteViews wrapper to set via attribute once available
-            @ColorInt int color = Utils.getColorAttr(mContext,
-                    android.R.attr.textColorPrimary).getDefaultColor();
-            views.setInt(R.id.text_content, "setTextColor", color);
-
+            views.setColorAttr(R.id.text_content, "setTextColor", android.R.attr.textColorPrimary);
             views.setTextViewText(R.id.text_content, mTile.getNotificationContent());
             views.setViewVisibility(R.id.image, View.GONE);
             views.setImageViewResource(R.id.predefined_icon, R.drawable.ic_message);
@@ -398,9 +414,7 @@
         views.setViewVisibility(R.id.messages_count, View.GONE);
         setMaxLines(views);
         // Secondary text color for statuses.
-        @ColorInt int secondaryColor = Utils.getColorAttr(mContext,
-                android.R.attr.textColorSecondary).getDefaultColor();
-        views.setInt(R.id.text_content, "setTextColor", secondaryColor);
+        views.setColorAttr(R.id.text_content, "setTextColor", android.R.attr.textColorSecondary);
         views.setTextViewText(R.id.text_content, statusText);
 
         Icon statusIcon = status.getIcon();
@@ -534,13 +548,21 @@
         if (mLayoutSize == LAYOUT_SMALL) {
             views.setViewVisibility(R.id.predefined_icon, View.VISIBLE);
             views.setViewVisibility(R.id.name, View.GONE);
-            views.setViewVisibility(R.id.messages_count, View.GONE);
         } else {
             views.setViewVisibility(R.id.predefined_icon, View.GONE);
             views.setViewVisibility(R.id.name, View.VISIBLE);
             views.setViewVisibility(R.id.text_content, View.VISIBLE);
             views.setViewVisibility(R.id.subtext, View.GONE);
         }
+
+        if (mLayoutSize == LAYOUT_MEDIUM) {
+            if (DEBUG) Log.d(TAG, "Set vertical padding: " + mMediumVerticalPadding);
+            int horizontalPadding = (int) Math.floor(MAX_MEDIUM_PADDING * mDensity);
+            int verticalPadding = (int) Math.floor(mMediumVerticalPadding * mDensity);
+            views.setViewPadding(R.id.item, horizontalPadding, verticalPadding, horizontalPadding,
+                    verticalPadding);
+        }
+        views.setViewVisibility(R.id.messages_count, View.GONE);
         return views;
     }
 
@@ -551,9 +573,16 @@
             views.setViewVisibility(R.id.predefined_icon, View.GONE);
             views.setViewVisibility(R.id.messages_count, View.GONE);
         }
-        String status = PeopleSpaceUtils.getLastInteractionString(mContext,
+        String status = getLastInteractionString(mContext,
                 mTile.getLastInteractionTimestamp());
-        views.setTextViewText(R.id.last_interaction, status);
+        if (status != null) {
+            if (DEBUG) Log.d(TAG, "Show last interaction");
+            views.setViewVisibility(R.id.last_interaction, View.VISIBLE);
+            views.setTextViewText(R.id.last_interaction, status);
+        } else {
+            if (DEBUG) Log.d(TAG, "Hide last interaction");
+            views.setViewVisibility(R.id.last_interaction, View.GONE);
+        }
         return views;
     }
 
@@ -599,4 +628,34 @@
                 hasNewStory);
         return convertDrawableToBitmap(personDrawable);
     }
+
+    /** Returns a readable status describing the {@code lastInteraction}. */
+    @Nullable
+    public static String getLastInteractionString(Context context, long lastInteraction) {
+        if (lastInteraction == 0L) {
+            Log.e(TAG, "Could not get valid last interaction");
+            return null;
+        }
+        long now = System.currentTimeMillis();
+        Duration durationSinceLastInteraction = Duration.ofMillis(now - lastInteraction);
+        MeasureFormat formatter = MeasureFormat.getInstance(Locale.getDefault(),
+                MeasureFormat.FormatWidth.WIDE);
+        if (durationSinceLastInteraction.toDays() <= ONE_DAY) {
+            return null;
+        } else if (durationSinceLastInteraction.toDays() < DAYS_IN_A_WEEK) {
+            return context.getString(R.string.timestamp, formatter.formatMeasures(
+                    new Measure(durationSinceLastInteraction.toHours(),
+                            MeasureUnit.DAY)));
+        } else if (durationSinceLastInteraction.toDays() <= DAYS_IN_A_WEEK * 2) {
+            return context.getString(durationSinceLastInteraction.toDays() == DAYS_IN_A_WEEK
+                            ? R.string.timestamp : R.string.over_timestamp,
+                    formatter.formatMeasures(
+                            new Measure(durationSinceLastInteraction.toDays() / DAYS_IN_A_WEEK,
+                                    MeasureUnit.WEEK)));
+        } else {
+            // Over 2 weeks ago
+            return context.getString(R.string.over_timestamp,
+                    formatter.formatMeasures(new Measure(MAX_WEEKS, MeasureUnit.WEEK)));
+        }
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/people/widget/LaunchConversationActivity.java b/packages/SystemUI/src/com/android/systemui/people/widget/LaunchConversationActivity.java
index c01a52d..c416b5e 100644
--- a/packages/SystemUI/src/com/android/systemui/people/widget/LaunchConversationActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/people/widget/LaunchConversationActivity.java
@@ -23,11 +23,13 @@
 import android.os.Bundle;
 import android.os.ServiceManager;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.service.notification.NotificationStats;
 import android.text.TextUtils;
 import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.app.UnlaunchableAppActivity;
 import com.android.internal.logging.UiEventLogger;
 import com.android.internal.logging.UiEventLoggerImpl;
 import com.android.internal.statusbar.IStatusBarService;
@@ -48,15 +50,17 @@
     private UiEventLogger mUiEventLogger = new UiEventLoggerImpl();
     private NotificationEntryManager mNotificationEntryManager;
     private final Optional<BubblesManager> mBubblesManagerOptional;
+    private final UserManager mUserManager;
     private boolean mIsForTesting;
     private IStatusBarService mIStatusBarService;
 
     @Inject
     public LaunchConversationActivity(NotificationEntryManager notificationEntryManager,
-            Optional<BubblesManager> bubblesManagerOptional) {
+            Optional<BubblesManager> bubblesManagerOptional, UserManager userManager) {
         super();
         mNotificationEntryManager = notificationEntryManager;
         mBubblesManagerOptional = bubblesManagerOptional;
+        mUserManager = userManager;
     }
 
     @Override
@@ -80,12 +84,24 @@
             }
             mUiEventLogger.log(PeopleSpaceUtils.PeopleSpaceWidgetEvent.PEOPLE_SPACE_WIDGET_CLICKED);
             try {
+
+                if (mUserManager.isQuietModeEnabled(userHandle)) {
+                    if (DEBUG) Log.d(TAG, "Cannot launch app when quieted");
+                    final Intent dialogIntent =
+                            UnlaunchableAppActivity.createInQuietModeDialogIntent(
+                                    userHandle.getIdentifier());
+                    this.getApplicationContext().startActivity(dialogIntent);
+                    finish();
+                    return;
+                }
+
                 NotificationEntry entry = mNotificationEntryManager.getPendingOrActiveNotif(
                         notificationKey);
                 if (entry != null && entry.canBubble() && mBubblesManagerOptional.isPresent()) {
                     if (DEBUG) Log.d(TAG, "Open bubble for conversation");
                     mBubblesManagerOptional.get().expandStackAndSelectBubble(entry);
                     // Just opt-out and don't cancel the notification for bubbles.
+                    finish();
                     return;
                 }
 
diff --git a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java
index d63dc4a..9fa6fc3 100644
--- a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java
+++ b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java
@@ -17,22 +17,25 @@
 package com.android.systemui.people.widget;
 
 import static android.Manifest.permission.READ_CONTACTS;
-import static android.app.Notification.CATEGORY_MISSED_CALL;
-import static android.app.Notification.EXTRA_PEOPLE_LIST;
 
+import static com.android.systemui.people.NotificationHelper.getContactUri;
+import static com.android.systemui.people.NotificationHelper.getHighestPriorityNotification;
+import static com.android.systemui.people.NotificationHelper.shouldMatchNotificationByUri;
 import static com.android.systemui.people.PeopleSpaceUtils.EMPTY_STRING;
 import static com.android.systemui.people.PeopleSpaceUtils.INVALID_USER_ID;
 import static com.android.systemui.people.PeopleSpaceUtils.PACKAGE_NAME;
 import static com.android.systemui.people.PeopleSpaceUtils.SHORTCUT_ID;
 import static com.android.systemui.people.PeopleSpaceUtils.USER_ID;
 import static com.android.systemui.people.PeopleSpaceUtils.augmentTileFromNotification;
-import static com.android.systemui.people.PeopleSpaceUtils.getMessagingStyleMessages;
-import static com.android.systemui.people.PeopleSpaceUtils.getStoredWidgetIds;
+import static com.android.systemui.people.PeopleSpaceUtils.getMessagesCount;
+import static com.android.systemui.people.PeopleSpaceUtils.getNotificationsByUri;
+import static com.android.systemui.people.PeopleSpaceUtils.removeNotificationFields;
 import static com.android.systemui.people.PeopleSpaceUtils.updateAppWidgetOptionsAndView;
 import static com.android.systemui.people.PeopleSpaceUtils.updateAppWidgetViews;
 
+import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.app.Notification;
+import android.app.INotificationManager;
 import android.app.NotificationChannel;
 import android.app.PendingIntent;
 import android.app.Person;
@@ -51,7 +54,9 @@
 import android.os.Bundle;
 import android.os.ServiceManager;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.preference.PreferenceManager;
+import android.service.notification.ConversationChannelWrapper;
 import android.service.notification.NotificationListenerService;
 import android.service.notification.StatusBarNotification;
 import android.util.Log;
@@ -63,10 +68,13 @@
 import com.android.internal.logging.UiEventLoggerImpl;
 import com.android.settingslib.utils.ThreadUtils;
 import com.android.systemui.Dependency;
+import com.android.systemui.people.NotificationHelper;
 import com.android.systemui.people.PeopleSpaceUtils;
+import com.android.systemui.people.PeopleTileViewHelper;
 import com.android.systemui.statusbar.NotificationListener;
 import com.android.systemui.statusbar.NotificationListener.NotificationHandler;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -74,8 +82,11 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
+import java.util.Optional;
 import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -96,6 +107,8 @@
     private NotificationEntryManager mNotificationEntryManager;
     private PackageManager mPackageManager;
     private PeopleSpaceWidgetProvider mPeopleSpaceWidgetProvider;
+    private INotificationManager mINotificationManager;
+    private UserManager mUserManager;
     public UiEventLogger mUiEventLogger = new UiEventLoggerImpl();
     @GuardedBy("mLock")
     public static Map<PeopleTileKey, PeopleSpaceWidgetProvider.TileConversationListener>
@@ -121,17 +134,21 @@
         mNotificationEntryManager = Dependency.get(NotificationEntryManager.class);
         mPackageManager = mContext.getPackageManager();
         mPeopleSpaceWidgetProvider = new PeopleSpaceWidgetProvider();
+        mINotificationManager = INotificationManager.Stub.asInterface(
+                ServiceManager.getService(Context.NOTIFICATION_SERVICE));
+        mUserManager = context.getSystemService(UserManager.class);
     }
 
     /**
      * AppWidgetManager setter used for testing.
      */
     @VisibleForTesting
-    protected void setAppWidgetManager(
+    public void setAppWidgetManager(
             AppWidgetManager appWidgetManager, IPeopleManager iPeopleManager,
             PeopleManager peopleManager, LauncherApps launcherApps,
             NotificationEntryManager notificationEntryManager, PackageManager packageManager,
-            boolean isForTesting, PeopleSpaceWidgetProvider peopleSpaceWidgetProvider) {
+            boolean isForTesting, PeopleSpaceWidgetProvider peopleSpaceWidgetProvider,
+            UserManager userManager, INotificationManager notificationManager) {
         mAppWidgetManager = appWidgetManager;
         mIPeopleManager = iPeopleManager;
         mPeopleManager = peopleManager;
@@ -140,6 +157,8 @@
         mPackageManager = packageManager;
         mIsForTesting = isForTesting;
         mPeopleSpaceWidgetProvider = peopleSpaceWidgetProvider;
+        mUserManager = userManager;
+        mINotificationManager = notificationManager;
     }
 
     /**
@@ -259,9 +278,10 @@
     private void updateWidgetsWithNotificationChangedInBackground(StatusBarNotification sbn,
             PeopleSpaceUtils.NotificationAction action) {
         try {
-            String sbnShortcutId = sbn.getShortcutId();
-            if (sbnShortcutId == null) {
-                if (DEBUG) Log.d(TAG, "Sbn shortcut id is null");
+            PeopleTileKey key = new PeopleTileKey(
+                    sbn.getShortcutId(), sbn.getUser().getIdentifier(), sbn.getPackageName());
+            if (!key.isValid()) {
+                Log.d(TAG, "Invalid key from sbn");
                 return;
             }
             int[] widgetIds = mAppWidgetManager.getAppWidgetIds(
@@ -271,21 +291,15 @@
                 Log.d(TAG, "No app widget ids returned");
                 return;
             }
-            PeopleTileKey key = new PeopleTileKey(
-                    sbnShortcutId,
-                    sbn.getUser().getIdentifier(),
-                    sbn.getPackageName());
-            if (!key.isValid()) {
-                Log.d(TAG, "Invalid key");
-                return;
-            }
             synchronized (mLock) {
-                // First, update People Tiles associated with the Notification's package/shortcut.
-                Set<String> tilesUpdatedByKey = getStoredWidgetIds(mSharedPrefs, key);
-                updateWidgetIdsForNotificationAction(tilesUpdatedByKey, sbn, action);
-
-                // Then, update People Tiles across other packages that use the same Uri.
-                updateTilesByUri(key, sbn, action);
+                Set<String> tilesUpdated = getMatchingKeyWidgetIds(key);
+                Set<String> tilesUpdatedByUri = getMatchingUriWidgetIds(sbn, action);
+                if (DEBUG) {
+                    Log.d(TAG, "Widgets by key to be updated:" + tilesUpdated.toString());
+                    Log.d(TAG, "Widgets by URI to be updated:" + tilesUpdatedByUri.toString());
+                }
+                tilesUpdated.addAll(tilesUpdatedByUri);
+                updateWidgetIdsBasedOnNotifications(tilesUpdated);
             }
         } catch (Exception e) {
             Log.e(TAG, "Throwing exception: " + e);
@@ -293,36 +307,142 @@
     }
 
     /** Updates {@code widgetIdsToUpdate} with {@code action}. */
-    private void updateWidgetIdsForNotificationAction(Set<String> widgetIdsToUpdate,
-            StatusBarNotification sbn, PeopleSpaceUtils.NotificationAction action) {
-        for (String widgetIdString : widgetIdsToUpdate) {
-            int widgetId = Integer.parseInt(widgetIdString);
-            PeopleSpaceTile storedTile = getTileForExistingWidget(widgetId);
-            if (storedTile == null) {
-                if (DEBUG) Log.d(TAG, "Could not find stored tile for notification");
-                continue;
-            }
-            if (DEBUG) Log.d(TAG, "Storing notification change, key:" + sbn.getKey());
-            updateStorageAndViewWithNotificationData(sbn, action, widgetId,
-                    storedTile);
+    private void updateWidgetIdsBasedOnNotifications(Set<String> widgetIdsToUpdate) {
+        Log.d(TAG, "Fetching grouped notifications");
+        try {
+            Map<PeopleTileKey, Set<NotificationEntry>> groupedNotifications =
+                    getGroupedConversationNotifications();
+
+            widgetIdsToUpdate
+                    .stream()
+                    .map(Integer::parseInt)
+                    .collect(Collectors.toMap(
+                            Function.identity(),
+                            id -> getAugmentedTileForExistingWidget(id, groupedNotifications)))
+                    .forEach((id, tile) ->
+                            updateAppWidgetOptionsAndView(mAppWidgetManager, mContext, id, tile));
+        } catch (Exception e) {
+            Log.e(TAG, "Exception updating widgets: " + e);
         }
     }
 
     /**
-     * Updates tiles with matched Uris, dependent on the {@code action}.
+     * Augments {@code tile} based on notifications returned from {@code notificationEntryManager}.
+     */
+    public PeopleSpaceTile augmentTileFromNotificationEntryManager(PeopleSpaceTile tile) {
+        Log.d(TAG, "Augmenting tile from NotificationEntryManager widget: " + tile.getId());
+        Map<PeopleTileKey, Set<NotificationEntry>> notifications =
+                getGroupedConversationNotifications();
+        String contactUri = null;
+        if (tile.getContactUri() != null) {
+            contactUri = tile.getContactUri().toString();
+        }
+        return augmentTileFromNotifications(tile, contactUri, notifications);
+    }
+
+    /** Returns active and pending notifications grouped by {@link PeopleTileKey}. */
+    public Map<PeopleTileKey, Set<NotificationEntry>> getGroupedConversationNotifications() {
+        List<NotificationEntry> notifications =
+                new ArrayList<>(mNotificationEntryManager.getVisibleNotifications());
+        Iterable<NotificationEntry> pendingNotifications =
+                mNotificationEntryManager.getPendingNotificationsIterator();
+        for (NotificationEntry entry : pendingNotifications) {
+            notifications.add(entry);
+        }
+        if (DEBUG) Log.d(TAG, "Number of total notifications: " + notifications.size());
+        Map<PeopleTileKey, Set<NotificationEntry>> groupedNotifications =
+                notifications
+                        .stream()
+                        .filter(entry -> NotificationHelper.isValid(entry)
+                                && NotificationHelper.isMissedCallOrHasContent(entry))
+                        .collect(Collectors.groupingBy(
+                                PeopleTileKey::new,
+                                Collectors.mapping(Function.identity(), Collectors.toSet())));
+        if (DEBUG) {
+            Log.d(TAG, "Number of grouped conversation notifications keys: "
+                    + groupedNotifications.keySet().size());
+        }
+        return groupedNotifications;
+    }
+
+    /** Augments {@code tile} based on {@code notifications}, matching {@code contactUri}. */
+    public PeopleSpaceTile augmentTileFromNotifications(PeopleSpaceTile tile, String contactUri,
+            Map<PeopleTileKey, Set<NotificationEntry>> notifications) {
+        if (DEBUG) Log.d(TAG, "Augmenting tile from notifications. Tile id: " + tile.getId());
+        boolean hasReadContactsPermission =  mPackageManager.checkPermission(READ_CONTACTS,
+                tile.getPackageName()) == PackageManager.PERMISSION_GRANTED;
+
+        List<NotificationEntry> notificationsByUri = new ArrayList<>();
+        if (hasReadContactsPermission) {
+            notificationsByUri = getNotificationsByUri(mPackageManager, contactUri, notifications);
+            if (!notificationsByUri.isEmpty()) {
+                if (DEBUG) {
+                    Log.d(TAG, "Number of notifications matched by contact URI: "
+                            + notificationsByUri.size());
+                }
+            }
+        }
+
+        PeopleTileKey key = new PeopleTileKey(tile);
+        Set<NotificationEntry> allNotifications = notifications.get(key);
+        if (allNotifications == null) {
+            allNotifications = new HashSet<>();
+        }
+        if (allNotifications.isEmpty() && notificationsByUri.isEmpty()) {
+            if (DEBUG) Log.d(TAG, "No existing notifications for tile: " + key);
+            return removeNotificationFields(tile);
+        }
+
+        // Merge notifications matched by key and by contact URI.
+        allNotifications.addAll(notificationsByUri);
+        if (DEBUG) Log.d(TAG, "Total notifications matching tile: " + allNotifications.size());
+
+        int messagesCount = getMessagesCount(allNotifications);
+        NotificationEntry highestPriority = getHighestPriorityNotification(allNotifications);
+
+        if (DEBUG) Log.d(TAG, "Augmenting tile from notification, key: " + key.toString());
+        return augmentTileFromNotification(mContext, tile, highestPriority, messagesCount);
+    }
+
+    /** Returns an augmented tile for an existing widget. */
+    @Nullable
+    public Optional<PeopleSpaceTile> getAugmentedTileForExistingWidget(int widgetId,
+            Map<PeopleTileKey, Set<NotificationEntry>> notifications) {
+        Log.d(TAG, "Augmenting tile for widget: " + widgetId);
+        PeopleSpaceTile tile = getTileForExistingWidget(widgetId);
+        if (tile == null) {
+            return Optional.empty();
+        }
+        String contactUriString = mSharedPrefs.getString(String.valueOf(widgetId), null);
+        // Should never be null, but using ofNullable for extra safety.
+        return Optional.ofNullable(
+                augmentTileFromNotifications(tile, contactUriString, notifications));
+    }
+
+    /** Returns stored widgets for the conversation specified. */
+    public Set<String> getMatchingKeyWidgetIds(PeopleTileKey key) {
+        if (!key.isValid()) {
+            return new HashSet<>();
+        }
+        return new HashSet<>(mSharedPrefs.getStringSet(key.toString(), new HashSet<>()));
+    }
+
+    /**
+     * Updates in-memory map of tiles with matched Uris, dependent on the {@code action}.
      *
      * <p>If the notification was added, adds the notification based on the contact Uri within
      * {@code sbn}.
      * <p>If the notification was removed, removes the notification based on the in-memory map of
      * widgets previously updated by Uri (since the contact Uri is stripped from the {@code sbn}).
      */
-    private void updateTilesByUri(PeopleTileKey key, StatusBarNotification sbn,
+    @Nullable
+    private Set<String> getMatchingUriWidgetIds(StatusBarNotification sbn,
             PeopleSpaceUtils.NotificationAction action) {
         if (action.equals(PeopleSpaceUtils.NotificationAction.POSTED)) {
-            Set<String> widgetIdsUpdatedByUri = supplementTilesByUri(sbn, action, key);
+            Set<String> widgetIdsUpdatedByUri = fetchMatchingUriWidgetIds(sbn);
             if (widgetIdsUpdatedByUri != null && !widgetIdsUpdatedByUri.isEmpty()) {
-                if (DEBUG) Log.d(TAG, "Added due to uri: " + widgetIdsUpdatedByUri);
                 mNotificationKeyToWidgetIdsMatchedByUri.put(sbn.getKey(), widgetIdsUpdatedByUri);
+                return widgetIdsUpdatedByUri;
             }
         } else {
             // Remove the notification on any widgets where the notification was added
@@ -330,21 +450,16 @@
             Set<String> widgetsPreviouslyUpdatedByUri =
                     mNotificationKeyToWidgetIdsMatchedByUri.remove(sbn.getKey());
             if (widgetsPreviouslyUpdatedByUri != null && !widgetsPreviouslyUpdatedByUri.isEmpty()) {
-                if (DEBUG) Log.d(TAG, "Remove due to uri: " + widgetsPreviouslyUpdatedByUri);
-                updateWidgetIdsForNotificationAction(widgetsPreviouslyUpdatedByUri, sbn,
-                        action);
+                return widgetsPreviouslyUpdatedByUri;
             }
         }
+        return new HashSet<>();
     }
 
-    /**
-     * Retrieves from storage any tiles with the same contact Uri as linked via the {@code sbn}.
-     * Supplements the tiles with the notification content only if they still have {@link
-     * android.Manifest.permission.READ_CONTACTS} permission.
-     */
+    /** Fetches widget Ids that match the contact URI in {@code sbn}. */
     @Nullable
-    private Set<String> supplementTilesByUri(StatusBarNotification sbn,
-            PeopleSpaceUtils.NotificationAction notificationAction, PeopleTileKey key) {
+    private Set<String> fetchMatchingUriWidgetIds(StatusBarNotification sbn) {
+        // Check if it's a missed call notification
         if (!shouldMatchNotificationByUri(sbn)) {
             if (DEBUG) Log.d(TAG, "Should not supplement conversation");
             return null;
@@ -364,80 +479,7 @@
             if (DEBUG) Log.d(TAG, "No tiles for contact");
             return null;
         }
-
-        if (mPackageManager.checkPermission(READ_CONTACTS,
-                sbn.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
-            if (DEBUG) Log.d(TAG, "Notifying app missing permissions");
-            return null;
-        }
-
-        Set<String> widgetIdsUpdatedByUri = new HashSet<>();
-        for (String widgetIdString : storedWidgetIdsByUri) {
-            int widgetId = Integer.parseInt(widgetIdString);
-            PeopleSpaceTile storedTile = getTileForExistingWidget(widgetId);
-            // Don't update a widget already updated.
-            if (key.equals(new PeopleTileKey(storedTile))) {
-                continue;
-            }
-            if (storedTile == null || mPackageManager.checkPermission(READ_CONTACTS,
-                    storedTile.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
-                if (DEBUG) Log.d(TAG, "Cannot supplement tile: " + storedTile.getUserName());
-                continue;
-            }
-            if (DEBUG) Log.d(TAG, "Adding notification by uri: " + sbn.getKey());
-            updateStorageAndViewWithNotificationData(sbn, notificationAction,
-                    widgetId, storedTile);
-            widgetIdsUpdatedByUri.add(String.valueOf(widgetId));
-        }
-        return widgetIdsUpdatedByUri;
-    }
-
-    /**
-     * Try to retrieve a valid Uri via {@code sbn}, falling back to the {@code
-     * contactUriFromShortcut} if valid.
-     */
-    @Nullable
-    private String getContactUri(StatusBarNotification sbn) {
-        // First, try to get a Uri from the Person directly set on the Notification.
-        ArrayList<Person> people = sbn.getNotification().extras.getParcelableArrayList(
-                EXTRA_PEOPLE_LIST);
-        if (people != null && people.get(0) != null) {
-            String contactUri = people.get(0).getUri();
-            if (contactUri != null && !contactUri.isEmpty()) {
-                return contactUri;
-            }
-        }
-
-        // Then, try to get a Uri from the Person set on the Notification message.
-        List<Notification.MessagingStyle.Message> messages =
-                getMessagingStyleMessages(sbn.getNotification());
-        if (messages != null && !messages.isEmpty()) {
-            Notification.MessagingStyle.Message message = messages.get(0);
-            Person sender = message.getSenderPerson();
-            if (sender != null && sender.getUri() != null && !sender.getUri().isEmpty()) {
-                return sender.getUri();
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Returns whether a notification should be matched to other Tiles by Uri.
-     *
-     * <p>Currently only matches missed calls.
-     */
-    private boolean shouldMatchNotificationByUri(StatusBarNotification sbn) {
-        Notification notification = sbn.getNotification();
-        if (notification == null) {
-            if (DEBUG) Log.d(TAG, "Notification is null");
-            return false;
-        }
-        if (!Objects.equals(notification.category, CATEGORY_MISSED_CALL)) {
-            if (DEBUG) Log.d(TAG, "Not missed call");
-            return false;
-        }
-        return true;
+        return storedWidgetIdsByUri;
     }
 
     /**
@@ -448,7 +490,7 @@
         synchronized (mLock) {
             PeopleTileKey key = new PeopleTileKey(
                     info.getId(), info.getUserId(), info.getPackage());
-            Set<String> storedWidgetIds = getStoredWidgetIds(mSharedPrefs, key);
+            Set<String> storedWidgetIds = getMatchingKeyWidgetIds(key);
             for (String widgetIdString : storedWidgetIds) {
                 if (DEBUG) {
                     Log.d(TAG,
@@ -456,7 +498,7 @@
                                     + info.getLabel());
                 }
                 updateStorageAndViewWithConversationData(conversation,
-                        Integer.valueOf(widgetIdString));
+                        Integer.parseInt(widgetIdString));
             }
         }
     }
@@ -492,34 +534,6 @@
     }
 
     /**
-     * Update {@code appWidgetId} with the new data provided by {@code sbn}.
-     */
-    private void updateStorageAndViewWithNotificationData(
-            StatusBarNotification sbn,
-            PeopleSpaceUtils.NotificationAction notificationAction,
-            int appWidgetId, PeopleSpaceTile storedTile) {
-        if (notificationAction == PeopleSpaceUtils.NotificationAction.POSTED) {
-            if (DEBUG) Log.i(TAG, "Adding notification to storage, appWidgetId: " + appWidgetId);
-            storedTile = augmentTileFromNotification(mContext, storedTile, sbn);
-        } else if (Objects.equals(storedTile.getNotificationKey(), sbn.getKey())) {
-            if (DEBUG) {
-                Log.i(TAG, "Removing notification from storage, appWidgetId: " + appWidgetId);
-            }
-            storedTile = storedTile
-                    .toBuilder()
-                    // Reset notification content.
-                    .setNotificationKey(null)
-                    .setNotificationContent(null)
-                    .setNotificationDataUri(null)
-                    .setMessagesCount(0)
-                    // Reset missed calls category.
-                    .setNotificationCategory(null)
-                    .build();
-        }
-        updateAppWidgetOptionsAndView(mAppWidgetManager, mContext, appWidgetId, storedTile);
-    }
-
-    /**
      * Attaches the manager to the pipeline, making it ready to receive events. Should only be
      * called once.
      */
@@ -602,22 +616,10 @@
     public void addNewWidget(int appWidgetId, PeopleTileKey key) {
         if (DEBUG) Log.d(TAG, "addNewWidget called with key for appWidgetId: " + appWidgetId);
         PeopleSpaceTile tile = getTileFromPersistentStorage(key);
-        tile = PeopleSpaceUtils.augmentSingleTileFromVisibleNotifications(
-                mContext, tile, mNotificationEntryManager);
-        if (tile != null) {
-            addNewWidget(appWidgetId, tile);
-        }
-    }
-
-    /**
-     * Adds a widget based on {@code tile} mapped to {@code appWidgetId}.
-     * The tile provided should already be augmented.
-     */
-    public void addNewWidget(int appWidgetId, PeopleSpaceTile tile) {
-        if (DEBUG) Log.d(TAG, "addNewWidget called for appWidgetId: " + appWidgetId);
         if (tile == null) {
             return;
         }
+        tile = augmentTileFromNotificationEntryManager(tile);
 
         PeopleTileKey existingKeyIfStored;
         synchronized (mLock) {
@@ -635,7 +637,6 @@
 
         synchronized (mLock) {
             if (DEBUG) Log.d(TAG, "Add storage for : " + tile.getId());
-            PeopleTileKey key = new PeopleTileKey(tile);
             PeopleSpaceUtils.setSharedPreferencesStorageForTile(mContext, key, appWidgetId,
                     tile.getContactUri());
         }
@@ -764,12 +765,11 @@
      * Builds a request to pin a People Tile app widget, with a preview and storing necessary
      * information as the callback.
      */
-    public boolean requestPinAppWidget(ShortcutInfo shortcutInfo) {
+    public boolean requestPinAppWidget(ShortcutInfo shortcutInfo, Bundle options) {
         if (DEBUG) Log.d(TAG, "Requesting pin widget, shortcutId: " + shortcutInfo.getId());
 
-        RemoteViews widgetPreview = PeopleSpaceUtils.getPreview(mContext, mIPeopleManager,
-                mLauncherApps, mNotificationEntryManager, shortcutInfo.getId(),
-                shortcutInfo.getUserHandle(), shortcutInfo.getPackage());
+        RemoteViews widgetPreview = getPreview(shortcutInfo.getId(),
+                shortcutInfo.getUserHandle(), shortcutInfo.getPackage(), options);
         if (widgetPreview == null) {
             Log.w(TAG, "Skipping pinning widget: no tile for shortcutId: " + shortcutInfo.getId());
             return false;
@@ -783,4 +783,74 @@
         ComponentName componentName = new ComponentName(mContext, PeopleSpaceWidgetProvider.class);
         return mAppWidgetManager.requestPinAppWidget(componentName, extras, successCallback);
     }
+
+    /** Returns a list of map entries corresponding to user's priority conversations. */
+    @NonNull
+    public List<PeopleSpaceTile> getPriorityTiles()
+            throws Exception {
+        List<ConversationChannelWrapper> conversations =
+                mINotificationManager.getConversations(true).getList();
+        // Add priority conversations to tiles list.
+        Stream<ShortcutInfo> priorityConversations = conversations.stream()
+                .filter(c -> c.getNotificationChannel() != null
+                        && c.getNotificationChannel().isImportantConversation())
+                .map(c -> c.getShortcutInfo());
+        List<PeopleSpaceTile> priorityTiles = PeopleSpaceUtils.getSortedTiles(mIPeopleManager,
+                mLauncherApps, mUserManager,
+                priorityConversations);
+        return priorityTiles;
+    }
+
+    /** Returns a list of map entries corresponding to user's recent conversations. */
+    @NonNull
+    public List<PeopleSpaceTile> getRecentTiles()
+            throws Exception {
+        if (DEBUG) Log.d(TAG, "Add recent conversations");
+        List<ConversationChannelWrapper> conversations =
+                mINotificationManager.getConversations(false).getList();
+        Stream<ShortcutInfo> nonPriorityConversations = conversations.stream()
+                .filter(c -> c.getNotificationChannel() == null
+                        || !c.getNotificationChannel().isImportantConversation())
+                .map(c -> c.getShortcutInfo());
+
+        List<ConversationChannel> recentConversationsList =
+                mIPeopleManager.getRecentConversations().getList();
+        Stream<ShortcutInfo> recentConversations = recentConversationsList
+                .stream()
+                .map(c -> c.getShortcutInfo());
+
+        Stream<ShortcutInfo> mergedStream = Stream.concat(nonPriorityConversations,
+                recentConversations);
+        List<PeopleSpaceTile> recentTiles =
+                PeopleSpaceUtils.getSortedTiles(mIPeopleManager, mLauncherApps, mUserManager,
+                        mergedStream);
+        return recentTiles;
+    }
+
+    /**
+     * Returns a {@link RemoteViews} preview of a Conversation's People Tile. Returns null if one
+     * is not available.
+     */
+    public RemoteViews getPreview(String shortcutId, UserHandle userHandle, String packageName,
+            Bundle options) {
+        PeopleSpaceTile tile;
+        ConversationChannel channel;
+        try {
+            channel = mIPeopleManager.getConversation(
+                    packageName, userHandle.getIdentifier(), shortcutId);
+            tile = PeopleSpaceUtils.getTile(channel, mLauncherApps);
+        } catch (Exception e) {
+            Log.w(TAG, "Exception getting tiles: " + e);
+            return null;
+        }
+        if (tile == null) {
+            if (DEBUG) Log.i(TAG, "No tile was returned");
+            return null;
+        }
+
+        PeopleSpaceTile augmentedTile = augmentTileFromNotificationEntryManager(tile);
+
+        if (DEBUG) Log.i(TAG, "Returning tile preview for shortcutId: " + shortcutId);
+        return new PeopleTileViewHelper(mContext, augmentedTile, 0, options).getViews();
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt
index dc22dc1..9e8f6b8 100644
--- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt
+++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt
@@ -119,7 +119,7 @@
         } else {
             app
         }
-        val firstLine = context.getString(stringId, appName, element.type.getName(context))
+        val firstLine = context.getString(stringId, appName)
         val finalText = element.attribution?.let {
             TextUtils.concat(
                     firstLine,
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialogController.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialogController.kt
index f87ea7c..feb27d80 100644
--- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialogController.kt
+++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialogController.kt
@@ -29,6 +29,7 @@
 import androidx.annotation.MainThread
 import androidx.annotation.VisibleForTesting
 import androidx.annotation.WorkerThread
+import com.android.systemui.appops.AppOpsController
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.dagger.qualifiers.Main
@@ -48,7 +49,6 @@
         return PrivacyDialog(context, list, starter)
     }
 }
-
 /**
  * Controller for [PrivacyDialog].
  *
@@ -66,6 +66,7 @@
     private val uiExecutor: Executor,
     private val privacyLogger: PrivacyLogger,
     private val keyguardStateController: KeyguardStateController,
+    private val appOpsController: AppOpsController,
     @VisibleForTesting private val dialogProvider: DialogProvider
 ) {
 
@@ -79,7 +80,8 @@
         @Background backgroundExecutor: Executor,
         @Main uiExecutor: Executor,
         privacyLogger: PrivacyLogger,
-        keyguardStateController: KeyguardStateController
+        keyguardStateController: KeyguardStateController,
+        appOpsController: AppOpsController
     ) : this(
             permissionManager,
             packageManager,
@@ -90,6 +92,7 @@
             uiExecutor,
             privacyLogger,
             keyguardStateController,
+            appOpsController,
             defaultDialogProvider
     )
 
@@ -127,7 +130,9 @@
     }
 
     @WorkerThread
-    private fun permGroupUsage(): List<PermGroupUsage> = permissionManager.indicatorAppOpUsageData
+    private fun permGroupUsage(): List<PermGroupUsage> {
+        return permissionManager.getIndicatorAppOpUsageData(appOpsController.isMicMuted)
+    }
 
     /**
      * Show the [PrivacyDialog]
@@ -261,4 +266,4 @@
             starter: (String, Int) -> Unit
         ): PrivacyDialog
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItem.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItem.kt
index 4c617ed..63ec6e5 100644
--- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItem.kt
+++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItem.kt
@@ -54,7 +54,8 @@
 data class PrivacyItem(
     val privacyType: PrivacyType,
     val application: PrivacyApplication,
-    val timeStampElapsed: Long = UNKNOWN_TIMESTAMP
+    val timeStampElapsed: Long = UNKNOWN_TIMESTAMP,
+    val paused: Boolean = false
 ) {
     val log = "(${privacyType.logName}, ${application.packageName}(${application.uid}), " +
             "$timeStampElapsed)"
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
index f7e2a31..8b27b6e 100644
--- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
+++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
@@ -257,7 +257,7 @@
             privacyList = emptyList()
             return
         }
-        val list = appOpsController.getActiveAppOpsForUser(UserHandle.USER_ALL).filter {
+        val list = appOpsController.getActiveAppOps(true).filter {
             UserHandle.getUserId(it.uid) in currentUserIds ||
                     it.code == AppOpsManager.OP_PHONE_CALL_MICROPHONE ||
                     it.code == AppOpsManager.OP_PHONE_CALL_CAMERA
@@ -279,7 +279,9 @@
 
         // Anything earlier than this timestamp can be removed
         val removeBeforeTime = systemClock.elapsedRealtime() - TIME_TO_HOLD_INDICATORS
-        val mustKeep = privacyList.filter { it.timeStampElapsed > removeBeforeTime && it !in list }
+        val mustKeep = privacyList.filter {
+            it.timeStampElapsed > removeBeforeTime && !(it isIn list)
+        }
 
         // There are items we must keep because they haven't been around for enough time.
         if (mustKeep.isNotEmpty()) {
@@ -291,7 +293,18 @@
             logger.logPrivacyItemsUpdateScheduled(delay)
             holdingRunnableCanceler = bgExecutor.executeDelayed(updateListAndNotifyChanges, delay)
         }
-        return list + mustKeep
+        return list.filter { !it.paused } + mustKeep
+    }
+
+    /**
+     * Ignores the paused status to determine if the element is in the list
+     */
+    private infix fun PrivacyItem.isIn(list: List<PrivacyItem>): Boolean {
+        return list.any {
+            it.privacyType == privacyType &&
+                    it.application == application &&
+                    it.timeStampElapsed == timeStampElapsed
+        }
     }
 
     private fun toPrivacyItem(appOpItem: AppOpItem): PrivacyItem? {
@@ -308,7 +321,7 @@
             return null
         }
         val app = PrivacyApplication(appOpItem.packageName, appOpItem.uid)
-        return PrivacyItem(type, app, appOpItem.timeStartedElapsed)
+        return PrivacyItem(type, app, appOpItem.timeStartedElapsed, appOpItem.isDisabled)
     }
 
     interface Callback {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
index bf9acc2..6b09e2e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
@@ -206,6 +206,12 @@
         layoutParams.topMargin = mContext.getResources().getDimensionPixelSize(
                 com.android.internal.R.dimen.quick_qs_offset_height);
         mQSPanelContainer.setLayoutParams(layoutParams);
+        mQSPanelContainer.setPaddingRelative(
+                mQSPanelContainer.getPaddingStart(),
+                mQSPanelContainer.getPaddingTop(),
+                mQSPanelContainer.getPaddingEnd(),
+                mContext.getResources().getDimensionPixelSize(R.dimen.qs_container_bottom_padding)
+        );
 
         mSideMargins = getResources().getDimensionPixelSize(R.dimen.notification_side_paddings);
         int padding = getResources().getDimensionPixelSize(
@@ -237,6 +243,8 @@
         int scrollBottom = calculateContainerBottom();
         setBottom(getTop() + height);
         mQSDetail.setBottom(getTop() + scrollBottom);
+        int qsDetailBottomMargin = ((MarginLayoutParams) mQSDetail.getLayoutParams()).bottomMargin;
+        mQSDetail.setBottom(getTop() + scrollBottom - qsDetailBottomMargin);
         mBackground.setTop(mQSPanelContainer.getTop());
         updateBackgroundBottom(scrollBottom, animate);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
index 980024e..05197e4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java
@@ -150,6 +150,12 @@
 
     public void updateResources() {
         updateDetailText();
+        MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams();
+        lp.topMargin = mContext.getResources().getDimensionPixelSize(
+                com.android.internal.R.dimen.quick_qs_offset_height);
+        lp.bottomMargin = mContext.getResources().getDimensionPixelSize(
+                R.dimen.qs_container_bottom_padding);
+        setLayoutParams(lp);
     }
 
     public boolean isClosingDetail() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFooterView.java b/packages/SystemUI/src/com/android/systemui/qs/QSFooterView.java
index 3718713..c4986cc 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSFooterView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSFooterView.java
@@ -280,7 +280,7 @@
         mMultiUserSwitch.setVisibility(showUserSwitcher() ? View.VISIBLE : View.GONE);
         mSettingsButton.setVisibility(isDemo || !mExpanded ? View.INVISIBLE : View.VISIBLE);
 
-        mBuildText.setVisibility(mExpanded && mShouldShowBuildText ? View.VISIBLE : View.GONE);
+        mBuildText.setVisibility(mExpanded && mShouldShowBuildText ? View.VISIBLE : View.INVISIBLE);
     }
 
     private boolean showUserSwitcher() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java b/packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java
index 3467838..74ae3a6 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java
@@ -32,6 +32,7 @@
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.keyguard.KeyguardUpdateMonitor;
 import com.android.systemui.R;
+import com.android.systemui.animation.ActivityLaunchAnimator;
 import com.android.systemui.globalactions.GlobalActionsDialogLite;
 import com.android.systemui.plugins.ActivityStarter;
 import com.android.systemui.plugins.FalsingManager;
@@ -65,6 +66,7 @@
     private final MetricsLogger mMetricsLogger;
     private final FalsingManager mFalsingManager;
     private final SettingsButton mSettingsButton;
+    private final View mSettingsButtonContainer;
     private final TextView mBuildText;
     private final View mEdit;
     private final MultiUserSwitch mMultiUserSwitch;
@@ -152,6 +154,7 @@
         mFalsingManager = falsingManager;
 
         mSettingsButton = mView.findViewById(R.id.settings_button);
+        mSettingsButtonContainer = mView.findViewById(R.id.settings_button_container);
         mBuildText = mView.findViewById(R.id.build);
         mEdit = mView.findViewById(android.R.id.edit);
         mMultiUserSwitch = mView.findViewById(R.id.multi_user_switch);
@@ -258,10 +261,12 @@
         mView.disable(state2, isTunerEnabled());
     }
 
-
     private void startSettingsActivity() {
+        ActivityLaunchAnimator.Controller animationController =
+                mSettingsButtonContainer != null ? ActivityLaunchAnimator.Controller.fromView(
+                        mSettingsButtonContainer) : null;
         mActivityStarter.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS),
-                true /* dismissShade */);
+                true /* dismissShade */, animationController);
     }
 
     private boolean isTunerEnabled() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
index 5b6b5df..93ccfc72 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
@@ -16,12 +16,14 @@
 
 package com.android.systemui.qs;
 
+import static com.android.systemui.classifier.Classifier.QS_SWIPE;
 import static com.android.systemui.media.dagger.MediaModule.QS_PANEL;
 import static com.android.systemui.qs.QSPanel.QS_SHOW_BRIGHTNESS;
 import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLAYER;
 
 import android.annotation.NonNull;
 import android.content.res.Configuration;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -31,6 +33,7 @@
 import com.android.systemui.dump.DumpManager;
 import com.android.systemui.media.MediaHierarchyManager;
 import com.android.systemui.media.MediaHost;
+import com.android.systemui.plugins.FalsingManager;
 import com.android.systemui.plugins.qs.DetailAdapter;
 import com.android.systemui.plugins.qs.QSTile;
 import com.android.systemui.qs.customize.QSCustomizerController;
@@ -58,6 +61,7 @@
     private final TunerService mTunerService;
     private final QSCustomizerController mQsCustomizerController;
     private final QSTileRevealController.Factory mQsTileRevealControllerFactory;
+    private final FalsingManager mFalsingManager;
     private final BrightnessController mBrightnessController;
     private final BrightnessSlider.Factory mBrightnessSliderFactory;
     private final BrightnessSlider mBrightnessSlider;
@@ -81,6 +85,16 @@
     private final BrightnessMirrorController.BrightnessMirrorListener mBrightnessMirrorListener =
             mirror -> updateBrightnessMirror();
 
+    private View.OnTouchListener mTileLayoutTouchListener = new View.OnTouchListener() {
+        @Override
+        public boolean onTouch(View v, MotionEvent event) {
+            if (event.getActionMasked() == MotionEvent.ACTION_UP) {
+                mFalsingManager.isFalseTouch(QS_SWIPE);
+            }
+            return false;
+        }
+    };
+
     @Inject
     QSPanelController(QSPanel view, QSSecurityFooter qsSecurityFooter, TunerService tunerService,
             QSTileHost qstileHost, QSCustomizerController qsCustomizerController,
@@ -89,7 +103,7 @@
             QSTileRevealController.Factory qsTileRevealControllerFactory,
             DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger,
             QSLogger qsLogger, BrightnessController.Factory brightnessControllerFactory,
-            BrightnessSlider.Factory brightnessSliderFactory,
+            BrightnessSlider.Factory brightnessSliderFactory, FalsingManager falsingManager,
             FeatureFlags featureFlags) {
         super(view, qstileHost, qsCustomizerController, usingMediaPlayer, mediaHost,
                 metricsLogger, uiEventLogger, qsLogger, dumpManager, featureFlags);
@@ -97,6 +111,7 @@
         mTunerService = tunerService;
         mQsCustomizerController = qsCustomizerController;
         mQsTileRevealControllerFactory = qsTileRevealControllerFactory;
+        mFalsingManager = falsingManager;
         mQsSecurityFooter.setHostEnvironment(qstileHost);
         mBrightnessSliderFactory = brightnessSliderFactory;
 
@@ -133,6 +148,9 @@
         if (mBrightnessMirrorController != null) {
             mBrightnessMirrorController.addCallback(mBrightnessMirrorListener);
         }
+
+        ((PagedTileLayout) mView.createRegularTileLayout())
+                .setOnTouchListener(mTileLayoutTouchListener);
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
index 3f06312..7123e49 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
@@ -235,6 +235,12 @@
                 public void onAnimationStarted() {
                     mIconContainer.removeIgnoredSlot(mMobileSlotName);
                 }
+
+                @Override
+                public void onAnimationAtStart() {
+                    super.onAnimationAtStart();
+                    mIconContainer.removeIgnoredSlot(mMobileSlotName);
+                }
             });
         }
         mAlphaAnimator = builder.build();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java
index b728b43..6f19276 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java
@@ -184,8 +184,7 @@
 
     @Override
     public CharSequence getTileLabel() {
-        CharSequence qawLabel = mQuickAccessWalletClient.getServiceLabel();
-        return qawLabel == null ? mLabel : qawLabel;
+        return mLabel;
     }
 
     private void queryWalletCards() {
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotActivity.java b/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotActivity.java
index 33041d2..fa28754 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotActivity.java
@@ -17,11 +17,12 @@
 package com.android.systemui.screenshot;
 
 import android.app.Activity;
+import android.app.ActivityOptions;
 import android.content.ComponentName;
-import android.content.Context;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.HardwareRenderer;
+import android.graphics.Matrix;
 import android.graphics.RecordingCanvas;
 import android.graphics.Rect;
 import android.graphics.RenderNode;
@@ -32,11 +33,14 @@
 import android.os.UserHandle;
 import android.text.TextUtils;
 import android.util.Log;
-import android.view.IWindowManager;
 import android.view.ScrollCaptureResponse;
 import android.view.View;
+import android.view.Window;
 import android.widget.ImageView;
 
+import androidx.constraintlayout.widget.ConstraintLayout;
+
+import com.android.internal.app.ChooserActivity;
 import com.android.internal.logging.UiEventLogger;
 import com.android.systemui.R;
 import com.android.systemui.dagger.qualifiers.Background;
@@ -64,17 +68,16 @@
     public static final String EXTRA_CAPTURE_RESPONSE = "capture-response";
     private static final String KEY_SAVED_IMAGE_PATH = "saved-image-path";
 
+    private static final boolean USE_SHARED_ELEMENT = false;
+
     private final UiEventLogger mUiEventLogger;
-    private final ScrollCaptureController mScrollCaptureController;
     private final Executor mUiExecutor;
     private final Executor mBackgroundExecutor;
     private final ImageExporter mImageExporter;
-
-    // If true, the activity is re-loading an image from storage, which should either succeed and
-    // populate the UI or fail and finish the activity.
-    private boolean mRestoringInstance;
+    private final LongScreenshotHolder mLongScreenshotHolder;
 
     private ImageView mPreview;
+    private ImageView mTransitionView;
     private View mSave;
     private View mEdit;
     private View mShare;
@@ -86,8 +89,8 @@
     private ListenableFuture<File> mCacheSaveFuture;
     private ListenableFuture<ImageLoader.Result> mCacheLoadFuture;
 
-    private ListenableFuture<LongScreenshot> mLongScreenshotFuture;
     private LongScreenshot mLongScreenshot;
+    private boolean mTransitionStarted;
 
     private enum PendingAction {
         SHARE,
@@ -97,21 +100,21 @@
 
     @Inject
     public LongScreenshotActivity(UiEventLogger uiEventLogger, ImageExporter imageExporter,
-            @Main Executor mainExecutor, @Background Executor bgExecutor, IWindowManager wms,
-            Context context, ScrollCaptureController scrollCaptureController) {
+            @Main Executor mainExecutor, @Background Executor bgExecutor,
+            LongScreenshotHolder longScreenshotHolder) {
         mUiEventLogger = uiEventLogger;
         mUiExecutor = mainExecutor;
         mBackgroundExecutor = bgExecutor;
         mImageExporter = imageExporter;
-        mScrollCaptureController = scrollCaptureController;
+        mLongScreenshotHolder = longScreenshotHolder;
     }
 
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         Log.d(TAG, "onCreate(savedInstanceState = " + savedInstanceState + ")");
-
         super.onCreate(savedInstanceState);
+        getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
         setContentView(R.layout.long_screenshot);
 
         mPreview = requireViewById(R.id.preview);
@@ -121,6 +124,7 @@
         mCropView = requireViewById(R.id.crop_view);
         mMagnifierView = requireViewById(R.id.magnifier);
         mCropView.setCropInteractionListener(mMagnifierView);
+        mTransitionView = requireViewById(R.id.transition);
 
         mSave.setOnClickListener(this::onClicked);
         mEdit.setOnClickListener(this::onClicked);
@@ -152,7 +156,7 @@
         super.onStart();
 
         if (mCacheLoadFuture != null) {
-            Log.d(TAG, "mRestoringInstance = true");
+            Log.d(TAG, "mCacheLoadFuture != null");
             final ListenableFuture<ImageLoader.Result> future = mCacheLoadFuture;
             mCacheLoadFuture.addListener(() -> {
                 Log.d(TAG, "cached bitmap load complete");
@@ -170,42 +174,22 @@
             }, mUiExecutor);
             mCacheLoadFuture = null;
             return;
-        }
-
-        if (mLongScreenshotFuture == null) {
-            Log.d(TAG, "mLongScreenshotFuture == null");
-            // First run through, ensure we have a connection to use (see #onCreate)
-            if (mScrollCaptureResponse == null || !mScrollCaptureResponse.isConnected()) {
-                Log.e(TAG, "Did not receive a live scroll capture connection, bailing out!");
-                finishAndRemoveTask();
-                return;
-            }
-            mLongScreenshotFuture = mScrollCaptureController.run(mScrollCaptureResponse);
-            mLongScreenshotFuture.addListener(() -> {
-                LongScreenshot longScreenshot;
-                try {
-                    longScreenshot = mLongScreenshotFuture.get();
-                } catch (CancellationException | InterruptedException | ExecutionException e) {
-                    Log.e(TAG, "Error capturing long screenshot!", e);
-                    finishAndRemoveTask();
-                    return;
-                }
-                if (longScreenshot.getHeight() == 0) {
-                    Log.e(TAG, "Got a zero height result");
-                    finishAndRemoveTask();
-                    return;
-                }
-                onCaptureCompleted(longScreenshot);
-            }, mUiExecutor);
         } else {
-            Log.d(TAG, "mLongScreenshotFuture != null");
+            LongScreenshot longScreenshot = mLongScreenshotHolder.takeLongScreenshot();
+            if (longScreenshot != null) {
+                onLongScreenshotReceived(longScreenshot);
+            } else {
+                Log.e(TAG, "No long screenshot available!");
+                finishAndRemoveTask();
+            }
         }
     }
 
-    private void onCaptureCompleted(LongScreenshot longScreenshot) {
-        Log.d(TAG, "onCaptureCompleted(longScreenshot=" + longScreenshot + ")");
+    private void onLongScreenshotReceived(LongScreenshot longScreenshot) {
+        Log.d(TAG, "onLongScreenshotReceived(longScreenshot=" + longScreenshot + ")");
         mLongScreenshot = longScreenshot;
         mPreview.setImageDrawable(mLongScreenshot.getDrawable());
+        mTransitionView.setImageDrawable(mLongScreenshot.getDrawable());
         updateImageDimensions();
         mCropView.setVisibility(View.VISIBLE);
         mMagnifierView.setDrawable(mLongScreenshot.getDrawable(),
@@ -277,15 +261,15 @@
     protected void onStop() {
         Log.d(TAG, "onStop finishing=" + isFinishing());
         super.onStop();
+        if (mTransitionStarted) {
+            finish();
+        }
         if (isFinishing()) {
             if (mScrollCaptureResponse != null) {
                 mScrollCaptureResponse.close();
             }
             cleanupCache();
 
-            if (mLongScreenshotFuture != null) {
-                mLongScreenshotFuture.cancel(true);
-            }
             if (mLongScreenshot != null) {
                 mLongScreenshot.release();
             }
@@ -323,11 +307,22 @@
             intent.setComponent(ComponentName.unflattenFromString(editorPackage));
         }
         intent.setDataAndType(uri, "image/png");
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
-                | Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION
+                | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
 
-        startActivityAsUser(intent, UserHandle.CURRENT);
-        finishAndRemoveTask();
+        if (USE_SHARED_ELEMENT) {
+            updateImageDimensions();
+            mTransitionView.setVisibility(View.VISIBLE);
+            // TODO: listen for transition completing instead of finishing onStop
+            mTransitionStarted = true;
+            startActivity(intent,
+                    ActivityOptions.makeSceneTransitionAnimation(this, mTransitionView,
+                            ChooserActivity.FIRST_IMAGE_PREVIEW_TRANSITION_NAME).toBundle());
+        } else {
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+            startActivityAsUser(intent, UserHandle.CURRENT);
+            finishAndRemoveTask();
+        }
     }
 
     private void doShare(Uri uri) {
@@ -417,19 +412,47 @@
                 - mPreview.getPaddingBottom();
         float viewRatio = previewWidth / (float) previewHeight;
 
+        // Top and left offsets of the image relative to mPreview.
+        int imageLeft = mPreview.getPaddingLeft();
+        int imageTop = mPreview.getPaddingTop();
+
+        // The image width and height on screen
+        int imageHeight = previewHeight;
+        int imageWidth = previewWidth;
+        float scale;
         if (imageRatio > viewRatio) {
             // Image is full width and height is constrained, compute extra padding to inform
             // CropView
-            float imageHeight = previewHeight * viewRatio / imageRatio;
-            int extraPadding = (int) (previewHeight - imageHeight) / 2;
+            imageHeight = (int) (previewHeight * viewRatio / imageRatio);
+            int extraPadding = (previewHeight - imageHeight) / 2;
             mCropView.setExtraPadding(extraPadding + mPreview.getPaddingTop(),
                     extraPadding + mPreview.getPaddingBottom());
+            imageTop += (previewHeight - imageHeight) / 2;
+            scale = imageHeight / bounds.height();
+            mCropView.setExtraPadding(extraPadding, extraPadding);
             mCropView.setImageWidth(previewWidth);
         } else {
+            imageWidth = (int) (previewWidth * imageRatio / viewRatio);
+            imageLeft += (previewWidth - imageWidth) / 2;
+            scale = imageWidth / (float) bounds.width();
             // Image is full height
             mCropView.setExtraPadding(mPreview.getPaddingTop(),  mPreview.getPaddingBottom());
             mCropView.setImageWidth((int) (previewHeight * imageRatio));
         }
 
+        // Update transition view's position and scale.
+        Rect boundaries = mCropView.getCropBoundaries(imageWidth, imageHeight);
+        mTransitionView.setTranslationX(imageLeft + boundaries.left);
+        mTransitionView.setTranslationY(imageTop + boundaries.top);
+        ConstraintLayout.LayoutParams params =
+                (ConstraintLayout.LayoutParams) mTransitionView.getLayoutParams();
+        params.width = boundaries.width();
+        params.height = boundaries.height();
+        mTransitionView.setLayoutParams(params);
+
+        Matrix matrix = new Matrix();
+        matrix.postScale(scale, scale, 0, 0);
+        matrix.postTranslate(-boundaries.left, -boundaries.top);
+        mTransitionView.setImageMatrix(matrix);
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotHolder.java b/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotHolder.java
new file mode 100644
index 0000000..39c6f07
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotHolder.java
@@ -0,0 +1,59 @@
+/*
+ * 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.systemui.screenshot;
+
+import com.android.systemui.dagger.SysUISingleton;
+
+import java.util.concurrent.atomic.AtomicReference;
+
+import javax.inject.Inject;
+
+/**
+ * LongScreenshotHolder holds on to 1 LongScreenshot reference to facilitate indirect in-process
+ * passing.
+ */
+@SysUISingleton
+public class LongScreenshotHolder {
+    private final AtomicReference<ScrollCaptureController.LongScreenshot> mLongScreenshot;
+
+    @Inject
+    public LongScreenshotHolder() {
+        mLongScreenshot = new AtomicReference<>();
+    }
+
+    /**
+     * Set the holder's stored LongScreenshot.
+     */
+    public void setLongScreenshot(ScrollCaptureController.LongScreenshot longScreenshot) {
+        mLongScreenshot.set(longScreenshot);
+    }
+
+    /**
+     * @return true if the holder has a non-null LongScreenshot.
+     */
+    public boolean hasLongScreenshot() {
+        return mLongScreenshot.get() != null;
+    }
+
+    /**
+     * Return the current stored LongScreenshot, clear the holder's storage.
+     */
+    public ScrollCaptureController.LongScreenshot takeLongScreenshot() {
+        return mLongScreenshot.getAndSet(null);
+    }
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
index badffce..9d01986 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
@@ -191,6 +191,8 @@
     private final ScrollCaptureClient mScrollCaptureClient;
     private final PhoneWindow mWindow;
     private final DisplayManager mDisplayManager;
+    private final ScrollCaptureController mScrollCaptureController;
+    private final LongScreenshotHolder mLongScreenshotHolder;
 
     private ScreenshotView mScreenshotView;
     private Bitmap mScreenBitmap;
@@ -233,13 +235,17 @@
             ScrollCaptureClient scrollCaptureClient,
             UiEventLogger uiEventLogger,
             ImageExporter imageExporter,
-            @Main Executor mainExecutor) {
+            @Main Executor mainExecutor,
+            ScrollCaptureController scrollCaptureController,
+            LongScreenshotHolder longScreenshotHolder) {
         mScreenshotSmartActions = screenshotSmartActions;
         mNotificationsController = screenshotNotificationsController;
         mScrollCaptureClient = scrollCaptureClient;
         mUiEventLogger = uiEventLogger;
         mImageExporter = imageExporter;
         mMainExecutor = mainExecutor;
+        mScrollCaptureController = scrollCaptureController;
+        mLongScreenshotHolder = longScreenshotHolder;
         mBgExecutor = Executors.newSingleThreadExecutor();
 
         mDisplayManager = requireNonNull(context.getSystemService(DisplayManager.class));
@@ -569,15 +575,30 @@
             }
             Log.d(TAG, "ScrollCapture: connected to window ["
                     + mLastScrollCaptureResponse.getWindowTitle() + "]");
-            final Intent intent = new Intent(mContext, LongScreenshotActivity.class);
-            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
-            intent.putExtra(LongScreenshotActivity.EXTRA_CAPTURE_RESPONSE,
-                    mLastScrollCaptureResponse);
+
+            final ScrollCaptureResponse response = mLastScrollCaptureResponse;
             mScreenshotView.showScrollChip(/* onClick */ () -> {
                 // Clear the reference to prevent close() in dismissScreenshot
                 mLastScrollCaptureResponse = null;
-                mContext.startActivity(intent);
-                dismissScreenshot(false);
+                final ListenableFuture<ScrollCaptureController.LongScreenshot> future =
+                        mScrollCaptureController.run(response);
+                future.addListener(() -> {
+                    ScrollCaptureController.LongScreenshot longScreenshot;
+                    try {
+                        longScreenshot = future.get();
+                    } catch (CancellationException | InterruptedException | ExecutionException e) {
+                        Log.e(TAG, "Exception", e);
+                        return;
+                    }
+
+                    mLongScreenshotHolder.setLongScreenshot(longScreenshot);
+
+                    final Intent intent = new Intent(mContext, LongScreenshotActivity.class);
+                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+                    mContext.startActivity(intent);
+
+                    dismissScreenshot(false);
+                }, mMainExecutor);
             });
         } catch (CancellationException e) {
             // Ignore
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java
index 29f67f3..6ebab8a 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java
@@ -57,6 +57,13 @@
         ERROR,
         TIMEOUT
     }
+
+    /* Enum to define screenshot smart action types. */
+    public enum ScreenshotSmartActionType {
+        REGULAR_SMART_ACTIONS,
+        QUICK_SHARE_ACTION
+    }
+
     /**
      * Default implementation that returns an empty list.
      * This method is overridden in vendor-specific Sys UI implementation.
@@ -68,7 +75,8 @@
      * @param userHandle         user handle of the foreground task owner
      */
     public CompletableFuture<List<Notification.Action>> getActions(String screenshotId,
-            Uri screenshotUri, Bitmap bitmap, ComponentName componentName, UserHandle userHandle) {
+            Uri screenshotUri, Bitmap bitmap, ComponentName componentName,
+            ScreenshotSmartActionType actionType, UserHandle userHandle) {
         if (DEBUG_ACTIONS) {
             Log.d(TAG, "Returning empty smart action list.");
         }
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java
index 1184dc7..9bd7923 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java
@@ -20,6 +20,7 @@
 
 import static com.android.systemui.screenshot.LogConfig.DEBUG_ACTIONS;
 import static com.android.systemui.screenshot.LogConfig.logTag;
+import static com.android.systemui.screenshot.ScreenshotNotificationSmartActionsProvider.ScreenshotSmartActionType;
 
 import android.app.ActivityManager;
 import android.app.Notification;
@@ -87,8 +88,8 @@
                     (runningTask != null && runningTask.topActivity != null)
                             ? runningTask.topActivity
                             : new ComponentName("", "");
-            smartActionsFuture = smartActionsProvider.getActions(
-                    screenshotId, screenshotUri, image, componentName, userHandle);
+            smartActionsFuture = smartActionsProvider.getActions(screenshotId, screenshotUri, image,
+                    componentName, ScreenshotSmartActionType.REGULAR_SMART_ACTIONS, userHandle);
         } catch (Throwable e) {
             long waitTimeMs = SystemClock.uptimeMillis() - startTimeMs;
             smartActionsFuture = CompletableFuture.completedFuture(Collections.emptyList());
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
index dbd6758..b60fd13 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
@@ -48,7 +48,7 @@
         super(context, attrs);
     }
 
-    // Inflated from quick_settings_brightness_dialog or quick_settings_brightness_dialog_thick
+    // Inflated from quick_settings_brightness_dialog
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java
index 23e6a9f..0e56ab7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java
@@ -169,8 +169,6 @@
             return mCallback.handleRemoteViewClick(view, pendingIntent,
                     action == null ? false : action.isAuthenticationRequired(), () -> {
                     Pair<Intent, ActivityOptions> options = response.getLaunchOptions(view);
-                    options.second.setLaunchWindowingMode(
-                            WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY);
                     mLogger.logStartingIntentWithDefaultHandler(entry, pendingIntent);
                     return RemoteViews.startPendingIntent(view, pendingIntent, options);
             });
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
index f57fd21..f4266a2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
@@ -41,6 +41,7 @@
 import com.android.systemui.statusbar.notification.stack.AnimationProperties;
 import com.android.systemui.statusbar.notification.stack.ExpandableViewState;
 import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
+import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm;
 import com.android.systemui.statusbar.notification.stack.ViewState;
 import com.android.systemui.statusbar.phone.NotificationIconContainer;
 
@@ -82,6 +83,9 @@
     private Rect mClipRect = new Rect();
     private int mCutoutHeight;
     private int mGapHeight;
+    private int mIndexOfFirstViewInShelf = -1;
+    private int mIndexOfFirstViewInOverflowingSection = -1;
+
     private NotificationShelfController mController;
 
     public NotificationShelf(Context context, AttributeSet attrs) {
@@ -159,30 +163,49 @@
     }
 
     /** Update the state of the shelf. */
-    public void updateState(AmbientState ambientState) {
+    public void updateState(StackScrollAlgorithm.StackScrollAlgorithmState algorithmState,
+            AmbientState ambientState) {
         ExpandableView lastView = ambientState.getLastVisibleBackgroundChild();
         ShelfState viewState = (ShelfState) getViewState();
         if (mShowNotificationShelf && lastView != null) {
-            float maxShelfEnd = ambientState.getInnerHeight() + ambientState.getTopPadding()
-                    + ambientState.getStackTranslation();
             ExpandableViewState lastViewState = lastView.getViewState();
-            float viewEnd = lastViewState.yTranslation + lastViewState.height;
             viewState.copyFrom(lastViewState);
+
             viewState.height = getIntrinsicHeight();
-            viewState.yTranslation = Math.max(Math.min(viewEnd, maxShelfEnd) - viewState.height,
-                    getFullyClosedTranslation());
             viewState.zTranslation = ambientState.getBaseZHeight();
             viewState.clipTopAmount = 0;
             viewState.alpha = 1f - ambientState.getHideAmount();
             viewState.belowSpeedBump = mHostLayoutController.getSpeedBumpIndex() == 0;
             viewState.hideSensitive = false;
             viewState.xTranslation = getTranslationX();
+            viewState.hasItemsInStableShelf = lastViewState.inShelf;
+            viewState.firstViewInShelf = algorithmState.firstViewInShelf;
+            viewState.firstViewInOverflowSection = algorithmState.firstViewInOverflowSection;
             if (mNotGoneIndex != -1) {
                 viewState.notGoneIndex = Math.min(viewState.notGoneIndex, mNotGoneIndex);
             }
-            viewState.hasItemsInStableShelf = lastViewState.inShelf;
+
             viewState.hidden = !mAmbientState.isShadeExpanded()
-                    || mAmbientState.isQsCustomizerShowing();
+                    || mAmbientState.isQsCustomizerShowing()
+                    || algorithmState.firstViewInShelf == null;
+
+            final int indexOfFirstViewInShelf = algorithmState.visibleChildren.indexOf(
+                    algorithmState.firstViewInShelf);
+
+            if (mAmbientState.isExpansionChanging()
+                    && algorithmState.firstViewInShelf != null
+                    && indexOfFirstViewInShelf > 0) {
+
+                // Show shelf if section before it is showing.
+                final ExpandableView viewBeforeShelf = algorithmState.visibleChildren.get(
+                        indexOfFirstViewInShelf - 1);
+                if (viewBeforeShelf.getViewState().hidden) {
+                    viewState.hidden = true;
+                }
+            }
+
+            final float stackEnd = ambientState.getStackY() + ambientState.getStackHeight();
+            viewState.yTranslation = stackEnd - viewState.height;
         } else {
             viewState.hidden = true;
             viewState.location = ExpandableViewState.LOCATION_GONE;
@@ -199,13 +222,11 @@
         if (!mShowNotificationShelf) {
             return;
         }
-
         mShelfIcons.resetViewStates();
         float shelfStart = getTranslationY();
         float numViewsInShelf = 0.0f;
         View lastChild = mAmbientState.getLastVisibleBackgroundChild();
         mNotGoneIndex = -1;
-        float interpolationStart = mMaxLayoutHeight - getIntrinsicHeight() * 2;
         //  find the first view that doesn't overlap with the shelf
         int notGoneIndex = 0;
         int colorOfViewBeforeLast = NO_COLOR;
@@ -219,7 +240,7 @@
         float currentScrollVelocity = mAmbientState.getCurrentScrollVelocity();
         boolean scrollingFast = currentScrollVelocity > mScrollFastThreshold
                 || (mAmbientState.isExpansionChanging()
-                        && Math.abs(mAmbientState.getExpandingVelocity()) > mScrollFastThreshold);
+                && Math.abs(mAmbientState.getExpandingVelocity()) > mScrollFastThreshold);
         boolean expandingAnimated = mAmbientState.isExpansionChanging()
                 && !mAmbientState.isPanelTracking();
         int baseZHeight = mAmbientState.getBaseZHeight();
@@ -233,22 +254,37 @@
             if (!child.needsClippingToShelf() || child.getVisibility() == GONE) {
                 continue;
             }
-
             float notificationClipEnd;
             boolean aboveShelf = ViewState.getFinalTranslationZ(child) > baseZHeight
                     || child.isPinned();
             boolean isLastChild = child == lastChild;
             float rowTranslationY = child.getTranslationY();
+
+            final float inShelfAmount = updateShelfTransformation(i, child, scrollingFast,
+                    expandingAnimated, isLastChild);
+
+            final float stackEnd = mAmbientState.getStackY()
+                    + mAmbientState.getStackHeight();
+            // TODO(b/172289889) scale mPaddingBetweenElements with expansion amount
             if ((isLastChild && !child.isInShelf()) || aboveShelf || backgroundForceHidden) {
-                notificationClipEnd = shelfStart + getIntrinsicHeight();
+                notificationClipEnd = stackEnd;
+            } else if (mAmbientState.isExpansionChanging()) {
+                if (mIndexOfFirstViewInOverflowingSection != -1
+                    && i >= mIndexOfFirstViewInOverflowingSection) {
+                    // Clip notifications in (section overflowing into shelf) to shelf start.
+                    notificationClipEnd = shelfStart - mPaddingBetweenElements;
+                } else {
+                    // Clip notifications before the section overflowing into shelf
+                    // to stackEnd because we do not show the shelf if the section right before the
+                    // shelf is still hidden.
+                    notificationClipEnd = stackEnd;
+                }
             } else {
                 notificationClipEnd = shelfStart - mPaddingBetweenElements;
             }
             int clipTop = updateNotificationClipHeight(child, notificationClipEnd, notGoneIndex);
             clipTopAmount = Math.max(clipTop, clipTopAmount);
 
-            final float inShelfAmount = updateShelfTransformation(child, scrollingFast,
-                    expandingAnimated, isLastChild);
             // If the current row is an ExpandableNotificationRow, update its color, roundedness,
             // and icon state.
             if (child instanceof ExpandableNotificationRow) {
@@ -314,19 +350,23 @@
                                 distanceToGapTop / mGapHeight);
                         previousAnv.setBottomRoundness(firstElementRoundness,
                                 false /* don't animate */);
-                        backgroundTop = (int) distanceToGapBottom;
                     }
                 }
                 previousAnv = anv;
             }
         }
+
         clipTransientViews();
 
         setClipTopAmount(clipTopAmount);
-        boolean isHidden = getViewState().hidden || clipTopAmount >= getIntrinsicHeight();
-        if (mShowNotificationShelf) {
-            setVisibility(isHidden ? View.INVISIBLE : View.VISIBLE);
-        }
+
+        boolean isHidden = getViewState().hidden
+                || clipTopAmount >= getIntrinsicHeight()
+                || !mShowNotificationShelf
+                || numViewsInShelf < 1f;
+
+        // TODO(b/172289889) transition last icon in shelf to notification icon and vice versa.
+        setVisibility(isHidden ? View.INVISIBLE : View.VISIBLE);
         setBackgroundTop(backgroundTop);
         setFirstElementRoundness(firstElementRoundness);
         mShelfIcons.setSpeedBumpIndex(mHostLayoutController.getSpeedBumpIndex());
@@ -339,11 +379,10 @@
                 continue;
             }
             ExpandableNotificationRow row = (ExpandableNotificationRow) child;
-            updateIconClipAmount(row);
             updateContinuousClipping(row);
         }
-        boolean hideBackground = numViewsInShelf < 1.0f;
-        setHideBackground(hideBackground || backgroundForceHidden);
+        boolean hideBackground = isHidden;
+        setHideBackground(hideBackground);
         if (mNotGoneIndex == -1) {
             mNotGoneIndex = notGoneIndex;
         }
@@ -476,10 +515,10 @@
     /**
      * @return the amount how much this notification is in the shelf
      */
-    private float updateShelfTransformation(ExpandableView view, boolean scrollingFast,
+    private float updateShelfTransformation(int i, ExpandableView view, boolean scrollingFast,
             boolean expandingAnimated, boolean isLastChild) {
 
-        // Let calculate how much the view is in the shelf
+        // Let's calculate how much the view is in the shelf
         float viewStart = view.getTranslationY();
         int fullHeight = view.getActualHeight() + mPaddingBetweenElements;
         float iconTransformStart = calculateIconTransformationStart(view);
@@ -496,15 +535,21 @@
                     transformDistance,
                     view.getMinHeight() - getIntrinsicHeight());
         }
+
         float viewEnd = viewStart + fullHeight;
         float fullTransitionAmount = 0.0f;
         float iconTransitionAmount = 0.0f;
         float shelfStart = getTranslationY();
-
-        if (viewEnd >= shelfStart
+        if (mAmbientState.isExpansionChanging() && !mAmbientState.isOnKeyguard()) {
+            // TODO(b/172289889) handle icon placement for notification that is clipped by the shelf
+            if (mIndexOfFirstViewInShelf != -1 && i >= mIndexOfFirstViewInShelf) {
+                fullTransitionAmount = 1f;
+                iconTransitionAmount = 1f;
+            }
+        } else if (viewEnd >= shelfStart
                 && (!mAmbientState.isUnlockHintRunning() || view.isInShelf())
                 && (mAmbientState.isShadeExpanded()
-                        || (!view.isPinned() && !view.isHeadsUpAnimatingAway()))) {
+                || (!view.isPinned() && !view.isHeadsUpAnimatingAway()))) {
 
             if (viewStart < shelfStart) {
                 float fullAmount = (shelfStart - viewStart) / fullHeight;
@@ -572,7 +617,7 @@
                     && !mNoAnimationsInThisFrame;
         }
         iconState.clampedAppearAmount = clampedAmount;
-        setIconTransformationAmount(view, transitionAmount, isLastChild);
+        setIconTransformationAmount(view, transitionAmount);
     }
 
     private boolean isTargetClipped(ExpandableView view) {
@@ -585,12 +630,10 @@
                 + view.getContentTranslation()
                 + view.getRelativeTopPadding(target)
                 + target.getHeight();
-
         return endOfTarget >= getTranslationY() - mPaddingBetweenElements;
     }
 
-    private void setIconTransformationAmount(ExpandableView view, float transitionAmount,
-            boolean isLastChild) {
+    private void setIconTransformationAmount(ExpandableView view, float transitionAmount) {
         if (!(view instanceof ExpandableNotificationRow)) {
             return;
         }
@@ -601,7 +644,6 @@
             return;
         }
         iconState.alpha = transitionAmount;
-
         boolean isAppearing = row.isDrawingAppearAnimation() && !row.isInShelf();
         iconState.hidden = isAppearing
                 || (view instanceof ExpandableNotificationRow
@@ -610,8 +652,8 @@
                 || (transitionAmount == 0.0f && !iconState.isAnimating(icon))
                 || row.isAboveShelf()
                 || row.showingPulsing()
-                || (!row.isInShelf() && isLastChild)
                 || row.getTranslationZ() > mAmbientState.getBaseZHeight();
+
         iconState.iconAppearAmount = iconState.hidden? 0f : transitionAmount;
 
         // Fade in icons at shelf start
@@ -790,8 +832,19 @@
         mController = notificationShelfController;
     }
 
+    public void setIndexOfFirstViewInShelf(ExpandableView firstViewInShelf) {
+        mIndexOfFirstViewInShelf = mHostLayoutController.indexOfChild(firstViewInShelf);
+    }
+
+    public void setFirstViewInOverflowingSection(ExpandableView firstViewInOverflowingSection) {
+        mIndexOfFirstViewInOverflowingSection =
+                mHostLayoutController.indexOfChild(firstViewInOverflowingSection);
+    }
+
     private class ShelfState extends ExpandableViewState {
         private boolean hasItemsInStableShelf;
+        private ExpandableView firstViewInShelf;
+        private ExpandableView firstViewInOverflowSection;
 
         @Override
         public void applyToView(View view) {
@@ -800,6 +853,8 @@
             }
 
             super.applyToView(view);
+            setIndexOfFirstViewInShelf(firstViewInShelf);
+            setFirstViewInOverflowingSection(firstViewInOverflowSection);
             updateAppearance();
             setHasItemsInStableShelf(hasItemsInStableShelf);
             mShelfIcons.setAnimationsEnabled(mAnimationsEnabled);
@@ -812,6 +867,8 @@
             }
 
             super.animateTo(child, properties);
+            setIndexOfFirstViewInShelf(firstViewInShelf);
+            setFirstViewInOverflowingSection(firstViewInOverflowSection);
             updateAppearance();
             setHasItemsInStableShelf(hasItemsInStableShelf);
             mShelfIcons.setAnimationsEnabled(mAnimationsEnabled);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelfController.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelfController.java
index 1e935c1..4f70fdb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelfController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelfController.java
@@ -22,6 +22,7 @@
 import com.android.systemui.statusbar.notification.row.dagger.NotificationRowScope;
 import com.android.systemui.statusbar.notification.stack.AmbientState;
 import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
+import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm;
 import com.android.systemui.statusbar.phone.KeyguardBypassController;
 import com.android.systemui.statusbar.phone.NotificationIconContainer;
 import com.android.systemui.statusbar.phone.StatusBarNotificationPresenter;
@@ -103,9 +104,10 @@
         return mView.getHeight();
     }
 
-    public void updateState(AmbientState ambientState) {
+    public void updateState(StackScrollAlgorithm.StackScrollAlgorithmState algorithmState,
+            AmbientState ambientState) {
         mAmbientState = ambientState;
-        mView.updateState(ambientState);
+        mView.updateState(algorithmState, ambientState);
     }
 
     public int getIntrinsicHeight() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java
index 20383fe..fad7480 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java
@@ -24,6 +24,7 @@
 import com.android.systemui.dagger.SysUISingleton;
 import com.android.systemui.dagger.qualifiers.Main;
 import com.android.systemui.media.MediaDataManager;
+import com.android.systemui.plugins.ActivityStarter;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.statusbar.ActionClickLogger;
 import com.android.systemui.statusbar.CommandQueue;
@@ -237,9 +238,11 @@
     static OngoingCallController provideOngoingCallController(
             CommonNotifCollection notifCollection,
             FeatureFlags featureFlags,
-            SystemClock systemClock) {
+            SystemClock systemClock,
+            ActivityStarter activityStarter) {
         OngoingCallController ongoingCallController =
-                new OngoingCallController(notifCollection, featureFlags, systemClock);
+                new OngoingCallController(
+                        notifCollection, featureFlags, systemClock, activityStarter);
         ongoingCallController.init();
         return ongoingCallController;
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotViewController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotViewController.kt
new file mode 100644
index 0000000..5ab71bc
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotViewController.kt
@@ -0,0 +1,352 @@
+/*
+ * 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.systemui.statusbar.events
+
+import android.animation.Animator
+import android.animation.AnimatorListenerAdapter
+import android.animation.ObjectAnimator
+import android.annotation.UiThread
+import android.util.Log
+import android.view.Gravity
+import android.view.View
+import android.widget.FrameLayout
+
+import com.android.systemui.animation.Interpolators
+import com.android.systemui.R
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Main
+
+import java.lang.IllegalStateException
+import java.util.concurrent.Executor
+import javax.inject.Inject
+
+/**
+ * Understands how to keep the persistent privacy dot in the corner of the screen in
+ * ScreenDecorations, which does not rotate with the device.
+ *
+ * The basic principle here is that each dot will sit in a box that is equal to the margins of the
+ * status bar (specifically the status_bar_contents view in PhoneStatusBarView). Each dot container
+ * will have its gravity set towards the corner (i.e., top-right corner gets top|right gravity), and
+ * the contained ImageView will be set to center_vertical and away from the corner horizontally. The
+ * Views will match the status bar top padding and status bar height so that the dot can appear to
+ * reside directly after the status bar system contents (basically to the right of the battery).
+ *
+ * NOTE: any operation that modifies views directly must run on the provided executor, because
+ * these views are owned by ScreenDecorations and it runs in its own thread
+ */
+
+@SysUISingleton
+class PrivacyDotViewController @Inject constructor(
+    @Main val mainExecutor: Executor,
+    val animationScheduler: SystemStatusAnimationScheduler
+) {
+    private var rotation = 0
+    private var leftSize = 0
+    private var rightSize = 0
+
+    private var sbHeightPortrait = 0
+    private var sbHeightLandscape = 0
+
+    private var hasMultipleHeights = false
+    private var needsHeightUpdate = false
+    private var needsRotationUpdate = false
+    private var needsMarginUpdate = false
+
+    private lateinit var tl: View
+    private lateinit var tr: View
+    private lateinit var bl: View
+    private lateinit var br: View
+
+    // Track which corner is active (based on orientation + RTL)
+    private var designatedCorner: View? = null
+
+    // Privacy dots are created in ScreenDecoration's UiThread, which is not the main thread
+    private var uiExecutor: Executor? = null
+
+    private val views: Sequence<View>
+        get() = if (!this::tl.isInitialized) sequenceOf() else sequenceOf(tl, tr, br, bl)
+
+    fun setUiExecutor(e: Executor) {
+        uiExecutor = e
+    }
+
+    @UiThread
+    fun updateRotation(rot: Int) {
+        if (rot == rotation) {
+            return
+        }
+
+        // A rotation has started, hide the views to avoid flicker
+        setCornerVisibilities(View.INVISIBLE)
+
+        if (hasMultipleHeights && (rotation % 2) != (rot % 2)) {
+            // we've changed from vertical to horizontal; update status bar height
+            needsHeightUpdate = true
+        }
+
+        rotation = rot
+        needsRotationUpdate = true
+    }
+
+    @UiThread
+    private fun updateHeights(rot: Int) {
+        val height = when (rot) {
+            0, 2 -> sbHeightPortrait
+            1, 3 -> sbHeightLandscape
+            else -> 0
+        }
+
+        views.forEach { it.layoutParams.height = height }
+    }
+
+    // Update the gravity and margins of the privacy views
+    @UiThread
+    private fun updateRotations() {
+        // To keep a view in the corner, its gravity is always the description of its current corner
+        // Therefore, just figure out which view is in which corner. This turns out to be something
+        // like (myCorner - rot) mod 4, where topLeft = 0, topRight = 1, etc. and portrait = 0, and
+        // rotating the device counter-clockwise increments rotation by 1
+
+        views.forEach { corner ->
+            val rotatedCorner = rotatedCorner(cornerForView(corner))
+            (corner.layoutParams as FrameLayout.LayoutParams).apply {
+                gravity = rotatedCorner.toGravity()
+            }
+
+            // Set the dot's view gravity to hug the status bar
+            (corner.findViewById<View>(R.id.privacy_dot)
+                    .layoutParams as FrameLayout.LayoutParams)
+                        .gravity = rotatedCorner.innerGravity()
+        }
+    }
+
+    @UiThread
+    private fun updateCornerSizes() {
+        views.forEach { corner ->
+            val rotatedCorner = rotatedCorner(cornerForView(corner))
+            val w = widthForCorner(rotatedCorner)
+            Log.d(TAG, "updateCornerSizes: setting (${cornerForView(corner)}) to $w")
+            (corner.layoutParams as FrameLayout.LayoutParams).width = w
+            corner.requestLayout()
+        }
+    }
+
+    // Designated view will be the one at statusbar's view.END
+    @UiThread
+    private fun selectDesignatedCorner(): View? {
+        if (!this::tl.isInitialized) {
+            return null
+        }
+
+        val isRtl = tl.isLayoutRtl
+
+        return when (rotation) {
+            0 -> if (isRtl) tl else tr
+            1 -> if (isRtl) tr else br
+            2 -> if (isRtl) br else bl
+            3 -> if (isRtl) bl else tl
+            else -> throw IllegalStateException("unknown rotation")
+        }
+    }
+
+    // Track the current designated corner and maybe animate to a new rotation
+    @UiThread
+    private fun updateDesignatedCorner(newCorner: View) {
+        designatedCorner = newCorner
+
+        if (animationScheduler.hasPersistentDot) {
+            designatedCorner!!.visibility = View.VISIBLE
+            designatedCorner!!.alpha = 0f
+            designatedCorner!!.animate()
+                    .alpha(1.0f)
+                    .setDuration(300)
+                    .start()
+        }
+    }
+
+    @UiThread
+    private fun setCornerVisibilities(vis: Int) {
+        views.forEach { corner ->
+            corner.visibility = vis
+        }
+    }
+
+    private fun cornerForView(v: View): Int {
+        return when (v) {
+            tl -> TOP_LEFT
+            tr -> TOP_RIGHT
+            bl -> BOTTOM_LEFT
+            br -> BOTTOM_RIGHT
+            else -> throw IllegalArgumentException("not a corner view")
+        }
+    }
+
+    private fun rotatedCorner(corner: Int): Int {
+        var modded = corner - rotation
+        if (modded < 0) {
+            modded += 4
+        }
+
+        return modded
+    }
+
+    private fun widthForCorner(corner: Int): Int {
+        return when (corner) {
+            TOP_LEFT, BOTTOM_LEFT -> leftSize
+            TOP_RIGHT, BOTTOM_RIGHT -> rightSize
+            else -> throw IllegalArgumentException("Unknown corner")
+        }
+    }
+
+    fun initialize(topLeft: View, topRight: View, bottomLeft: View, bottomRight: View) {
+        if (this::tl.isInitialized && this::tr.isInitialized &&
+                this::bl.isInitialized && this::br.isInitialized) {
+            if (tl == topLeft && tr == topRight && bl == bottomLeft && br == bottomRight) {
+                return
+            }
+        }
+
+        tl = topLeft
+        tr = topRight
+        bl = bottomLeft
+        br = bottomRight
+
+        designatedCorner = selectDesignatedCorner()
+        mainExecutor.execute {
+            animationScheduler.addCallback(systemStatusAnimationCallback)
+        }
+    }
+
+    /**
+     * Set the status bar height in portrait and landscape, in pixels. If they are the same you can
+     * pass the same value twice
+     */
+    fun setStatusBarHeights(portrait: Int, landscape: Int) {
+        sbHeightPortrait = portrait
+        sbHeightLandscape = landscape
+
+        hasMultipleHeights = portrait != landscape
+    }
+
+    /**
+     * The dot view containers will fill the margin in order to position the dots correctly
+     *
+     * @param left the space between the status bar contents and the left side of the screen
+     * @param right space between the status bar contents and the right side of the screen
+     */
+    fun setStatusBarMargins(left: Int, right: Int) {
+        leftSize = left
+        rightSize = right
+
+        needsMarginUpdate = true
+
+        // Margins come after PhoneStatusBarView does a layout pass, and so will always happen
+        // after rotation changes. It is safe to execute the updates from here
+        uiExecutor?.execute {
+            doUpdates(needsRotationUpdate, needsHeightUpdate, needsMarginUpdate)
+        }
+    }
+
+    private fun doUpdates(rot: Boolean, height: Boolean, width: Boolean) {
+        var newDesignatedCorner: View? = null
+
+        if (rot) {
+            needsRotationUpdate = false
+            updateRotations()
+            newDesignatedCorner = selectDesignatedCorner()
+        }
+
+        if (height) {
+            needsHeightUpdate = false
+            updateHeights(rotation)
+        }
+
+        if (width) {
+            needsMarginUpdate = false
+            updateCornerSizes()
+        }
+
+        if (newDesignatedCorner != null && newDesignatedCorner != designatedCorner) {
+            updateDesignatedCorner(newDesignatedCorner)
+        }
+    }
+
+    private val systemStatusAnimationCallback: SystemStatusAnimationCallback =
+            object : SystemStatusAnimationCallback {
+        override fun onSystemStatusAnimationTransitionToPersistentDot(): Animator? {
+            if (designatedCorner == null) {
+                return null
+            }
+
+            val alpha = ObjectAnimator.ofFloat(
+                    designatedCorner, "alpha", 0f, 1f)
+            alpha.duration = DURATION
+            alpha.interpolator = Interpolators.ALPHA_OUT
+            alpha.addListener(object : AnimatorListenerAdapter() {
+                override fun onAnimationStart(animator: Animator) {
+                    uiExecutor?.execute { designatedCorner?.visibility = View.VISIBLE }
+                }
+            })
+            return alpha
+        }
+
+        override fun onHidePersistentDot(): Animator? {
+            if (designatedCorner == null) {
+                return null
+            }
+
+            val alpha = ObjectAnimator.ofFloat(
+                    designatedCorner, "alpha", 1f, 0f)
+            alpha.duration = DURATION
+            alpha.interpolator = Interpolators.ALPHA_OUT
+            alpha.addListener(object : AnimatorListenerAdapter() {
+                override fun onAnimationEnd(animator: Animator) {
+                    uiExecutor?.execute { designatedCorner?.visibility = View.INVISIBLE }
+                }
+            })
+            alpha.start()
+            return null
+        }
+    }
+}
+
+const val TOP_LEFT = 0
+const val TOP_RIGHT = 1
+const val BOTTOM_RIGHT = 2
+const val BOTTOM_LEFT = 3
+private const val DURATION = 160L
+private const val TAG = "PrivacyDotViewController"
+
+private fun Int.toGravity(): Int {
+    return when (this) {
+        TOP_LEFT -> Gravity.TOP or Gravity.LEFT
+        TOP_RIGHT -> Gravity.TOP or Gravity.RIGHT
+        BOTTOM_LEFT -> Gravity.BOTTOM or Gravity.LEFT
+        BOTTOM_RIGHT -> Gravity.BOTTOM or Gravity.RIGHT
+        else -> throw IllegalArgumentException("Not a corner")
+    }
+}
+
+private fun Int.innerGravity(): Int {
+    return when (this) {
+        TOP_LEFT -> Gravity.CENTER_VERTICAL or Gravity.RIGHT
+        TOP_RIGHT -> Gravity.CENTER_VERTICAL or Gravity.LEFT
+        BOTTOM_LEFT -> Gravity.CENTER_VERTICAL or Gravity.RIGHT
+        BOTTOM_RIGHT -> Gravity.CENTER_VERTICAL or Gravity.LEFT
+        else -> throw IllegalArgumentException("Not a corner")
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/StatusEvent.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/StatusEvent.kt
new file mode 100644
index 0000000..6380dc0
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/StatusEvent.kt
@@ -0,0 +1,67 @@
+/*
+ * 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.systemui.statusbar.events
+
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.view.LayoutInflater
+import android.view.View
+import android.widget.ImageView
+import com.android.settingslib.graph.ThemedBatteryDrawable
+import com.android.systemui.R
+import com.android.systemui.privacy.OngoingPrivacyChip
+import com.android.systemui.privacy.PrivacyItem
+
+interface StatusEvent {
+    val priority: Int
+    // Whether or not to force the status bar open and show a dot
+    val forceVisible: Boolean
+    val viewCreator: (context: Context) -> View
+}
+
+class BatteryEvent : StatusEvent {
+    override val priority = 50
+    override val forceVisible = false
+
+    override val viewCreator: (context: Context) -> View = { context ->
+        val iv = ImageView(context)
+        iv.setImageDrawable(ThemedBatteryDrawable(context, Color.WHITE))
+        iv.setBackgroundDrawable(ColorDrawable(Color.GREEN))
+        iv
+    }
+
+    override fun toString(): String {
+        return javaClass.simpleName
+    }
+}
+class PrivacyEvent : StatusEvent {
+    override val priority = 100
+    override val forceVisible = true
+    var privacyItems: List<PrivacyItem> = listOf()
+
+    override val viewCreator: (context: Context) -> View = { context ->
+        val v = LayoutInflater.from(context)
+                .inflate(R.layout.ongoing_privacy_chip, null) as OngoingPrivacyChip
+        v.privacyList = privacyItems
+        v
+    }
+
+    override fun toString(): String {
+        return javaClass.simpleName
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemEventChipAnimationController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemEventChipAnimationController.kt
new file mode 100644
index 0000000..6209630
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemEventChipAnimationController.kt
@@ -0,0 +1,137 @@
+/*
+ * 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.systemui.statusbar.events
+
+import android.animation.ValueAnimator
+import android.content.Context
+import android.view.Gravity
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup.LayoutParams.MATCH_PARENT
+import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
+import android.widget.FrameLayout
+
+import com.android.systemui.R
+import com.android.systemui.statusbar.SuperStatusBarViewFactory
+import com.android.systemui.statusbar.phone.StatusBarWindowController
+import com.android.systemui.statusbar.phone.StatusBarWindowView
+
+import javax.inject.Inject
+
+/**
+ * //TODO: this _probably_ doesn't control a window anymore
+ * Controls the window for system event animations.
+ */
+class SystemEventChipAnimationController @Inject constructor(
+    private val context: Context,
+    private val statusBarViewFactory: SuperStatusBarViewFactory,
+    private val statusBarWindowController: StatusBarWindowController
+) : SystemStatusChipAnimationCallback {
+    var showPersistentDot = false
+        set(value) {
+            field = value
+            statusBarWindowController.setForceStatusBarVisible(value)
+            maybeUpdateShowDot()
+        }
+
+    private lateinit var animationWindowView: FrameLayout
+    private lateinit var animationDotView: View
+    private lateinit var statusBarWindowView: StatusBarWindowView
+    private var currentAnimatedView: View? = null
+
+    // TODO: move to dagger
+    private var initialized = false
+
+    override fun onChipAnimationStart(
+        viewCreator: (context: Context) -> View,
+        @SystemAnimationState state: Int
+    ) {
+        if (!initialized) init()
+
+        if (state == ANIMATING_IN) {
+            currentAnimatedView = viewCreator(context)
+            animationWindowView.addView(currentAnimatedView, layoutParamsDefault)
+
+            // We are animating IN; chip comes in from View.END
+            currentAnimatedView?.apply {
+                translationX = width.toFloat()
+                alpha = 0f
+                visibility = View.VISIBLE
+            }
+        } else {
+            // We are animating away
+            currentAnimatedView?.apply {
+                translationX = 0f
+                alpha = 1f
+            }
+        }
+    }
+
+    override fun onChipAnimationEnd(@SystemAnimationState state: Int) {
+        if (state == ANIMATING_IN) {
+            // Finished animating in
+            currentAnimatedView?.apply {
+                translationX = 0f
+                alpha = 1f
+            }
+        } else {
+            // Finished animating away
+            currentAnimatedView?.apply {
+                visibility = View.INVISIBLE
+            }
+            animationWindowView.removeView(currentAnimatedView)
+        }
+    }
+
+    override fun onChipAnimationUpdate(
+        animator: ValueAnimator,
+        @SystemAnimationState state: Int
+    ) {
+        // Alpha is parameterized 0,1, and translation from (width, 0)
+        currentAnimatedView?.apply {
+            val amt = animator.animatedValue as Float
+
+            alpha = amt
+
+            val w = width
+            val translation = (1 - amt) * w
+            translationX = translation
+        }
+    }
+
+    private fun maybeUpdateShowDot() {
+        if (!initialized) return
+        if (!showPersistentDot && currentAnimatedView == null) {
+            animationDotView.visibility = View.INVISIBLE
+        }
+    }
+
+    private fun init() {
+        initialized = true
+        statusBarWindowView = statusBarViewFactory.statusBarWindowView
+        animationWindowView = LayoutInflater.from(context)
+                .inflate(R.layout.system_event_animation_window, null) as FrameLayout
+        animationDotView = animationWindowView.findViewById(R.id.dot_view)
+        val lp = FrameLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT)
+        lp.gravity = Gravity.END or Gravity.CENTER_VERTICAL
+        statusBarWindowView.addView(animationWindowView, lp)
+    }
+
+    private val layoutParamsDefault = FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT).also {
+        it.gravity = Gravity.END or Gravity.CENTER_VERTICAL
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemEventCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemEventCoordinator.kt
new file mode 100644
index 0000000..b481823
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemEventCoordinator.kt
@@ -0,0 +1,112 @@
+/*
+ * 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.systemui.statusbar.events
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.privacy.PrivacyItem
+import com.android.systemui.privacy.PrivacyItemController
+import com.android.systemui.statusbar.policy.BatteryController
+import javax.inject.Inject
+
+/**
+ * Listens for system events (battery, privacy, connectivity) and allows listeners
+ * to show status bar animations when they happen
+ */
+@SysUISingleton
+class SystemEventCoordinator @Inject constructor(
+    private val batteryController: BatteryController,
+    private val privacyController: PrivacyItemController
+) {
+    private lateinit var scheduler: SystemStatusAnimationScheduler
+
+    fun startObserving() {
+        /* currently unused
+        batteryController.addCallback(batteryStateListener)
+        */
+        privacyController.addCallback(privacyStateListener)
+    }
+
+    fun stopObserving() {
+        /* currently unused
+        batteryController.removeCallback(batteryStateListener)
+        */
+        privacyController.removeCallback(privacyStateListener)
+    }
+
+    fun attachScheduler(s: SystemStatusAnimationScheduler) {
+        this.scheduler = s
+    }
+
+    fun notifyPluggedIn() {
+        scheduler.onStatusEvent(BatteryEvent())
+    }
+
+    fun notifyPrivacyItemsEmpty() {
+        scheduler.setShouldShowPersistentPrivacyIndicator(false)
+    }
+
+    fun notifyPrivacyItemsChanged() {
+        val event = PrivacyEvent()
+        event.privacyItems = privacyStateListener.currentPrivacyItems
+        scheduler.onStatusEvent(event)
+    }
+
+    private val batteryStateListener = object : BatteryController.BatteryStateChangeCallback {
+        var plugged = false
+        var stateKnown = false
+        override fun onBatteryLevelChanged(level: Int, pluggedIn: Boolean, charging: Boolean) {
+            if (!stateKnown) {
+                stateKnown = true
+                plugged = pluggedIn
+                notifyListeners()
+                return
+            }
+
+            if (plugged != pluggedIn) {
+                plugged = pluggedIn
+                notifyListeners()
+            }
+        }
+
+        private fun notifyListeners() {
+            // We only care about the plugged in status
+            if (plugged) notifyPluggedIn()
+        }
+    }
+
+    private val privacyStateListener = object : PrivacyItemController.Callback {
+        var currentPrivacyItems = listOf<PrivacyItem>()
+
+        override fun onPrivacyItemsChanged(privacyItems: List<PrivacyItem>) {
+            if (privacyItems.isNotEmpty() && currentPrivacyItems.containsAll(privacyItems)) {
+                return
+            }
+            currentPrivacyItems = privacyItems
+            notifyListeners()
+        }
+
+        private fun notifyListeners() {
+            if (currentPrivacyItems.isEmpty()) {
+                notifyPrivacyItemsEmpty()
+            } else {
+                notifyPrivacyItemsChanged()
+            }
+        }
+    }
+}
+
+private const val TAG = "SystemEventCoordinator"
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt
new file mode 100644
index 0000000..b85d031
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt
@@ -0,0 +1,333 @@
+/*
+ * 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.systemui.statusbar.events
+
+import android.animation.Animator
+import android.animation.AnimatorListenerAdapter
+import android.animation.AnimatorSet
+import android.animation.ValueAnimator
+import android.annotation.IntDef
+import android.content.Context
+import android.os.Process
+import android.util.Log
+import android.view.View
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.statusbar.phone.StatusBarWindowController
+import com.android.systemui.statusbar.policy.CallbackController
+import com.android.systemui.util.Assert
+import com.android.systemui.util.concurrency.DelayableExecutor
+import com.android.systemui.util.time.SystemClock
+
+import javax.inject.Inject
+
+/**
+ * Dead-simple scheduler for system status events. Obeys the following principles (all values TBD):
+ *      - Avoiding log spam by only allowing 12 events per minute (1event/5s)
+ *      - Waits 100ms to schedule any event for debouncing/prioritization
+ *      - Simple prioritization: Privacy > Battery > connectivity (encoded in StatusEvent)
+ *      - Only schedules a single event, and throws away lowest priority events
+ *
+ * There are 4 basic stages of animation at play here:
+ *      1. System chrome animation OUT
+ *      2. Chip animation IN
+ *      3. Chip animation OUT; potentially into a dot
+ *      4. System chrome animation IN
+ *
+ * Thus we can keep all animations synchronized with two separate ValueAnimators, one for system
+ * chrome and the other for the chip. These can animate from 0,1 and listeners can parameterize
+ * their respective views based on the progress of the animator. Interpolation differences TBD
+ */
+@SysUISingleton
+class SystemStatusAnimationScheduler @Inject constructor(
+    private val coordinator: SystemEventCoordinator,
+    private val chipAnimationController: SystemEventChipAnimationController,
+    private val statusBarWindowController: StatusBarWindowController,
+    private val systemClock: SystemClock,
+    @Main private val executor: DelayableExecutor
+) : CallbackController<SystemStatusAnimationCallback> {
+
+    /** True from the time a scheduled event starts until it's animation finishes */
+    var isActive = false
+        private set
+
+    @SystemAnimationState var animationState: Int = IDLE
+        private set
+
+    /** True if the persistent privacy dot should be active */
+    var hasPersistentDot = false
+        private set
+
+    private var scheduledEvent: StatusEvent? = null
+    private var cancelExecutionRunnable: Runnable? = null
+    private val listeners = mutableSetOf<SystemStatusAnimationCallback>()
+
+    init {
+        coordinator.attachScheduler(this)
+    }
+
+    fun onStatusEvent(event: StatusEvent) {
+        // Ignore any updates until the system is up and running
+        if (isTooEarly()) {
+            return
+        }
+
+        // Don't deal with threading for now (no need let's be honest)
+        Assert.isMainThread()
+        if (event.priority > scheduledEvent?.priority ?: -1) {
+            if (DEBUG) {
+                Log.d(TAG, "scheduling event $event")
+            }
+            scheduleEvent(event)
+        } else {
+            if (DEBUG) {
+                Log.d(TAG, "ignoring event $event")
+            }
+        }
+    }
+
+    private fun clearDotIfVisible() {
+        notifyHidePersistentDot()
+    }
+
+    fun setShouldShowPersistentPrivacyIndicator(should: Boolean) {
+        if (hasPersistentDot == should) {
+            return
+        }
+
+        hasPersistentDot = should
+
+        if (!hasPersistentDot) {
+            clearDotIfVisible()
+        }
+    }
+
+    private fun isTooEarly(): Boolean {
+        Log.d(TAG, "time=> ${systemClock.uptimeMillis() - Process.getStartUptimeMillis()}")
+        return systemClock.uptimeMillis() - Process.getStartUptimeMillis() < MIN_UPTIME
+    }
+
+    /**
+     * Clear the scheduled event (if any) and schedule a new one
+     */
+    private fun scheduleEvent(event: StatusEvent) {
+        scheduledEvent = event
+        if (scheduledEvent!!.forceVisible) {
+            hasPersistentDot = true
+        }
+
+        // Schedule the animation to start after a debounce period
+        cancelExecutionRunnable = executor.executeDelayed({
+            cancelExecutionRunnable = null
+            animationState = ANIMATING_IN
+            statusBarWindowController.setForceStatusBarVisible(true)
+
+            val entranceAnimator = ValueAnimator.ofFloat(1f, 0f)
+            entranceAnimator.duration = ENTRANCE_ANIM_LENGTH
+            entranceAnimator.addListener(systemAnimatorAdapter)
+            entranceAnimator.addUpdateListener(systemUpdateListener)
+
+            val chipAnimator = ValueAnimator.ofFloat(0f, 1f)
+            chipAnimator.duration = CHIP_ANIM_LENGTH
+            chipAnimator.addListener(
+                    ChipAnimatorAdapter(RUNNING_CHIP_ANIM, scheduledEvent!!.viewCreator))
+            chipAnimator.addUpdateListener(chipUpdateListener)
+
+            val aSet2 = AnimatorSet()
+            aSet2.playSequentially(entranceAnimator, chipAnimator)
+            aSet2.start()
+
+            executor.executeDelayed({
+                animationState = ANIMATING_OUT
+
+                val systemAnimator = ValueAnimator.ofFloat(0f, 1f)
+                systemAnimator.duration = ENTRANCE_ANIM_LENGTH
+                systemAnimator.addListener(systemAnimatorAdapter)
+                systemAnimator.addUpdateListener(systemUpdateListener)
+
+                val chipAnimator = ValueAnimator.ofFloat(1f, 0f)
+                chipAnimator.duration = CHIP_ANIM_LENGTH
+                chipAnimator.addListener(ChipAnimatorAdapter(IDLE, scheduledEvent!!.viewCreator))
+                chipAnimator.addUpdateListener(chipUpdateListener)
+
+                val aSet2 = AnimatorSet()
+
+                aSet2.play(chipAnimator).before(systemAnimator)
+                if (hasPersistentDot) {
+                    val dotAnim = notifyTransitionToPersistentDot()
+                    if (dotAnim != null) aSet2.playTogether(systemAnimator, dotAnim)
+                }
+
+                aSet2.start()
+
+                statusBarWindowController.setForceStatusBarVisible(false)
+                scheduledEvent = null
+            }, DISPLAY_LENGTH)
+        }, DELAY)
+    }
+
+    private fun notifyTransitionToPersistentDot(): Animator? {
+        val anims: List<Animator> = listeners.mapNotNull {
+            it.onSystemStatusAnimationTransitionToPersistentDot()
+        }
+        if (anims.isNotEmpty()) {
+            val aSet = AnimatorSet()
+            aSet.playTogether(anims)
+            return aSet
+        }
+
+        return null
+    }
+
+    private fun notifyHidePersistentDot(): Animator? {
+        val anims: List<Animator> = listeners.mapNotNull {
+            it.onHidePersistentDot()
+        }
+
+        if (anims.isNotEmpty()) {
+            val aSet = AnimatorSet()
+            aSet.playTogether(anims)
+            return aSet
+        }
+
+        return null
+    }
+
+    private fun notifySystemStart() {
+        listeners.forEach { it.onSystemChromeAnimationStart() }
+    }
+
+    private fun notifySystemFinish() {
+        listeners.forEach { it.onSystemChromeAnimationEnd() }
+    }
+
+    private fun notifySystemAnimationUpdate(anim: ValueAnimator) {
+        listeners.forEach { it.onSystemChromeAnimationUpdate(anim) }
+    }
+
+    override fun addCallback(listener: SystemStatusAnimationCallback) {
+        Assert.isMainThread()
+
+        if (listeners.isEmpty()) {
+            coordinator.startObserving()
+        }
+        listeners.add(listener)
+    }
+
+    override fun removeCallback(listener: SystemStatusAnimationCallback) {
+        Assert.isMainThread()
+
+        listeners.remove(listener)
+        if (listeners.isEmpty()) {
+            coordinator.stopObserving()
+        }
+    }
+
+    private val systemUpdateListener = ValueAnimator.AnimatorUpdateListener {
+        anim -> notifySystemAnimationUpdate(anim)
+    }
+
+    private val systemAnimatorAdapter = object : AnimatorListenerAdapter() {
+        override fun onAnimationEnd(p0: Animator?) {
+            notifySystemFinish()
+        }
+
+        override fun onAnimationStart(p0: Animator?) {
+            notifySystemStart()
+        }
+    }
+
+    private val chipUpdateListener = ValueAnimator.AnimatorUpdateListener {
+        anim -> chipAnimationController.onChipAnimationUpdate(anim, animationState)
+    }
+
+    inner class ChipAnimatorAdapter(
+        @SystemAnimationState val endState: Int,
+        val viewCreator: (context: Context) -> View
+    ) : AnimatorListenerAdapter() {
+        override fun onAnimationEnd(p0: Animator?) {
+            chipAnimationController.onChipAnimationEnd(animationState)
+            animationState = endState
+        }
+
+        override fun onAnimationStart(p0: Animator?) {
+            chipAnimationController.onChipAnimationStart(viewCreator, animationState)
+        }
+    }
+}
+
+/**
+ * The general idea here is that this scheduler will run two value animators, and provide
+ * animator-like callbacks for each kind of animation. The SystemChrome animation is expected to
+ * create space for the chip animation to display. This means hiding the system elements in the
+ * status bar and keyguard.
+ *
+ * TODO: the chip animation really only has one client, we can probably remove it from this
+ * interface
+ *
+ * The value animators themselves are simple animators from 0.0 to 1.0. Listeners can apply any
+ * interpolation they choose but realistically these are most likely to be simple alpha transitions
+ */
+interface SystemStatusAnimationCallback {
+    @JvmDefault fun onSystemChromeAnimationUpdate(animator: ValueAnimator) {}
+    @JvmDefault fun onSystemChromeAnimationStart() {}
+    @JvmDefault fun onSystemChromeAnimationEnd() {}
+
+    // Best method name, change my mind
+    @JvmDefault fun onSystemStatusAnimationTransitionToPersistentDot(): Animator? { return null }
+    @JvmDefault fun onHidePersistentDot(): Animator? { return null }
+}
+
+interface SystemStatusChipAnimationCallback {
+    fun onChipAnimationUpdate(animator: ValueAnimator, @SystemAnimationState state: Int) {}
+
+    fun onChipAnimationStart(
+        viewCreator: (context: Context) -> View,
+        @SystemAnimationState state: Int
+    ) {}
+
+    fun onChipAnimationEnd(@SystemAnimationState state: Int) {}
+}
+
+/**
+ */
+@Retention(AnnotationRetention.SOURCE)
+@IntDef(
+        value = [
+            IDLE, ANIMATING_IN, RUNNING_CHIP_ANIM, ANIMATING_OUT
+        ]
+)
+annotation class SystemAnimationState
+
+/** No animation is in progress */
+const val IDLE = 0
+/** System is animating out, and chip is animating in */
+const val ANIMATING_IN = 1
+/** Chip has animated in and is awaiting exit animation, and optionally playing its own animation */
+const val RUNNING_CHIP_ANIM = 2
+/** Chip is animating away and system is animating back */
+const val ANIMATING_OUT = 3
+
+private const val TAG = "SystemStatusAnimationScheduler"
+private const val DELAY: Long = 100
+private const val DISPLAY_LENGTH = 5000L
+private const val ENTRANCE_ANIM_LENGTH = 500L
+private const val CHIP_ANIM_LENGTH = 500L
+private const val MIN_UPTIME: Long = 5 * 1000
+
+private const val DEBUG = false
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationActivityStarter.java
index 5748c4a..2537b19 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationActivityStarter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationActivityStarter.java
@@ -18,6 +18,7 @@
 
 import android.content.Intent;
 import android.service.notification.StatusBarNotification;
+import android.view.View;
 
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
 
@@ -33,7 +34,8 @@
     void startNotificationGutsIntent(Intent intent, int appUid,
             ExpandableNotificationRow row);
 
-    void startHistoryIntent(boolean showHistory);
+    /** Called when the user clicks "Manage" or "History" in the Shade. */
+    void startHistoryIntent(View view, boolean showHistory);
 
     default boolean isCollapsingToShowActivityOverLockscreen() {
         return false;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
index 78fcf18c..f8543f7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
@@ -170,8 +170,8 @@
     }
 
     private void updateColors() {
-        mNormalColor = Utils.getColorAttr(mContext, android.R.attr.colorBackground)
-                .getDefaultColor();
+        mNormalColor = Utils.getColorAttrDefaultColor(mContext,
+                com.android.internal.R.attr.colorSurface);
         mTintedRippleColor = mContext.getColor(
                 R.color.notification_ripple_tinted_color);
         mNormalRippleColor = mContext.getColor(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java
index 4ed5056..298d4f0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java
@@ -19,6 +19,7 @@
 import android.annotation.ColorInt;
 import android.content.Context;
 import android.content.res.Configuration;
+import android.content.res.Resources;
 import android.util.AttributeSet;
 import android.view.View;
 
@@ -93,23 +94,21 @@
     @Override
     protected void onConfigurationChanged(Configuration newConfig) {
         super.onConfigurationChanged(newConfig);
+        int textColor = getResources().getColor(R.color.notif_pill_text);
+        Resources.Theme theme = getContext().getTheme();
         mDismissButton.setBackground(
-                getResources().getDrawable(R.drawable.notif_footer_btn_background));
-        mDismissButton.setTextColor(getResources().getColor(R.color.notif_pill_text));
+                getResources().getDrawable(R.drawable.notif_footer_btn_background, theme));
+        mDismissButton.setTextColor(textColor);
         mManageButton.setBackground(
-                getResources().getDrawable(R.drawable.notif_footer_btn_background));
-        mManageButton.setTextColor(getResources().getColor(R.color.notif_pill_text));
+                getResources().getDrawable(R.drawable.notif_footer_btn_background, theme));
         mManageButton = findViewById(R.id.manage_text);
         mDismissButton.setText(R.string.clear_all_notifications_text);
+        mManageButton.setTextColor(textColor);
         mDismissButton.setContentDescription(
                 mContext.getString(R.string.accessibility_clear_all));
         showHistory(mShowHistory);
     }
 
-    public boolean isButtonVisible() {
-        return mManageButton.getAlpha() != 0.0f;
-    }
-
     @Override
     public ExpandableViewState createExpandableViewState() {
         return new FooterViewState();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
index fa6f23d..3434f67 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
@@ -44,6 +44,7 @@
 import android.content.pm.ShortcutManager;
 import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.RemoteException;
 import android.os.UserHandle;
@@ -181,7 +182,7 @@
             showPriorityOnboarding();
         } else if (mSelectedAction == ACTION_FAVORITE && getPriority() != mSelectedAction) {
             mShadeController.animateCollapsePanels();
-            mPeopleSpaceWidgetManager.requestPinAppWidget(mShortcutInfo);
+            mPeopleSpaceWidgetManager.requestPinAppWidget(mShortcutInfo, new Bundle());
         }
         mGutsContainer.closeControls(v, true);
     };
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PriorityOnboardingDialogController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PriorityOnboardingDialogController.kt
index 9bbe616..270721f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PriorityOnboardingDialogController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PriorityOnboardingDialogController.kt
@@ -28,6 +28,7 @@
 import android.graphics.drawable.ColorDrawable
 import android.graphics.drawable.Drawable
 import android.graphics.drawable.GradientDrawable
+import android.os.Bundle
 import android.text.SpannableStringBuilder
 import android.text.style.BulletSpan
 import android.view.Gravity
@@ -86,7 +87,7 @@
         Prefs.putBoolean(context, Prefs.Key.HAS_SEEN_PRIORITY_ONBOARDING_IN_S, true)
         dialog.dismiss()
         shadeController.animateCollapsePanels()
-        peopleSpaceWidgetManager.requestPinAppWidget(shortcutInfo)
+        peopleSpaceWidgetManager.requestPinAppWidget(shortcutInfo, Bundle())
     }
 
     private fun settings() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
index 8446b4e6..caf4720 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
@@ -60,7 +60,7 @@
     private NotificationShelf mShelf;
     private int mZDistanceBetweenElements;
     private int mBaseZHeight;
-    private int mMaxLayoutHeight;
+    private int mContentHeight;
     private ExpandableView mLastVisibleBackgroundChild;
     private float mCurrentScrollVelocity;
     private int mStatusBarState;
@@ -84,6 +84,75 @@
     private boolean mIsShadeOpening;
     private float mSectionPadding;
 
+    /** Distance of top of notifications panel from top of screen. */
+    private float mStackY = 0;
+
+    /** Height of notifications panel. */
+    private float mStackHeight = 0;
+
+    /** Fraction of shade expansion. */
+    private float mExpansionFraction;
+
+    /** Height of the notifications panel without top padding when expansion completes. */
+    private float mStackEndHeight;
+
+    /**
+     * @return Height of the notifications panel without top padding when expansion completes.
+     */
+    public float getStackEndHeight() {
+        return mStackEndHeight;
+    }
+
+    /**
+     * @param stackEndHeight Height of the notifications panel without top padding
+     *                       when expansion completes.
+     */
+    public void setStackEndHeight(float stackEndHeight) {
+        mStackEndHeight = stackEndHeight;
+    }
+
+    /**
+     * @param stackY Distance of top of notifications panel from top of screen.
+     */
+    public void setStackY(float stackY) {
+        mStackY = stackY;
+    }
+
+    /**
+     * @return Distance of top of notifications panel from top of screen.
+     */
+    public float getStackY() {
+        return mStackY;
+    }
+
+    /**
+     * @param expansionFraction Fraction of shade expansion.
+     */
+    public void setExpansionFraction(float expansionFraction) {
+        mExpansionFraction = expansionFraction;
+    }
+
+    /**
+     * @return Fraction of shade expansion.
+     */
+    public float getExpansionFraction() {
+        return mExpansionFraction;
+    }
+
+    /**
+     * @param stackHeight Height of notifications panel.
+     */
+    public void setStackHeight(float stackHeight) {
+        mStackHeight = stackHeight;
+    }
+
+    /**
+     * @return Height of notifications panel.
+     */
+    public float getStackHeight() {
+        return mStackHeight;
+    }
+
     /** Tracks the state from AlertingNotificationManager#hasNotifications() */
     private boolean mHasAlertEntries;
 
@@ -263,8 +332,8 @@
         if (mDozeAmount == 1.0f && !isPulseExpanding()) {
             return mShelf.getHeight();
         }
-        int height = Math.max(mLayoutMinHeight,
-                Math.min(mLayoutHeight, mMaxLayoutHeight) - mTopPadding);
+        int height = (int) Math.max(mLayoutMinHeight,
+                Math.min(mLayoutHeight, mContentHeight) - mTopPadding);
         if (ignorePulseHeight) {
             return height;
         }
@@ -313,8 +382,12 @@
         return mShelf;
     }
 
-    public void setLayoutMaxHeight(int maxLayoutHeight) {
-        mMaxLayoutHeight = maxLayoutHeight;
+    public void setContentHeight(int contentHeight) {
+        mContentHeight = contentHeight;
+    }
+
+    public float getContentHeight() {
+        return mContentHeight;
     }
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
index fb72ac3..751573a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
@@ -658,6 +658,14 @@
             y = getHeight() - getEmptyBottomMargin();
             mDebugPaint.setColor(Color.GREEN);
             canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
+
+            y = (int) (mAmbientState.getStackY());
+            mDebugPaint.setColor(Color.CYAN);
+            canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
+
+            y = (int) (mAmbientState.getStackY() + mAmbientState.getStackHeight());
+            mDebugPaint.setColor(Color.BLUE);
+            canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
         }
     }
 
@@ -1123,18 +1131,37 @@
                 mTopPaddingNeedsAnimation = true;
                 mNeedsAnimation = true;
             }
+            updateStackPosition();
             requestChildrenUpdate();
             notifyHeightChangeListener(null, animate);
         }
     }
 
     /**
+     * Apply expansion fraction to the y position and height of the notifications panel.
+     */
+    private void updateStackPosition() {
+        // Consider interpolating from an mExpansionStartY for use on lockscreen and AOD
+        mAmbientState.setStackY(
+                MathUtils.lerp(0, mTopPadding, mAmbientState.getExpansionFraction()));
+        final float shadeBottom = getHeight() - getEmptyBottomMargin();
+        mAmbientState.setStackEndHeight(shadeBottom - mTopPadding);
+        mAmbientState.setStackHeight(
+                MathUtils.lerp(0, shadeBottom - mTopPadding, mAmbientState.getExpansionFraction()));
+    }
+
+    /**
      * Update the height of the panel.
      *
      * @param height the expanded height of the panel
      */
     @ShadeViewRefactor(RefactorComponent.COORDINATOR)
     public void setExpandedHeight(float height) {
+        final float shadeBottom = getHeight() - getEmptyBottomMargin();
+        final float expansionFraction = MathUtils.constrain(height / shadeBottom, 0f, 1f);
+        mAmbientState.setExpansionFraction(expansionFraction);
+        updateStackPosition();
+
         mExpandedHeight = height;
         setIsExpanded(height > 0);
         int minExpansionHeight = getMinExpansionHeight();
@@ -2067,7 +2094,8 @@
         mContentHeight = height + Math.max(mIntrinsicPadding, mTopPadding) + mBottomMargin;
         updateScrollability();
         clampScrollPosition();
-        mAmbientState.setLayoutMaxHeight(mContentHeight);
+        updateStackPosition();
+        mAmbientState.setContentHeight(mContentHeight);
     }
 
     /**
@@ -4849,7 +4877,7 @@
             clearNotifications(ROWS_ALL, true /* closeShade */);
         });
         footerView.setManageButtonClickListener(v -> {
-            mNotificationActivityStarter.startHistoryIntent(mFooterView.isHistoryShown());
+            mNotificationActivityStarter.startHistoryIntent(v, mFooterView.isHistoryShown());
         });
         setFooterView(footerView);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
index 7776e69..4fc49ed 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
@@ -788,6 +788,10 @@
         return mView.getTranslationX();
     }
 
+    public int indexOfChild(View view) {
+        return mView.indexOfChild(view);
+    }
+
     public void setOnHeightChangedListener(
             ExpandableView.OnHeightChangedListener listener) {
         mView.setOnHeightChangedListener(listener);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
index bbdbe80..6cacec7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
@@ -20,21 +20,22 @@
 import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.Resources;
-import android.util.Log;
 import android.util.MathUtils;
 import android.view.View;
 import android.view.ViewGroup;
 
 import com.android.systemui.R;
-import com.android.systemui.statusbar.EmptyShadeView;
 import com.android.systemui.statusbar.NotificationShelf;
+import com.android.systemui.statusbar.notification.dagger.SilentHeader;
 import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
 import com.android.systemui.statusbar.notification.row.ExpandableView;
 import com.android.systemui.statusbar.notification.row.FooterView;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * The Algorithm of the {@link com.android.systemui.statusbar.notification.stack
@@ -92,20 +93,16 @@
 
         // First we reset the view states to their default values.
         resetChildViewStates();
-
         initAlgorithmState(mHostView, algorithmState, ambientState);
-
         updatePositionsForState(algorithmState, ambientState);
-
         updateZValuesForState(algorithmState, ambientState);
-
         updateHeadsUpStates(algorithmState, ambientState);
         updatePulsingStates(algorithmState, ambientState);
 
         updateDimmedActivatedHideSensitive(ambientState, algorithmState);
         updateClipping(algorithmState, ambientState);
         updateSpeedBumpState(algorithmState, speedBumpIndex);
-        updateShelfState(ambientState);
+        updateShelfState(algorithmState, ambientState);
         getNotificationChildrenStates(algorithmState, ambientState);
     }
 
@@ -144,10 +141,13 @@
 
     }
 
-    private void updateShelfState(AmbientState ambientState) {
+    private void updateShelfState(
+            StackScrollAlgorithmState algorithmState,
+            AmbientState ambientState) {
+
         NotificationShelf shelf = ambientState.getShelf();
         if (shelf != null) {
-            shelf.updateState(ambientState);
+            shelf.updateState(algorithmState, ambientState);
         }
     }
 
@@ -172,7 +172,8 @@
                     && ((ExpandableNotificationRow) child).isPinned();
             if (mClipNotificationScrollToTop
                     && (!state.inShelf || (isHeadsUp && !firstHeadsUp))
-                    && newYTranslation < clipStart) {
+                    && newYTranslation < clipStart
+                    && !ambientState.isShadeOpening()) {
                 // The previous view is overlapping on top, clip!
                 float overlapAmount = clipStart - newYTranslation;
                 state.clipTopAmount = (int) overlapAmount;
@@ -217,7 +218,6 @@
     private void initAlgorithmState(ViewGroup hostView, StackScrollAlgorithmState state,
             AmbientState ambientState) {
         float bottomOverScroll = ambientState.getOverScrollAmount(false /* onTop */);
-
         int scrollY = ambientState.getScrollY();
 
         // Due to the overScroller, the stackscroller can have negative scroll state. This is
@@ -230,7 +230,6 @@
         state.visibleChildren.clear();
         state.visibleChildren.ensureCapacity(childCount);
         int notGoneIndex = 0;
-        ExpandableView lastView = null;
         for (int i = 0; i < childCount; i++) {
             ExpandableView v = (ExpandableView) hostView.getChildAt(i);
             if (v.getVisibility() != View.GONE) {
@@ -255,12 +254,107 @@
                 }
             }
         }
-        ExpandableNotificationRow expandingNotification = ambientState.getExpandingNotification();
-        state.indexOfExpandingNotification = expandingNotification != null
-                ? expandingNotification.isChildInGroup()
-                ? state.visibleChildren.indexOf(expandingNotification.getNotificationParent())
-                : state.visibleChildren.indexOf(expandingNotification)
-                : -1;
+
+        state.firstViewInShelf = null;
+        // Save y, sectionStart, sectionEnd from when shade is fully expanded.
+        // Consider updating these states in updateContentView instead so that we don't have to
+        // recalculate in every frame.
+        float currentY = -scrollY;
+        int sectionStartIndex = 0;
+        int sectionEndIndex = 0;
+        for (int i = 0; i < state.visibleChildren.size(); i++) {
+            final ExpandableView view = state.visibleChildren.get(i);
+            // Add space between sections.
+            final boolean applyGapHeight = childNeedsGapHeight(
+                    ambientState.getSectionProvider(), i,
+                    view, getPreviousView(i, state));
+            if (applyGapHeight) {
+                currentY += mGapHeight;
+            }
+
+            if (ambientState.getShelf() != null) {
+                // Save index of first view in the shelf
+                final float shelfStart = ambientState.getStackEndHeight()
+                        - ambientState.getShelf().getIntrinsicHeight();
+                if (currentY >= shelfStart
+                        && !(view instanceof FooterView)
+                        && state.firstViewInShelf == null) {
+                    state.firstViewInShelf = view;
+                }
+            }
+
+            // Record y position when fully expanded
+            ExpansionData expansionData = new ExpansionData();
+            expansionData.fullyExpandedY = currentY;
+            state.expansionData.put(view, expansionData);
+
+            if (ambientState.getSectionProvider()
+                    .beginsSection(view, getPreviousView(i, state))) {
+
+                // Save section start/end for views in the section before this new section
+                ExpandableView sectionStartView = state.visibleChildren.get(sectionStartIndex);
+                final float sectionStart =
+                        state.expansionData.get(sectionStartView).fullyExpandedY;
+
+                ExpandableView sectionEndView = state.visibleChildren.get(sectionEndIndex);
+                float sectionEnd = state.expansionData.get(sectionEndView).fullyExpandedY
+                        + sectionEndView.getIntrinsicHeight();
+
+                if (ambientState.getShelf() != null) {
+                    // If we show the shelf, trim section end to shelf start
+                    // This means section end > start for views in the shelf
+                    final float shelfStart = ambientState.getStackEndHeight()
+                            - ambientState.getShelf().getIntrinsicHeight();
+                    if (state.firstViewInShelf != null && sectionEnd > shelfStart) {
+                        sectionEnd = shelfStart;
+                    }
+                }
+
+                // Update section bounds of every view in the previous section
+                // Consider using shared SectionInfo for views in same section to avoid looping back
+                for (int j = sectionStartIndex; j < i; j++) {
+                    ExpandableView sectionView = state.visibleChildren.get(j);
+                    ExpansionData viewExpansionData =
+                            state.expansionData.get(sectionView);
+                    viewExpansionData.sectionStart = sectionStart;
+                    viewExpansionData.sectionEnd = sectionEnd;
+                    state.expansionData.put(sectionView, viewExpansionData);
+                }
+                sectionStartIndex = i;
+
+                if (view instanceof FooterView) {
+                    // Also record section bounds for FooterView (same as its own)
+                    // because it is the last view and we won't get to this point again
+                    // after the loop ends
+                    ExpansionData footerExpansionData = state.expansionData.get(view);
+                    footerExpansionData.sectionStart = expansionData.fullyExpandedY;
+                    footerExpansionData.sectionEnd = expansionData.fullyExpandedY
+                            + view.getIntrinsicHeight();
+                    state.expansionData.put(view, footerExpansionData);
+                }
+            }
+            sectionEndIndex = i;
+            currentY = currentY
+                    + getMaxAllowedChildHeight(view)
+                    + mPaddingBetweenElements;
+        }
+
+        // Which view starts the section of the view right before the shelf?
+        // Save it for later when we clip views in that section to shelf start.
+        state.firstViewInOverflowSection = null;
+        if (state.firstViewInShelf != null) {
+            ExpandableView nextView = null;
+            final int startIndex = state.visibleChildren.indexOf(state.firstViewInShelf);
+            for (int i = startIndex - 1; i >= 0; i--) {
+                ExpandableView view = state.visibleChildren.get(i);
+                if (nextView != null && ambientState.getSectionProvider()
+                        .beginsSection(nextView, view)) {
+                    break;
+                }
+                nextView = view;
+            }
+            state.firstViewInOverflowSection = nextView;
+        }
     }
 
     private int updateNotGoneIndex(StackScrollAlgorithmState state, int notGoneIndex,
@@ -272,6 +366,10 @@
         return notGoneIndex;
     }
 
+    private ExpandableView getPreviousView(int i, StackScrollAlgorithmState algorithmState) {
+        return i > 0 ? algorithmState.visibleChildren.get(i - 1) : null;
+    }
+
     /**
      * Determine the positions for the views. This is the main part of the algorithm.
      *
@@ -288,6 +386,15 @@
         }
     }
 
+    private void setLocation(ExpandableViewState expandableViewState, float currentYPosition,
+            int i) {
+        expandableViewState.location = ExpandableViewState.LOCATION_MAIN_AREA;
+        if (currentYPosition <= 0) {
+            expandableViewState.location = ExpandableViewState.LOCATION_HIDDEN_TOP;
+        }
+    }
+
+    // TODO(b/172289889) polish shade open from HUN
     /**
      * Populates the {@link ExpandableViewState} for a single child.
      *
@@ -306,53 +413,84 @@
             StackScrollAlgorithmState algorithmState,
             AmbientState ambientState,
             float currentYPosition) {
-        ExpandableView child = algorithmState.visibleChildren.get(i);
-        ExpandableView previousChild = i > 0 ? algorithmState.visibleChildren.get(i - 1) : null;
+
+        ExpandableView view = algorithmState.visibleChildren.get(i);
+        ExpandableViewState viewState = view.getViewState();
+        viewState.location = ExpandableViewState.LOCATION_UNKNOWN;
+        viewState.alpha = 1f - ambientState.getHideAmount();
+
+        if (view.mustStayOnScreen() && viewState.yTranslation >= 0) {
+            // Even if we're not scrolled away we're in view and we're also not in the
+            // shelf. We can relax the constraints and let us scroll off the top!
+            float end = viewState.yTranslation + viewState.height + ambientState.getStackY();
+            viewState.headsUpIsVisible = end < ambientState.getMaxHeadsUpTranslation();
+        }
+
+        // TODO(b/172289889) move sectionFraction and showSection to initAlgorithmState
+        // Get fraction of section showing, and later apply it to view height and gaps between views
+        float sectionFraction = 1f;
+        boolean showSection = true;
+
+        if (!ambientState.isOnKeyguard()
+                && !ambientState.isPulseExpanding()
+                && ambientState.isExpansionChanging()) {
+
+            final ExpansionData expansionData = algorithmState.expansionData.get(view);
+            final float sectionHeight = expansionData.sectionEnd - expansionData.sectionStart;
+            sectionFraction = MathUtils.constrain(
+                    (ambientState.getStackHeight() - expansionData.sectionStart) / sectionHeight,
+                    0f, 1f);
+            showSection = expansionData.sectionStart < ambientState.getStackHeight();
+        }
+
+        // Add gap between sections.
         final boolean applyGapHeight =
                 childNeedsGapHeight(
                         ambientState.getSectionProvider(), i,
-                        child, previousChild);
-        ExpandableViewState childViewState = child.getViewState();
-        childViewState.location = ExpandableViewState.LOCATION_UNKNOWN;
-
+                        view, getPreviousView(i, algorithmState));
         if (applyGapHeight) {
-            currentYPosition += mGapHeight;
-        }
-        int childHeight = getMaxAllowedChildHeight(child);
-        childViewState.yTranslation = currentYPosition;
-        childViewState.alpha = 1f - ambientState.getHideAmount();
-
-        boolean isFooterView = child instanceof FooterView;
-        boolean isEmptyShadeView = child instanceof EmptyShadeView;
-
-        childViewState.location = ExpandableViewState.LOCATION_MAIN_AREA;
-        float inset = ambientState.getTopPadding() + ambientState.getStackTranslation()
-                + ambientState.getSectionPadding();
-        if (child.mustStayOnScreen() && childViewState.yTranslation >= 0) {
-            // Even if we're not scrolled away we're in view and we're also not in the
-            // shelf. We can relax the constraints and let us scroll off the top!
-            float end = childViewState.yTranslation + childViewState.height + inset;
-            childViewState.headsUpIsVisible = end < ambientState.getMaxHeadsUpTranslation();
-        }
-        if (isFooterView) {
-            childViewState.yTranslation = Math.min(childViewState.yTranslation,
-                    ambientState.getInnerHeight() - childHeight);
-        } else if (isEmptyShadeView) {
-            childViewState.yTranslation = ambientState.getInnerHeight() - childHeight
-                    + ambientState.getStackTranslation() * 0.25f;
-        } else if (child != ambientState.getTrackedHeadsUpRow()) {
-            clampPositionToShelf(child, childViewState, ambientState);
+            currentYPosition += sectionFraction * mGapHeight;
         }
 
-        currentYPosition = childViewState.yTranslation + childHeight + mPaddingBetweenElements;
-        if (currentYPosition <= 0) {
-            childViewState.location = ExpandableViewState.LOCATION_HIDDEN_TOP;
-        }
-        if (childViewState.location == ExpandableViewState.LOCATION_UNKNOWN) {
-            Log.wtf(LOG_TAG, "Failed to assign location for child " + i);
+        viewState.yTranslation = currentYPosition;
+
+        if (view instanceof SectionHeaderView) {
+            // Add padding before sections for overscroll effect.
+            viewState.yTranslation += ambientState.getSectionPadding();
         }
 
-        childViewState.yTranslation += inset;
+        if (view != ambientState.getTrackedHeadsUpRow()) {
+            if (ambientState.isExpansionChanging()) {
+                viewState.hidden = !showSection;
+                viewState.inShelf = algorithmState.firstViewInShelf != null
+                        && i >= algorithmState.visibleChildren.indexOf(
+                                algorithmState.firstViewInShelf)
+                        && !(view instanceof FooterView);
+            } else if (ambientState.getShelf() != null) {
+                // When pulsing (incoming notification on AOD), innerHeight is 0; clamp all
+                // to shelf start, thereby hiding all notifications (except the first one, which we
+                // later unhide in updatePulsingState)
+                final int shelfStart = ambientState.getInnerHeight()
+                        - ambientState.getShelf().getIntrinsicHeight();
+                if (!(view instanceof FooterView)) {
+                    viewState.yTranslation = Math.min(viewState.yTranslation, shelfStart);
+                }
+                if (viewState.yTranslation >= shelfStart) {
+                    viewState.hidden = !view.isExpandAnimationRunning()
+                            && !view.hasExpandingChild()
+                            && !(view instanceof FooterView);
+                    viewState.inShelf = true;
+                    // Notifications in the shelf cannot be visible HUNs.
+                    viewState.headsUpIsVisible = false;
+                }
+            }
+            viewState.height = (int) MathUtils.lerp(
+                    0, getMaxAllowedChildHeight(view), sectionFraction);
+        }
+
+        currentYPosition += viewState.height + sectionFraction * mPaddingBetweenElements;
+        setLocation(view.getViewState(), currentYPosition, i);
+        viewState.yTranslation += ambientState.getStackY();
         return currentYPosition;
     }
 
@@ -393,10 +531,10 @@
             int visibleIndex,
             View child,
             View previousChild) {
-
-        boolean needsGapHeight = sectionProvider.beginsSection(child, previousChild)
-                && visibleIndex > 0;
-        return needsGapHeight;
+        return sectionProvider.beginsSection(child, previousChild)
+                && visibleIndex > 0
+                && !(previousChild instanceof SilentHeader)
+                && !(child instanceof FooterView);
     }
 
     private void updatePulsingStates(StackScrollAlgorithmState algorithmState,
@@ -514,42 +652,6 @@
         childState.yTranslation = newTranslation;
     }
 
-    /**
-     * Clamp the height of the child down such that its end is at most on the beginning of
-     * the shelf.
-     *
-     * @param childViewState the view state of the child
-     * @param ambientState   the ambient state
-     */
-    private void clampPositionToShelf(ExpandableView child,
-            ExpandableViewState childViewState,
-            AmbientState ambientState) {
-        if (ambientState.getShelf() == null) {
-            return;
-        }
-
-        ExpandableNotificationRow trackedHeadsUpRow = ambientState.getTrackedHeadsUpRow();
-        boolean isBeforeTrackedHeadsUp = trackedHeadsUpRow != null
-                && mHostView.indexOfChild(child) < mHostView.indexOfChild(trackedHeadsUpRow);
-
-        int shelfStart = ambientState.getInnerHeight()
-                - ambientState.getShelf().getIntrinsicHeight();
-        if (ambientState.isAppearing() && !child.isAboveShelf() && !isBeforeTrackedHeadsUp) {
-            // Don't show none heads-up notifications while in appearing phase.
-            childViewState.yTranslation = Math.max(childViewState.yTranslation, shelfStart);
-        }
-        childViewState.yTranslation = Math.min(childViewState.yTranslation, shelfStart);
-        if (child instanceof SectionHeaderView) {
-            // Add padding before sections for overscroll effect.
-            childViewState.yTranslation += ambientState.getSectionPadding();
-        }
-        if (childViewState.yTranslation >= shelfStart) {
-            childViewState.hidden = !child.isExpandAnimationRunning() && !child.hasExpandingChild();
-            childViewState.inShelf = true;
-            childViewState.headsUpIsVisible = false;
-        }
-    }
-
     protected int getMaxAllowedChildHeight(View child) {
         if (child instanceof ExpandableView) {
             ExpandableView expandableView = (ExpandableView) child;
@@ -641,6 +743,35 @@
         this.mIsExpanded = isExpanded;
     }
 
+    /**
+     * Data used to layout views while shade expansion changes.
+     */
+    public class ExpansionData {
+
+        /**
+         * Y position of top of first view in section.
+         */
+        public float sectionStart;
+
+        /**
+         * Y position of bottom of last view in section.
+         */
+        public float sectionEnd;
+
+        /**
+         * Y position of view when shade is fully expanded.
+         * Does not include distance between top notifications panel and top of screen.
+         */
+        public float fullyExpandedY;
+
+        /**
+         * Whether this notification is in the same section as the notification right before the
+         * shelf. Used to determine which notification should be clipped to shelf start while
+         * shade expansion changes.
+         */
+        public boolean inOverflowingSection;
+    }
+
     public class StackScrollAlgorithmState {
 
         /**
@@ -649,15 +780,26 @@
         public int scrollY;
 
         /**
+         * First view in shelf.
+         */
+        public ExpandableView firstViewInShelf;
+
+        /**
+         * First view in section overflowing into shelf while shade expansion changes.
+         */
+        public ExpandableView firstViewInOverflowSection;
+
+        /**
+         * Map of view to ExpansionData used for layout during shade expansion.
+         * Use view instead of index as key, because visibleChildren indices do not match the ones
+         * used in the shelf.
+         */
+        public Map<ExpandableView, ExpansionData> expansionData = new HashMap<>();
+
+        /**
          * The children from the host view which are not gone.
          */
-        public final ArrayList<ExpandableView> visibleChildren = new ArrayList<ExpandableView>();
-
-        private int indexOfExpandingNotification;
-
-        public int getIndexOfExpandingNotification() {
-            return indexOfExpandingNotification;
-        }
+        public final ArrayList<ExpandableView> visibleChildren = new ArrayList<>();
     }
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java
index 40e6b40..48c7b89 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java
@@ -19,10 +19,16 @@
 import static android.app.StatusBarManager.DISABLE_NOTIFICATION_ICONS;
 import static android.app.StatusBarManager.DISABLE_SYSTEM_INFO;
 
+import static com.android.systemui.statusbar.events.SystemStatusAnimationSchedulerKt.ANIMATING_IN;
+import static com.android.systemui.statusbar.events.SystemStatusAnimationSchedulerKt.ANIMATING_OUT;
+import static com.android.systemui.statusbar.events.SystemStatusAnimationSchedulerKt.IDLE;
+
+import android.animation.ValueAnimator;
 import android.annotation.Nullable;
 import android.app.Fragment;
 import android.os.Bundle;
 import android.os.Parcelable;
+import android.util.Log;
 import android.util.SparseArray;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -36,6 +42,9 @@
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.statusbar.CommandQueue;
 import com.android.systemui.statusbar.StatusBarState;
+import com.android.systemui.statusbar.events.PrivacyDotViewController;
+import com.android.systemui.statusbar.events.SystemStatusAnimationCallback;
+import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
 import com.android.systemui.statusbar.phone.StatusBarIconController.DarkIconManager;
 import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController;
 import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallListener;
@@ -44,6 +53,8 @@
 import com.android.systemui.statusbar.policy.NetworkController;
 import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
 
+import org.jetbrains.annotations.NotNull;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -55,7 +66,8 @@
  * updated by the StatusBarIconController and DarkIconManager while it is attached.
  */
 public class CollapsedStatusBarFragment extends Fragment implements CommandQueue.Callbacks,
-        StatusBarStateController.StateListener {
+        StatusBarStateController.StateListener,
+        SystemStatusAnimationCallback {
 
     public static final String TAG = "CollapsedStatusBarFragment";
     private static final String EXTRA_PANEL_STATE = "panel_state";
@@ -78,6 +90,8 @@
     private View mOperatorNameFrame;
     private CommandQueue mCommandQueue;
     private OngoingCallController mOngoingCallController;
+    private final SystemStatusAnimationScheduler mAnimationScheduler;
+    private final PrivacyDotViewController mDotViewController;
 
     private List<String> mBlockedIcons = new ArrayList<>();
 
@@ -103,8 +117,14 @@
     };
 
     @Inject
-    public CollapsedStatusBarFragment(OngoingCallController ongoingCallController) {
+    public CollapsedStatusBarFragment(
+            OngoingCallController ongoingCallController,
+            SystemStatusAnimationScheduler animationScheduler,
+            PrivacyDotViewController dotViewController
+    ) {
         mOngoingCallController = ongoingCallController;
+        mAnimationScheduler = animationScheduler;
+        mDotViewController = dotViewController;
     }
 
     @Override
@@ -127,6 +147,9 @@
     public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
         mStatusBar = (PhoneStatusBarView) view;
+        View contents = mStatusBar.findViewById(R.id.status_bar_contents);
+        contents.addOnLayoutChangeListener(mStatusBarLayoutListener);
+        updateStatusBarLocation(contents.getLeft(), contents.getRight());
         if (savedInstanceState != null && savedInstanceState.containsKey(EXTRA_PANEL_STATE)) {
             mStatusBar.restoreHierarchyState(
                     savedInstanceState.getSparseParcelableArray(EXTRA_PANEL_STATE));
@@ -135,14 +158,17 @@
         mDarkIconManager.setShouldLog(true);
         mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_volume));
         mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_alarm_clock));
+        mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_call_strength));
         mDarkIconManager.setBlockList(mBlockedIcons);
         Dependency.get(StatusBarIconController.class).addIconGroup(mDarkIconManager);
         mSystemIconArea = mStatusBar.findViewById(R.id.system_icon_area);
         mClockView = mStatusBar.findViewById(R.id.clock);
+        mOngoingCallChip = mStatusBar.findViewById(R.id.ongoing_call_chip);
         showSystemIconArea(false);
         showClock(false);
         initEmergencyCryptkeeperText();
         initOperatorName();
+        mAnimationScheduler.addCallback(this);
     }
 
     @Override
@@ -158,7 +184,7 @@
         super.onResume();
         mCommandQueue.addCallback(this);
         mStatusBarStateController.addCallback(this);
-        mOngoingCallController.addCallback(mOngoingCallListener);
+        initOngoingCallChip();
     }
 
     @Override
@@ -197,8 +223,6 @@
         }
         statusBarCenteredIconArea.addView(mCenteredIconArea);
 
-        initOngoingCallChip();
-
         // Default to showing until we know otherwise.
         showNotificationIconArea(false);
     }
@@ -208,6 +232,7 @@
         if (displayId != getContext().getDisplayId()) {
             return;
         }
+        Log.d(TAG, "disable: ");
         state1 = adjustDisableFlags(state1);
         final int old1 = mDisabled1;
         final int diff1 = state1 ^ old1;
@@ -248,7 +273,7 @@
             state |= DISABLE_CLOCK;
         }
 
-        if (mOngoingCallController.getHasOngoingCall()) {
+        if (mOngoingCallController.hasOngoingCall()) {
             state |= DISABLE_NOTIFICATION_ICONS;
         }
 
@@ -292,19 +317,22 @@
         return false;
     }
 
-    public void hideSystemIconArea(boolean animate) {
+    private void hideSystemIconArea(boolean animate) {
         animateHide(mSystemIconArea, animate);
     }
 
-    public void showSystemIconArea(boolean animate) {
-        animateShow(mSystemIconArea, animate);
+    private void showSystemIconArea(boolean animate) {
+        // Only show the system icon area if we are not currently animating
+        if (mAnimationScheduler.getAnimationState() == IDLE) {
+            animateShow(mSystemIconArea, animate);
+        }
     }
 
-    public void hideClock(boolean animate) {
+    private void hideClock(boolean animate) {
         animateHiddenState(mClockView, clockHiddenMode(), animate);
     }
 
-    public void showClock(boolean animate) {
+    private void showClock(boolean animate) {
         animateShow(mClockView, animate);
     }
 
@@ -420,17 +448,65 @@
     }
 
     private void initOngoingCallChip() {
-        mOngoingCallChip = mStatusBar.findViewById(R.id.ongoing_call_chip);
+        mOngoingCallController.addCallback(mOngoingCallListener);
         mOngoingCallController.setChipView(mOngoingCallChip);
     }
 
     @Override
-    public void onStateChanged(int newState) {
-
-    }
+    public void onStateChanged(int newState) { }
 
     @Override
     public void onDozingChanged(boolean isDozing) {
         disable(getContext().getDisplayId(), mDisabled1, mDisabled1, false /* animate */);
     }
+
+    @Override
+    public void onSystemChromeAnimationStart() {
+        if (mAnimationScheduler.getAnimationState() == ANIMATING_OUT
+                && !isSystemIconAreaDisabled()) {
+            mSystemIconArea.setVisibility(View.VISIBLE);
+            mSystemIconArea.setAlpha(0f);
+        }
+    }
+
+    @Override
+    public void onSystemChromeAnimationEnd() {
+        // Make sure the system icons are out of the way
+        if (mAnimationScheduler.getAnimationState() == ANIMATING_IN) {
+            mSystemIconArea.setVisibility(View.INVISIBLE);
+            mSystemIconArea.setAlpha(0f);
+        } else {
+            if (isSystemIconAreaDisabled()) {
+                // don't unhide
+                return;
+            }
+
+            mSystemIconArea.setAlpha(1f);
+            mSystemIconArea.setVisibility(View.VISIBLE);
+        }
+    }
+
+    @Override
+    public void onSystemChromeAnimationUpdate(@NotNull ValueAnimator animator) {
+        mSystemIconArea.setAlpha((float) animator.getAnimatedValue());
+    }
+
+    private boolean isSystemIconAreaDisabled() {
+        return (mDisabled1 & DISABLE_SYSTEM_INFO) != 0 || (mDisabled2 & DISABLE2_SYSTEM_ICONS) != 0;
+    }
+
+    private void updateStatusBarLocation(int left, int right) {
+        int leftMargin = left - mStatusBar.getLeft();
+        int rightMargin = mStatusBar.getRight() - right;
+
+        mDotViewController.setStatusBarMargins(leftMargin, rightMargin);
+    }
+
+    // Listen for view end changes of PhoneStatusBarView and publish that to the privacy dot
+    private View.OnLayoutChangeListener mStatusBarLayoutListener =
+            (view, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
+                if (left != oldLeft || right != oldRight) {
+                    updateStatusBarLocation(left, right);
+                }
+            };
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
index c3325b1..8cef23f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
@@ -68,6 +68,7 @@
 import android.widget.TextView;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.widget.LockPatternUtils;
@@ -154,6 +155,7 @@
     private StatusBar mStatusBar;
     private KeyguardAffordanceHelper mAffordanceHelper;
     private FalsingManager mFalsingManager;
+    @Nullable private Executor mUiExecutor;
     private boolean mUserSetupComplete;
     private boolean mPrewarmBound;
     private Messenger mPrewarmMessenger;
@@ -181,6 +183,7 @@
     private String mLeftButtonStr;
     private boolean mDozing;
     private int mIndicationBottomMargin;
+    private int mIndicationPadding;
     private float mDarkAmount;
     private int mBurnInXOffset;
     private int mBurnInYOffset;
@@ -274,6 +277,10 @@
         mAccessibilityController = Dependency.get(AccessibilityController.class);
         mActivityIntentHelper = new ActivityIntentHelper(getContext());
         updateLeftAffordance();
+
+        mIndicationPadding = getResources().getDimensionPixelSize(
+                R.dimen.keyguard_indication_area_padding);
+        updateWalletVisibility();
     }
 
     @Override
@@ -356,6 +363,10 @@
         lp.width = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_width);
         lp.height = getResources().getDimensionPixelSize(R.dimen.keyguard_affordance_height);
         mWalletButton.setLayoutParams(lp);
+
+        mIndicationPadding = getResources().getDimensionPixelSize(
+                R.dimen.keyguard_indication_area_padding);
+        updateWalletVisibility();
     }
 
     private void updateRightAffordanceIcon() {
@@ -429,11 +440,13 @@
     }
 
     private void updateWalletVisibility() {
-        if (mDozing || !mWalletEnabled) {
+        if (mDozing || !mWalletEnabled || !mHasCard) {
             mWalletButton.setVisibility(GONE);
+            mIndicationArea.setPadding(0, 0, 0, 0);
         } else {
             mWalletButton.setVisibility(VISIBLE);
             mWalletButton.setOnClickListener(this::onWalletClick);
+            mIndicationArea.setPadding(mIndicationPadding, 0, mIndicationPadding, 0);
         }
     }
 
@@ -659,6 +672,13 @@
         updateCameraVisibility();
     }
 
+    @Override
+    public void onKeyguardShowingChanged() {
+        if (mKeyguardStateController.isShowing()) {
+            queryWalletCards();
+        }
+    }
+
     private void inflateCameraPreview() {
         View previewBefore = mCameraPreview;
         boolean visibleBefore = false;
@@ -897,18 +917,20 @@
     public void initWallet(QuickAccessWalletClient client, Executor uiExecutor, boolean enabled) {
         mQuickAccessWalletClient = client;
         mWalletEnabled = enabled && client.isWalletFeatureAvailable();
+        mUiExecutor = uiExecutor;
+        queryWalletCards();
 
-        if (mWalletEnabled) {
-            queryWalletCards(uiExecutor);
-        }
         updateWalletVisibility();
     }
 
-    private void queryWalletCards(Executor uiExecutor) {
+    private void queryWalletCards() {
+        if (!mWalletEnabled || mUiExecutor == null) {
+            return;
+        }
         GetWalletCardsRequest request =
                 new GetWalletCardsRequest(1 /* cardWidth */, 1 /* cardHeight */,
                         1 /* iconSizePx */, 2 /* maxCards */);
-        mQuickAccessWalletClient.getWalletCards(uiExecutor, request, mCardRetriever);
+        mQuickAccessWalletClient.getWalletCards(mUiExecutor, request, mCardRetriever);
     }
 
     private void onWalletClick(View v) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
index 0694737..0c4bec2c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
@@ -18,7 +18,10 @@
 
 import static com.android.systemui.DejankUtils.whitelistIpcs;
 import static com.android.systemui.ScreenDecorations.DisplayCutoutView.boundsFromDirection;
+import static com.android.systemui.statusbar.events.SystemStatusAnimationSchedulerKt.ANIMATING_IN;
+import static com.android.systemui.statusbar.events.SystemStatusAnimationSchedulerKt.ANIMATING_OUT;
 
+import android.animation.ValueAnimator;
 import android.annotation.ColorInt;
 import android.content.Context;
 import android.content.res.Configuration;
@@ -47,6 +50,8 @@
 import com.android.systemui.R;
 import com.android.systemui.animation.Interpolators;
 import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
+import com.android.systemui.statusbar.events.SystemStatusAnimationCallback;
+import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
 import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager;
 import com.android.systemui.statusbar.policy.BatteryController;
 import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
@@ -64,8 +69,11 @@
 /**
  * The header group on Keyguard.
  */
-public class KeyguardStatusBarView extends RelativeLayout
-        implements BatteryStateChangeCallback, OnUserInfoChangedListener, ConfigurationListener {
+public class KeyguardStatusBarView extends RelativeLayout implements
+        BatteryStateChangeCallback,
+        OnUserInfoChangedListener,
+        ConfigurationListener,
+        SystemStatusAnimationCallback {
 
     private static final int LAYOUT_NONE = 0;
     private static final int LAYOUT_CUTOUT = 1;
@@ -96,6 +104,8 @@
     private ViewGroup mStatusIconArea;
     private int mLayoutState = LAYOUT_NONE;
 
+    private SystemStatusAnimationScheduler mAnimationScheduler;
+
     /**
      * Draw this many pixels into the left/right side of the cutout to optimally use the space
      */
@@ -125,6 +135,7 @@
         loadDimens();
         loadBlockList();
         mBatteryController = Dependency.get(BatteryController.class);
+        mAnimationScheduler = Dependency.get(SystemStatusAnimationScheduler.class);
     }
 
     @Override
@@ -189,6 +200,7 @@
         Resources r = getResources();
         mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_volume));
         mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_alarm_clock));
+        mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_call_strength));
     }
 
     private void updateVisibilities() {
@@ -349,6 +361,7 @@
         mIconManager = new TintedIconManager(findViewById(R.id.statusIcons));
         mIconManager.setBlockList(mBlockedIcons);
         Dependency.get(StatusBarIconController.class).addIconGroup(mIconManager);
+        mAnimationScheduler.addCallback(this);
         onThemeChanged();
     }
 
@@ -358,6 +371,7 @@
         Dependency.get(UserInfoController.class).removeCallback(this);
         Dependency.get(StatusBarIconController.class).removeIconGroup(mIconManager);
         Dependency.get(ConfigurationController.class).removeCallback(this);
+        mAnimationScheduler.removeCallback(this);
     }
 
     @Override
@@ -509,4 +523,30 @@
             mBatteryView.dump(fd, pw, args);
         }
     }
+
+    /** SystemStatusAnimationCallback */
+    @Override
+    public void onSystemChromeAnimationStart() {
+        if (mAnimationScheduler.getAnimationState() == ANIMATING_OUT) {
+            mSystemIconsContainer.setVisibility(View.VISIBLE);
+            mSystemIconsContainer.setAlpha(0f);
+        }
+    }
+
+    @Override
+    public void onSystemChromeAnimationEnd() {
+        // Make sure the system icons are out of the way
+        if (mAnimationScheduler.getAnimationState() == ANIMATING_IN) {
+            mSystemIconsContainer.setVisibility(View.INVISIBLE);
+            mSystemIconsContainer.setAlpha(0f);
+        } else {
+            mSystemIconsContainer.setAlpha(1f);
+            mSystemIconsContainer.setVisibility(View.VISIBLE);
+        }
+    }
+
+    @Override
+    public void onSystemChromeAnimationUpdate(ValueAnimator anim) {
+        mSystemIconsContainer.setAlpha((float) anim.getAnimatedValue());
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
index 1c8bda7..c4d8840 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
@@ -2018,7 +2018,7 @@
                 right = getView().getRight();
             } else {
                 top = Math.min(qsPanelBottomY, mSplitShadeNotificationsTopPadding);
-                bottom = getExpandedHeight() - mSplitShadeNotificationsTopPadding;
+                bottom = mNotificationStackScrollLayoutController.getHeight();
                 left = mNotificationStackScrollLayoutController.getLeft();
                 right = mNotificationStackScrollLayoutController.getRight();
             }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerImpl.java
index 5aecb72..0c8122c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerImpl.java
@@ -666,7 +666,9 @@
         pw.println(TAG + ":");
         pw.println("  mKeyguardDisplayMode=" + mKeyguardDisplayMode);
         pw.println(mCurrentState);
-        mNotificationShadeView.getViewRootImpl().dump("  ", pw);
+        if (mNotificationShadeView != null && mNotificationShadeView.getViewRootImpl() != null) {
+            mNotificationShadeView.getViewRootImpl().dump("  ", pw);
+        }
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index d386ebd..0e99d3a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -208,6 +208,8 @@
 import com.android.systemui.statusbar.SysuiStatusBarStateController;
 import com.android.systemui.statusbar.VibratorHelper;
 import com.android.systemui.statusbar.charging.WiredChargingRippleController;
+import com.android.systemui.statusbar.events.PrivacyDotViewController;
+import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
 import com.android.systemui.statusbar.notification.DynamicPrivacyController;
 import com.android.systemui.statusbar.notification.NotificationActivityStarter;
 import com.android.systemui.statusbar.notification.NotificationLaunchAnimatorControllerProvider;
@@ -426,6 +428,8 @@
     private final DemoModeController mDemoModeController;
     private NotificationsController mNotificationsController;
     private final OngoingCallController mOngoingCallController;
+    private final SystemStatusAnimationScheduler mAnimationScheduler;
+    private final PrivacyDotViewController mDotViewController;
 
     // expanded notifications
     // the sliding/resizing panel within the notification window
@@ -794,6 +798,8 @@
             BrightnessSlider.Factory brightnessSliderFactory,
             WiredChargingRippleController chargingRippleAnimationController,
             OngoingCallController ongoingCallController,
+            SystemStatusAnimationScheduler animationScheduler,
+            PrivacyDotViewController dotViewController,
             TunerService tunerService,
             FeatureFlags featureFlags) {
         super(context);
@@ -875,6 +881,8 @@
         mBrightnessSliderFactory = brightnessSliderFactory;
         mChargingRippleAnimationController = chargingRippleAnimationController;
         mOngoingCallController = ongoingCallController;
+        mAnimationScheduler = animationScheduler;
+        mDotViewController = dotViewController;
         mFeatureFlags = featureFlags;
 
         tunerService.addTunable(
@@ -1171,7 +1179,10 @@
                 }).getFragmentManager()
                 .beginTransaction()
                 .replace(R.id.status_bar_container,
-                        new CollapsedStatusBarFragment(mOngoingCallController),
+                        new CollapsedStatusBarFragment(
+                                mOngoingCallController,
+                                mAnimationScheduler,
+                                mDotViewController),
                         CollapsedStatusBarFragment.TAG)
                 .commit();
 
@@ -1788,7 +1799,15 @@
 
     @Override
     public void startActivity(Intent intent, boolean dismissShade) {
-        startActivityDismissingKeyguard(intent, false, dismissShade);
+        startActivityDismissingKeyguard(intent, false /* onlyProvisioned */, dismissShade);
+    }
+
+    @Override
+    public void startActivity(Intent intent, boolean dismissShade,
+            ActivityLaunchAnimator.Controller animationController) {
+        startActivityDismissingKeyguard(intent, false, dismissShade,
+                false /* disallowEnterPictureInPictureWhileLaunching */, null /* callback */,
+                0 /* flags */, animationController);
     }
 
     @Override
@@ -4603,9 +4622,6 @@
         } else {
             options = ActivityOptions.makeBasic();
         }
-        // Anything launched from the notification shade should always go into the secondary
-        // split-screen windowing mode.
-        options.setLaunchWindowingMode(WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY);
         return options;
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
index 89e7016..93b83d3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
@@ -74,6 +74,10 @@
     /**
      * Display the no calling & SMS icons.
      */
+    void setCallStrengthIcons(String slot, List<CallIndicatorIconState> states);
+    /**
+     * Display the no calling & SMS icons.
+     */
     void setNoCallingIcons(String slot, List<CallIndicatorIconState> states);
     public void setIconVisibility(String slot, boolean b);
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
index 068ded3..75900a2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
@@ -224,6 +224,33 @@
     }
 
     /**
+     * Accept a list of CallIndicatorIconStates, and show the call strength icons.
+     * @param slot StatusBar slot for the call strength icons
+     * @param states All of the no Calling & SMS icon states
+     */
+    @Override
+    public void setCallStrengthIcons(String slot, List<CallIndicatorIconState> states) {
+        Slot callStrengthSlot = getSlot(slot);
+        int callStrengthSlotIndex = getSlotIndex(slot);
+        Collections.reverse(states);
+        for (CallIndicatorIconState state : states) {
+            if (!state.isNoCalling) {
+                StatusBarIconHolder holder = callStrengthSlot.getHolderForTag(state.subId);
+                if (holder == null) {
+                    holder = StatusBarIconHolder.fromCallIndicatorState(mContext, state);
+                    setIcon(callStrengthSlotIndex, holder);
+                } else {
+                    holder.setIcon(new StatusBarIcon(UserHandle.SYSTEM, mContext.getPackageName(),
+                            Icon.createWithResource(mContext, state.callStrengthResId), 0, 0,
+                            state.callStrengthDescription));
+                    setIcon(callStrengthSlotIndex, holder);
+                }
+            }
+            setIconVisibility(slot, !state.isNoCalling, state.subId);
+        }
+    }
+
+    /**
      * Accept a list of CallIndicatorIconStates, and show the no calling icons.
      * @param slot StatusBar slot for the no calling icons
      * @param states All of the no Calling & SMS icon states
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java
index 4ca71f0..af342dd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java
@@ -86,9 +86,11 @@
             Context context,
             CallIndicatorIconState state) {
         StatusBarIconHolder holder = new StatusBarIconHolder();
+        int resId = state.isNoCalling ? state.noCallingResId : state.callStrengthResId;
+        String contentDescription = state.isNoCalling
+                ? state.noCallingDescription : state.callStrengthDescription;
         holder.mIcon = new StatusBarIcon(UserHandle.SYSTEM, context.getPackageName(),
-                Icon.createWithResource(context, state.noCallingResId),
-                0, 0, state.noCallingDescription);
+                Icon.createWithResource(context, resId), 0, 0, contentDescription);
         holder.mTag = state.subId;
         return holder;
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
index 3404528..4356b52 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
@@ -39,6 +39,7 @@
 import android.service.notification.StatusBarNotification;
 import android.text.TextUtils;
 import android.util.EventLog;
+import android.view.View;
 
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.statusbar.NotificationVisibility;
@@ -462,7 +463,7 @@
         mActivityStarter.dismissKeyguardThenExecute(() -> {
             AsyncTask.execute(() -> {
                 ActivityLaunchAnimator.Controller animationController = null;
-                if (!mStatusBar.isOccluded() && mStatusBar.areLaunchAnimationsEnabled()) {
+                if (mStatusBar.areLaunchAnimationsEnabled()) {
                     animationController = new StatusBarLaunchAnimatorController(
                             mNotificationAnimationProvider.getAnimatorController(row), mStatusBar,
                             true /* isActivityIntent */);
@@ -495,7 +496,7 @@
     }
 
     @Override
-    public void startHistoryIntent(boolean showHistory) {
+    public void startHistoryIntent(View view, boolean showHistory) {
         mActivityStarter.dismissKeyguardThenExecute(() -> {
             AsyncTask.execute(() -> {
                 Intent intent = showHistory ? new Intent(
@@ -506,11 +507,27 @@
                 if (showHistory) {
                     tsb.addNextIntent(intent);
                 }
-                tsb.startActivities(null, UserHandle.CURRENT);
 
-                // Putting it back on the main thread, since we're touching views
-                mMainThreadHandler.post(() -> mCommandQueue.animateCollapsePanels(
-                        CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL, true /* force */));
+                ActivityLaunchAnimator.Controller animationController = null;
+                if (mStatusBar.areLaunchAnimationsEnabled()) {
+                    animationController = new StatusBarLaunchAnimatorController(
+                            ActivityLaunchAnimator.Controller.fromView(view), mStatusBar,
+                            true /* isActivityIntent */);
+                }
+
+                mActivityLaunchAnimator.startIntentWithAnimation(animationController,
+                        (adapter) -> tsb.startActivities(
+                                getActivityOptions(mStatusBar.getDisplayId(), adapter),
+                                UserHandle.CURRENT));
+
+                // Note that other cases when we should still collapse (like activity already on
+                // top) is handled by the StatusBarLaunchAnimatorController.
+                boolean shouldCollapse = animationController == null;
+                if (shouldCollapse) {
+                    // Putting it back on the main thread, since we're touching views
+                    mMainThreadHandler.post(() -> mCommandQueue.animateCollapsePanels(
+                            CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL, true /* force */));
+                }
             });
             return true;
         }, null, false /* afterKeyguardGone */);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
index b57d876..3445826 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
@@ -22,6 +22,7 @@
 import android.util.ArraySet;
 import android.util.Log;
 
+import com.android.settingslib.mobile.TelephonyIcons;
 import com.android.systemui.Dependency;
 import com.android.systemui.R;
 import com.android.systemui.statusbar.policy.NetworkController;
@@ -49,6 +50,7 @@
     private final String mSlotEthernet;
     private final String mSlotVpn;
     private final String mSlotNoCalling;
+    private final String mSlotCallStrength;
 
     private final Context mContext;
     private final StatusBarIconController mIconController;
@@ -82,6 +84,8 @@
         mSlotEthernet = mContext.getString(com.android.internal.R.string.status_bar_ethernet);
         mSlotVpn      = mContext.getString(com.android.internal.R.string.status_bar_vpn);
         mSlotNoCalling = mContext.getString(com.android.internal.R.string.status_bar_no_calling);
+        mSlotCallStrength =
+                mContext.getString(com.android.internal.R.string.status_bar_call_strength);
         mActivityEnabled = mContext.getResources().getBoolean(R.bool.config_showActivity);
 
         mIconController = iconController;
@@ -207,9 +211,14 @@
         if (statusIcon.icon == R.drawable.ic_qs_no_calling_sms) {
             state.isNoCalling = statusIcon.visible;
             state.noCallingDescription = statusIcon.contentDescription;
-            mIconController.setNoCallingIcons(mSlotNoCalling,
-                    CallIndicatorIconState.copyStates(mCallIndicatorStates));
+        } else {
+            state.callStrengthResId = statusIcon.icon;
+            state.callStrengthDescription = statusIcon.contentDescription;
         }
+        mIconController.setCallStrengthIcons(mSlotCallStrength,
+                CallIndicatorIconState.copyStates(mCallIndicatorStates));
+        mIconController.setNoCallingIcons(mSlotNoCalling,
+                CallIndicatorIconState.copyStates(mCallIndicatorStates));
     }
 
     @Override
@@ -296,6 +305,7 @@
 
         mIconController.removeAllIconsForSlot(mSlotMobile);
         mIconController.removeAllIconsForSlot(mSlotNoCalling);
+        mIconController.removeAllIconsForSlot(mSlotCallStrength);
         mMobileStates.clear();
         List<CallIndicatorIconState> noCallingStates = new ArrayList<CallIndicatorIconState>();
         noCallingStates.addAll(mCallIndicatorStates);
@@ -410,12 +420,15 @@
     public static class CallIndicatorIconState {
         public boolean isNoCalling;
         public int noCallingResId;
+        public int callStrengthResId;
         public int subId;
         public String noCallingDescription;
+        public String callStrengthDescription;
 
         private CallIndicatorIconState(int subId) {
             this.subId = subId;
             this.noCallingResId = R.drawable.ic_qs_no_calling_sms;
+            this.callStrengthResId = TelephonyIcons.MOBILE_CALL_STRENGTH_ICONS[0];
         }
 
         @Override
@@ -427,21 +440,26 @@
             CallIndicatorIconState that = (CallIndicatorIconState) o;
             return  isNoCalling == that.isNoCalling
                     && noCallingResId == that.noCallingResId
+                    && callStrengthResId == that.callStrengthResId
                     && subId == that.subId
-                    && noCallingDescription == that.noCallingDescription;
+                    && noCallingDescription == that.noCallingDescription
+                    && callStrengthDescription == that.callStrengthDescription;
 
         }
 
         @Override
         public int hashCode() {
-            return Objects.hash(isNoCalling, noCallingResId, subId, noCallingDescription);
+            return Objects.hash(isNoCalling, noCallingResId,
+                    callStrengthResId, subId, noCallingDescription, callStrengthDescription);
         }
 
         private void copyTo(CallIndicatorIconState other) {
             other.isNoCalling = isNoCalling;
             other.noCallingResId = noCallingResId;
+            other.callStrengthResId = callStrengthResId;
             other.subId = subId;
             other.noCallingDescription = noCallingDescription;
+            other.callStrengthDescription = callStrengthDescription;
         }
 
         private static List<CallIndicatorIconState> copyStates(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java
index 2c2779e..24e6db8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java
@@ -61,6 +61,8 @@
 import com.android.systemui.statusbar.SysuiStatusBarStateController;
 import com.android.systemui.statusbar.VibratorHelper;
 import com.android.systemui.statusbar.charging.WiredChargingRippleController;
+import com.android.systemui.statusbar.events.PrivacyDotViewController;
+import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
 import com.android.systemui.statusbar.notification.DynamicPrivacyController;
 import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
 import com.android.systemui.statusbar.notification.collection.legacy.VisualStabilityManager;
@@ -209,6 +211,8 @@
             BrightnessSlider.Factory brightnessSliderFactory,
             WiredChargingRippleController chargingRippleAnimationController,
             OngoingCallController ongoingCallController,
+            SystemStatusAnimationScheduler animationScheduler,
+            PrivacyDotViewController dotViewController,
             TunerService tunerService,
             FeatureFlags featureFlags) {
         return new StatusBar(
@@ -293,6 +297,8 @@
                 brightnessSliderFactory,
                 chargingRippleAnimationController,
                 ongoingCallController,
+                animationScheduler,
+                dotViewController,
                 tunerService,
                 featureFlags);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt
index b55db6f..96473c2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt
@@ -18,11 +18,14 @@
 
 import android.app.Notification
 import android.app.Notification.CallStyle.CALL_TYPE_ONGOING
+import android.content.Intent
 import android.util.Log
 import android.view.ViewGroup
 import android.widget.Chronometer
 import com.android.systemui.R
+import com.android.systemui.animation.ActivityLaunchAnimator
 import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.plugins.ActivityStarter
 import com.android.systemui.statusbar.FeatureFlags
 import com.android.systemui.statusbar.notification.collection.NotificationEntry
 import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection
@@ -38,11 +41,12 @@
 class OngoingCallController @Inject constructor(
     private val notifCollection: CommonNotifCollection,
     private val featureFlags: FeatureFlags,
-    private val systemClock: SystemClock
+    private val systemClock: SystemClock,
+    private val activityStarter: ActivityStarter
 ) : CallbackController<OngoingCallListener> {
 
-    var hasOngoingCall = false
-        private set
+    /** Null if there's no ongoing call. */
+    private var ongoingCallInfo: OngoingCallInfo? = null
     private var chipView: ViewGroup? = null
 
     private val mListeners: MutableList<OngoingCallListener> = mutableListOf()
@@ -50,25 +54,16 @@
     private val notifListener = object : NotifCollectionListener {
         override fun onEntryUpdated(entry: NotificationEntry) {
             if (isOngoingCallNotification(entry)) {
-                val timeView = chipView?.findViewById<Chronometer>(R.id.ongoing_call_chip_time)
-                if (timeView != null) {
-                    hasOngoingCall = true
-                    val callStartTime = entry.sbn.notification.`when`
-                    timeView.base = callStartTime -
-                            System.currentTimeMillis() +
-                            systemClock.elapsedRealtime()
-                    timeView.start()
-                    mListeners.forEach { l -> l.onOngoingCallStarted(animate = true) }
-                } else if (DEBUG) {
-                    Log.w(TAG, "Ongoing call chip view could not be found; " +
-                            "Not displaying chip in status bar")
-                }
+                ongoingCallInfo = OngoingCallInfo(
+                entry.sbn.notification.`when`,
+                        entry.sbn.notification.contentIntent.intent)
+                updateChip()
             }
         }
 
         override fun onEntryRemoved(entry: NotificationEntry, reason: Int) {
             if (isOngoingCallNotification(entry)) {
-                hasOngoingCall = false
+                ongoingCallInfo = null
                 mListeners.forEach { l -> l.onOngoingCallEnded(animate = true) }
             }
         }
@@ -80,10 +75,23 @@
         }
     }
 
-    fun setChipView(chipView: ViewGroup?) {
+    /**
+     * Sets the chip view that will contain ongoing call information.
+     *
+     * Should only be called from [CollapedStatusBarFragment].
+     */
+    fun setChipView(chipView: ViewGroup) {
         this.chipView = chipView
+        if (hasOngoingCall()) {
+            updateChip()
+        }
     }
 
+    /**
+     * Returns true if there's an active ongoing call that can be displayed in a status bar chip.
+     */
+    fun hasOngoingCall(): Boolean = ongoingCallInfo != null
+
     override fun addCallback(listener: OngoingCallListener) {
         synchronized(mListeners) {
             if (!mListeners.contains(listener)) {
@@ -97,6 +105,43 @@
             mListeners.remove(listener)
         }
     }
+
+    private fun updateChip() {
+        val currentOngoingCallInfo = ongoingCallInfo ?: return
+
+        val currentChipView = chipView
+        val timeView =
+                currentChipView?.findViewById<Chronometer>(R.id.ongoing_call_chip_time)
+
+        if (currentChipView != null && timeView != null) {
+            timeView.base = currentOngoingCallInfo.callStartTime -
+                    System.currentTimeMillis() +
+                    systemClock.elapsedRealtime()
+            timeView.start()
+
+            currentChipView.setOnClickListener {
+                activityStarter.postStartActivityDismissingKeyguard(
+                        currentOngoingCallInfo.intent, 0,
+                        ActivityLaunchAnimator.Controller.fromView(it))
+            }
+
+            mListeners.forEach { l -> l.onOngoingCallStarted(animate = true) }
+        } else {
+            // If we failed to update the chip, don't store the ongoing call info. Then
+            // [hasOngoingCall] will return false and we fall back to typical notification handling.
+            ongoingCallInfo = null
+
+            if (DEBUG) {
+                Log.w(TAG, "Ongoing call chip view could not be found; " +
+                        "Not displaying chip in status bar")
+            }
+        }
+    }
+
+    private class OngoingCallInfo(
+        val callStartTime: Long,
+        val intent: Intent
+    )
 }
 
 private fun isOngoingCallNotification(entry: NotificationEntry): Boolean {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
index f2a0e37..a3fd92f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
@@ -25,21 +25,18 @@
 import android.app.Notification;
 import android.app.PendingIntent;
 import android.app.RemoteInput;
-import android.content.ClipData;
-import android.content.ClipDescription;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ShortcutManager;
 import android.content.res.ColorStateList;
 import android.content.res.TypedArray;
+import android.graphics.BlendMode;
 import android.graphics.Color;
 import android.graphics.PorterDuff;
 import android.graphics.Rect;
 import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
 import android.graphics.drawable.GradientDrawable;
-import android.graphics.drawable.LayerDrawable;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.ServiceManager;
@@ -47,7 +44,9 @@
 import android.os.UserHandle;
 import android.text.Editable;
 import android.text.SpannedString;
+import android.text.TextUtils;
 import android.text.TextWatcher;
+import android.util.ArraySet;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.util.Pair;
@@ -68,6 +67,7 @@
 import android.view.inputmethod.InputMethodManager;
 import android.widget.EditText;
 import android.widget.ImageButton;
+import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.ProgressBar;
 import android.widget.TextView;
@@ -81,7 +81,6 @@
 import com.android.internal.util.ContrastColorUtil;
 import com.android.systemui.Dependency;
 import com.android.systemui.R;
-import com.android.systemui.animation.Interpolators;
 import com.android.systemui.statusbar.NotificationRemoteInputManager;
 import com.android.systemui.statusbar.RemoteInputController;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
@@ -89,6 +88,7 @@
 import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper;
 import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
 import com.android.systemui.statusbar.phone.LightBarController;
+import com.android.wm.shell.animation.Interpolators;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -114,6 +114,7 @@
     private final List<OnFocusChangeListener> mEditTextFocusChangeListeners = new ArrayList<>();
     private RemoteEditText mEditText;
     private ImageButton mSendButton;
+    private GradientDrawable mContentBackground;
     private ProgressBar mProgressBar;
     private PendingIntent mPendingIntent;
     private RemoteInput[] mRemoteInputs;
@@ -130,6 +131,7 @@
     private int mRevealCx;
     private int mRevealCy;
     private int mRevealR;
+    private ContentInfo mAttachment;
 
     private boolean mColorized;
     private int mTint;
@@ -138,6 +140,9 @@
     private NotificationViewWrapper mWrapper;
     private Consumer<Boolean> mOnVisibilityChangedListener;
     private NotificationRemoteInputManager.BouncerChecker mBouncerChecker;
+    private LinearLayout mContentView;
+    private ImageView mDelete;
+    private ImageView mDeleteBg;
 
     public RemoteInputView(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -149,7 +154,7 @@
                 ServiceManager.getService(Context.STATUS_BAR_SERVICE));
         TypedArray ta = getContext().getTheme().obtainStyledAttributes(new int[]{
                 com.android.internal.R.attr.colorAccent,
-                com.android.internal.R.attr.colorBackgroundFloating,
+                com.android.internal.R.attr.colorSurface,
         });
         mTint = ta.getColor(0, 0);
         ta.recycle();
@@ -165,14 +170,20 @@
         mColorized = colorized;
         mTint = backgroundColor;
         final int editBgColor;
+        final int alternateBgColor;
+        final int alternateTextColor;
         final int accentColor;
         final int textColor;
         final int hintTextColor;
+        final int stroke = mContext.getResources().getDimensionPixelSize(
+                R.dimen.remote_input_view_text_stroke);
         if (colorized) {
             final boolean dark = !ContrastColorUtil.isColorLight(backgroundColor);
             final int foregroundColor = dark ? Color.WHITE : Color.BLACK;
             editBgColor = backgroundColor;
             accentColor = foregroundColor;
+            alternateBgColor = foregroundColor;
+            alternateTextColor = backgroundColor;
             textColor = foregroundColor;
             hintTextColor = ColorUtils.setAlphaComponent(foregroundColor, 0x99);
         } else {
@@ -180,10 +191,14 @@
             hintTextColor = mContext.getColor(R.color.remote_input_hint);
             try (TypedArray ta = getContext().getTheme().obtainStyledAttributes(new int[]{
                     com.android.internal.R.attr.colorAccent,
-                    com.android.internal.R.attr.colorBackgroundFloating,
+                    com.android.internal.R.attr.colorSurface,
+                    com.android.internal.R.attr.colorSurfaceVariant,
+                    com.android.internal.R.attr.textColorPrimary
             })) {
                 accentColor = ta.getColor(0, textColor);
                 editBgColor = ta.getColor(1, backgroundColor);
+                alternateBgColor = ta.getColor(2, textColor);
+                alternateTextColor = ta.getColor(3, backgroundColor);
             }
         }
         mEditText.setAllColors(backgroundColor, editBgColor,
@@ -195,11 +210,15 @@
                 accentColor,
                 accentColor & 0x4DFFFFFF // %30 opacity
         });
+        mContentBackground.setColor(editBgColor);
+        mContentBackground.setStroke(stroke, accentTint);
+        mDelete.setImageTintList(ColorStateList.valueOf(alternateTextColor));
+        mDeleteBg.setImageTintList(ColorStateList.valueOf(alternateBgColor));
         mSendButton.setImageTintList(accentTint);
         mProgressBar.setProgressTintList(accentTint);
         mProgressBar.setIndeterminateTintList(accentTint);
         mProgressBar.setSecondaryProgressTintList(accentTint);
-        setBackgroundColor(backgroundColor);
+        setBackgroundColor(editBgColor);
     }
 
     @Override
@@ -209,8 +228,16 @@
         mProgressBar = findViewById(R.id.remote_input_progress);
         mSendButton = findViewById(R.id.remote_input_send);
         mSendButton.setOnClickListener(this);
-
-        mEditText = (RemoteEditText) getChildAt(0);
+        mContentBackground = (GradientDrawable)
+                mContext.getDrawable(R.drawable.remote_input_view_text_bg).mutate();
+        mDelete = findViewById(R.id.remote_input_delete);
+        mDeleteBg = findViewById(R.id.remote_input_delete_bg);
+        mDeleteBg.setImageTintBlendMode(BlendMode.SRC_IN);
+        mDelete.setImageTintBlendMode(BlendMode.SRC_IN);
+        mDelete.setOnClickListener(v -> setAttachment(null));
+        mContentView = findViewById(R.id.remote_input_content);
+        mContentView.setBackground(mContentBackground);
+        mEditText = findViewById(R.id.remote_input_text);
         mEditText.setInnerFocusable(false);
         mEditText.setWindowInsetsAnimationCallback(
                 new WindowInsetsAnimation.Callback(DISPATCH_MODE_STOP) {
@@ -220,7 +247,6 @@
                     @NonNull List<WindowInsetsAnimation> runningAnimations) {
                 return insets;
             }
-
             @Override
             public void onEnd(@NonNull WindowInsetsAnimation animation) {
                 super.onEnd(animation);
@@ -235,7 +261,43 @@
         });
     }
 
-    protected Intent prepareRemoteInputFromText() {
+    private void setAttachment(ContentInfo item) {
+        if (mAttachment != null) {
+            // We need to release permissions when sending the attachment to the target
+            // app or if it is deleted by the user. When sending to the target app, we
+            // can safely release permissions as soon as the call to
+            // `mController.grantInlineReplyUriPermission` is made (ie, after the grant
+            // to the target app has been created).
+            mAttachment.releasePermissions();
+        }
+        mAttachment = item;
+        View attachment = findViewById(R.id.remote_input_content_container);
+        ImageView iconView = findViewById(R.id.remote_input_attachment_image);
+        iconView.setImageDrawable(null);
+        if (item == null) {
+            attachment.setVisibility(GONE);
+            return;
+        }
+        iconView.setImageURI(item.getClip().getItemAt(0).getUri());
+        if (iconView.getDrawable() == null) {
+            attachment.setVisibility(GONE);
+        } else {
+            attachment.setVisibility(VISIBLE);
+        }
+    }
+
+    /**
+     * Reply intent
+     * @return returns intent with granted URI permissions that should be used immediately
+     */
+    private Intent prepareRemoteInput() {
+        if (mAttachment == null) return prepareRemoteInputFromText();
+        return prepareRemoteInputFromData(
+                mAttachment.getClip().getDescription().getMimeType(0),
+                mAttachment.getClip().getItemAt(0).getUri());
+    }
+
+    private Intent prepareRemoteInputFromText() {
         Bundle results = new Bundle();
         results.putString(mRemoteInput.getResultKey(), mEditText.getText().toString());
         Intent fillInIntent = new Intent().addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
@@ -255,17 +317,40 @@
         return fillInIntent;
     }
 
-    protected Intent prepareRemoteInputFromData(String contentType, Uri data) {
+    private Intent prepareRemoteInputFromData(String contentType, Uri data) {
         HashMap<String, Uri> results = new HashMap<>();
         results.put(contentType, data);
+        // grant for the target app.
         mController.grantInlineReplyUriPermission(mEntry.getSbn(), data);
         Intent fillInIntent = new Intent().addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
         RemoteInput.addDataResultToIntent(mRemoteInput, fillInIntent, results);
 
-        mEntry.remoteInputText = mContext.getString(R.string.remote_input_image_insertion_text);
+        Bundle bundle = new Bundle();
+        bundle.putString(mRemoteInput.getResultKey(), mEditText.getText().toString());
+        RemoteInput.addResultsToIntent(mRemoteInputs, fillInIntent,
+                bundle);
+
+        CharSequence attachmentText = mAttachment.getClip().getDescription().getLabel();
+
+        CharSequence attachmentLabel = TextUtils.isEmpty(attachmentText)
+                ? mContext.getString(R.string.remote_input_image_insertion_text)
+                : attachmentText;
+        // add content description to reply text for context
+        CharSequence fullText = TextUtils.isEmpty(mEditText.getText())
+                ? attachmentLabel
+                : "\"" + attachmentLabel + "\" " + mEditText.getText();
+
+        mEntry.remoteInputText = fullText;
         mEntry.remoteInputMimeType = contentType;
         mEntry.remoteInputUri = data;
 
+        // mirror prepareRemoteInputFromText for text input
+        if (mEntry.editedSuggestionInfo == null) {
+            RemoteInput.setResultsSource(fillInIntent, RemoteInput.SOURCE_FREE_FORM_INPUT);
+        } else if (mAttachment == null) {
+            RemoteInput.setResultsSource(fillInIntent, RemoteInput.SOURCE_CHOICE);
+        }
+
         return fillInIntent;
     }
 
@@ -303,6 +388,7 @@
             MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_FAIL,
                     mEntry.getSbn().getPackageName());
         }
+        setAttachment(null);
     }
 
     public CharSequence getText() {
@@ -327,7 +413,7 @@
     @Override
     public void onClick(View v) {
         if (v == mSendButton) {
-            sendRemoteInput(prepareRemoteInputFromText());
+            sendRemoteInput(prepareRemoteInput());
         }
     }
 
@@ -682,8 +768,8 @@
                     && event.getAction() == KeyEvent.ACTION_DOWN;
 
             if (isSoftImeEvent || isKeyboardEnterKey) {
-                if (mEditText.length() > 0) {
-                    sendRemoteInput(prepareRemoteInputFromText());
+                if (mEditText.length() > 0 || mAttachment != null) {
+                    sendRemoteInput(prepareRemoteInput());
                 }
                 // Consume action to prevent IME from closing.
                 return true;
@@ -716,21 +802,18 @@
         private final OnReceiveContentListener mOnReceiveContentListener = this::onReceiveContent;
 
         private RemoteInputView mRemoteInputView;
-        private GradientDrawable mTextBackground;
-        private ColorDrawable mBackgroundColor;
-        private LayerDrawable mBackground;
+        private ColorDrawable mBackground;
         boolean mShowImeOnInputConnection;
         private LightBarController mLightBarController;
         private InputMethodManager mInputMethodManager;
+        private ArraySet<String> mSupportedMimes = new ArraySet<>();
         UserHandle mUser;
 
         public RemoteEditText(Context context, AttributeSet attrs) {
             super(context, attrs);
             mLightBarController = Dependency.get(LightBarController.class);
-            mTextBackground = (GradientDrawable)
-                    context.getDrawable(R.drawable.remote_input_view_text_bg).mutate();
-            mBackgroundColor = new ColorDrawable();
-            mBackground = new LayerDrawable(new Drawable[] {mBackgroundColor, mTextBackground});
+
+            mBackground = new ColorDrawable();
         }
 
         void setSupportedMimeTypes(@Nullable Collection<String> mimeTypes) {
@@ -741,6 +824,8 @@
                 listener = mOnReceiveContentListener;
             }
             setOnReceiveContentListener(types, listener);
+            mSupportedMimes.clear();
+            mSupportedMimes.addAll(mimeTypes);
         }
 
         private void hideIme() {
@@ -899,36 +984,15 @@
             ContentInfo uriItems = split.first;
             ContentInfo remainingItems = split.second;
             if (uriItems != null) {
-                ClipData clip = uriItems.getClip();
-                ClipDescription description = clip.getDescription();
-                if (clip.getItemCount() > 1
-                        || description.getMimeTypeCount() < 1
-                        || remainingItems != null) {
-                    // Direct-reply in notifications currently only supports only one uri item
-                    // at a time and requires the MIME type to be set.
-                    Log.w(TAG, "Invalid payload: " + payload);
-                    return payload;
-                }
-                Uri contentUri = clip.getItemAt(0).getUri();
-                String mimeType = description.getMimeType(0);
-                Intent dataIntent =
-                        mRemoteInputView.prepareRemoteInputFromData(mimeType, contentUri);
-                // We can release the uri permissions granted to us as soon as we've created the
-                // grant for the target app in the call above.
-                payload.releasePermissions();
-                mRemoteInputView.sendRemoteInput(dataIntent);
+                mRemoteInputView.setAttachment(uriItems);
             }
             return remainingItems;
         }
 
         protected void setAllColors(int backgroundColor, int editBackgroundColor,
                 int accentColor, int textColor, int hintTextColor) {
-            setBackgroundColor(backgroundColor);
-            mBackgroundColor.setColor(backgroundColor);
-            mTextBackground.setColor(editBackgroundColor);
-            int stroke = getContext().getResources()
-                    .getDimensionPixelSize(R.dimen.remote_input_view_text_stroke);
-            mTextBackground.setStroke(stroke, accentColor);
+            setBackgroundColor(editBackgroundColor);
+            mBackground.setColor(editBackgroundColor);
             setTextColor(textColor);
             setHintTextColor(hintTextColor);
             getTextCursorDrawable().setColorFilter(accentColor, PorterDuff.Mode.SRC_IN);
diff --git a/packages/SystemUI/src/com/android/systemui/util/Utils.java b/packages/SystemUI/src/com/android/systemui/util/Utils.java
index fd3641c..f3a95f7 100644
--- a/packages/SystemUI/src/com/android/systemui/util/Utils.java
+++ b/packages/SystemUI/src/com/android/systemui/util/Utils.java
@@ -21,8 +21,10 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
+import android.content.res.TypedArray;
 import android.provider.Settings;
 import android.text.TextUtils;
+import android.view.ContextThemeWrapper;
 import android.view.View;
 
 import com.android.systemui.R;
@@ -177,4 +179,23 @@
                 && resources.getBoolean(R.bool.config_use_split_notification_shade);
     }
 
+    /**
+     * Returns the color provided at the specified {@param attrIndex} in {@param a} if it exists,
+     * otherwise, returns the color from the private attribute {@param privAttrId}.
+     */
+    public static int getPrivateAttrColorIfUnset(ContextThemeWrapper ctw, TypedArray a,
+            int attrIndex, int defColor, int privAttrId) {
+        // If the index is specified, use that value
+        if (a.hasValue(attrIndex)) {
+            return a.getColor(attrIndex, defColor);
+        }
+
+        // Otherwise fallback to the value of the private attribute
+        int[] customAttrs = { privAttrId };
+        a = ctw.obtainStyledAttributes(customAttrs);
+        int color = a.getColor(0, defColor);
+        a.recycle();
+        return color;
+    }
+
 }
diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java
index d195062..d1a2c8a 100644
--- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java
+++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java
@@ -222,6 +222,11 @@
         if (mIsDismissed) {
             return;
         }
+        int cardWidthPx = mCardCarousel.getCardWidthPx();
+        int cardHeightPx = mCardCarousel.getCardHeightPx();
+        if (cardWidthPx == 0 || cardHeightPx == 0) {
+            return;
+        }
         if (!mHasRegisteredListener) {
             // Listener is registered even when device is locked. Should only be registered once.
             mWalletClient.addWalletServiceEventListener(this);
@@ -231,8 +236,6 @@
         mWalletView.show();
         mWalletView.hideErrorMessage();
         int iconSizePx = mContext.getResources().getDimensionPixelSize(R.dimen.wallet_icon_size);
-        int cardWidthPx = mCardCarousel.getCardWidthPx();
-        int cardHeightPx = mCardCarousel.getCardHeightPx();
         GetWalletCardsRequest request =
                 new GetWalletCardsRequest(cardWidthPx, cardHeightPx, iconSizePx, MAX_CARDS);
         mWalletClient.getWalletCards(mExecutor, request, this);
diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java
index 74b79d5..81bb819 100644
--- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java
+++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java
@@ -268,6 +268,7 @@
             public void onStop() {
                 mSysUiMainExecutor.execute(() -> {
                     if (oneHanded.isOneHandedEnabled()) {
+                        // Log metrics for 3-button navigation mode.
                         oneHanded.stopOneHanded(
                                 OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_GESTURE_OUT);
                     } else if (oneHanded.isSwipeToNotificationEnabled()) {
diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java
index 3fc3d89..f96d344 100644
--- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java
+++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java
@@ -381,8 +381,8 @@
     @WMSingleton
     @Provides
     static StartingWindowController provideStartingWindowController(Context context,
-            @ShellSplashscreenThread ShellExecutor executor, TransactionPool pool) {
-        return new StartingWindowController(context, executor, pool);
+            @ShellSplashscreenThread ShellExecutor splashScreenExecutor, TransactionPool pool) {
+        return new StartingWindowController(context, splashScreenExecutor, pool);
     }
 
     //
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
index a870915..4d4acd9 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
@@ -16,16 +16,15 @@
 
 package com.android.keyguard;
 
+import static org.junit.Assert.assertEquals;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.content.ContentResolver;
 import android.content.Context;
 import android.content.res.Resources;
 import android.test.suitebuilder.annotation.SmallTest;
@@ -38,13 +37,13 @@
 import com.android.internal.colorextraction.ColorExtractor;
 import com.android.keyguard.clock.ClockManager;
 import com.android.systemui.R;
+import com.android.systemui.SystemUIFactory;
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.broadcast.BroadcastDispatcher;
 import com.android.systemui.colorextraction.SysuiColorExtractor;
 import com.android.systemui.plugins.BcSmartspaceDataPlugin;
 import com.android.systemui.plugins.ClockPlugin;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
-import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.StatusBarState;
 import com.android.systemui.statusbar.phone.NotificationIconAreaController;
@@ -87,12 +86,8 @@
     @Mock
     NotificationIconAreaController mNotificationIconAreaController;
     @Mock
-    ContentResolver mContentResolver;
-    @Mock
     BroadcastDispatcher mBroadcastDispatcher;
     @Mock
-    private PluginManager mPluginManager;
-    @Mock
     private FeatureFlags mFeatureFlags;
     @Mock
     private Executor mExecutor;
@@ -106,6 +101,12 @@
     BatteryController mBatteryController;
     @Mock
     ConfigurationController mConfigurationController;
+    @Mock
+    BcSmartspaceDataPlugin mSmartspaceDataProvider;
+    @Mock
+    SmartspaceView mSmartspaceView;
+    @Mock
+    SystemUIFactory mSystemUIFactory;
 
     private KeyguardClockSwitchController mController;
     private View mStatusArea;
@@ -129,27 +130,28 @@
         when(mFeatureFlags.isSmartspaceEnabled()).thenReturn(true);
         when(mView.isAttachedToWindow()).thenReturn(true);
         when(mResources.getString(anyInt())).thenReturn("h:mm");
+        when(mSystemUIFactory.getSmartspaceDataProvider()).thenReturn(mSmartspaceDataProvider);
         mController = new KeyguardClockSwitchController(
                 mView,
-                mResources,
                 mStatusBarStateController,
                 mColorExtractor,
                 mClockManager,
                 mKeyguardSliceViewController,
                 mNotificationIconAreaController,
-                mContentResolver,
                 mBroadcastDispatcher,
-                mPluginManager,
                 mFeatureFlags,
                 mExecutor,
                 mBatteryController,
-                mConfigurationController);
+                mConfigurationController,
+                mSystemUIFactory
+        );
 
         when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE);
         when(mColorExtractor.getColors(anyInt())).thenReturn(mGradientColors);
 
-        mStatusArea = mock(View.class);
+        mStatusArea = new View(getContext());
         when(mView.findViewById(R.id.keyguard_status_area)).thenReturn(mStatusArea);
+        when(mSmartspaceDataProvider.getView(any())).thenReturn(mSmartspaceView);
 
     }
 
@@ -210,43 +212,37 @@
     }
 
     @Test
-    public void testSmartspacePluginConnectedRemovesKeyguardStatusArea() {
+    public void testSmartspaceEnabledRemovesKeyguardStatusArea() {
+        when(mFeatureFlags.isSmartspaceEnabled()).thenReturn(true);
         mController.init();
 
-        BcSmartspaceDataPlugin plugin = mock(BcSmartspaceDataPlugin.class);
-        TestView view = mock(TestView.class);
-        when(plugin.getView(any())).thenReturn(view);
-
-        mController.mPluginListener.onPluginConnected(plugin, mContext);
-        verify(mStatusArea).setVisibility(View.GONE);
+        assertEquals(View.GONE, mStatusArea.getVisibility());
     }
 
     @Test
-    public void testSmartspacePluginDisconnectedShowsKeyguardStatusArea() {
+    public void testSmartspaceEnabledNoDataProviderShowsKeyguardStatusArea() {
+        when(mFeatureFlags.isSmartspaceEnabled()).thenReturn(true);
+        when(mSystemUIFactory.getSmartspaceDataProvider()).thenReturn(null);
         mController.init();
 
-        BcSmartspaceDataPlugin plugin = mock(BcSmartspaceDataPlugin.class);
-        TestView view = mock(TestView.class);
-        when(plugin.getView(any())).thenReturn(view);
+        assertEquals(View.VISIBLE, mStatusArea.getVisibility());
+    }
 
-        mController.mPluginListener.onPluginConnected(plugin, mContext);
-        mController.mPluginListener.onPluginDisconnected(plugin);
-        verify(mStatusArea).setVisibility(View.VISIBLE);
+    @Test
+    public void testSmartspaceDisabledShowsKeyguardStatusArea() {
+        when(mFeatureFlags.isSmartspaceEnabled()).thenReturn(false);
+        mController.init();
+
+        assertEquals(View.VISIBLE, mStatusArea.getVisibility());
     }
 
     @Test
     public void testThemeChangeNotifiesSmartspace() {
         mController.init();
+        verify(mSmartspaceView).setPrimaryTextColor(anyInt());
 
-        BcSmartspaceDataPlugin plugin = mock(BcSmartspaceDataPlugin.class);
-        TestView view = mock(TestView.class);
-        when(plugin.getView(any())).thenReturn(view);
-
-        mController.mPluginListener.onPluginConnected(plugin, mContext);
-
-        reset(view);
         mController.getConfigurationListener().onThemeChanged();
-        verify(view).setPrimaryTextColor(anyInt());
+        verify(mSmartspaceView, times(2)).setPrimaryTextColor(anyInt());
     }
 
     private void verifyAttachment(VerificationMode times) {
@@ -257,8 +253,9 @@
         verify(mView, times).updateColors(mGradientColors);
     }
 
-    private static class TestView extends View implements BcSmartspaceDataPlugin.SmartspaceView {
-        TestView(Context context, AttributeSet attrs) {
+    private static class SmartspaceView extends View
+            implements BcSmartspaceDataPlugin.SmartspaceView {
+        SmartspaceView(Context context, AttributeSet attrs) {
             super(context, attrs);
         }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java
index 59262cf..3252750 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java
@@ -63,6 +63,7 @@
 import com.android.systemui.R.dimen;
 import com.android.systemui.broadcast.BroadcastDispatcher;
 import com.android.systemui.settings.UserTracker;
+import com.android.systemui.statusbar.events.PrivacyDotViewController;
 import com.android.systemui.tuner.TunerService;
 import com.android.systemui.util.settings.FakeSettings;
 import com.android.systemui.util.settings.SecureSettings;
@@ -94,6 +95,8 @@
     private BroadcastDispatcher mBroadcastDispatcher;
     @Mock
     private UserTracker mUserTracker;
+    @Mock
+    private PrivacyDotViewController mDotViewController;
 
     @Before
     public void setup() {
@@ -116,7 +119,7 @@
         mContext.addMockSystemService(DisplayManager.class, mDisplayManager);
 
         mScreenDecorations = spy(new ScreenDecorations(mContext, mMainHandler, mSecureSettings,
-                mBroadcastDispatcher, mTunerService, mUserTracker) {
+                mBroadcastDispatcher, mTunerService, mUserTracker, mDotViewController) {
             @Override
             public void start() {
                 super.start();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java
index 3f0831c..78c6717 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java
@@ -233,9 +233,9 @@
                 TEST_UID, TEST_PACKAGE_NAME, TEST_ATTRIBUTION_NAME,
                 AppOpsManager.OP_FLAG_SELF, AppOpsManager.MODE_ALLOWED);
         assertEquals(2,
-                mController.getActiveAppOpsForUser(UserHandle.getUserId(TEST_UID)).size());
-        assertEquals(1,
-                mController.getActiveAppOpsForUser(UserHandle.getUserId(TEST_UID_OTHER)).size());
+                mController.getActiveAppOpsForUser(UserHandle.getUserId(TEST_UID), false).size());
+        assertEquals(1, mController.getActiveAppOpsForUser(UserHandle.getUserId(TEST_UID_OTHER),
+                false).size());
     }
 
     @Test
@@ -245,11 +245,11 @@
         mController.onOpActiveChanged(AppOpsManager.OP_RECORD_AUDIO,
                 TEST_UID_NON_USER_SENSITIVE, mExemptedRolePkgName, true);
         assertEquals(0, mController.getActiveAppOpsForUser(
-                UserHandle.getUserId(TEST_UID_NON_USER_SENSITIVE)).size());
+                UserHandle.getUserId(TEST_UID_NON_USER_SENSITIVE), false).size());
         mController.onOpActiveChanged(AppOpsManager.OP_RECORD_AUDIO,
                 TEST_UID_NON_USER_SENSITIVE, SYSTEM_PKG, true);
         assertEquals(0, mController.getActiveAppOpsForUser(
-                UserHandle.getUserId(TEST_UID_NON_USER_SENSITIVE)).size());
+                UserHandle.getUserId(TEST_UID_NON_USER_SENSITIVE), false).size());
     }
 
     @Test
@@ -441,7 +441,19 @@
     }
 
     @Test
-    public void testOnlyRecordAudioPaused() {
+    public void testPausedPhoneCallMicrophoneFilteredOut() {
+        mController.addCallback(new int[]{AppOpsManager.OP_PHONE_CALL_MICROPHONE}, mCallback);
+        mTestableLooper.processAllMessages();
+
+        mController.onOpActiveChanged(
+                AppOpsManager.OP_PHONE_CALL_MICROPHONE, TEST_UID, TEST_PACKAGE_NAME, true);
+        mTestableLooper.processAllMessages();
+
+        assertTrue(mController.getActiveAppOps().isEmpty());
+    }
+
+    @Test
+    public void testOnlyRecordAudioPhoneCallMicrophonePaused() {
         mController.addCallback(new int[]{
                 AppOpsManager.OP_RECORD_AUDIO,
                 AppOpsManager.OP_CAMERA
@@ -532,6 +544,40 @@
     }
 
     @Test
+    public void testPhoneCallMicrophoneFilteredWhenMicDisabled() {
+        mController.addCallback(
+                new int[]{AppOpsManager.OP_PHONE_CALL_MICROPHONE, AppOpsManager.OP_CAMERA},
+                mCallback);
+        mTestableLooper.processAllMessages();
+        mController.onOpActiveChanged(
+                AppOpsManager.OP_PHONE_CALL_MICROPHONE, TEST_UID_OTHER, TEST_PACKAGE_NAME, true);
+        mTestableLooper.processAllMessages();
+        List<AppOpItem> list = mController.getActiveAppOps();
+        assertEquals(1, list.size());
+        assertEquals(AppOpsManager.OP_PHONE_CALL_MICROPHONE, list.get(0).getCode());
+        assertFalse(list.get(0).isDisabled());
+
+        // Add a camera op, and disable the microphone. The camera op should be the only op returned
+        mController.onSensorBlockedChanged(MICROPHONE, true);
+        mController.onOpActiveChanged(
+                AppOpsManager.OP_CAMERA, TEST_UID_OTHER, TEST_PACKAGE_NAME, true);
+        mTestableLooper.processAllMessages();
+        list = mController.getActiveAppOps();
+        assertEquals(1, list.size());
+        assertEquals(AppOpsManager.OP_CAMERA, list.get(0).getCode());
+
+
+        // Re enable the microphone, and verify the op returns
+        mController.onSensorBlockedChanged(MICROPHONE, false);
+        mTestableLooper.processAllMessages();
+
+        list = mController.getActiveAppOps();
+        assertEquals(2, list.size());
+        int micIdx = list.get(0).getCode() == AppOpsManager.OP_CAMERA ? 1 : 0;
+        assertEquals(AppOpsManager.OP_PHONE_CALL_MICROPHONE, list.get(micIdx).getCode());
+    }
+
+    @Test
     public void testCameraFilteredWhenCameraDisabled() {
         mController.addCallback(new int[]{AppOpsManager.OP_RECORD_AUDIO, AppOpsManager.OP_CAMERA},
                 mCallback);
@@ -563,6 +609,39 @@
         assertEquals(AppOpsManager.OP_CAMERA, list.get(cameraIdx).getCode());
     }
 
+    @Test
+    public void testPhoneCallCameraFilteredWhenCameraDisabled() {
+        mController.addCallback(
+                new int[]{AppOpsManager.OP_RECORD_AUDIO, AppOpsManager.OP_PHONE_CALL_CAMERA},
+                mCallback);
+        mTestableLooper.processAllMessages();
+        mController.onOpActiveChanged(
+                AppOpsManager.OP_PHONE_CALL_CAMERA, TEST_UID_OTHER, TEST_PACKAGE_NAME, true);
+        mTestableLooper.processAllMessages();
+        List<AppOpItem> list = mController.getActiveAppOps();
+        assertEquals(1, list.size());
+        assertEquals(AppOpsManager.OP_PHONE_CALL_CAMERA, list.get(0).getCode());
+        assertFalse(list.get(0).isDisabled());
+
+        // Add an audio op, and disable the camera. The audio op should be the only op returned
+        mController.onSensorBlockedChanged(CAMERA, true);
+        mController.onOpActiveChanged(
+                AppOpsManager.OP_RECORD_AUDIO, TEST_UID_OTHER, TEST_PACKAGE_NAME, true);
+        mTestableLooper.processAllMessages();
+        list = mController.getActiveAppOps();
+        assertEquals(1, list.size());
+        assertEquals(AppOpsManager.OP_RECORD_AUDIO, list.get(0).getCode());
+
+        // Re enable the camera, and verify the op returns
+        mController.onSensorBlockedChanged(CAMERA, false);
+        mTestableLooper.processAllMessages();
+
+        list = mController.getActiveAppOps();
+        assertEquals(2, list.size());
+        int cameraIdx = list.get(0).getCode() == AppOpsManager.OP_PHONE_CALL_CAMERA ? 0 : 1;
+        assertEquals(AppOpsManager.OP_PHONE_CALL_CAMERA, list.get(cameraIdx).getCode());
+    }
+
     private class TestHandler extends AppOpsControllerImpl.H {
         TestHandler(Looper looper) {
             mController.super(looper);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/DistanceClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/DistanceClassifierTest.java
index c912419..8e00d10 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/DistanceClassifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/DistanceClassifierTest.java
@@ -17,6 +17,7 @@
 package com.android.systemui.classifier;
 
 import static com.android.systemui.classifier.Classifier.BRIGHTNESS_SLIDER;
+import static com.android.systemui.classifier.Classifier.QS_SWIPE;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -103,4 +104,11 @@
         assertThat(mClassifier.classifyGesture(BRIGHTNESS_SLIDER, 0.5, 1).isFalse())
                 .isFalse();
     }
+
+    @Test
+    public void testPass_QsSwipeAlwaysPasses() {
+        mClassifier.onTouchEvent(appendDownEvent(1, 1));
+        assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 1).isFalse())
+                .isFalse();
+    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/TypeClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/TypeClassifierTest.java
index 32537b4..1d61e29 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/TypeClassifierTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/TypeClassifierTest.java
@@ -22,6 +22,7 @@
 import static com.android.systemui.classifier.Classifier.NOTIFICATION_DISMISS;
 import static com.android.systemui.classifier.Classifier.NOTIFICATION_DRAG_DOWN;
 import static com.android.systemui.classifier.Classifier.PULSE_EXPAND;
+import static com.android.systemui.classifier.Classifier.QS_SWIPE;
 import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS;
 import static com.android.systemui.classifier.Classifier.RIGHT_AFFORDANCE;
 import static com.android.systemui.classifier.Classifier.UNLOCK;
@@ -320,4 +321,46 @@
         when(mDataProvider.isRight()).thenReturn(true);
         assertThat(mClassifier.classifyGesture(BRIGHTNESS_SLIDER, 0.5, 0).isFalse()).isTrue();
     }
+
+    @Test
+    public void testPass_QsSwipe() {
+        when(mDataProvider.isVertical()).thenReturn(false);
+
+        when(mDataProvider.isUp()).thenReturn(false);  // up and right should cause no effect.
+        when(mDataProvider.isRight()).thenReturn(false);
+        assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse();
+
+        when(mDataProvider.isUp()).thenReturn(true);
+        when(mDataProvider.isRight()).thenReturn(false);
+        assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse();
+
+        when(mDataProvider.isUp()).thenReturn(false);
+        when(mDataProvider.isRight()).thenReturn(true);
+        assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse();
+
+        when(mDataProvider.isUp()).thenReturn(true);
+        when(mDataProvider.isRight()).thenReturn(true);
+        assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse();
+    }
+
+    @Test
+    public void testFalse_QsSwipe() {
+        when(mDataProvider.isVertical()).thenReturn(true);
+
+        when(mDataProvider.isUp()).thenReturn(false);  // up and right should cause no effect.
+        when(mDataProvider.isRight()).thenReturn(false);
+        assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue();
+
+        when(mDataProvider.isUp()).thenReturn(true);
+        when(mDataProvider.isRight()).thenReturn(false);
+        assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue();
+
+        when(mDataProvider.isUp()).thenReturn(false);
+        when(mDataProvider.isRight()).thenReturn(true);
+        assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue();
+
+        when(mDataProvider.isUp()).thenReturn(true);
+        when(mDataProvider.isRight()).thenReturn(true);
+        assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue();
+    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java
index 42e88b0..63ce98a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java
@@ -22,6 +22,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 
+import android.app.IWallpaperManager;
 import android.os.PowerManager;
 import android.testing.AndroidTestingRunner;
 
@@ -43,9 +44,12 @@
     private WakefulnessLifecycle mWakefulness;
     private WakefulnessLifecycle.Observer mWakefulnessObserver;
 
+    private IWallpaperManager mWallpaperManager;
+
     @Before
     public void setUp() throws Exception {
-        mWakefulness = new WakefulnessLifecycle();
+        mWallpaperManager = mock(IWallpaperManager.class);
+        mWakefulness = new WakefulnessLifecycle(mContext, mWallpaperManager);
         mWakefulnessObserver = mock(WakefulnessLifecycle.Observer.class);
         mWakefulness.addObserver(mWakefulnessObserver);
     }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/NotificationHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/NotificationHelperTest.java
new file mode 100644
index 0000000..7cddc3f
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/NotificationHelperTest.java
@@ -0,0 +1,205 @@
+/*
+ * 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.systemui.people;
+
+import static android.app.Notification.CATEGORY_MISSED_CALL;
+
+import static com.android.systemui.people.NotificationHelper.getHighestPriorityNotification;
+import static com.android.systemui.people.NotificationHelper.getMessagingStyleMessages;
+import static com.android.systemui.people.NotificationHelper.isMissedCall;
+import static com.android.systemui.people.NotificationHelper.isMissedCallOrHasContent;
+import static com.android.systemui.people.PeopleSpaceUtils.PACKAGE_NAME;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.app.Notification;
+import android.app.Person;
+import android.content.pm.ShortcutInfo;
+import android.net.Uri;
+import android.os.UserHandle;
+import android.service.notification.StatusBarNotification;
+import android.testing.AndroidTestingRunner;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.internal.util.ArrayUtils;
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.statusbar.SbnBuilder;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+import java.util.Set;
+
+@RunWith(AndroidTestingRunner.class)
+@SmallTest
+public class NotificationHelperTest extends SysuiTestCase {
+    private static final String SHORTCUT_ID_1 = "101";
+    private static final String SHORTCUT_ID_2 = "102";
+
+    private static final String NOTIFICATION_TEXT_1 = "notification_text_1";
+    private static final String NOTIFICATION_TEXT_2 = "notification_text_2";
+    private static final String NOTIFICATION_TEXT_3 = "notification_text_3";
+    private static final Uri URI = Uri.parse("fake_uri");
+    private static final Person PERSON = new Person.Builder()
+            .setName("name")
+            .setKey("abc")
+            .setUri(URI.toString())
+            .setBot(false)
+            .build();
+
+    private final Notification mNotification1 = new Notification.Builder(mContext, "test")
+            .setContentTitle("TEST_TITLE")
+            .setContentText("TEST_TEXT")
+            .setShortcutId(SHORTCUT_ID_1)
+            .setStyle(new Notification.MessagingStyle(PERSON)
+                    .addMessage(new Notification.MessagingStyle.Message(
+                            NOTIFICATION_TEXT_1, 0, PERSON))
+                    .addMessage(new Notification.MessagingStyle.Message(
+                            NOTIFICATION_TEXT_2, 20, PERSON))
+                    .addMessage(new Notification.MessagingStyle.Message(
+                            NOTIFICATION_TEXT_3, 10, PERSON))
+            )
+            .build();
+
+    private final Notification mNotification2 = new Notification.Builder(mContext, "test")
+            .setContentTitle("TEST_TITLE")
+            .setContentText("TEST_TEXT")
+            .setShortcutId(SHORTCUT_ID_1)
+            .setStyle(new Notification.MessagingStyle(PERSON)
+                    .addMessage(new Notification.MessagingStyle.Message(
+                            NOTIFICATION_TEXT_1, 0, PERSON))
+            )
+            .build();
+
+    private final Notification mNoContentNotification = new Notification.Builder(mContext, "test")
+            .setContentTitle("TEST_TITLE")
+            .setContentText("TEST_TEXT")
+            .setShortcutId(SHORTCUT_ID_1)
+            .setStyle(new Notification.MessagingStyle(PERSON))
+            .build();
+
+    private final Notification mMissedCallNotification = new Notification.Builder(mContext, "test")
+            .setContentTitle("TEST_TITLE")
+            .setContentText("TEST_TEXT")
+            .setShortcutId(SHORTCUT_ID_2)
+            .setCategory(CATEGORY_MISSED_CALL)
+            .setStyle(new Notification.MessagingStyle(PERSON))
+            .build();
+
+    private final NotificationEntry mNotificationEntry1 = new NotificationEntryBuilder()
+            .setNotification(mNotification1)
+            .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build())
+            .setUser(UserHandle.of(0))
+            .setPkg(PACKAGE_NAME)
+            .build();
+
+    private final NotificationEntry mNotificationEntry2 = new NotificationEntryBuilder()
+            .setNotification(mNotification2)
+            .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build())
+            .setUser(UserHandle.of(0))
+            .setPkg(PACKAGE_NAME)
+            .build();
+
+
+    private final NotificationEntry mMissedCallNotificationEntry = new NotificationEntryBuilder()
+            .setNotification(mMissedCallNotification)
+            .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build())
+            .setUser(UserHandle.of(0))
+            .setPkg(PACKAGE_NAME)
+            .build();
+
+    private final NotificationEntry mNoContentNotificationEntry = new NotificationEntryBuilder()
+            .setNotification(mNoContentNotification)
+            .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build())
+            .setUser(UserHandle.of(0))
+            .setPkg(PACKAGE_NAME)
+            .build();
+
+    @Test
+    public void testGetMessagingStyleMessagesNoMessage() {
+        Notification notification = new Notification.Builder(mContext, "test")
+                .setContentTitle("TEST_TITLE")
+                .setContentText("TEST_TEXT")
+                .setShortcutId(SHORTCUT_ID_1)
+                .build();
+        StatusBarNotification sbn = new SbnBuilder()
+                .setNotification(notification)
+                .build();
+
+        List<Notification.MessagingStyle.Message> messages =
+                getMessagingStyleMessages(sbn.getNotification());
+
+        assertThat(ArrayUtils.isEmpty(messages)).isTrue();
+    }
+
+    @Test
+    public void testGetMessagingStyleMessages() {
+        StatusBarNotification sbn = new SbnBuilder()
+                .setNotification(mNotification1)
+                .build();
+
+        List<Notification.MessagingStyle.Message> messages =
+                getMessagingStyleMessages(sbn.getNotification());
+
+        assertThat(messages.size()).isEqualTo(3);
+        assertThat(messages.get(0).getText().toString()).isEqualTo(NOTIFICATION_TEXT_2);
+    }
+
+    @Test
+    public void testIsMissedCall_notMissedCall() {
+        assertFalse(isMissedCall(mNotificationEntry1));
+    }
+
+    @Test
+    public void testIsMissedCall_missedCall() {
+        assertTrue(isMissedCall(mMissedCallNotificationEntry));
+    }
+
+    @Test
+    public void testisMissedCallOrHasContent_NoContent() {
+        assertFalse(isMissedCallOrHasContent(mNoContentNotificationEntry));
+    }
+
+    @Test
+    public void testisMissedCallOrHasContent_Hasontent() {
+        assertTrue(isMissedCallOrHasContent(mNotificationEntry1));
+    }
+
+    @Test
+    public void testGetHighestPriorityNotification_missedCallHigherPriority() {
+        Set<NotificationEntry> notifications = Set.of(
+                mNotificationEntry1, mMissedCallNotificationEntry);
+
+        assertThat(getHighestPriorityNotification(notifications))
+                .isEqualTo(mMissedCallNotificationEntry);
+    }
+
+    @Test
+    public void testGetHighestPriorityNotification_moreRecentLastMessage() {
+        Set<NotificationEntry> notifications = Set.of(
+                mNotificationEntry1, mNotificationEntry2);
+
+        assertThat(getHighestPriorityNotification(notifications))
+                .isEqualTo(mNotificationEntry1);
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java
index 24a63e7..50ab1c7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java
@@ -18,12 +18,11 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.when;
 
 import android.app.people.ConversationChannel;
-import android.app.people.IPeopleManager;
-import android.content.pm.LauncherApps;
 import android.content.pm.PackageManager;
 import android.content.pm.ShortcutInfo;
 import android.net.Uri;
@@ -36,8 +35,8 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
+import com.android.systemui.people.widget.PeopleSpaceWidgetManager;
 import com.android.systemui.shared.system.PeopleProviderUtils;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
 
 import junit.framework.Assert;
 
@@ -69,13 +68,11 @@
     private Bundle mExtras = new Bundle();
 
     @Mock
-    private LauncherApps mLauncherApps;
-    @Mock
     private PackageManager mPackageManager;
     @Mock
-    private IPeopleManager mPeopleManager;
+    private PeopleSpaceWidgetManager mPeopleSpaceWidgetManager;
     @Mock
-    private NotificationEntryManager mNotificationEntryManager;
+    private RemoteViews mRemoteViews;
 
     @Before
     public void setUp() throws Exception {
@@ -85,9 +82,7 @@
         PeopleProviderTestable provider = new PeopleProviderTestable();
         provider.initializeForTesting(
                 mContext, PeopleProviderUtils.PEOPLE_PROVIDER_AUTHORITY);
-        provider.setLauncherApps(mLauncherApps);
-        provider.setPeopleManager(mPeopleManager);
-        provider.setNotificationEntryManager(mNotificationEntryManager);
+        provider.setPeopleSpaceWidgetManager(mPeopleSpaceWidgetManager);
         mContext.getContentResolver().addProvider(
                 PeopleProviderUtils.PEOPLE_PROVIDER_AUTHORITY, provider);
 
@@ -95,9 +90,9 @@
                 PeopleProviderUtils.GET_PEOPLE_TILE_PREVIEW_PERMISSION,
                 PackageManager.PERMISSION_GRANTED);
 
-        when(mPeopleManager.getConversation(
-                eq(PACKAGE_NAME_A), eq(USER_HANDLE_A.getIdentifier()), eq(SHORTCUT_ID_A)))
-                .thenReturn(mConversationChannel);
+        when(mPeopleSpaceWidgetManager.getPreview(
+                eq(SHORTCUT_ID_A), eq(USER_HANDLE_A), eq(PACKAGE_NAME_A), any()))
+                .thenReturn(mRemoteViews);
 
         mExtras.putString(PeopleProviderUtils.EXTRAS_KEY_SHORTCUT_ID, SHORTCUT_ID_A);
         mExtras.putString(PeopleProviderUtils.EXTRAS_KEY_PACKAGE_NAME, PACKAGE_NAME_A);
@@ -146,8 +141,8 @@
 
     @Test
     public void testPermissionGrantedNoConversationForShortcutReturnsNull() throws RemoteException {
-        when(mPeopleManager.getConversation(
-                eq(PACKAGE_NAME_A), eq(USER_HANDLE_A.getIdentifier()), eq(SHORTCUT_ID_A)))
+        when(mPeopleSpaceWidgetManager.getPreview(
+                eq(SHORTCUT_ID_A), eq(USER_HANDLE_A), eq(PACKAGE_NAME_A), any()))
                 .thenReturn(null);
         try {
             Bundle result = mContext.getContentResolver().call(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTestable.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTestable.java
index 6834fa5..3e6d674 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTestable.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTestable.java
@@ -16,12 +16,10 @@
 
 package com.android.systemui.people;
 
-import android.app.people.IPeopleManager;
 import android.content.Context;
-import android.content.pm.LauncherApps;
 import android.content.pm.ProviderInfo;
 
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import com.android.systemui.people.widget.PeopleSpaceWidgetManager;
 
 public class PeopleProviderTestable extends PeopleProvider {
 
@@ -32,15 +30,7 @@
         attachInfoForTesting(context, info);
     }
 
-    void setLauncherApps(LauncherApps launcherApps) {
-        mLauncherApps = launcherApps;
-    }
-
-    void setPeopleManager(IPeopleManager peopleManager) {
-        mPeopleManager = peopleManager;
-    }
-
-    void setNotificationEntryManager(NotificationEntryManager notificationEntryManager) {
-        mNotificationEntryManager = notificationEntryManager;
+    void setPeopleSpaceWidgetManager(PeopleSpaceWidgetManager peopleSpaceWidgetManager) {
+        mPeopleSpaceWidgetManager = peopleSpaceWidgetManager;
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
index 0ce03ad..c929073 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
@@ -22,8 +22,6 @@
 import static com.google.common.truth.Truth.assertThat;
 
 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.eq;
 import static org.mockito.ArgumentMatchers.isNull;
@@ -35,10 +33,7 @@
 
 import android.app.INotificationManager;
 import android.app.Notification;
-import android.app.NotificationChannel;
-import android.app.NotificationManager;
 import android.app.Person;
-import android.app.people.ConversationChannel;
 import android.app.people.IPeopleManager;
 import android.app.people.PeopleSpaceTile;
 import android.appwidget.AppWidgetManager;
@@ -47,7 +42,6 @@
 import android.content.Intent;
 import android.content.pm.LauncherApps;
 import android.content.pm.PackageManager;
-import android.content.pm.ParceledListSlice;
 import android.content.pm.ShortcutInfo;
 import android.content.res.Configuration;
 import android.content.res.Resources;
@@ -57,20 +51,15 @@
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.provider.ContactsContract;
-import android.service.notification.ConversationChannelWrapper;
-import android.service.notification.StatusBarNotification;
 import android.testing.AndroidTestingRunner;
 import android.util.DisplayMetrics;
 
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.appwidget.IAppWidgetService;
-import com.android.internal.util.ArrayUtils;
 import com.android.systemui.R;
 import com.android.systemui.SysuiTestCase;
-import com.android.systemui.people.widget.PeopleTileKey;
 import com.android.systemui.statusbar.NotificationListener;
-import com.android.systemui.statusbar.SbnBuilder;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
@@ -81,10 +70,8 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 @RunWith(AndroidTestingRunner.class)
 @SmallTest
@@ -185,8 +172,6 @@
     @Mock
     private IPeopleManager mPeopleManager;
     @Mock
-    private LauncherApps mLauncherApps;
-    @Mock
     private IAppWidgetService mIAppWidgetService;
     @Mock
     private AppWidgetManager mAppWidgetManager;
@@ -239,119 +224,7 @@
     }
 
     @Test
-    public void testGetRecentTilesReturnsSortedListWithOnlyRecentConversations() throws Exception {
-        // Ensure the less-recent Important conversation is before more recent conversations.
-        ConversationChannelWrapper newerNonImportantConversation = getConversationChannelWrapper(
-                SHORTCUT_ID_1, false, 3);
-        ConversationChannelWrapper newerImportantConversation = getConversationChannelWrapper(
-                SHORTCUT_ID_1 + 1, true, 3);
-        ConversationChannelWrapper olderImportantConversation = getConversationChannelWrapper(
-                SHORTCUT_ID_1 + 2,
-                true, 1);
-        when(mNotificationManager.getConversations(anyBoolean())).thenReturn(
-                new ParceledListSlice(Arrays.asList(
-                        newerNonImportantConversation, newerImportantConversation,
-                        olderImportantConversation)));
-
-        // Ensure the non-Important conversation is sorted between these recent conversations.
-        ConversationChannel recentConversationBeforeNonImportantConversation =
-                getConversationChannel(
-                        SHORTCUT_ID_1 + 3, 4);
-        ConversationChannel recentConversationAfterNonImportantConversation =
-                getConversationChannel(SHORTCUT_ID_1 + 4,
-                        2);
-        when(mPeopleManager.getRecentConversations()).thenReturn(
-                new ParceledListSlice(Arrays.asList(recentConversationAfterNonImportantConversation,
-                        recentConversationBeforeNonImportantConversation)));
-
-        List<String> orderedShortcutIds = PeopleSpaceUtils.getRecentTiles(
-                mContext, mNotificationManager, mPeopleManager,
-                mLauncherApps, mNotificationEntryManager)
-                .stream().map(tile -> tile.getId()).collect(Collectors.toList());
-
-        // Check for sorted recent conversations.
-        assertThat(orderedShortcutIds).containsExactly(
-                recentConversationBeforeNonImportantConversation.getShortcutInfo().getId(),
-                newerNonImportantConversation.getShortcutInfo().getId(),
-                recentConversationAfterNonImportantConversation.getShortcutInfo().getId())
-                .inOrder();
-    }
-
-    @Test
-    public void testGetPriorityTilesReturnsSortedListWithOnlyImportantConversations()
-            throws Exception {
-        // Ensure the less-recent Important conversation is before more recent conversations.
-        ConversationChannelWrapper newerNonImportantConversation = getConversationChannelWrapper(
-                SHORTCUT_ID_1, false, 3);
-        ConversationChannelWrapper newerImportantConversation = getConversationChannelWrapper(
-                SHORTCUT_ID_1 + 1, true, 3);
-        ConversationChannelWrapper olderImportantConversation = getConversationChannelWrapper(
-                SHORTCUT_ID_1 + 2,
-                true, 1);
-        when(mNotificationManager.getConversations(anyBoolean())).thenReturn(
-                new ParceledListSlice(Arrays.asList(
-                        newerNonImportantConversation, newerImportantConversation,
-                        olderImportantConversation)));
-
-        // Ensure the non-Important conversation is sorted between these recent conversations.
-        ConversationChannel recentConversationBeforeNonImportantConversation =
-                getConversationChannel(
-                        SHORTCUT_ID_1 + 3, 4);
-        ConversationChannel recentConversationAfterNonImportantConversation =
-                getConversationChannel(SHORTCUT_ID_1 + 4,
-                        2);
-        when(mPeopleManager.getRecentConversations()).thenReturn(
-                new ParceledListSlice(Arrays.asList(recentConversationAfterNonImportantConversation,
-                        recentConversationBeforeNonImportantConversation)));
-
-        List<String> orderedShortcutIds = PeopleSpaceUtils.getPriorityTiles(
-                mContext, mNotificationManager, mPeopleManager,
-                mLauncherApps, mNotificationEntryManager)
-                .stream().map(tile -> tile.getId()).collect(Collectors.toList());
-
-        // Check for sorted priority conversations.
-        assertThat(orderedShortcutIds).containsExactly(
-                newerImportantConversation.getShortcutInfo().getId(),
-                olderImportantConversation.getShortcutInfo().getId())
-                .inOrder();
-    }
-
-    @Test
-    public void testGetMessagingStyleMessagesNoMessage() {
-        Notification notification = new Notification.Builder(mContext, "test")
-                .setContentTitle("TEST_TITLE")
-                .setContentText("TEST_TEXT")
-                .setShortcutId(SHORTCUT_ID_1)
-                .build();
-        StatusBarNotification sbn = new SbnBuilder()
-                .setNotification(notification)
-                .build();
-
-        List<Notification.MessagingStyle.Message> messages =
-                PeopleSpaceUtils.getMessagingStyleMessages(sbn.getNotification());
-
-        assertThat(ArrayUtils.isEmpty(messages)).isTrue();
-    }
-
-    @Test
-    public void testGetMessagingStyleMessages() {
-        StatusBarNotification sbn = new SbnBuilder()
-                .setNotification(mNotification1)
-                .build();
-
-        List<Notification.MessagingStyle.Message> messages =
-                PeopleSpaceUtils.getMessagingStyleMessages(sbn.getNotification());
-
-        assertThat(messages.size()).isEqualTo(3);
-        assertThat(messages.get(0).getText().toString()).isEqualTo(NOTIFICATION_TEXT_2);
-    }
-
-    @Test
     public void testAugmentTileFromNotification() {
-        StatusBarNotification sbn = new SbnBuilder()
-                .setNotification(mNotification1)
-                .build();
-
         PeopleSpaceTile tile =
                 new PeopleSpaceTile
                         .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent())
@@ -359,17 +232,13 @@
                         .setUserHandle(new UserHandle(0))
                         .build();
         PeopleSpaceTile actual = PeopleSpaceUtils
-                .augmentTileFromNotification(mContext, tile, sbn);
+                .augmentTileFromNotification(mContext, tile, mNotificationEntry1, 0);
 
         assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_TEXT_2);
     }
 
     @Test
     public void testAugmentTileFromNotificationNoContent() {
-        StatusBarNotification sbn = new SbnBuilder()
-                .setNotification(mNotification3)
-                .build();
-
         PeopleSpaceTile tile =
                 new PeopleSpaceTile
                         .Builder(SHORTCUT_ID_3, "userName", ICON, new Intent())
@@ -377,107 +246,12 @@
                         .setUserHandle(new UserHandle(0))
                         .build();
         PeopleSpaceTile actual = PeopleSpaceUtils
-                .augmentTileFromNotification(mContext, tile, sbn);
+                .augmentTileFromNotification(mContext, tile, mNotificationEntry3, 0);
 
         assertThat(actual.getNotificationContent()).isEqualTo(null);
     }
 
     @Test
-    public void testAugmentTileFromVisibleNotifications() {
-        PeopleSpaceTile tile =
-                new PeopleSpaceTile
-                        .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent())
-                        .setPackageName(PACKAGE_NAME)
-                        .setUserHandle(new UserHandle(0))
-                        .build();
-        PeopleSpaceTile actual = PeopleSpaceUtils
-                .augmentTileFromVisibleNotifications(mContext, tile,
-                        Map.of(new PeopleTileKey(mNotificationEntry1), mNotificationEntry1));
-
-        assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_TEXT_2);
-    }
-
-    @Test
-    public void testAugmentTileFromVisibleNotificationsDifferentShortcutId() {
-        PeopleSpaceTile tile =
-                new PeopleSpaceTile
-                        .Builder(SHORTCUT_ID_4, "userName", ICON, new Intent())
-                        .setPackageName(PACKAGE_NAME)
-                        .setUserHandle(new UserHandle(0))
-                        .build();
-        PeopleSpaceTile actual = PeopleSpaceUtils
-                .augmentTileFromVisibleNotifications(mContext, tile,
-                        Map.of(new PeopleTileKey(mNotificationEntry1), mNotificationEntry1));
-
-        assertThat(actual.getNotificationContent()).isEqualTo(null);
-    }
-
-    @Test
-    public void testAugmentTilesFromVisibleNotificationsSingleTile() {
-        PeopleSpaceTile tile =
-                new PeopleSpaceTile
-                        .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent())
-                        .setPackageName(PACKAGE_NAME)
-                        .setUserHandle(new UserHandle(0))
-                        .build();
-        List<PeopleSpaceTile> actualList = PeopleSpaceUtils
-                .augmentTilesFromVisibleNotifications(
-                        mContext, List.of(tile), mNotificationEntryManager);
-
-        assertThat(actualList.size()).isEqualTo(1);
-        assertThat(actualList.get(0).getNotificationContent().toString())
-                .isEqualTo(NOTIFICATION_TEXT_2);
-
-        verify(mNotificationEntryManager, times(1)).getVisibleNotifications();
-    }
-
-    @Test
-    public void testAugmentTilesFromVisibleNotificationsMultipleTiles() {
-        PeopleSpaceTile tile1 =
-                new PeopleSpaceTile
-                        .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent())
-                        .setPackageName(PACKAGE_NAME)
-                        .setUserHandle(new UserHandle(0))
-                        .build();
-        PeopleSpaceTile tile2 =
-                new PeopleSpaceTile
-                        .Builder(SHORTCUT_ID_2, "userName2", ICON, new Intent())
-                        .setPackageName(PACKAGE_NAME)
-                        .setUserHandle(new UserHandle(0))
-                        .build();
-        List<PeopleSpaceTile> actualList = PeopleSpaceUtils
-                .augmentTilesFromVisibleNotifications(mContext, List.of(tile1, tile2),
-                        mNotificationEntryManager);
-
-        assertThat(actualList.size()).isEqualTo(2);
-        assertThat(actualList.get(0).getNotificationContent().toString())
-                .isEqualTo(NOTIFICATION_TEXT_2);
-        assertThat(actualList.get(1).getNotificationContent().toString())
-                .isEqualTo(NOTIFICATION_TEXT_4);
-
-        verify(mNotificationEntryManager, times(1)).getVisibleNotifications();
-    }
-
-    @Test
-    public void testAugmentSingleTileFromVisibleNotificationsSingleTile() {
-        PeopleSpaceTile tile =
-                new PeopleSpaceTile
-                        .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent())
-                        .setPackageName(PACKAGE_NAME)
-                        .setUserHandle(new UserHandle(0))
-                        .build();
-        PeopleSpaceTile augmentedTile = PeopleSpaceUtils
-                .augmentSingleTileFromVisibleNotifications(
-                        mContext, tile, mNotificationEntryManager);
-
-        assertThat(augmentedTile).isNotNull();
-        assertThat(augmentedTile.getNotificationContent().toString())
-                .isEqualTo(NOTIFICATION_TEXT_2);
-
-        verify(mNotificationEntryManager, times(1)).getVisibleNotifications();
-    }
-
-    @Test
     public void testDoNotUpdateSingleConversationAppWidgetWhenNotBirthday() {
         int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT};
         when(mMockCursor.moveToNext()).thenReturn(true, false);
@@ -570,30 +344,4 @@
         verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
                 any());
     }
-
-    private ConversationChannelWrapper getConversationChannelWrapper(String shortcutId,
-            boolean importantConversation, long lastInteractionTimestamp) throws Exception {
-        ConversationChannelWrapper convo = new ConversationChannelWrapper();
-        NotificationChannel notificationChannel = new NotificationChannel(shortcutId,
-                "channel" + shortcutId,
-                NotificationManager.IMPORTANCE_DEFAULT);
-        notificationChannel.setImportantConversation(importantConversation);
-        convo.setNotificationChannel(notificationChannel);
-        convo.setShortcutInfo(new ShortcutInfo.Builder(mContext, shortcutId).setLongLabel(
-                "name").build());
-        when(mPeopleManager.getLastInteraction(anyString(), anyInt(),
-                eq(shortcutId))).thenReturn(lastInteractionTimestamp);
-        return convo;
-    }
-
-    private ConversationChannel getConversationChannel(String shortcutId,
-            long lastInteractionTimestamp) throws Exception {
-        ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mContext, shortcutId).setLongLabel(
-                "name").build();
-        ConversationChannel convo = new ConversationChannel(shortcutInfo, 0, null, null,
-                lastInteractionTimestamp, false);
-        when(mPeopleManager.getLastInteraction(anyString(), anyInt(),
-                eq(shortcutId))).thenReturn(lastInteractionTimestamp);
-        return convo;
-    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleTileViewHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleTileViewHelperTest.java
index 107ac83..3cc55f2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleTileViewHelperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleTileViewHelperTest.java
@@ -114,8 +114,6 @@
 
         when(mMockContext.getString(R.string.birthday_status)).thenReturn(
                 mContext.getString(R.string.birthday_status));
-        when(mMockContext.getString(R.string.basic_status)).thenReturn(
-                mContext.getString(R.string.basic_status));
         when(mMockContext.getPackageManager()).thenReturn(mPackageManager);
         when(mMockContext.getString(R.string.over_timestamp)).thenReturn(
                 mContext.getString(R.string.over_timestamp));
@@ -126,7 +124,6 @@
         when(resources.getConfiguration()).thenReturn(configuration);
         when(resources.getDisplayMetrics()).thenReturn(displayMetrics);
         TextView textView = mock(TextView.class);
-        // when(new TextView(mMockContext)).thenReturn(textView);
         when(textView.getLineHeight()).thenReturn(16);
         when(mPackageManager.getApplicationIcon(anyString())).thenReturn(null);
         mPeopleTileViewHelper = new PeopleTileViewHelper(mContext,
@@ -134,16 +131,41 @@
     }
 
     @Test
-    public void testCreateRemoteViewsWithLastInteractionTime() {
+    public void testCreateRemoteViewsWithLastInteractionTimeUnderOneDayHidden() {
         RemoteViews views = new PeopleTileViewHelper(mContext,
                 PERSON_TILE_WITHOUT_NOTIFICATION, 0, mOptions).getViews();
         View result = views.apply(mContext, null);
 
+        // Not showing last interaction.
+        assertEquals(View.GONE, result.findViewById(R.id.last_interaction).getVisibility());
+
+        mOptions.putInt(OPTION_APPWIDGET_MIN_WIDTH,
+                getSizeInDp(R.dimen.required_width_for_large));
+        mOptions.putInt(OPTION_APPWIDGET_MIN_WIDTH,
+                getSizeInDp(R.dimen.required_height_for_large));
+        RemoteViews largeView = new PeopleTileViewHelper(mContext,
+                PERSON_TILE_WITHOUT_NOTIFICATION, 0, mOptions).getViews();
+        View largeResult = largeView.apply(mContext, null);
+
+        // Not showing last interaction.
+        assertEquals(View.GONE, largeResult.findViewById(R.id.last_interaction).getVisibility());
+    }
+
+    @Test
+    public void testCreateRemoteViewsWithLastInteractionTime() {
+        PeopleSpaceTile tileWithLastInteraction =
+                PERSON_TILE_WITHOUT_NOTIFICATION.toBuilder().setLastInteractionTimestamp(
+                        123445L).build();
+        RemoteViews views = new PeopleTileViewHelper(mContext,
+                tileWithLastInteraction, 0, mOptions).getViews();
+        View result = views.apply(mContext, null);
+
         TextView name = (TextView) result.findViewById(R.id.name);
         assertEquals(name.getText(), NAME);
         // Has last interaction.
+        assertEquals(View.VISIBLE, result.findViewById(R.id.last_interaction).getVisibility());
         TextView lastInteraction = (TextView) result.findViewById(R.id.last_interaction);
-        assertEquals(lastInteraction.getText(), mContext.getString(R.string.basic_status));
+        assertEquals(lastInteraction.getText(), "Over 2 weeks ago");
         // No availability.
         assertEquals(View.GONE, result.findViewById(R.id.availability).getVisibility());
         // Shows person icon.
@@ -154,7 +176,7 @@
         mOptions.putInt(OPTION_APPWIDGET_MIN_WIDTH,
                 getSizeInDp(R.dimen.required_width_for_medium) - 1);
         RemoteViews smallView = new PeopleTileViewHelper(mContext,
-                PERSON_TILE_WITHOUT_NOTIFICATION, 0, mOptions).getViews();
+                tileWithLastInteraction, 0, mOptions).getViews();
         View smallResult = smallView.apply(mContext, null);
 
         // Show name over predefined icon.
@@ -171,14 +193,15 @@
         mOptions.putInt(OPTION_APPWIDGET_MIN_WIDTH,
                 getSizeInDp(R.dimen.required_height_for_large));
         RemoteViews largeView = new PeopleTileViewHelper(mContext,
-                PERSON_TILE_WITHOUT_NOTIFICATION, 0, mOptions).getViews();
+                tileWithLastInteraction, 0, mOptions).getViews();
         View largeResult = largeView.apply(mContext, null);
 
         name = (TextView) largeResult.findViewById(R.id.name);
         assertEquals(name.getText(), NAME);
         // Has last interaction.
+        assertEquals(View.VISIBLE, largeResult.findViewById(R.id.last_interaction).getVisibility());
         lastInteraction = (TextView) result.findViewById(R.id.last_interaction);
-        assertEquals(lastInteraction.getText(), mContext.getString(R.string.basic_status));
+        assertEquals(lastInteraction.getText(), "Over 2 weeks ago");
         // No availability.
         assertEquals(View.GONE, result.findViewById(R.id.availability).getVisibility());
         // Shows person icon.
@@ -202,8 +225,7 @@
         TextView name = (TextView) result.findViewById(R.id.name);
         assertEquals(name.getText(), NAME);
         // Has last interaction over status.
-        TextView lastInteraction = (TextView) result.findViewById(R.id.last_interaction);
-        assertEquals(lastInteraction.getText(), mContext.getString(R.string.basic_status));
+        assertEquals(View.GONE, result.findViewById(R.id.last_interaction).getVisibility());
         // Has availability.
         assertEquals(View.VISIBLE, result.findViewById(R.id.availability).getVisibility());
         // Has person icon.
@@ -237,14 +259,13 @@
         name = (TextView) largeResult.findViewById(R.id.name);
         assertEquals(name.getText(), NAME);
         // Has last interaction.
-        lastInteraction = (TextView) result.findViewById(R.id.last_interaction);
-        assertEquals(lastInteraction.getText(), mContext.getString(R.string.basic_status));
+        assertEquals(View.GONE, largeResult.findViewById(R.id.last_interaction).getVisibility());
         // Has availability.
-        assertEquals(View.VISIBLE, result.findViewById(R.id.availability).getVisibility());
+        assertEquals(View.VISIBLE, largeResult.findViewById(R.id.availability).getVisibility());
         // Shows person icon.
-        assertEquals(View.VISIBLE, result.findViewById(R.id.person_icon).getVisibility());
+        assertEquals(View.VISIBLE, largeResult.findViewById(R.id.person_icon).getVisibility());
         // No status.
-        assertThat((View) result.findViewById(R.id.text_content)).isNull();
+        assertThat((View) largeResult.findViewById(R.id.text_content)).isNull();
     }
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/widget/LaunchConversationActivityTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/widget/LaunchConversationActivityTest.java
index 0ef3ca2..ccb40e1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/widget/LaunchConversationActivityTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/widget/LaunchConversationActivityTest.java
@@ -29,6 +29,7 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.service.notification.NotificationListenerService;
 import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper.RunWithLooper;
@@ -83,6 +84,8 @@
     private BubblesManager mBubblesManager;
     @Mock
     private NotificationListenerService.Ranking mRanking;
+    @Mock
+    private UserManager mUserManager;
 
     @Captor
     private ArgumentCaptor<NotificationVisibility> mNotificationVisibilityCaptor;
@@ -93,7 +96,7 @@
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
         mActivity = new LaunchConversationActivity(mNotificationEntryManager,
-                Optional.of(mBubblesManager));
+                Optional.of(mBubblesManager), mUserManager);
         mActivity.setIsForTesting(true, mIStatusBarService);
         mIntent = new Intent();
         mIntent.putExtra(PeopleSpaceWidgetProvider.EXTRA_TILE_ID, "tile ID");
@@ -113,6 +116,7 @@
         when(mNotifEntryCanBubble.canBubble()).thenReturn(true);
         when(mNotifEntryNoRanking.getRanking()).thenReturn(null);
         when(mRanking.getRank()).thenReturn(NOTIF_RANK);
+        when(mUserManager.isQuietModeEnabled(any(UserHandle.class))).thenReturn(false);
     }
 
     @Test
@@ -176,4 +180,18 @@
                 anyInt(), any(), anyInt(), anyInt(), any());
         verify(mBubblesManager, times(1)).expandStackAndSelectBubble(eq(mNotifEntryCanBubble));
     }
+
+    @Test
+    public void testQuietModeOpensQuietModeDialog() throws Exception {
+        mIntent.putExtra(PeopleSpaceWidgetProvider.EXTRA_NOTIFICATION_KEY,
+                NOTIF_KEY);
+        when(mUserManager.isQuietModeEnabled(eq(USER_HANDLE))).thenReturn(true);
+        mActivity.setIntent(mIntent);
+        mActivity.onCreate(new Bundle());
+
+        assertThat(mActivity.isFinishing()).isTrue();
+        verify(mIStatusBarService, never()).onNotificationClear(any(),
+                anyInt(), any(), anyInt(), anyInt(), any());
+        verify(mBubblesManager, never()).expandStackAndSelectBubble(any());
+    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java
index 7125500..725e5d4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java
@@ -35,7 +35,9 @@
 import static com.google.common.truth.Truth.assertThat;
 
 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.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
@@ -45,8 +47,10 @@
 
 import static java.util.Objects.requireNonNull;
 
+import android.app.INotificationManager;
 import android.app.Notification;
 import android.app.NotificationChannel;
+import android.app.NotificationManager;
 import android.app.Person;
 import android.app.people.ConversationChannel;
 import android.app.people.ConversationStatus;
@@ -59,11 +63,15 @@
 import android.content.SharedPreferences;
 import android.content.pm.LauncherApps;
 import android.content.pm.PackageManager;
+import android.content.pm.ParceledListSlice;
 import android.content.pm.ShortcutInfo;
 import android.graphics.drawable.Icon;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.RemoteException;
 import android.os.UserHandle;
+import android.os.UserManager;
+import android.service.notification.ConversationChannelWrapper;
 import android.service.notification.StatusBarNotification;
 import android.testing.AndroidTestingRunner;
 
@@ -79,6 +87,7 @@
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.collection.NoManSimulator;
 import com.android.systemui.statusbar.notification.collection.NoManSimulator.NotifEvent;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
 import com.android.systemui.util.time.FakeSystemClock;
 
@@ -92,9 +101,12 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 @SmallTest
 @RunWith(AndroidTestingRunner.class)
@@ -116,7 +128,7 @@
     private static final String SHORTCUT_ID = "101";
     private static final String OTHER_SHORTCUT_ID = "102";
     private static final String NOTIFICATION_KEY = "0|com.android.systemui.tests|0|null|0";
-    private static final String NOTIFICATION_CONTENT = "message text";
+    private static final String NOTIFICATION_CONTENT_1 = "message text 1";
     private static final Uri URI = Uri.parse("fake_uri");
     private static final Icon ICON = Icon.createWithResource("package", R.drawable.ic_android);
     private static final PeopleTileKey KEY = new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A);
@@ -132,7 +144,7 @@
                     .setPackageName(TEST_PACKAGE_A)
                     .setUserHandle(new UserHandle(0))
                     .setNotificationKey(NOTIFICATION_KEY + "1")
-                    .setNotificationContent(NOTIFICATION_CONTENT)
+                    .setNotificationContent(NOTIFICATION_CONTENT_1)
                     .setNotificationDataUri(URI)
                     .setContactUri(URI)
                     .build();
@@ -146,8 +158,8 @@
                     // Same contact uri.
                     .setContactUri(URI)
                     .build();
-    private final ShortcutInfo mShortcutInfo = new ShortcutInfo.Builder(mContext,
-            SHORTCUT_ID).setLongLabel("name").build();
+    private ShortcutInfo mShortcutInfo;
+    private NotificationEntry mNotificationEntry;
 
     private PeopleSpaceWidgetManager mManager;
 
@@ -169,6 +181,10 @@
     private NotificationEntryManager mNotificationEntryManager;
     @Mock
     private PackageManager mPackageManager;
+    @Mock
+    private INotificationManager mNotificationManager;
+    @Mock
+    private UserManager mUserManager;
 
     @Captor
     private ArgumentCaptor<NotificationHandler> mListenerCaptor;
@@ -189,7 +205,8 @@
         mProvider = new PeopleSpaceWidgetProvider();
         mProvider.setPeopleSpaceWidgetManager(mManager);
         mManager.setAppWidgetManager(mAppWidgetManager, mIPeopleManager, mPeopleManager,
-                mLauncherApps, mNotificationEntryManager, mPackageManager, true, mProvider);
+                mLauncherApps, mNotificationEntryManager, mPackageManager, true, mProvider,
+                mUserManager, mNotificationManager);
         mManager.attach(mListenerService);
 
         verify(mListenerService).addNotificationHandler(mListenerCaptor.capture());
@@ -201,6 +218,109 @@
         addTileForWidget(PERSON_TILE_WITH_SAME_URI, WIDGET_ID_WITH_SAME_URI);
         when(mAppWidgetManager.getAppWidgetOptions(eq(WIDGET_ID_WITHOUT_SHORTCUT)))
                 .thenReturn(new Bundle());
+        when(mUserManager.isQuietModeEnabled(any())).thenReturn(false);
+
+        when(mMockContext.getPackageName()).thenReturn(TEST_PACKAGE_A);
+        when(mMockContext.getUserId()).thenReturn(0);
+        mShortcutInfo = new ShortcutInfo.Builder(mMockContext,
+                SHORTCUT_ID).setLongLabel("name").build();
+        mNotificationEntry = new NotificationEntryBuilder()
+                .setSbn(createNotification(
+                        SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ false))
+                .setId(1)
+                .setShortcutInfo(mShortcutInfo)
+                .build();
+    }
+
+    @Test
+    public void testGetRecentTilesReturnsSortedListWithOnlyRecentConversations() throws Exception {
+        // Ensure the less-recent Important conversation is before more recent conversations.
+        ConversationChannelWrapper newerNonImportantConversation = getConversationChannelWrapper(
+                SHORTCUT_ID, false, 3);
+        ConversationChannelWrapper newerImportantConversation = getConversationChannelWrapper(
+                SHORTCUT_ID + 1, true, 3);
+        ConversationChannelWrapper olderImportantConversation = getConversationChannelWrapper(
+                SHORTCUT_ID + 2,
+                true, 1);
+        when(mNotificationManager.getConversations(anyBoolean())).thenReturn(
+                new ParceledListSlice(Arrays.asList(
+                        newerNonImportantConversation, newerImportantConversation,
+                        olderImportantConversation)));
+
+        // Ensure the non-Important conversation is sorted between these recent conversations.
+        ConversationChannel recentConversationBeforeNonImportantConversation =
+                getConversationChannel(
+                        SHORTCUT_ID + 3, 4);
+        ConversationChannel recentConversationAfterNonImportantConversation =
+                getConversationChannel(SHORTCUT_ID + 4,
+                        2);
+        when(mIPeopleManager.getRecentConversations()).thenReturn(
+                new ParceledListSlice(Arrays.asList(recentConversationAfterNonImportantConversation,
+                        recentConversationBeforeNonImportantConversation)));
+
+        List<String> orderedShortcutIds = mManager.getRecentTiles()
+                .stream().map(tile -> tile.getId()).collect(Collectors.toList());
+
+        // Check for sorted recent conversations.
+        assertThat(orderedShortcutIds).containsExactly(
+                recentConversationBeforeNonImportantConversation.getShortcutInfo().getId(),
+                newerNonImportantConversation.getShortcutInfo().getId(),
+                recentConversationAfterNonImportantConversation.getShortcutInfo().getId())
+                .inOrder();
+    }
+
+    @Test
+    public void testGetPriorityTilesReturnsSortedListWithOnlyImportantConversations()
+            throws Exception {
+        // Ensure the less-recent Important conversation is before more recent conversations.
+        ConversationChannelWrapper newerNonImportantConversation = getConversationChannelWrapper(
+                SHORTCUT_ID, false, 3);
+        ConversationChannelWrapper newerImportantConversation = getConversationChannelWrapper(
+                SHORTCUT_ID + 1, true, 3);
+        ConversationChannelWrapper olderImportantConversation = getConversationChannelWrapper(
+                SHORTCUT_ID + 2,
+                true, 1);
+        when(mNotificationManager.getConversations(anyBoolean())).thenReturn(
+                new ParceledListSlice(Arrays.asList(
+                        newerNonImportantConversation, newerImportantConversation,
+                        olderImportantConversation)));
+
+        List<String> orderedShortcutIds = mManager.getPriorityTiles()
+                .stream().map(tile -> tile.getId()).collect(Collectors.toList());
+
+        // Check for sorted priority conversations.
+        assertThat(orderedShortcutIds).containsExactly(
+                newerImportantConversation.getShortcutInfo().getId(),
+                olderImportantConversation.getShortcutInfo().getId())
+                .inOrder();
+    }
+
+    @Test
+    public void testGetTilesReturnsNothingInQuietMode()
+            throws Exception {
+        // Ensure the less-recent Important conversation is before more recent conversations.
+        ConversationChannelWrapper newerNonImportantConversation = getConversationChannelWrapper(
+                SHORTCUT_ID, false, 3);
+        ConversationChannelWrapper newerImportantConversation = getConversationChannelWrapper(
+                SHORTCUT_ID + 1, true, 3);
+        ConversationChannelWrapper olderImportantConversation = getConversationChannelWrapper(
+                SHORTCUT_ID + 2,
+                true, 1);
+        when(mNotificationManager.getConversations(anyBoolean())).thenReturn(
+                new ParceledListSlice(Arrays.asList(
+                        newerNonImportantConversation, newerImportantConversation,
+                        olderImportantConversation)));
+        ConversationChannel recentConversation =
+                getConversationChannel(
+                        SHORTCUT_ID + 3, 4);
+        when(mIPeopleManager.getRecentConversations()).thenReturn(
+                new ParceledListSlice(Arrays.asList(recentConversation)));
+
+        when(mUserManager.isQuietModeEnabled(any())).thenReturn(true);
+
+        // Check nothing returned.
+        assertThat(mManager.getPriorityTiles()).isEmpty();
+        assertThat(mManager.getRecentTiles()).isEmpty();
     }
 
     @Test
@@ -385,7 +505,8 @@
                 ACTIVITY_GAME).setDescription("Playing a game!").build();
         ConversationStatus status2 = new ConversationStatus.Builder(OTHER_SHORTCUT_ID,
                 ACTIVITY_BIRTHDAY).build();
-        ConversationChannel conversationChannel = getConversationWithShortcutId(OTHER_SHORTCUT_ID,
+        ConversationChannel conversationChannel = getConversationWithShortcutId(
+                new PeopleTileKey(OTHER_SHORTCUT_ID, 0, TEST_PACKAGE_A),
                 Arrays.asList(status1, status2));
         mManager.updateWidgetsWithConversationChanged(conversationChannel);
         mClock.advanceTime(MIN_LINGER_DURATION);
@@ -403,7 +524,8 @@
 
         ConversationStatus status = new ConversationStatus.Builder(SHORTCUT_ID,
                 ACTIVITY_GAME).setDescription("Playing a game!").build();
-        ConversationChannel conversationChannel = getConversationWithShortcutId(SHORTCUT_ID,
+        ConversationChannel conversationChannel = getConversationWithShortcutId(
+                new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A),
                 Arrays.asList(status));
         mManager.updateWidgetsWithConversationChanged(conversationChannel);
         mClock.advanceTime(MIN_LINGER_DURATION);
@@ -424,8 +546,8 @@
 
         ConversationStatus status = new ConversationStatus.Builder(SHORTCUT_ID,
                 ACTIVITY_ANNIVERSARY).build();
-        ConversationChannel conversationChannel = getConversationWithShortcutId(SHORTCUT_ID,
-                Arrays.asList(status));
+        ConversationChannel conversationChannel = getConversationWithShortcutId(
+                new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A), Arrays.asList(status));
         mManager.updateWidgetsWithConversationChanged(conversationChannel);
         mClock.advanceTime(MIN_LINGER_DURATION);
 
@@ -445,11 +567,15 @@
     public void testUpdateNotificationPostedIfExistingTile() throws Exception {
         int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT};
         when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
-        NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+        NotificationEntryBuilder builder = new NotificationEntryBuilder()
                 .setSbn(createNotification(
                         SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ false))
-                .setId(1));
+                .setShortcutInfo(mShortcutInfo)
+                .setId(1);
+        NotificationEntry entry = builder.build();
+        when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+        NotifEvent notif1 = mNoMan.postNotif(builder);
         mClock.advanceTime(MIN_LINGER_DURATION);
 
         verify(mAppWidgetManager, times(1))
@@ -458,7 +584,7 @@
         Bundle bundle = mBundleArgumentCaptor.getValue();
         PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
         assertThat(tile.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
-        assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT);
+        assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1);
         verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
                 any());
     }
@@ -515,11 +641,15 @@
             throws Exception {
         int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT};
         when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
-        NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+        NotificationEntryBuilder builder = new NotificationEntryBuilder()
                 .setSbn(createNotification(
                         SHORTCUT_ID, /* isMessagingStyle = */ false, /* isMissedCall = */ true))
-                .setId(1));
+                .setShortcutInfo(mShortcutInfo)
+                .setId(1);
+        NotificationEntry entry = builder.build();
+        when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+        NotifEvent notif1 = mNoMan.postNotif(builder);
         mClock.advanceTime(MIN_LINGER_DURATION);
 
         verify(mAppWidgetManager, times(1))
@@ -540,11 +670,15 @@
             throws Exception {
         int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT};
         when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
-        NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+        NotificationEntryBuilder builder = new NotificationEntryBuilder()
                 .setSbn(createNotification(
                         SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true))
-                .setId(1));
+                .setShortcutInfo(mShortcutInfo)
+                .setId(1);
+        NotificationEntry entry = builder.build();
+        when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+        NotifEvent notif1 = mNoMan.postNotif(builder);
         mClock.advanceTime(MIN_LINGER_DURATION);
 
         verify(mAppWidgetManager, times(1))
@@ -554,7 +688,7 @@
 
         PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
         assertThat(tile.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
-        assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT);
+        assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1);
         verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
                 any());
     }
@@ -565,11 +699,15 @@
         int[] widgetIdsArray =
                 {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI};
         when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
-        NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+        NotificationEntryBuilder builder = new NotificationEntryBuilder()
                 .setSbn(createNotification(
                         SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true))
-                .setId(1));
+                .setShortcutInfo(mShortcutInfo)
+                .setId(1);
+        NotificationEntry entry = builder.build();
+        when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+        NotifEvent notif1 = mNoMan.postNotif(builder);
         mClock.advanceTime(MIN_LINGER_DURATION);
 
         verify(mAppWidgetManager, times(1))
@@ -579,7 +717,7 @@
         PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
         assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
         assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(
-                NOTIFICATION_CONTENT);
+                NOTIFICATION_CONTENT_1);
         verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
                 any());
         verify(mAppWidgetManager, times(1))
@@ -588,7 +726,7 @@
         Bundle bundleForSameUriTile = requireNonNull(mBundleArgumentCaptor.getValue());
         PeopleSpaceTile tileWithSameUri = bundleForSameUriTile.getParcelable(OPTIONS_PEOPLE_TILE);
         assertThat(tileWithSameUri.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
-        assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT);
+        assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1);
         verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI),
                 any());
     }
@@ -599,12 +737,19 @@
         int[] widgetIdsArray =
                 {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI};
         when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
-        NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+        NotificationEntryBuilder builder = new NotificationEntryBuilder()
                 .setSbn(createNotification(
                         SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true))
-                .setId(1));
+                .setShortcutInfo(mShortcutInfo)
+                .setId(1);
+
+        NotificationEntry entry = builder.build();
+        when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+        NotifEvent notif1 = mNoMan.postNotif(builder);
         mClock.advanceTime(MIN_LINGER_DURATION);
+
+        when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of());
         NotifEvent notif1b = mNoMan.retractNotif(notif1.sbn.cloneLight(), 0);
         mClock.advanceTime(MIN_LINGER_DURATION);
 
@@ -628,45 +773,11 @@
     }
 
     @Test
-    public void testDoNotRemoveMissedCallIfMatchingUriTileMissingReadContactsPermissionWhenPosted()
-            throws Exception {
-        when(mPackageManager.checkPermission(any(),
-                eq(PERSON_TILE_WITH_SAME_URI.getPackageName()))).thenReturn(
-                PERMISSION_HARD_DENIED);
-        int[] widgetIdsArray =
-                {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI};
-        when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
-        NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
-                .setSbn(createNotification(
-                        SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true))
-                .setId(1));
-        mClock.advanceTime(MIN_LINGER_DURATION);
-        // We should only try to remove the notification if the Missed Call was added when posted.
-        NotifEvent notif1b = mNoMan.retractNotif(notif1.sbn.cloneLight(), 0);
-        mClock.advanceTime(MIN_LINGER_DURATION);
-
-        verify(mAppWidgetManager, times(2)).updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT),
-                mBundleArgumentCaptor.capture());
-        Bundle bundle = mBundleArgumentCaptor.getValue();
-        PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
-        assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(null);
-        assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(null);
-        verify(mAppWidgetManager, times(2)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
-                any());
-        verify(mAppWidgetManager, times(0))
-                .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SAME_URI), any());
-        verify(mAppWidgetManager, times(0)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI),
-                any());
-    }
-
-    @Test
     public void testUpdateMissedCallNotificationWithContentPostedIfMatchingUriTileFromSender()
             throws Exception {
         int[] widgetIdsArray =
                 {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI};
         when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
         Notification notificationWithPersonOnlyInSender =
                 createMessagingStyleNotificationWithoutExtras(
                         SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */
@@ -677,9 +788,15 @@
                 .setUid(0)
                 .setUser(new UserHandle(0))
                 .build();
-        NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+        NotificationEntryBuilder builder = new NotificationEntryBuilder()
+                .setRank(1)
+                .setShortcutInfo(mShortcutInfo)
                 .setSbn(sbn)
-                .setId(1));
+                .setId(1);
+        NotificationEntry entry = builder.build();
+        when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+        NotifEvent notif1 = mNoMan.postNotif(builder);
         mClock.advanceTime(MIN_LINGER_DURATION);
 
         verify(mAppWidgetManager, times(1))
@@ -689,7 +806,7 @@
         PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
         assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
         assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(
-                NOTIFICATION_CONTENT);
+                NOTIFICATION_CONTENT_1);
         verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
                 any());
         verify(mAppWidgetManager, times(1))
@@ -698,7 +815,7 @@
         Bundle bundleForSameUriTile = requireNonNull(mBundleArgumentCaptor.getValue());
         PeopleSpaceTile tileWithSameUri = bundleForSameUriTile.getParcelable(OPTIONS_PEOPLE_TILE);
         assertThat(tileWithSameUri.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
-        assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT);
+        assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1);
         verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI),
                 any());
     }
@@ -709,14 +826,13 @@
         int[] widgetIdsArray =
                 {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI};
         when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
         // Notification posted without any Person attached.
         Notification notificationWithoutPersonObject =
                 createMessagingStyleNotificationWithoutExtras(
                         SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */
                         true).setStyle(new Notification.MessagingStyle("sender")
                         .addMessage(
-                                new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT, 10,
+                                new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT_1, 10,
                                         "sender"))
                 ).build();
         StatusBarNotification sbn = new SbnBuilder()
@@ -725,9 +841,15 @@
                 .setUid(0)
                 .setUser(new UserHandle(0))
                 .build();
-        NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+        NotificationEntryBuilder builder = new NotificationEntryBuilder()
                 .setSbn(sbn)
-                .setId(1));
+                .setShortcutInfo(mShortcutInfo)
+                .setId(1);
+        NotificationEntry entry = builder.build();
+        when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+        NotifEvent notif1 = mNoMan.postNotif(builder);
+
         mClock.advanceTime(MIN_LINGER_DURATION);
 
         verify(mAppWidgetManager, times(1))
@@ -737,7 +859,7 @@
         PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
         assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
         assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(
-                NOTIFICATION_CONTENT);
+                NOTIFICATION_CONTENT_1);
         verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
                 any());
         // Do not update since notification doesn't include a Person reference.
@@ -758,11 +880,15 @@
         int[] widgetIdsArray =
                 {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_DIFFERENT_URI};
         when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
-        NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+        NotificationEntryBuilder builder = new NotificationEntryBuilder()
                 .setSbn(createNotification(
                         SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true))
-                .setId(1));
+                .setShortcutInfo(mShortcutInfo)
+                .setId(1);
+        NotificationEntry entry = builder.build();
+        when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+        NotifEvent notif1 = mNoMan.postNotif(builder);
         mClock.advanceTime(MIN_LINGER_DURATION);
 
         verify(mAppWidgetManager, times(1))
@@ -772,7 +898,7 @@
         PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
         assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
         assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(
-                NOTIFICATION_CONTENT);
+                NOTIFICATION_CONTENT_1);
         verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
                 any());
         // Do not update since missing permission to read contacts.
@@ -792,11 +918,15 @@
         int[] widgetIdsArray =
                 {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI};
         when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray);
-
-        NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder()
+        NotificationEntryBuilder builder = new NotificationEntryBuilder()
                 .setSbn(createNotification(
                         SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true))
-                .setId(1));
+                .setShortcutInfo(mShortcutInfo)
+                .setId(1);
+        NotificationEntry entry = builder.build();
+        when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry));
+
+        NotifEvent notif1 = mNoMan.postNotif(builder);
         mClock.advanceTime(MIN_LINGER_DURATION);
 
         verify(mAppWidgetManager, times(1))
@@ -806,14 +936,18 @@
         PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE);
         assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY);
         assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(
-                NOTIFICATION_CONTENT);
+                NOTIFICATION_CONTENT_1);
         verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT),
                 any());
         // Do not update since missing permission to read contacts.
-        verify(mAppWidgetManager, times(0))
+        verify(mAppWidgetManager, times(1))
                 .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SAME_URI),
-                        any());
-        verify(mAppWidgetManager, times(0)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI),
+                        mBundleArgumentCaptor.capture());
+        Bundle noNotificationBundle = requireNonNull(mBundleArgumentCaptor.getValue());
+        PeopleSpaceTile tileNoNotification =
+                noNotificationBundle.getParcelable(OPTIONS_PEOPLE_TILE);
+        assertThat(tileNoNotification.getNotificationKey()).isNull();
+        verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI),
                 any());
     }
 
@@ -847,7 +981,7 @@
     public void testAddThenReconfigureWidgetsUpdatesStorageCacheAndListeners()
             throws Exception {
         clearStorage();
-        mManager.addNewWidget(WIDGET_ID_WITH_SHORTCUT, PERSON_TILE);
+        mManager.addNewWidget(WIDGET_ID_WITH_SHORTCUT, new PeopleTileKey(PERSON_TILE));
         // Check storage.
         SharedPreferences widgetSp = mContext.getSharedPreferences(
                 String.valueOf(WIDGET_ID_WITH_SHORTCUT),
@@ -866,7 +1000,8 @@
                 eq(LauncherApps.FLAG_CACHE_PEOPLE_TILE_SHORTCUTS));
 
         // Reconfigure WIDGET_ID_WITH_SHORTCUT from PERSON_TILE to PERSON_TILE_WITH_SAME_URI
-        mManager.addNewWidget(WIDGET_ID_WITH_SHORTCUT, PERSON_TILE_WITH_SAME_URI);
+        mManager.addNewWidget(
+                WIDGET_ID_WITH_SHORTCUT, new PeopleTileKey(PERSON_TILE_WITH_SAME_URI));
 
         // Check listener is removed and shortcut is uncached.
         verify(mPeopleManager).unregisterConversationListener(any());
@@ -1015,30 +1150,32 @@
     @Test
     public void testGetPeopleTileFromPersistentStorageExistingConversation()
             throws Exception {
-        when(mIPeopleManager.getConversation(PACKAGE_NAME, 0, SHORTCUT_ID)).thenReturn(
-                getConversationWithShortcutId(SHORTCUT_ID));
-        PeopleTileKey key = new PeopleTileKey(SHORTCUT_ID, 0, PACKAGE_NAME);
+        ConversationChannel channel = getConversationWithShortcutId(
+                new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A));
+        when(mIPeopleManager.getConversation(TEST_PACKAGE_A, 0, SHORTCUT_ID)).thenReturn(channel);
+        PeopleTileKey key = new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A);
         PeopleSpaceTile tile = mManager.getTileFromPersistentStorage(key);
         assertThat(tile.getId()).isEqualTo(key.getShortcutId());
     }
 
     @Test
-    public void testGetPeopleTileFromPersistentStorageNoConversation() {
-        PeopleTileKey key = new PeopleTileKey(SHORTCUT_ID, 0, PACKAGE_NAME);
+    public void testGetPeopleTileFromPersistentStorageNoConversation() throws RemoteException {
+        when(mIPeopleManager.getConversation(TEST_PACKAGE_A, 0, SHORTCUT_ID)).thenReturn(null);
+        PeopleTileKey key = new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A);
         PeopleSpaceTile tile = mManager.getTileFromPersistentStorage(key);
         assertThat(tile).isNull();
     }
 
     @Test
     public void testRequestPinAppWidgetExistingConversation() throws Exception {
-        when(mMockContext.getPackageName()).thenReturn(PACKAGE_NAME);
-        when(mMockContext.getUserId()).thenReturn(0);
-        when(mIPeopleManager.getConversation(PACKAGE_NAME, 0, SHORTCUT_ID))
-                .thenReturn(getConversationWithShortcutId(SHORTCUT_ID));
+        ConversationChannel channel = getConversationWithShortcutId(
+                new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A));
+        when(mIPeopleManager.getConversation(TEST_PACKAGE_A, 0, SHORTCUT_ID))
+                .thenReturn(channel);
         when(mAppWidgetManager.requestPinAppWidget(any(), any(), any())).thenReturn(true);
 
         ShortcutInfo info = new ShortcutInfo.Builder(mMockContext, SHORTCUT_ID).build();
-        boolean valid = mManager.requestPinAppWidget(info);
+        boolean valid = mManager.requestPinAppWidget(info, new Bundle());
 
         assertThat(valid).isTrue();
         verify(mAppWidgetManager, times(1)).requestPinAppWidget(
@@ -1047,17 +1184,66 @@
 
     @Test
     public void testRequestPinAppWidgetNoConversation() throws Exception {
-        when(mMockContext.getPackageName()).thenReturn(PACKAGE_NAME);
-        when(mMockContext.getUserId()).thenReturn(0);
-        when(mIPeopleManager.getConversation(PACKAGE_NAME, 0, SHORTCUT_ID)).thenReturn(null);
+        when(mIPeopleManager.getConversation(TEST_PACKAGE_A, 0, SHORTCUT_ID)).thenReturn(null);
 
         ShortcutInfo info = new ShortcutInfo.Builder(mMockContext, SHORTCUT_ID).build();
-        boolean valid = mManager.requestPinAppWidget(info);
+        boolean valid = mManager.requestPinAppWidget(info, new Bundle());
 
         assertThat(valid).isFalse();
         verify(mAppWidgetManager, never()).requestPinAppWidget(any(), any(), any());
     }
 
+    @Test
+    public void testAugmentTileFromNotifications() {
+        PeopleSpaceTile tile =
+                new PeopleSpaceTile
+                        .Builder(SHORTCUT_ID, "userName", ICON, new Intent())
+                        .setPackageName(TEST_PACKAGE_A)
+                        .setUserHandle(new UserHandle(0))
+                        .build();
+        PeopleSpaceTile actual = mManager.augmentTileFromNotifications(tile, EMPTY_STRING,
+                        Map.of(new PeopleTileKey(mNotificationEntry),
+                                new HashSet<>(Collections.singleton(mNotificationEntry))));
+
+        assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_CONTENT_1);
+    }
+
+    @Test
+    public void testAugmentTileFromNotificationsDifferentShortcutId() {
+        PeopleSpaceTile tile =
+                new PeopleSpaceTile
+                        .Builder(OTHER_SHORTCUT_ID, "userName", ICON, new Intent())
+                        .setPackageName(TEST_PACKAGE_A)
+                        .setUserHandle(new UserHandle(0))
+                        .build();
+        PeopleSpaceTile actual = mManager
+                .augmentTileFromNotifications(tile, EMPTY_STRING,
+                        Map.of(new PeopleTileKey(mNotificationEntry),
+                                new HashSet<>(Collections.singleton(mNotificationEntry))));
+
+        assertThat(actual.getNotificationContent()).isEqualTo(null);
+    }
+
+    @Test
+    public void testAugmentTileFromNotificationEntryManager() {
+        PeopleSpaceTile tile =
+                new PeopleSpaceTile
+                        .Builder(SHORTCUT_ID, "userName", ICON, new Intent())
+                        .setPackageName(TEST_PACKAGE_A)
+                        .setUserHandle(new UserHandle(0))
+                        .build();
+        when(mNotificationEntryManager.getVisibleNotifications())
+                .thenReturn(List.of(mNotificationEntry));
+
+        PeopleSpaceTile actual =
+                mManager.augmentTileFromNotificationEntryManager(tile);
+
+        assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_CONTENT_1);
+
+        verify(mNotificationEntryManager, times(1))
+                .getVisibleNotifications();
+    }
+
     /**
      * Adds another widget for {@code PERSON_TILE} with widget ID: {@code
      * SECOND_WIDGET_ID_WITH_SHORTCUT}.
@@ -1074,10 +1260,11 @@
         setStorageForTile(tile.getId(), tile.getPackageName(), widgetId, tile.getContactUri());
         Bundle options = new Bundle();
         options.putParcelable(OPTIONS_PEOPLE_TILE, tile);
+        ConversationChannel channel = getConversationWithShortcutId(new PeopleTileKey(tile));
         when(mAppWidgetManager.getAppWidgetOptions(eq(widgetId)))
                 .thenReturn(options);
-        when(mIPeopleManager.getConversation(tile.getPackageName(), 0, tile.getId())).thenReturn(
-                getConversationWithShortcutId(tile.getId()));
+        when(mIPeopleManager.getConversation(tile.getPackageName(), 0, tile.getId()))
+                .thenReturn(channel);
         when(mPackageManager.checkPermission(any(), eq(tile.getPackageName()))).thenReturn(
                 PERMISSION_GRANTED);
     }
@@ -1085,17 +1272,19 @@
     /**
      * Returns a single conversation associated with {@code shortcutId}.
      */
-    private ConversationChannel getConversationWithShortcutId(String shortcutId) throws Exception {
-        return getConversationWithShortcutId(shortcutId, Arrays.asList());
+    private ConversationChannel getConversationWithShortcutId(PeopleTileKey key) throws Exception {
+        return getConversationWithShortcutId(key, Arrays.asList());
     }
 
     /**
      * Returns a single conversation associated with {@code shortcutId} and {@code statuses}.
      */
-    private ConversationChannel getConversationWithShortcutId(String shortcutId,
+    private ConversationChannel getConversationWithShortcutId(PeopleTileKey key,
             List<ConversationStatus> statuses) throws Exception {
-        ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mContext, shortcutId).setLongLabel(
-                "name").setPerson(PERSON).build();
+        when(mMockContext.getPackageName()).thenReturn(key.getPackageName());
+        when(mMockContext.getUserId()).thenReturn(key.getUserId());
+        ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mMockContext, key.getShortcutId())
+                .setLongLabel("name").setPerson(PERSON).build();
         ConversationChannel convo = new ConversationChannel(shortcutInfo, 0, null, null,
                 0L, false, false, statuses);
         return convo;
@@ -1115,7 +1304,7 @@
         if (isMessagingStyle) {
             builder.setStyle(new Notification.MessagingStyle(PERSON)
                     .addMessage(
-                            new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT, 10,
+                            new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT_1, 10,
                                     PERSON))
             );
         }
@@ -1134,7 +1323,7 @@
         if (isMessagingStyle) {
             builder.setStyle(new Notification.MessagingStyle(PERSON)
                     .addMessage(
-                            new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT, 10,
+                            new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT_1, 10,
                                     PERSON))
             );
         }
@@ -1208,4 +1397,30 @@
         editor.putStringSet(contactUri.toString(), storedWidgetIdsByUri);
         editor.apply();
     }
+
+    private ConversationChannelWrapper getConversationChannelWrapper(String shortcutId,
+            boolean importantConversation, long lastInteractionTimestamp) throws Exception {
+        ConversationChannelWrapper convo = new ConversationChannelWrapper();
+        NotificationChannel notificationChannel = new NotificationChannel(shortcutId,
+                "channel" + shortcutId,
+                NotificationManager.IMPORTANCE_DEFAULT);
+        notificationChannel.setImportantConversation(importantConversation);
+        convo.setNotificationChannel(notificationChannel);
+        convo.setShortcutInfo(new ShortcutInfo.Builder(mContext, shortcutId).setLongLabel(
+                "name").build());
+        when(mIPeopleManager.getLastInteraction(anyString(), anyInt(),
+                eq(shortcutId))).thenReturn(lastInteractionTimestamp);
+        return convo;
+    }
+
+    private ConversationChannel getConversationChannel(String shortcutId,
+            long lastInteractionTimestamp) throws Exception {
+        ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mContext, shortcutId).setLongLabel(
+                "name").build();
+        ConversationChannel convo = new ConversationChannel(shortcutInfo, 0, null, null,
+                lastInteractionTimestamp, false);
+        when(mIPeopleManager.getLastInteraction(anyString(), anyInt(),
+                eq(shortcutId))).thenReturn(lastInteractionTimestamp);
+        return convo;
+    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerTest.kt
index 791dd12..05a1e4f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerTest.kt
@@ -28,6 +28,7 @@
 import android.testing.AndroidTestingRunner
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
+import com.android.systemui.appops.AppOpsController
 import com.android.systemui.plugins.ActivityStarter
 import com.android.systemui.privacy.logging.PrivacyLogger
 import com.android.systemui.settings.UserTracker
@@ -43,6 +44,7 @@
 import org.junit.runner.RunWith
 import org.mockito.ArgumentCaptor
 import org.mockito.ArgumentMatchers.any
+import org.mockito.ArgumentMatchers.anyBoolean
 import org.mockito.ArgumentMatchers.anyInt
 import org.mockito.ArgumentMatchers.anyString
 import org.mockito.Captor
@@ -86,6 +88,8 @@
     private lateinit var privacyLogger: PrivacyLogger
     @Mock
     private lateinit var keyguardStateController: KeyguardStateController
+    @Mock
+    private lateinit var appOpsController: AppOpsController
     @Captor
     private lateinit var dialogDismissedCaptor: ArgumentCaptor<PrivacyDialog.OnDialogDismissed>
     @Captor
@@ -131,6 +135,7 @@
                 uiExecutor,
                 privacyLogger,
                 keyguardStateController,
+                appOpsController,
                 dialogProvider
         )
     }
@@ -143,18 +148,27 @@
     }
 
     @Test
+    fun testMicMutedParameter() {
+        `when`(appOpsController.isMicMuted).thenReturn(true)
+        controller.showDialog(context)
+        backgroundExecutor.runAllReady()
+
+        verify(permissionManager).getIndicatorAppOpUsageData(true)
+    }
+
+    @Test
     fun testPermissionManagerOnlyCalledInBackgroundThread() {
         controller.showDialog(context)
-        verify(permissionManager, never()).indicatorAppOpUsageData
+        verify(permissionManager, never()).getIndicatorAppOpUsageData(anyBoolean())
         backgroundExecutor.runAllReady()
-        verify(permissionManager).indicatorAppOpUsageData
+        verify(permissionManager).getIndicatorAppOpUsageData(anyBoolean())
     }
 
     @Test
     fun testPackageManagerOnlyCalledInBackgroundThread() {
         val usage = createMockPermGroupUsage()
         `when`(usage.isPhoneCall).thenReturn(false)
-        `when`(permissionManager.indicatorAppOpUsageData).thenReturn(listOf(usage))
+        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean())).thenReturn(listOf(usage))
 
         controller.showDialog(context)
         verify(packageManager, never()).getApplicationInfoAsUser(anyString(), anyInt(), anyInt())
@@ -217,7 +231,7 @@
                 isPhoneCall = false,
                 attribution = TEST_ATTRIBUTION
         )
-        `when`(permissionManager.indicatorAppOpUsageData).thenReturn(listOf(usage))
+        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean())).thenReturn(listOf(usage))
 
         controller.showDialog(context)
         exhaustExecutors()
@@ -246,7 +260,7 @@
                 packageName = "${TEST_PACKAGE_NAME}_microphone",
                 permGroupName = PERM_MICROPHONE
         )
-        `when`(permissionManager.indicatorAppOpUsageData).thenReturn(
+        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean())).thenReturn(
                 listOf(usage_microphone, usage_camera)
         )
 
@@ -269,7 +283,7 @@
                 packageName = "${TEST_PACKAGE_NAME}_recent",
                 isActive = false
         )
-        `when`(permissionManager.indicatorAppOpUsageData).thenReturn(
+        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean())).thenReturn(
                 listOf(usage_recent, usage_active)
         )
 
@@ -292,7 +306,7 @@
                 isActive = true,
                 lastAccess = 1L
         )
-        `when`(permissionManager.indicatorAppOpUsageData).thenReturn(
+        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean())).thenReturn(
                 listOf(usage_active, usage_active_moreRecent)
         )
         controller.showDialog(context)
@@ -319,7 +333,7 @@
                 isActive = false,
                 lastAccess = 2L
         )
-        `when`(permissionManager.indicatorAppOpUsageData).thenReturn(
+        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean())).thenReturn(
                 listOf(usage_recent, usage_mostRecent, usage_moreRecent)
         )
 
@@ -342,7 +356,7 @@
                 permGroupName = PERM_LOCATION
         )
 
-        `when`(permissionManager.indicatorAppOpUsageData).thenReturn(
+        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean())).thenReturn(
                 listOf(usage_camera, usage_location, usage_microphone)
         )
         `when`(privacyItemController.micCameraAvailable).thenReturn(false)
@@ -366,7 +380,7 @@
                 permGroupName = PERM_LOCATION
         )
 
-        `when`(permissionManager.indicatorAppOpUsageData).thenReturn(
+        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean())).thenReturn(
                 listOf(usage_camera, usage_location, usage_microphone)
         )
         `when`(privacyItemController.locationAvailable).thenReturn(false)
@@ -392,7 +406,7 @@
                 permGroupName = PERM_LOCATION
         )
 
-        `when`(permissionManager.indicatorAppOpUsageData).thenReturn(
+        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean())).thenReturn(
                 listOf(usage_camera, usage_location, usage_microphone)
         )
         `when`(privacyItemController.micCameraAvailable).thenReturn(true)
@@ -416,7 +430,7 @@
                 permGroupName = PERM_LOCATION
         )
 
-        `when`(permissionManager.indicatorAppOpUsageData).thenReturn(
+        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean())).thenReturn(
                 listOf(usage_camera, usage_location, usage_microphone)
         )
         `when`(privacyItemController.micCameraAvailable).thenReturn(false)
@@ -433,7 +447,8 @@
         val usage_enterprise = createMockPermGroupUsage(
                 uid = generateUidForUser(ENT_USER_ID)
         )
-        `when`(permissionManager.indicatorAppOpUsageData).thenReturn(listOf(usage_enterprise))
+        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean()))
+                .thenReturn(listOf(usage_enterprise))
 
         controller.showDialog(context)
         exhaustExecutors()
@@ -446,7 +461,8 @@
         val usage_other = createMockPermGroupUsage(
                 uid = generateUidForUser(ENT_USER_ID + 1)
         )
-        `when`(permissionManager.indicatorAppOpUsageData).thenReturn(listOf(usage_other))
+        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean()))
+                .thenReturn(listOf(usage_other))
 
         controller.showDialog(context)
         exhaustExecutors()
@@ -514,7 +530,8 @@
     }
 
     private fun setUpDefaultMockResponses() {
-        `when`(permissionManager.indicatorAppOpUsageData).thenReturn(emptyList())
+        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean())).thenReturn(emptyList())
+        `when`(appOpsController.isMicMuted).thenReturn(false)
 
         `when`(packageManager.getApplicationInfoAsUser(anyString(), anyInt(), anyInt()))
                 .thenAnswer {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt
index bba1c6a..e4d7b1b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt
@@ -46,7 +46,7 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.ArgumentCaptor
-import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.ArgumentMatchers.anyBoolean
 import org.mockito.ArgumentMatchers.anyList
 import org.mockito.Captor
 import org.mockito.Mock
@@ -156,7 +156,7 @@
     fun testDistinctItems() {
         doReturn(listOf(AppOpItem(AppOpsManager.OP_CAMERA, TEST_UID, "", 0),
                 AppOpItem(AppOpsManager.OP_CAMERA, TEST_UID, "", 0)))
-                .`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+                .`when`(appOpsController).getActiveAppOps(anyBoolean())
 
         privacyItemController.addCallback(callback)
         executor.runAllReady()
@@ -168,7 +168,7 @@
     fun testSimilarItemsDifferentTimeStamp() {
         doReturn(listOf(AppOpItem(AppOpsManager.OP_CAMERA, TEST_UID, "", 0),
                 AppOpItem(AppOpsManager.OP_CAMERA, TEST_UID, "", 1)))
-                .`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+                .`when`(appOpsController).getActiveAppOps(anyBoolean())
 
         privacyItemController.addCallback(callback)
         executor.runAllReady()
@@ -215,7 +215,7 @@
 
     @Test
     fun testMultipleCallbacksAreUpdated() {
-        doReturn(emptyList<AppOpItem>()).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+        doReturn(emptyList<AppOpItem>()).`when`(appOpsController).getActiveAppOps(anyBoolean())
 
         val otherCallback = mock(PrivacyItemController.Callback::class.java)
         privacyItemController.addCallback(callback)
@@ -233,7 +233,7 @@
 
     @Test
     fun testRemoveCallback() {
-        doReturn(emptyList<AppOpItem>()).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+        doReturn(emptyList<AppOpItem>()).`when`(appOpsController).getActiveAppOps(anyBoolean())
         val otherCallback = mock(PrivacyItemController.Callback::class.java)
         privacyItemController.addCallback(callback)
         privacyItemController.addCallback(otherCallback)
@@ -254,7 +254,7 @@
     fun testListShouldNotHaveNull() {
         doReturn(listOf(AppOpItem(AppOpsManager.OP_ACTIVATE_VPN, TEST_UID, "", 0),
                         AppOpItem(AppOpsManager.OP_COARSE_LOCATION, TEST_UID, "", 0)))
-                .`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+                .`when`(appOpsController).getActiveAppOps(anyBoolean())
         privacyItemController.addCallback(callback)
         executor.runAllReady()
         executor.runAllReady()
@@ -292,7 +292,7 @@
 
         doReturn(listOf(AppOpItem(AppOpsManager.OP_CAMERA, TEST_UID, "", 0),
                 AppOpItem(AppOpsManager.OP_COARSE_LOCATION, TEST_UID, "", 0)))
-                .`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+                .`when`(appOpsController).getActiveAppOps(anyBoolean())
 
         privacyItemController.addCallback(callback)
         executor.runAllReady()
@@ -306,7 +306,7 @@
     @Test
     fun testNotUpdated_LocationChangeWhenOnlyMicCamera() {
         doReturn(listOf(AppOpItem(AppOpsManager.OP_COARSE_LOCATION, TEST_UID, "", 0)))
-                .`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+                .`when`(appOpsController).getActiveAppOps(anyBoolean())
 
         privacyItemController.addCallback(callback)
         changeLocation(false)
@@ -338,7 +338,7 @@
     fun testLogListUpdated() {
         doReturn(listOf(
                 AppOpItem(AppOpsManager.OP_COARSE_LOCATION, TEST_UID, TEST_PACKAGE_NAME, 0))
-        ).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+        ).`when`(appOpsController).getActiveAppOps(anyBoolean())
 
         privacyItemController.addCallback(callback)
         executor.runAllReady()
@@ -362,10 +362,10 @@
     }
 
     @Test
-    fun testListRequestedForAllUsers() {
+    fun testListRequestedShowPaused() {
         privacyItemController.addCallback(callback)
         executor.runAllReady()
-        verify(appOpsController).getActiveAppOpsForUser(UserHandle.USER_ALL)
+        verify(appOpsController).getActiveAppOps(true)
     }
 
     @Test
@@ -377,7 +377,7 @@
         doReturn(listOf(
                 AppOpItem(AppOpsManager.OP_COARSE_LOCATION, TEST_UID, TEST_PACKAGE_NAME, 0),
                 AppOpItem(AppOpsManager.OP_CAMERA, otherUserUid, TEST_PACKAGE_NAME, 0))
-        ).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+        ).`when`(appOpsController).getActiveAppOps(anyBoolean())
 
         privacyItemController.userTrackerCallback.onUserChanged(otherUser, mContext)
         executor.runAllReady()
@@ -401,7 +401,7 @@
                 AppOpItem(AppOpsManager.OP_COARSE_LOCATION, TEST_UID, TEST_PACKAGE_NAME, 0),
                 AppOpItem(AppOpsManager.OP_RECORD_AUDIO, TEST_UID, TEST_PACKAGE_NAME, 0),
                 AppOpItem(AppOpsManager.OP_PHONE_CALL_CAMERA, TEST_UID, TEST_PACKAGE_NAME, 0))
-        ).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+        ).`when`(appOpsController).getActiveAppOps(anyBoolean())
 
         privacyItemController.userTrackerCallback.onUserChanged(otherUser, mContext)
         executor.runAllReady()
@@ -424,7 +424,7 @@
                 AppOpItem(AppOpsManager.OP_COARSE_LOCATION, TEST_UID, TEST_PACKAGE_NAME, 0),
                 AppOpItem(AppOpsManager.OP_CAMERA, TEST_UID, TEST_PACKAGE_NAME, 0),
                 AppOpItem(AppOpsManager.OP_PHONE_CALL_MICROPHONE, TEST_UID, TEST_PACKAGE_NAME, 0))
-        ).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+        ).`when`(appOpsController).getActiveAppOps(anyBoolean())
 
         privacyItemController.userTrackerCallback.onUserChanged(otherUser, mContext)
         executor.runAllReady()
@@ -442,7 +442,7 @@
     fun testPassageOfTimeDoesNotRemoveIndicators() {
         doReturn(listOf(
                 AppOpItem(AppOpsManager.OP_CAMERA, TEST_UID, TEST_PACKAGE_NAME, elapsedTime)
-        )).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+        )).`when`(appOpsController).getActiveAppOps(anyBoolean())
 
         privacyItemController.addCallback(callback)
 
@@ -458,12 +458,12 @@
         // Start with some element at time 0
         doReturn(listOf(
                 AppOpItem(AppOpsManager.OP_CAMERA, TEST_UID, TEST_PACKAGE_NAME, elapsedTime)
-        )).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+        )).`when`(appOpsController).getActiveAppOps(anyBoolean())
         privacyItemController.addCallback(callback)
         executor.runAllReady()
 
         // Then remove it at time HOLD + 1
-        doReturn(emptyList<AppOpItem>()).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+        doReturn(emptyList<AppOpItem>()).`when`(appOpsController).getActiveAppOps(anyBoolean())
         fakeClock.advanceTime(PrivacyItemController.TIME_TO_HOLD_INDICATORS + 1)
 
         verify(appOpsController).addCallback(any(), capture(argCaptorCallback))
@@ -481,12 +481,12 @@
         // Start with some element at time 0
         doReturn(listOf(
                 AppOpItem(AppOpsManager.OP_CAMERA, TEST_UID, TEST_PACKAGE_NAME, elapsedTime)
-        )).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+        )).`when`(appOpsController).getActiveAppOps(anyBoolean())
         privacyItemController.addCallback(callback)
         executor.runAllReady()
 
         // Then remove it at time HOLD - 1
-        doReturn(emptyList<AppOpItem>()).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+        doReturn(emptyList<AppOpItem>()).`when`(appOpsController).getActiveAppOps(anyBoolean())
         fakeClock.advanceTime(PrivacyItemController.TIME_TO_HOLD_INDICATORS - 1)
 
         verify(appOpsController).addCallback(any(), capture(argCaptorCallback))
@@ -504,12 +504,12 @@
         // Start with some element at time 0
         doReturn(listOf(
                 AppOpItem(AppOpsManager.OP_CAMERA, TEST_UID, TEST_PACKAGE_NAME, elapsedTime)
-        )).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+        )).`when`(appOpsController).getActiveAppOps(anyBoolean())
         privacyItemController.addCallback(callback)
         executor.runAllReady()
 
         // Then remove it at time HOLD - 1
-        doReturn(emptyList<AppOpItem>()).`when`(appOpsController).getActiveAppOpsForUser(anyInt())
+        doReturn(emptyList<AppOpItem>()).`when`(appOpsController).getActiveAppOps(anyBoolean())
         fakeClock.advanceTime(PrivacyItemController.TIME_TO_HOLD_INDICATORS - 1)
 
         verify(appOpsController).addCallback(any(), capture(argCaptorCallback))
@@ -525,6 +525,30 @@
         assertTrue(privacyItemController.privacyList.isEmpty())
     }
 
+    @Test
+    fun testPausedElementsAreRemoved() {
+        val item = AppOpItem(
+                AppOpsManager.OP_RECORD_AUDIO,
+                TEST_UID,
+                TEST_PACKAGE_NAME,
+                elapsedTime
+        )
+        `when`(appOpsController.getActiveAppOps(anyBoolean())).thenReturn(listOf(item))
+        privacyItemController.addCallback(callback)
+        executor.runAllReady()
+
+        item.isDisabled = true
+        fakeClock.advanceTime(1)
+        verify(appOpsController).addCallback(any(), capture(argCaptorCallback))
+        argCaptorCallback.value.onActiveStateChanged(
+                AppOpsManager.OP_CAMERA, TEST_UID, TEST_PACKAGE_NAME, false)
+
+        executor.runAllReady()
+
+        verify(callback).onPrivacyItemsChanged(emptyList())
+        assertTrue(privacyItemController.privacyList.isEmpty())
+    }
+
     private fun changeMicCamera(value: Boolean?) = changeProperty(MIC_CAMERA, value)
     private fun changeLocation(value: Boolean?) = changeProperty(LOCATION_INDICATOR, value)
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java
index bacc493..53eae8c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java
@@ -32,6 +32,7 @@
 import com.android.internal.logging.UiEventLogger;
 import com.android.internal.logging.testing.UiEventLoggerFake;
 import com.android.systemui.SysuiTestCase;
+import com.android.systemui.classifier.FalsingManagerFake;
 import com.android.systemui.dump.DumpManager;
 import com.android.systemui.media.MediaHost;
 import com.android.systemui.plugins.qs.QSTileView;
@@ -94,6 +95,7 @@
     QSTileView mQSTileView;
     @Mock
     PagedTileLayout mPagedTileLayout;
+    FalsingManagerFake mFalsingManager = new FalsingManagerFake();
     @Mock
     FeatureFlags mFeatureFlags;
 
@@ -121,7 +123,7 @@
                 mQSTileHost, mQSCustomizerController, true, mMediaHost,
                 mQSTileRevealControllerFactory, mDumpManager, mMetricsLogger, mUiEventLogger,
                 mQSLogger, mBrightnessControllerFactory, mToggleSliderViewControllerFactory,
-                mFeatureFlags
+                mFalsingManager, mFeatureFlags
         );
 
         mController.init();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java
index d236023..4bba0d0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java
@@ -233,6 +233,11 @@
     }
 
     @Test
+    public void testGetTileLabel() {
+        assertEquals(mContext.getString(R.string.wallet_title), mTile.getTileLabel().toString());
+    }
+
+    @Test
     public void testHandleUpdateState_hasCard_deviceLocked_tileInactive() {
         when(mKeyguardStateController.isUnlocked()).thenReturn(false);
         QSTile.State state = new QSTile.State();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java
index 03f93fa..8c7d762 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java
@@ -82,7 +82,7 @@
         when(bitmap.getConfig()).thenReturn(Bitmap.Config.HARDWARE);
         ScreenshotNotificationSmartActionsProvider smartActionsProvider = mock(
                 ScreenshotNotificationSmartActionsProvider.class);
-        when(smartActionsProvider.getActions(any(), any(), any(), any(), any()))
+        when(smartActionsProvider.getActions(any(), any(), any(), any(), any(), any()))
             .thenThrow(RuntimeException.class);
         CompletableFuture<List<Notification.Action>> smartActionsFuture =
                 mScreenshotSmartActions.getSmartActionsFuture(
@@ -128,7 +128,7 @@
                 mScreenshotSmartActions.getSmartActionsFuture(
                         "", Uri.parse("content://autority/data"), bitmap, mSmartActionsProvider,
                         true, UserHandle.of(UserHandle.myUserId()));
-        verify(mSmartActionsProvider, never()).getActions(any(), any(), any(), any(), any());
+        verify(mSmartActionsProvider, never()).getActions(any(), any(), any(), any(), any(), any());
         assertNotNull(smartActionsFuture);
         List<Notification.Action> smartActions = smartActionsFuture.get(5, TimeUnit.MILLISECONDS);
         assertEquals(Collections.emptyList(), smartActions);
@@ -142,7 +142,8 @@
         mScreenshotSmartActions.getSmartActionsFuture(
                 "", Uri.parse("content://autority/data"), bitmap, mSmartActionsProvider, true,
                 UserHandle.of(UserHandle.myUserId()));
-        verify(mSmartActionsProvider, times(1)).getActions(any(), any(), any(), any(), any());
+        verify(mSmartActionsProvider, times(1)).getActions(
+                any(), any(), any(), any(), any(), any());
     }
 
     // Tests for a hardware bitmap, a completed future is returned.
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java
index 12e341a5..5d29f52 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java
@@ -31,7 +31,6 @@
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
 
-import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.anyInt;
 import static org.mockito.Mockito.anyString;
@@ -239,7 +238,7 @@
 
         when(mBuilder.build()).thenReturn(mock(PriorityOnboardingDialogController.class));
 
-        when(mPeopleSpaceWidgetManager.requestPinAppWidget(any())).thenReturn(true);
+        when(mPeopleSpaceWidgetManager.requestPinAppWidget(any(), any())).thenReturn(true);
     }
 
     @Test
@@ -1289,7 +1288,7 @@
         mNotificationInfo.findViewById(R.id.done).performClick();
 
         // THEN the user is presented with the People Tile pinning request
-        verify(mPeopleSpaceWidgetManager, times(1)).requestPinAppWidget(any());
+        verify(mPeopleSpaceWidgetManager, times(1)).requestPinAppWidget(any(), any());
     }
 
     @Test
@@ -1325,7 +1324,7 @@
         mNotificationInfo.findViewById(R.id.done).performClick();
 
         // THEN the user is not presented with the People Tile pinning request
-        verify(mPeopleSpaceWidgetManager, never()).requestPinAppWidget(mShortcutInfo);
+        verify(mPeopleSpaceWidgetManager, never()).requestPinAppWidget(eq(mShortcutInfo), any());
     }
 
     @Test
@@ -1364,6 +1363,6 @@
         mNotificationInfo.findViewById(R.id.done).performClick();
 
         // THEN the user is not presented with the People Tile pinning request
-        verify(mPeopleSpaceWidgetManager, never()).requestPinAppWidget(mShortcutInfo);
+        verify(mPeopleSpaceWidgetManager, never()).requestPinAppWidget(eq(mShortcutInfo), any());
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java
index 67fd5eb..0e3e0cc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java
@@ -37,6 +37,8 @@
 import com.android.systemui.R;
 import com.android.systemui.SysuiBaseFragmentTest;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
+import com.android.systemui.statusbar.events.PrivacyDotViewController;
+import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
 import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController;
 import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallListener;
 
@@ -58,6 +60,8 @@
     private View mCenteredNotificationAreaView;
     private StatusBarStateController mStatusBarStateController;
     private OngoingCallController mOngoingCallController;
+    private SystemStatusAnimationScheduler mAnimationScheduler;
+    private PrivacyDotViewController mDotViewController;
 
     public CollapsedStatusBarFragmentTest() {
         super(CollapsedStatusBarFragment.class);
@@ -180,7 +184,7 @@
         Mockito.verify(mOngoingCallController).addCallback(ongoingCallListenerCaptor.capture());
         OngoingCallListener listener = Objects.requireNonNull(ongoingCallListenerCaptor.getValue());
 
-        when(mOngoingCallController.getHasOngoingCall()).thenReturn(true);
+        when(mOngoingCallController.hasOngoingCall()).thenReturn(true);
         listener.onOngoingCallStarted(/* animate= */ false);
 
         assertEquals(View.VISIBLE,
@@ -201,7 +205,7 @@
         Mockito.verify(mOngoingCallController).addCallback(ongoingCallListenerCaptor.capture());
         OngoingCallListener listener = Objects.requireNonNull(ongoingCallListenerCaptor.getValue());
 
-        when(mOngoingCallController.getHasOngoingCall()).thenReturn(false);
+        when(mOngoingCallController.hasOngoingCall()).thenReturn(false);
         listener.onOngoingCallEnded(/* animate= */ false);
 
         assertEquals(View.GONE,
@@ -212,6 +216,11 @@
     @Override
     protected Fragment instantiate(Context context, String className, Bundle arguments) {
         mOngoingCallController = mock(OngoingCallController.class);
-        return new CollapsedStatusBarFragment(mOngoingCallController);
+        mAnimationScheduler = mock(SystemStatusAnimationScheduler.class);
+        mDotViewController = mock(PrivacyDotViewController.class);
+        return new CollapsedStatusBarFragment(
+                mOngoingCallController,
+                mAnimationScheduler,
+                mDotViewController);
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
index 08d6d2d..11f96c8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
@@ -38,6 +38,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.app.IWallpaperManager;
 import android.app.Notification;
 import android.app.StatusBarManager;
 import android.app.trust.TrustManager;
@@ -113,6 +114,8 @@
 import com.android.systemui.statusbar.SuperStatusBarViewFactory;
 import com.android.systemui.statusbar.VibratorHelper;
 import com.android.systemui.statusbar.charging.WiredChargingRippleController;
+import com.android.systemui.statusbar.events.PrivacyDotViewController;
+import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
 import com.android.systemui.statusbar.notification.DynamicPrivacyController;
 import com.android.systemui.statusbar.notification.NotificationEntryListener;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
@@ -263,8 +266,11 @@
     @Mock private BrightnessSlider.Factory mBrightnessSliderFactory;
     @Mock private WiredChargingRippleController mWiredChargingRippleController;
     @Mock private OngoingCallController mOngoingCallController;
+    @Mock private SystemStatusAnimationScheduler mAnimationScheduler;
+    @Mock private PrivacyDotViewController mDotViewController;
     @Mock private TunerService mTunerService;
     @Mock private FeatureFlags mFeatureFlags;
+    @Mock private IWallpaperManager mWallpaperManager;
     private ShadeController mShadeController;
     private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
     private InitController mInitController = new InitController();
@@ -323,7 +329,8 @@
 
         when(mRemoteInputManager.getController()).thenReturn(mRemoteInputController);
 
-        WakefulnessLifecycle wakefulnessLifecycle = new WakefulnessLifecycle();
+        WakefulnessLifecycle wakefulnessLifecycle =
+                new WakefulnessLifecycle(mContext, mWallpaperManager);
         wakefulnessLifecycle.dispatchStartedWakingUp(PowerManager.WAKE_REASON_UNKNOWN);
         wakefulnessLifecycle.dispatchFinishedWakingUp();
 
@@ -429,6 +436,8 @@
                 mBrightnessSliderFactory,
                 mWiredChargingRippleController,
                 mOngoingCallController,
+                mAnimationScheduler,
+                mDotViewController,
                 mTunerService,
                 mFeatureFlags);
         when(mKeyguardViewMediator.registerStatusBar(any(StatusBar.class), any(ViewGroup.class),
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt
index d87d1d1..c244290 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt
@@ -19,14 +19,16 @@
 import android.app.Notification
 import android.app.PendingIntent
 import android.app.Person
+import android.content.Intent
 import android.service.notification.NotificationListenerService.REASON_USER_STOPPED
-import androidx.test.filters.SmallTest
 import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.view.LayoutInflater
 import android.widget.LinearLayout
+import androidx.test.filters.SmallTest
 import com.android.systemui.R
 import com.android.systemui.SysuiTestCase
+import com.android.systemui.plugins.ActivityStarter
 import com.android.systemui.statusbar.FeatureFlags
 import com.android.systemui.statusbar.notification.collection.NotificationEntry
 import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
@@ -43,6 +45,7 @@
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.verify
 import org.mockito.Mockito.never
+import org.mockito.Mockito.times
 import org.mockito.Mockito.`when`
 import org.mockito.MockitoAnnotations
 
@@ -55,6 +58,7 @@
     private lateinit var notifCollectionListener: NotifCollectionListener
 
     @Mock private lateinit var mockOngoingCallListener: OngoingCallListener
+    @Mock private lateinit var mockActivityStarter: ActivityStarter
 
     private lateinit var chipView: LinearLayout
 
@@ -71,7 +75,8 @@
         `when`(featureFlags.isOngoingCallStatusBarChipEnabled).thenReturn(true)
         val notificationCollection = mock(CommonNotifCollection::class.java)
 
-        controller = OngoingCallController(notificationCollection, featureFlags, FakeSystemClock())
+        controller = OngoingCallController(
+                notificationCollection, featureFlags, FakeSystemClock(), mockActivityStarter)
         controller.init()
         controller.addCallback(mockOngoingCallListener)
         controller.setChipView(chipView)
@@ -111,22 +116,24 @@
 
     @Test
     fun hasOngoingCall_noOngoingCallNotifSent_returnsFalse() {
-        assertThat(controller.hasOngoingCall).isFalse()
+        assertThat(controller.hasOngoingCall()).isFalse()
     }
 
     @Test
     fun hasOngoingCall_ongoingCallNotifSentAndChipViewSet_returnsTrue() {
         notifCollectionListener.onEntryUpdated(createOngoingCallNotifEntry())
 
-        assertThat(controller.hasOngoingCall).isTrue()
+        assertThat(controller.hasOngoingCall()).isTrue()
     }
 
     @Test
-    fun hasOngoingCall_ongoingCallNotifSentButNoChipView_returnsFalse() {
-        controller.setChipView(null)
+    fun hasOngoingCall_ongoingCallNotifSentButInvalidChipView_returnsFalse() {
+        val invalidChipView = LinearLayout(context)
+        controller.setChipView(invalidChipView)
+
         notifCollectionListener.onEntryUpdated(createOngoingCallNotifEntry())
 
-        assertThat(controller.hasOngoingCall).isFalse()
+        assertThat(controller.hasOngoingCall()).isFalse()
     }
 
     @Test
@@ -136,12 +143,42 @@
         notifCollectionListener.onEntryUpdated(ongoingCallNotifEntry)
         notifCollectionListener.onEntryRemoved(ongoingCallNotifEntry, REASON_USER_STOPPED)
 
-        assertThat(controller.hasOngoingCall).isFalse()
+        assertThat(controller.hasOngoingCall()).isFalse()
+    }
+
+    /**
+     * This test fakes a theme change during an ongoing call.
+     *
+     * When a theme change happens, [CollapsedStatusBarFragment] and its views get re-created, so
+     * [OngoingCallController.setChipView] gets called with a new view. If there's an active ongoing
+     * call when the theme changes, the new view needs to be updated with the call information.
+     */
+    @Test
+    fun setChipView_whenHasOngoingCallIsTrue_listenerNotifiedWithNewView() {
+        // Start an ongoing call.
+        notifCollectionListener.onEntryUpdated(createOngoingCallNotifEntry())
+
+        lateinit var newChipView: LinearLayout
+        TestableLooper.get(this).runWithLooper {
+            newChipView = LayoutInflater.from(mContext)
+                    .inflate(R.layout.ongoing_call_chip, null) as LinearLayout
+        }
+
+        // Change the chip view associated with the controller.
+        controller.setChipView(newChipView)
+
+        // Verify the listener was notified once for the initial call and again when the new view
+        // was set.
+        verify(mockOngoingCallListener, times(2)).onOngoingCallStarted(anyBoolean())
     }
 
     private fun createOngoingCallNotifEntry(): NotificationEntry {
         val notificationEntryBuilder = NotificationEntryBuilder()
         notificationEntryBuilder.modifyNotification(context).style = ongoingCallStyle
+
+        val contentIntent = mock(PendingIntent::class.java)
+        `when`(contentIntent.intent).thenReturn(mock(Intent::class.java))
+        notificationEntryBuilder.modifyNotification(context).setContentIntent(contentIntent)
         return notificationEntryBuilder.build()
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index 4471778..f33c9e8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -36,7 +36,6 @@
 
 import android.app.Instrumentation;
 import android.net.ConnectivityManager;
-import android.net.LinkProperties;
 import android.net.Network;
 import android.net.NetworkCapabilities;
 import android.net.NetworkRequest;
@@ -130,7 +129,6 @@
     protected int mSubId;
 
     private NetworkCapabilities mNetCapabilities;
-    private Network mNetwork;
     private ConnectivityManager.NetworkCallback mDefaultCallbackInWifiTracker;
     private ConnectivityManager.NetworkCallback mDefaultCallbackInNetworkController;
     private ConnectivityManager.NetworkCallback mNetworkCallback;
@@ -175,10 +173,8 @@
         mMockCm = mock(ConnectivityManager.class);
         mMockBd = mock(BroadcastDispatcher.class);
         mMockNsm = mock(NetworkScoreManager.class);
-        mNetwork = mock(Network.class);
         mMockSubDefaults = mock(SubscriptionDefaults.class);
         mNetCapabilities = new NetworkCapabilities();
-        when(mNetwork.getNetId()).thenReturn(0);
         when(mMockTm.isDataCapable()).thenReturn(true);
         when(mMockTm.createForSubscriptionId(anyInt())).thenReturn(mMockTm);
         doAnswer(invocation -> {
@@ -323,80 +319,87 @@
 
     public void setConnectivityViaCallbackInNetworkControllerForVcn(
             int networkType, boolean validated, boolean isConnected, VcnTransportInfo info) {
-        mNetCapabilities.setTransportInfo(info);
-        setConnectivityCommon(networkType, validated, isConnected);
+        final NetworkCapabilities.Builder builder =
+                new NetworkCapabilities.Builder(mNetCapabilities);
+        builder.setTransportInfo(info);
+        setConnectivityCommon(builder, networkType, validated, isConnected);
         mDefaultCallbackInNetworkController.onCapabilitiesChanged(
-                mNetwork, new NetworkCapabilities(mNetCapabilities));
+                mock(Network.class), builder.build());
     }
 
     public void setConnectivityViaCallbackInNetworkController(
             int networkType, boolean validated, boolean isConnected, WifiInfo wifiInfo) {
+        final NetworkCapabilities.Builder builder =
+                new NetworkCapabilities.Builder(mNetCapabilities);
         if (networkType == NetworkCapabilities.TRANSPORT_WIFI) {
-            mNetCapabilities.setTransportInfo(wifiInfo);
+            builder.setTransportInfo(wifiInfo);
         }
-        setConnectivityCommon(networkType, validated, isConnected);
+        setConnectivityCommon(builder, networkType, validated, isConnected);
         mDefaultCallbackInNetworkController.onCapabilitiesChanged(
-                mNetwork, new NetworkCapabilities(mNetCapabilities));
+                mock(Network.class), builder.build());
     }
 
     public void setConnectivityViaCallbackInWifiTracker(
             int networkType, boolean validated, boolean isConnected, WifiInfo wifiInfo) {
+        final NetworkCapabilities.Builder builder =
+                new NetworkCapabilities.Builder(mNetCapabilities);
         if (networkType == NetworkCapabilities.TRANSPORT_WIFI) {
-            mNetCapabilities.setTransportInfo(wifiInfo);
+            builder.setTransportInfo(wifiInfo);
         }
-        setConnectivityCommon(networkType, validated, isConnected);
+        setConnectivityCommon(builder, networkType, validated, isConnected);
         if (networkType == NetworkCapabilities.TRANSPORT_WIFI) {
             if (isConnected) {
-                mNetworkCallback.onAvailable(mNetwork,
-                        new NetworkCapabilities(mNetCapabilities), new LinkProperties(), false);
-                mNetworkCallback.onCapabilitiesChanged(
-                        mNetwork, new NetworkCapabilities(mNetCapabilities));
+                final NetworkCapabilities newCap = builder.build();
+                mNetworkCallback.onAvailable(mock(Network.class));
+                mNetworkCallback.onCapabilitiesChanged(mock(Network.class), newCap);
             } else {
-                mNetworkCallback.onLost(mNetwork);
+                mNetworkCallback.onLost(mock(Network.class));
             }
         }
     }
 
     public void setConnectivityViaCallbackInWifiTrackerForVcn(
             int networkType, boolean validated, boolean isConnected, VcnTransportInfo info) {
-        mNetCapabilities.setTransportInfo(info);
-        setConnectivityCommon(networkType, validated, isConnected);
+        final NetworkCapabilities.Builder builder =
+                new NetworkCapabilities.Builder(mNetCapabilities);
+        builder.setTransportInfo(info);
+        setConnectivityCommon(builder, networkType, validated, isConnected);
         if (networkType == NetworkCapabilities.TRANSPORT_CELLULAR) {
             if (isConnected) {
-                mNetworkCallback.onAvailable(mNetwork,
-                        new NetworkCapabilities(mNetCapabilities), new LinkProperties(), false);
-                mNetworkCallback.onCapabilitiesChanged(
-                        mNetwork, new NetworkCapabilities(mNetCapabilities));
-                mDefaultCallbackInWifiTracker.onCapabilitiesChanged(
-                        mNetwork, new NetworkCapabilities(mNetCapabilities));
+                final NetworkCapabilities newCap = builder.build();
+                mNetworkCallback.onAvailable(mock(Network.class));
+                mNetworkCallback.onCapabilitiesChanged(mock(Network.class), newCap);
+                mDefaultCallbackInWifiTracker.onCapabilitiesChanged(mock(Network.class), newCap);
             } else {
-                mNetworkCallback.onLost(mNetwork);
+                mNetworkCallback.onLost(mock(Network.class));
             }
         }
     }
 
     public void setConnectivityViaDefaultCallbackInWifiTracker(
             int networkType, boolean validated, boolean isConnected, WifiInfo wifiInfo) {
+        final NetworkCapabilities.Builder builder =
+                new NetworkCapabilities.Builder(mNetCapabilities);
         if (networkType == NetworkCapabilities.TRANSPORT_WIFI) {
-            mNetCapabilities.setTransportInfo(wifiInfo);
+            builder.setTransportInfo(wifiInfo);
         }
-        setConnectivityCommon(networkType, validated, isConnected);
+        setConnectivityCommon(builder, networkType, validated, isConnected);
         mDefaultCallbackInWifiTracker.onCapabilitiesChanged(
-                mNetwork, new NetworkCapabilities(mNetCapabilities));
+                mock(Network.class), builder.build());
     }
 
-    private void setConnectivityCommon(
+    private static void setConnectivityCommon(NetworkCapabilities.Builder builder,
         int networkType, boolean validated, boolean isConnected){
         // TODO: Separate out into several NetworkCapabilities.
         if (isConnected) {
-            mNetCapabilities.addTransportType(networkType);
+            builder.addTransportType(networkType);
         } else {
-            mNetCapabilities.removeTransportType(networkType);
+            builder.removeTransportType(networkType);
         }
         if (validated) {
-            mNetCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
+            builder.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
         } else {
-            mNetCapabilities.removeCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
+            builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
         }
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SecurityControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SecurityControllerTest.java
index ed87a40..c38a547 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SecurityControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SecurityControllerTest.java
@@ -202,8 +202,8 @@
     @Test
     public void testNetworkRequest() {
         verify(mConnectivityManager, times(1)).registerNetworkCallback(argThat(
-                (NetworkRequest request) -> request.networkCapabilities.getUids() == null
-                        && request.networkCapabilities.getCapabilities().length == 0
+                (NetworkRequest request) ->
+                        request.equals(new NetworkRequest.Builder().clearCapabilities().build())
                 ), any(NetworkCallback.class));
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java
index 64127b9..8ad6271 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java
@@ -66,6 +66,10 @@
     }
 
     @Override
+    public void setCallStrengthIcons(String slot, List<CallIndicatorIconState> states) {
+    }
+
+    @Override
     public void setNoCallingIcons(String slot, List<CallIndicatorIconState> states) {
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java
index 653946e..6f6ef72 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java
@@ -71,15 +71,17 @@
 public class WalletScreenControllerTest extends SysuiTestCase {
 
     private static final int MAX_CARDS = 10;
+    private static final int CARD_CAROUSEL_WIDTH = 10;
     private static final String CARD_ID = "card_id";
     private static final CharSequence SHORTCUT_SHORT_LABEL = "View all";
     private static final CharSequence SHORTCUT_LONG_LABEL = "Add a payment method";
     private static final CharSequence SERVICE_LABEL = "Wallet app";
-    private final WalletView mWalletView = new WalletView(mContext);
     private final Drawable mWalletLogo = mContext.getDrawable(android.R.drawable.ic_lock_lock);
     private final Intent mWalletIntent = new Intent(QuickAccessWalletService.ACTION_VIEW_WALLET)
             .setComponent(new ComponentName(mContext.getPackageName(), "WalletActivity"));
 
+    private WalletView mWalletView;
+
     @Mock
     QuickAccessWalletClient mWalletClient;
     @Mock
@@ -104,6 +106,8 @@
         MockitoAnnotations.initMocks(this);
         mTestableLooper = TestableLooper.get(this);
         when(mUserTracker.getUserContext()).thenReturn(mContext);
+        mWalletView = new WalletView(mContext);
+        mWalletView.getCardCarousel().setExpectedViewWidth(CARD_CAROUSEL_WIDTH);
         when(mWalletClient.getLogo()).thenReturn(mWalletLogo);
         when(mWalletClient.getShortcutLongLabel()).thenReturn(SHORTCUT_LONG_LABEL);
         when(mWalletClient.getShortcutShortLabel()).thenReturn(SHORTCUT_SHORT_LABEL);
@@ -132,7 +136,12 @@
 
         verify(mWalletClient).getWalletCards(any(), any(), mCallbackCaptor.capture());
 
-        mCallbackCaptor.getValue().onWalletCardsRetrieved(response);
+        QuickAccessWalletClient.OnWalletCardsRetrievedCallback callback =
+                mCallbackCaptor.getValue();
+
+        assertEquals(mController, callback);
+
+        callback.onWalletCardsRetrieved(response);
         mTestableLooper.processAllMessages();
 
         assertEquals(VISIBLE, mWalletView.getCardCarouselContainer().getVisibility());
diff --git a/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values-ne/strings.xml b/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values-ne/strings.xml
index 8765aeb..0b019ae8 100644
--- a/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values-ne/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values-ne/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="display_cutout_emulation_overlay" msgid="1677693377327336341">"कुनाको कटआउट"</string>
+    <string name="display_cutout_emulation_overlay" msgid="1677693377327336341">"कर्नर कटआउट"</string>
 </resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ne/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ne/strings.xml
index 61653c3..ac29086 100644
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ne/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ne/strings.xml
@@ -17,5 +17,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"झरनाको कटआउट"</string>
+    <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"वाटरफल कटआउट"</string>
 </resources>
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 05d4ba5..9abe00f 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -149,7 +149,6 @@
  */
 public class AccessibilityManagerService extends IAccessibilityManager.Stub
         implements AbstractAccessibilityServiceConnection.SystemSupport,
-        AccessibilityTrace,
         AccessibilityUserState.ServiceInfoChangeListener,
         AccessibilityWindowManager.AccessibilityEventSender,
         AccessibilitySecurityPolicy.AccessibilityUserManager,
@@ -244,7 +243,7 @@
     final SparseArray<AccessibilityUserState> mUserStates = new SparseArray<>();
 
     private final UiAutomationManager mUiAutomationManager = new UiAutomationManager(mLock);
-    private final WindowManagerInternal.AccessibilityControllerInternal mA11yController;
+    private final AccessibilityTraceManager mTraceManager;
 
     private int mCurrentUserId = UserHandle.USER_SYSTEM;
 
@@ -290,7 +289,8 @@
         mContext = context;
         mPowerManager =  (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
         mWindowManagerService = LocalServices.getService(WindowManagerInternal.class);
-        mA11yController = mWindowManagerService.getAccessibilityController();
+        mTraceManager = new AccessibilityTraceManager(
+                mWindowManagerService.getAccessibilityController(), this);
         mMainHandler = new MainHandler(mContext.getMainLooper());
         mActivityTaskManagerService = LocalServices.getService(ActivityTaskManagerInternal.class);
         mPackageManager = packageManager;
@@ -311,7 +311,8 @@
         mContext = context;
         mPowerManager = context.getSystemService(PowerManager.class);
         mWindowManagerService = LocalServices.getService(WindowManagerInternal.class);
-        mA11yController = mWindowManagerService.getAccessibilityController();
+        mTraceManager = new AccessibilityTraceManager(
+                mWindowManagerService.getAccessibilityController(), this);
         mMainHandler = new MainHandler(mContext.getMainLooper());
         mActivityTaskManagerService = LocalServices.getService(ActivityTaskManagerInternal.class);
         mPackageManager = mContext.getPackageManager();
@@ -338,24 +339,25 @@
 
     @Override
     public int getCurrentUserIdLocked() {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".getCurrentUserIdLocked");
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".getCurrentUserIdLocked");
         }
         return mCurrentUserId;
     }
 
     @Override
     public boolean isAccessibilityButtonShown() {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".isAccessibilityButtonShown");
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".isAccessibilityButtonShown");
         }
         return mIsAccessibilityButtonShown;
     }
 
     @Override
     public void onServiceInfoChangedLocked(AccessibilityUserState userState) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".onServiceInfoChangedLocked", "userState=" + userState);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(
+                    LOG_TAG + ".onServiceInfoChangedLocked", "userState=" + userState);
         }
         mSecurityPolicy.onBoundServicesChangedLocked(userState.mUserId,
                 userState.mBoundServices);
@@ -376,6 +378,12 @@
         }
     }
 
+    AccessibilityUserState getCurrentUserState() {
+        synchronized (mLock) {
+            return getCurrentUserStateLocked();
+        }
+    }
+
     private AccessibilityUserState getUserState(int userId) {
         synchronized (mLock) {
             return getUserStateLocked(userId);
@@ -416,8 +424,8 @@
         PackageMonitor monitor = new PackageMonitor() {
             @Override
             public void onSomePackagesChanged() {
-                if (isA11yTracingEnabled()) {
-                    logTrace(LOG_TAG + ".PM.onSomePackagesChanged");
+                if (mTraceManager.isA11yTracingEnabled()) {
+                    mTraceManager.logTrace(LOG_TAG + ".PM.onSomePackagesChanged");
                 }
 
                 synchronized (mLock) {
@@ -444,8 +452,8 @@
                 // mBindingServices in binderDied() during updating. Remove services from  this
                 // package from mBindingServices, and then update the user state to re-bind new
                 // versions of them.
-                if (isA11yTracingEnabled()) {
-                    logTrace(LOG_TAG + ".PM.onPackageUpdateFinished",
+                if (mTraceManager.isA11yTracingEnabled()) {
+                    mTraceManager.logTrace(LOG_TAG + ".PM.onPackageUpdateFinished",
                             "packageName=" + packageName + ";uid=" + uid);
                 }
                 synchronized (mLock) {
@@ -477,8 +485,8 @@
 
             @Override
             public void onPackageRemoved(String packageName, int uid) {
-                if (isA11yTracingEnabled()) {
-                    logTrace(LOG_TAG + ".PM.onPackageRemoved",
+                if (mTraceManager.isA11yTracingEnabled()) {
+                    mTraceManager.logTrace(LOG_TAG + ".PM.onPackageRemoved",
                             "packageName=" + packageName + ";uid=" + uid);
                 }
 
@@ -521,9 +529,10 @@
             @Override
             public boolean onHandleForceStop(Intent intent, String[] packages,
                     int uid, boolean doit) {
-                if (isA11yTracingEnabled()) {
-                    logTrace(LOG_TAG + ".PM.onHandleForceStop", "intent=" + intent + ";packages="
-                            + packages + ";uid=" + uid + ";doit=" + doit);
+                if (mTraceManager.isA11yTracingEnabled()) {
+                    mTraceManager.logTrace(LOG_TAG + ".PM.onHandleForceStop",
+                            "intent=" + intent + ";packages=" + packages + ";uid=" + uid
+                            + ";doit=" + doit);
                 }
                 synchronized (mLock) {
                     final int userId = getChangingUserId();
@@ -571,8 +580,9 @@
         mContext.registerReceiverAsUser(new BroadcastReceiver() {
             @Override
             public void onReceive(Context context, Intent intent) {
-                if (isA11yTracingEnabled()) {
-                    logTrace(LOG_TAG + ".BR.onReceive", "context=" + context + ";intent=" + intent);
+                if (mTraceManager.isA11yTracingEnabled()) {
+                    mTraceManager.logTrace(LOG_TAG + ".BR.onReceive",
+                            "context=" + context + ";intent=" + intent);
                 }
 
                 String action = intent.getAction();
@@ -658,8 +668,9 @@
 
     @Override
     public long addClient(IAccessibilityManagerClient callback, int userId) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".addClient", "callback=" + callback + ";userId=" + userId);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".addClient",
+                    "callback=" + callback + ";userId=" + userId);
         }
 
         synchronized (mLock) {
@@ -700,8 +711,9 @@
 
     @Override
     public void sendAccessibilityEvent(AccessibilityEvent event, int userId) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".sendAccessibilityEvent", "event=" + event + ";userId=" + userId);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".sendAccessibilityEvent",
+                    "event=" + event + ";userId=" + userId);
         }
         boolean dispatchEvent = false;
 
@@ -795,9 +807,9 @@
      */
     @Override
     public void registerSystemAction(RemoteAction action, int actionId) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".registerSystemAction", "action=" + action + ";actionId="
-                    + actionId);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".registerSystemAction",
+                    "action=" + action + ";actionId=" + actionId);
         }
         mSecurityPolicy.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
         getSystemActionPerformer().registerSystemAction(actionId, action);
@@ -810,8 +822,8 @@
      */
     @Override
     public void unregisterSystemAction(int actionId) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".unregisterSystemAction", "actionId=" + actionId);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".unregisterSystemAction", "actionId=" + actionId);
         }
         mSecurityPolicy.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
         getSystemActionPerformer().unregisterSystemAction(actionId);
@@ -827,8 +839,9 @@
 
     @Override
     public List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList(int userId) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".getInstalledAccessibilityServiceList", "userId=" + userId);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".getInstalledAccessibilityServiceList",
+                    "userId=" + userId);
         }
 
         synchronized (mLock) {
@@ -848,8 +861,8 @@
     @Override
     public List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int feedbackType,
             int userId) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".getEnabledAccessibilityServiceList",
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".getEnabledAccessibilityServiceList",
                     "feedbackType=" + feedbackType + ";userId=" + userId);
         }
 
@@ -881,8 +894,8 @@
 
     @Override
     public void interrupt(int userId) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".interrupt", "userId=" + userId);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".interrupt", "userId=" + userId);
         }
 
         List<IAccessibilityServiceClient> interfacesToInterrupt;
@@ -911,8 +924,8 @@
         }
         for (int i = 0, count = interfacesToInterrupt.size(); i < count; i++) {
             try {
-                if (isA11yTracingEnabled()) {
-                    logTrace(LOG_TAG + ".IAccessibilityServiceClient.onInterrupt");
+                if (mTraceManager.isA11yTracingEnabled()) {
+                    mTraceManager.logTrace(LOG_TAG + ".IAccessibilityServiceClient.onInterrupt");
                 }
                 interfacesToInterrupt.get(i).onInterrupt();
             } catch (RemoteException re) {
@@ -926,8 +939,8 @@
     public int addAccessibilityInteractionConnection(IWindow windowToken, IBinder leashToken,
             IAccessibilityInteractionConnection connection, String packageName,
             int userId) throws RemoteException {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".addAccessibilityInteractionConnection",
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".addAccessibilityInteractionConnection",
                     "windowToken=" + windowToken + "leashToken=" + leashToken + ";connection="
                             + connection + "; packageName=" + packageName + ";userId=" + userId);
         }
@@ -938,8 +951,9 @@
 
     @Override
     public void removeAccessibilityInteractionConnection(IWindow window) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".removeAccessibilityInteractionConnection", "window=" + window);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".removeAccessibilityInteractionConnection",
+                    "window=" + window);
         }
         mA11yWindowManager.removeAccessibilityInteractionConnection(window);
     }
@@ -947,8 +961,8 @@
     @Override
     public void setPictureInPictureActionReplacingConnection(
             IAccessibilityInteractionConnection connection) throws RemoteException {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".setPictureInPictureActionReplacingConnection",
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".setPictureInPictureActionReplacingConnection",
                     "connection=" + connection);
         }
         mSecurityPolicy.enforceCallingPermission(Manifest.permission.MODIFY_ACCESSIBILITY_DATA,
@@ -961,8 +975,8 @@
             IAccessibilityServiceClient serviceClient,
             AccessibilityServiceInfo accessibilityServiceInfo,
             int flags) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".registerUiTestAutomationService", "owner=" + owner
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".registerUiTestAutomationService", "owner=" + owner
                     + ";serviceClient=" + serviceClient + ";accessibilityServiceInfo="
                     + accessibilityServiceInfo + ";flags=" + flags);
         }
@@ -973,16 +987,16 @@
         synchronized (mLock) {
             mUiAutomationManager.registerUiTestAutomationServiceLocked(owner, serviceClient,
                     mContext, accessibilityServiceInfo, sIdCounter++, mMainHandler,
-                    mSecurityPolicy, this, this, mWindowManagerService, getSystemActionPerformer(),
-                    mA11yWindowManager, flags);
+                    mSecurityPolicy, this, getTraceManager(), mWindowManagerService,
+                    getSystemActionPerformer(), mA11yWindowManager, flags);
             onUserStateChangedLocked(getCurrentUserStateLocked());
         }
     }
 
     @Override
     public void unregisterUiTestAutomationService(IAccessibilityServiceClient serviceClient) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".unregisterUiTestAutomationService",
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".unregisterUiTestAutomationService",
                     "serviceClient=" + serviceClient);
         }
         synchronized (mLock) {
@@ -993,8 +1007,9 @@
     @Override
     public void temporaryEnableAccessibilityStateUntilKeyguardRemoved(
             ComponentName service, boolean touchExplorationEnabled) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".temporaryEnableAccessibilityStateUntilKeyguardRemoved",
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(
+                    LOG_TAG + ".temporaryEnableAccessibilityStateUntilKeyguardRemoved",
                     "service=" + service + ";touchExplorationEnabled=" + touchExplorationEnabled);
         }
 
@@ -1026,8 +1041,9 @@
 
     @Override
     public IBinder getWindowToken(int windowId, int userId) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".getWindowToken", "windowId=" + windowId + ";userId=" + userId);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".getWindowToken",
+                    "windowId=" + windowId + ";userId=" + userId);
         }
 
         mSecurityPolicy.enforceCallingPermission(
@@ -1069,8 +1085,8 @@
      */
     @Override
     public void notifyAccessibilityButtonClicked(int displayId, String targetName) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".notifyAccessibilityButtonClicked",
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".notifyAccessibilityButtonClicked",
                     "displayId=" + displayId + ";targetName=" + targetName);
         }
 
@@ -1099,8 +1115,9 @@
      */
     @Override
     public void notifyAccessibilityButtonVisibilityChanged(boolean shown) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".notifyAccessibilityButtonVisibilityChanged", "shown=" + shown);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".notifyAccessibilityButtonVisibilityChanged",
+                    "shown=" + shown);
         }
 
         mSecurityPolicy.enforceCallingOrSelfPermission(
@@ -1131,8 +1148,8 @@
      */
     @Override
     public void onSystemActionsChanged() {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".onSystemActionsChanged");
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".onSystemActionsChanged");
         }
 
         synchronized (mLock) {
@@ -1197,8 +1214,9 @@
 
     @Override
     public @Nullable MotionEventInjector getMotionEventInjectorForDisplayLocked(int displayId) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".getMotionEventInjectorForDisplayLocked", "displayId=" + displayId);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".getMotionEventInjectorForDisplayLocked",
+                    "displayId=" + displayId);
         }
 
         final long endMillis = SystemClock.uptimeMillis() + WAIT_MOTION_INJECTOR_TIMEOUT_MILLIS;
@@ -1411,7 +1429,7 @@
     private int getClientStateLocked(AccessibilityUserState userState) {
         return userState.getClientStateLocked(
             mUiAutomationManager.isUiAutomationRunningLocked(),
-            mA11yController.isAccessibilityTracingEnabled());
+            mTraceManager.isA11yTracingEnabled());
     }
 
     private InteractionBridge getInteractionBridge() {
@@ -1770,9 +1788,10 @@
     @Override
     public void persistComponentNamesToSettingLocked(String settingName,
             Set<ComponentName> componentNames, int userId) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".persistComponentNamesToSettingLocked", "settingName=" + settingName
-                    + ";componentNames=" + componentNames + ";userId=" + userId);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".persistComponentNamesToSettingLocked",
+                    "settingName=" + settingName + ";componentNames=" + componentNames + ";userId="
+                            + userId);
         }
 
         persistColonDelimitedSetToSettingLocked(settingName, userId, componentNames,
@@ -1859,8 +1878,9 @@
                 if (service == null) {
                     service = new AccessibilityServiceConnection(userState, mContext, componentName,
                             installedService, sIdCounter++, mMainHandler, mLock, mSecurityPolicy,
-                            this, this, mWindowManagerService, getSystemActionPerformer(),
-                            mA11yWindowManager, mActivityTaskManagerService);
+                            this, getTraceManager(), mWindowManagerService,
+                            getSystemActionPerformer(), mA11yWindowManager,
+                            mActivityTaskManagerService);
                 } else if (userState.mBoundServices.contains(service)) {
                     continue;
                 }
@@ -1892,6 +1912,12 @@
         updateAccessibilityEnabledSettingLocked(userState);
     }
 
+    void scheduleUpdateClientsIfNeeded(AccessibilityUserState userState) {
+        synchronized (mLock) {
+            scheduleUpdateClientsIfNeededLocked(userState);
+        }
+    }
+
     private void scheduleUpdateClientsIfNeededLocked(AccessibilityUserState userState) {
         final int clientState = getClientStateLocked(userState);
         if (userState.getLastSentClientStateLocked() != clientState
@@ -2737,8 +2763,9 @@
     @GuardedBy("mLock")
     @Override
     public MagnificationSpec getCompatibleMagnificationSpecLocked(int windowId) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".getCompatibleMagnificationSpecLocked", "windowId=" + windowId);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".getCompatibleMagnificationSpecLocked",
+                    "windowId=" + windowId);
         }
 
         IBinder windowToken = mA11yWindowManager.getWindowTokenForUserAndWindowIdLocked(
@@ -2752,8 +2779,8 @@
 
     @Override
     public KeyEventDispatcher getKeyEventDispatcher() {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".getKeyEventDispatcher");
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".getKeyEventDispatcher");
         }
 
         if (mKeyEventDispatcher == null) {
@@ -2768,9 +2795,10 @@
     @SuppressWarnings("AndroidFrameworkPendingIntentMutability")
     public PendingIntent getPendingIntentActivity(Context context, int requestCode, Intent intent,
             int flags) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".getPendingIntentActivity", "context=" + context + ";requestCode="
-                    + requestCode + ";intent=" + intent + ";flags=" + flags);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".getPendingIntentActivity",
+                    "context=" + context + ";requestCode=" + requestCode + ";intent=" + intent
+                            + ";flags=" + flags);
         }
 
 
@@ -2788,8 +2816,9 @@
      */
     @Override
     public void performAccessibilityShortcut(String targetName) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".performAccessibilityShortcut", "targetName=" + targetName);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".performAccessibilityShortcut",
+                    "targetName=" + targetName);
         }
 
         if ((UserHandle.getAppId(Binder.getCallingUid()) != Process.SYSTEM_UID)
@@ -2976,8 +3005,9 @@
 
     @Override
     public List<String> getAccessibilityShortcutTargets(@ShortcutType int shortcutType) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".getAccessibilityShortcutTargets", "shortcutType=" + shortcutType);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".getAccessibilityShortcutTargets",
+                    "shortcutType=" + shortcutType);
         }
 
         if (mContext.checkCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY)
@@ -3049,8 +3079,9 @@
 
     @Override
     public void sendAccessibilityEventForCurrentUserLocked(AccessibilityEvent event) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".sendAccessibilityEventForCurrentUserLocked", "event=" + event);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".sendAccessibilityEventForCurrentUserLocked",
+                    "event=" + event);
         }
 
         sendAccessibilityEventLocked(event, mCurrentUserId);
@@ -3074,8 +3105,9 @@
      */
     @Override
     public boolean sendFingerprintGesture(int gestureKeyCode) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".sendFingerprintGesture", "gestureKeyCode=" + gestureKeyCode);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".sendFingerprintGesture",
+                    "gestureKeyCode=" + gestureKeyCode);
         }
 
         synchronized(mLock) {
@@ -3099,8 +3131,9 @@
      */
     @Override
     public int getAccessibilityWindowId(@Nullable IBinder windowToken) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".getAccessibilityWindowId", "windowToken=" + windowToken);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".getAccessibilityWindowId",
+                    "windowToken=" + windowToken);
         }
 
         synchronized (mLock) {
@@ -3120,8 +3153,8 @@
      */
     @Override
     public long getRecommendedTimeoutMillis() {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".getRecommendedTimeoutMillis");
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".getRecommendedTimeoutMillis");
         }
 
         synchronized(mLock) {
@@ -3138,8 +3171,9 @@
     @Override
     public void setWindowMagnificationConnection(
             IWindowMagnificationConnection connection) throws RemoteException {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".setWindowMagnificationConnection", "connection=" + connection);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".setWindowMagnificationConnection",
+                    "connection=" + connection);
         }
 
         mSecurityPolicy.enforceCallingOrSelfPermission(
@@ -3172,8 +3206,8 @@
 
     @Override
     public void associateEmbeddedHierarchy(@NonNull IBinder host, @NonNull IBinder embedded) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".associateEmbeddedHierarchy",
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".associateEmbeddedHierarchy",
                     "host=" + host + ";embedded=" + embedded);
         }
 
@@ -3184,8 +3218,8 @@
 
     @Override
     public void disassociateEmbeddedHierarchy(@NonNull IBinder token) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".disassociateEmbeddedHierarchy", "token=" + token);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".disassociateEmbeddedHierarchy", "token=" + token);
         }
 
         synchronized (mLock) {
@@ -3265,8 +3299,8 @@
 
     @Override
     public FullScreenMagnificationController getFullScreenMagnificationController() {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".getFullScreenMagnificationController");
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".getFullScreenMagnificationController");
         }
         synchronized (mLock) {
             return mMagnificationController.getFullScreenMagnificationController();
@@ -3275,8 +3309,9 @@
 
     @Override
     public void onClientChangeLocked(boolean serviceInfoChanged) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".onClientChangeLocked", "serviceInfoChanged=" + serviceInfoChanged);
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".onClientChangeLocked",
+                    "serviceInfoChanged=" + serviceInfoChanged);
         }
 
         AccessibilityUserState userState = getUserStateLocked(mCurrentUserId);
@@ -3314,9 +3349,9 @@
             AccessibilityServiceConnection service = new AccessibilityServiceConnection(
                     userState, mContext,
                     COMPONENT_NAME, info, sIdCounter++, mMainHandler, mLock, mSecurityPolicy,
-                    AccessibilityManagerService.this, AccessibilityManagerService.this,
-                    mWindowManagerService, getSystemActionPerformer(), mA11yWindowManager,
-                    mActivityTaskManagerService) {
+                    AccessibilityManagerService.this,
+                    AccessibilityManagerService.this.getTraceManager(), mWindowManagerService,
+                    getSystemActionPerformer(), mA11yWindowManager, mActivityTaskManagerService) {
                 @Override
                 public boolean supportsFlagForNotImportantViews(AccessibilityServiceInfo info) {
                     return true;
@@ -3805,8 +3840,8 @@
 
     @Override
     public void setGestureDetectionPassthroughRegion(int displayId, Region region) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".setGestureDetectionPassthroughRegion",
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".setGestureDetectionPassthroughRegion",
                     "displayId=" + displayId + ";region=" + region);
         }
 
@@ -3820,8 +3855,8 @@
 
     @Override
     public void setTouchExplorationPassthroughRegion(int displayId, Region region) {
-        if (isA11yTracingEnabled()) {
-            logTrace(LOG_TAG + ".setTouchExplorationPassthroughRegion",
+        if (mTraceManager.isA11yTracingEnabled()) {
+            mTraceManager.logTrace(LOG_TAG + ".setTouchExplorationPassthroughRegion",
                     "displayId=" + displayId + ";region=" + region);
         }
 
@@ -3863,46 +3898,7 @@
 
     }
 
-    @Override
-    public boolean isA11yTracingEnabled() {
-        return mA11yController.isAccessibilityTracingEnabled();
-    }
-
-    @Override
-    public void startTrace() {
-        if (!mA11yController.isAccessibilityTracingEnabled()) {
-            mA11yController.startTrace();
-            final AccessibilityUserState userState = getUserStateLocked(UserHandle.USER_SYSTEM);
-            scheduleUpdateClientsIfNeededLocked(userState);
-        }
-    }
-
-    @Override
-    public void stopTrace() {
-        if (mA11yController.isAccessibilityTracingEnabled()) {
-            mA11yController.stopTrace();
-            final AccessibilityUserState userState = getUserStateLocked(UserHandle.USER_SYSTEM);
-            scheduleUpdateClientsIfNeededLocked(userState);
-        }
-    }
-
-    @Override
-    public void logTrace(String where) {
-        logTrace(where, "");
-    }
-
-    @Override
-    public void logTrace(String where, String callingParams) {
-        mA11yController.logTrace(where, callingParams, "".getBytes(),
-                Binder.getCallingUid(), Thread.currentThread().getStackTrace());
-    }
-
-    @Override
-    public void logTrace(long timestamp, String where, String callingParams, int processId,
-            long threadId, int callingUid, StackTraceElement[] callStack) {
-        if (mA11yController.isAccessibilityTracingEnabled()) {
-            mA11yController.logTrace(where, callingParams, "".getBytes(), callingUid, callStack,
-                    timestamp, processId, threadId);
-        }
+    AccessibilityTraceManager getTraceManager() {
+        return mTraceManager;
     }
 }
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityShellCommand.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityShellCommand.java
index 16ce177..6396960 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityShellCommand.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityShellCommand.java
@@ -59,9 +59,8 @@
                 return runCallSystemAction();
             }
             case "start-trace":
-                return startTrace();
             case "stop-trace":
-                return stopTrace();
+                return mService.getTraceManager().onShellCommand(cmd);
         }
         return -1;
     }
@@ -107,16 +106,6 @@
         return -1;
     }
 
-    private int startTrace() {
-        mService.startTrace();
-        return 0;
-    }
-
-    private int stopTrace() {
-        mService.stopTrace();
-        return 0;
-    }
-
     private Integer parseUserId() {
         final String option = getNextOption();
         if (option != null) {
@@ -142,9 +131,6 @@
         pw.println("    Get whether binding to services provided by instant apps is allowed.");
         pw.println("  call-system-action <ACTION_ID>");
         pw.println("    Calls the system action with the given action id.");
-        pw.println("  start-trace");
-        pw.println("    Start the debug tracing.");
-        pw.println("  stop-trace");
-        pw.println("    Stop the debug tracing.");
+        mService.getTraceManager().onHelp(pw);
     }
 }
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityTraceManager.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityTraceManager.java
new file mode 100644
index 0000000..6105e8a
--- /dev/null
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityTraceManager.java
@@ -0,0 +1,100 @@
+/**
+ * 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.accessibility;
+
+import android.annotation.NonNull;
+import android.os.Binder;
+
+import com.android.server.wm.WindowManagerInternal;
+
+import java.io.PrintWriter;
+
+/**
+ * Manager of accessibility trace.
+ */
+class AccessibilityTraceManager implements AccessibilityTrace {
+    private final WindowManagerInternal.AccessibilityControllerInternal mA11yController;
+    private final AccessibilityManagerService mService;
+
+    AccessibilityTraceManager(
+            @NonNull WindowManagerInternal.AccessibilityControllerInternal a11yController,
+            @NonNull AccessibilityManagerService service) {
+        mA11yController = a11yController;
+        mService = service;
+    }
+
+    @Override
+    public boolean isA11yTracingEnabled() {
+        return mA11yController.isAccessibilityTracingEnabled();
+    }
+
+    @Override
+    public void startTrace() {
+        if (!mA11yController.isAccessibilityTracingEnabled()) {
+            mA11yController.startTrace();
+            mService.scheduleUpdateClientsIfNeeded(mService.getCurrentUserState());
+        }
+    }
+
+    @Override
+    public void stopTrace() {
+        if (mA11yController.isAccessibilityTracingEnabled()) {
+            mA11yController.stopTrace();
+            mService.scheduleUpdateClientsIfNeeded(mService.getCurrentUserState());
+        }
+    }
+
+    @Override
+    public void logTrace(String where) {
+        logTrace(where, "");
+    }
+
+    @Override
+    public void logTrace(String where, String callingParams) {
+        mA11yController.logTrace(where, callingParams, "".getBytes(),
+                Binder.getCallingUid(), Thread.currentThread().getStackTrace());
+    }
+
+    @Override
+    public void logTrace(long timestamp, String where, String callingParams, int processId,
+            long threadId, int callingUid, StackTraceElement[] callStack) {
+        if (mA11yController.isAccessibilityTracingEnabled()) {
+            mA11yController.logTrace(where, callingParams, "".getBytes(), callingUid, callStack,
+                    timestamp, processId, threadId);
+        }
+    }
+
+    int onShellCommand(String cmd) {
+        switch (cmd) {
+            case "start-trace": {
+                startTrace();
+                return 0;
+            }
+            case "stop-trace": {
+                stopTrace();
+                return 0;
+            }
+        }
+        return -1;
+    }
+
+    void onHelp(PrintWriter pw) {
+        pw.println("  start-trace");
+        pw.println("    Start the debug tracing.");
+        pw.println("  stop-trace");
+        pw.println("    Stop the debug tracing.");
+    }
+}
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index e251700..d922d2b 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -1589,6 +1589,7 @@
     public ParceledListSlice<AppWidgetProviderInfo> getInstalledProvidersForProfile(int categoryFilter,
             int profileId, String packageName) {
         final int userId = UserHandle.getCallingUserId();
+        final int callingUid = Binder.getCallingUid();
 
         if (DEBUG) {
             Slog.i(TAG, "getInstalledProvidersForProfiles() " + userId);
@@ -1601,7 +1602,7 @@
 
         synchronized (mLock) {
             if (mSecurityPolicy.isCallerInstantAppLocked()) {
-                Slog.w(TAG, "Instant uid " + Binder.getCallingUid()
+                Slog.w(TAG, "Instant uid " + callingUid
                         + " cannot access widget providers");
                 return ParceledListSlice.emptyList();
             }
@@ -1614,11 +1615,12 @@
             for (int i = 0; i < providerCount; i++) {
                 Provider provider = mProviders.get(i);
                 AppWidgetProviderInfo info = provider.getInfoLocked(mContext);
+                final String providerPackageName = provider.id.componentName.getPackageName();
 
                 // Ignore an invalid provider, one not matching the filter,
                 // or one that isn't in the given package, if any.
                 boolean inPackage = packageName == null
-                        || provider.id.componentName.getPackageName().equals(packageName);
+                        || providerPackageName.equals(packageName);
                 if (provider.zombie || (info.widgetCategory & categoryFilter) == 0 || !inPackage) {
                     continue;
                 }
@@ -1627,7 +1629,9 @@
                 final int providerProfileId = info.getProfile().getIdentifier();
                 if (providerProfileId == profileId
                         && mSecurityPolicy.isProviderInCallerOrInProfileAndWhitelListed(
-                            provider.id.componentName.getPackageName(), providerProfileId)) {
+                        providerPackageName, providerProfileId)
+                        && !mPackageManagerInternal.filterAppAccess(providerPackageName, callingUid,
+                        userId)) {
                     result.add(cloneIfLocalBinder(info));
                 }
             }
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java
index f8b770b..6bf4967 100644
--- a/services/autofill/java/com/android/server/autofill/Session.java
+++ b/services/autofill/java/com/android/server/autofill/Session.java
@@ -1311,7 +1311,9 @@
     @Override
     public void onServiceDied(@NonNull RemoteFillService service) {
         Slog.w(TAG, "removing session because service died");
-        forceRemoveFromServiceLocked();
+        synchronized (mLock) {
+            forceRemoveFromServiceLocked();
+        }
     }
 
     // AutoFillUiCallback
diff --git a/services/core/Android.bp b/services/core/Android.bp
index 5cbcacf..5dc11c5 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -132,7 +132,6 @@
     ],
 
     static_libs: [
-        "protolog-lib",
         "time_zone_distro",
         "time_zone_distro_installer",
         "android.hardware.authsecret-V1.0-java",
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java
index a9eb2c1..5dd9b0e 100644
--- a/services/core/java/android/content/pm/PackageManagerInternal.java
+++ b/services/core/java/android/content/pm/PackageManagerInternal.java
@@ -825,6 +825,12 @@
             String packageName, int userId);
 
     /**
+     * Return the enabled setting for a package component (activity, receiver, service, provider).
+     */
+    public abstract @PackageManager.EnabledState int getComponentEnabledSetting(
+            @NonNull ComponentName componentName, int callingUid, int userId);
+
+    /**
      * Extra field name for the token of a request to enable rollback for a
      * package.
      */
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index feed220..c3a5d1f 100644
--- a/services/core/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
@@ -714,9 +714,6 @@
             Slog.w(TAG, "Callback is null in unregisterAdapter");
             return;
         }
-        if (!checkConnectPermissionForPreflight(mContext)) {
-            return;
-        }
         synchronized (mCallbacks) {
             mCallbacks.unregister(callback);
         }
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 4d96162..809ef41 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -630,7 +630,9 @@
     }
 
     private static IDnsResolver getDnsResolver(Context context) {
-        return IDnsResolver.Stub.asInterface(DnsResolverServiceManager.getService(context));
+        final DnsResolverServiceManager dsm = context.getSystemService(
+                DnsResolverServiceManager.class);
+        return IDnsResolver.Stub.asInterface(dsm.getService());
     }
 
     /** Handler thread used for all of the handlers below. */
@@ -1924,7 +1926,7 @@
         newNc.setAdministratorUids(new int[0]);
         if (!checkAnyPermissionOf(
                 callerPid, callerUid, android.Manifest.permission.NETWORK_FACTORY)) {
-            newNc.setSubIds(Collections.emptySet());
+            newNc.setSubscriptionIds(Collections.emptySet());
         }
 
         return newNc;
@@ -2147,7 +2149,7 @@
         PermissionUtils.enforceNetworkStackPermission(mContext);
 
         final ArrayList<NetworkState> result = new ArrayList<>();
-        for (NetworkStateSnapshot snapshot : getAllNetworkStateSnapshot()) {
+        for (NetworkStateSnapshot snapshot : getAllNetworkStateSnapshots()) {
             // NetworkStateSnapshot doesn't contain NetworkInfo, so need to fetch it from the
             // NetworkAgentInfo.
             final NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(snapshot.network);
@@ -2162,7 +2164,7 @@
 
     @Override
     @NonNull
-    public List<NetworkStateSnapshot> getAllNetworkStateSnapshot() {
+    public List<NetworkStateSnapshot> getAllNetworkStateSnapshots() {
         // This contains IMSI details, so make sure the caller is privileged.
         PermissionUtils.enforceNetworkStackPermission(mContext);
 
@@ -2808,6 +2810,8 @@
     @Override
     protected void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter writer,
             @Nullable String[] args) {
+        if (!checkDumpPermission(mContext, TAG, writer)) return;
+
         mPriorityDumper.dump(fd, writer, args);
     }
 
@@ -2825,7 +2829,6 @@
 
     private void doDump(FileDescriptor fd, PrintWriter writer, String[] args) {
         final IndentingPrintWriter pw = new IndentingPrintWriter(writer, "  ");
-        if (!checkDumpPermission(mContext, TAG, pw)) return;
 
         if (CollectionUtils.contains(args, DIAG_ARG)) {
             dumpNetworkDiagnostics(pw);
@@ -3969,17 +3972,16 @@
                 // multilayer requests, returning as soon as a NetworkAgentInfo satisfies a request
                 // is important so as to not evaluate lower priority requests further in
                 // nri.mRequests.
-                final boolean isNetworkNeeded = candidate.isSatisfyingRequest(req.requestId)
-                        // Note that this catches two important cases:
-                        // 1. Unvalidated cellular will not be reaped when unvalidated WiFi
-                        //    is currently satisfying the request.  This is desirable when
-                        //    cellular ends up validating but WiFi does not.
-                        // 2. Unvalidated WiFi will not be reaped when validated cellular
-                        //    is currently satisfying the request.  This is desirable when
-                        //    WiFi ends up validating and out scoring cellular.
-                        || nri.getSatisfier().getCurrentScore()
-                        < candidate.getCurrentScoreAsValidated();
-                return isNetworkNeeded;
+                final NetworkAgentInfo champion = req.equals(nri.getActiveRequest())
+                        ? nri.getSatisfier() : null;
+                // Note that this catches two important cases:
+                // 1. Unvalidated cellular will not be reaped when unvalidated WiFi
+                //    is currently satisfying the request.  This is desirable when
+                //    cellular ends up validating but WiFi does not.
+                // 2. Unvalidated WiFi will not be reaped when validated cellular
+                //    is currently satisfying the request.  This is desirable when
+                //    WiFi ends up validating and out scoring cellular.
+                return mNetworkRanker.mightBeat(req, champion, candidate.getValidatedScoreable());
             }
         }
 
@@ -5726,7 +5728,7 @@
         }
         mAppOpsManager.checkPackage(callerUid, callerPackageName);
 
-        if (!nc.getSubIds().isEmpty()) {
+        if (!nc.getSubscriptionIds().isEmpty()) {
             enforceNetworkFactoryPermission();
         }
     }
@@ -6148,6 +6150,7 @@
     @Override
     public int registerNetworkProvider(Messenger messenger, String name) {
         enforceNetworkFactoryOrSettingsPermission();
+        Objects.requireNonNull(messenger, "messenger must be non-null");
         NetworkProviderInfo npi = new NetworkProviderInfo(name, messenger,
                 nextNetworkProviderId(), () -> unregisterNetworkProvider(messenger));
         mHandler.sendMessage(mHandler.obtainMessage(EVENT_REGISTER_NETWORK_PROVIDER, npi));
@@ -7811,7 +7814,7 @@
             @NonNull final Collection<NetworkRequestInfo> networkRequests) {
         final NetworkReassignment changes = new NetworkReassignment();
 
-        // Gather the list of all relevant agents and sort them by score.
+        // Gather the list of all relevant agents.
         final ArrayList<NetworkAgentInfo> nais = new ArrayList<>();
         for (final NetworkAgentInfo nai : mNetworkAgentInfos) {
             if (!nai.everConnected) {
@@ -9186,6 +9189,7 @@
     @Override
     public void unregisterConnectivityDiagnosticsCallback(
             @NonNull IConnectivityDiagnosticsCallback callback) {
+        Objects.requireNonNull(callback, "callback must be non-null");
         mConnectivityDiagnosticsHandler.sendMessage(
                 mConnectivityDiagnosticsHandler.obtainMessage(
                         ConnectivityDiagnosticsHandler
@@ -9556,6 +9560,7 @@
      */
     @Override
     public void unregisterQosCallback(@NonNull final IQosCallback callback) {
+        Objects.requireNonNull(callback, "callback must be non-null");
         mQosCallbackTracker.unregisterCallback(callback);
     }
 
diff --git a/services/core/java/com/android/server/EventLogTags.logtags b/services/core/java/com/android/server/EventLogTags.logtags
index 9f91dd6..483250a 100644
--- a/services/core/java/com/android/server/EventLogTags.logtags
+++ b/services/core/java/com/android/server/EventLogTags.logtags
@@ -174,9 +174,9 @@
 # Disk usage stats for verifying quota correctness
 3121 pm_package_stats (manual_time|2|3),(quota_time|2|3),(manual_data|2|2),(quota_data|2|2),(manual_cache|2|2),(quota_cache|2|2)
 # Snapshot statistics
-3130 pm_snapshot_stats (build_count|1|1),(reuse_count|1|1),(big_builds|1|1),(quick_rebuilds|1|1),(max_build_time|1|3),(cumm_build_time|1|3)
+3130 pm_snapshot_stats (build_count|1|1),(reuse_count|1|1),(big_builds|1|1),(short_lived|1|1),(max_build_time|1|3),(cumm_build_time|2|3)
 # Snapshot rebuild instance
-3131 pm_snapshot_rebuild (build_time|1|3),(elapsed|1|3)
+3131 pm_snapshot_rebuild (build_time|1|3),(lifetime|1|3)
 
 # ---------------------------
 # InputMethodManagerService.java
diff --git a/services/core/java/com/android/server/SensorPrivacyService.java b/services/core/java/com/android/server/SensorPrivacyService.java
index df6ab5d..3ba4c34 100644
--- a/services/core/java/com/android/server/SensorPrivacyService.java
+++ b/services/core/java/com/android/server/SensorPrivacyService.java
@@ -19,9 +19,10 @@
 import static android.Manifest.permission.MANAGE_SENSOR_PRIVACY;
 import static android.app.ActivityManager.RunningServiceInfo;
 import static android.app.ActivityManager.RunningTaskInfo;
-import static android.app.AppOpsManager.MODE_ALLOWED;
+import static android.app.AppOpsManager.MODE_IGNORED;
 import static android.app.AppOpsManager.OP_CAMERA;
 import static android.app.AppOpsManager.OP_RECORD_AUDIO;
+import static android.app.AppOpsManager.OP_RECORD_AUDIO_HOTWORD;
 import static android.content.Intent.EXTRA_PACKAGE_NAME;
 import static android.content.pm.PackageManager.PERMISSION_GRANTED;
 import static android.hardware.SensorPrivacyManager.EXTRA_SENSOR;
@@ -140,11 +141,15 @@
     private final UserManagerInternal mUserManagerInternal;
     private final ActivityManager mActivityManager;
     private final ActivityTaskManager mActivityTaskManager;
+    private final AppOpsManager mAppOpsManager;
+
+    private final IBinder mAppOpsRestrictionToken = new Binder();
 
     private SensorPrivacyManagerInternalImpl mSensorPrivacyManagerInternal;
 
     public SensorPrivacyService(Context context) {
         super(context);
+        mAppOpsManager = context.getSystemService(AppOpsManager.class);
         mUserManagerInternal = getLocalService(UserManagerInternal.class);
         mSensorPrivacyServiceImpl = new SensorPrivacyServiceImpl(context);
         mActivityManager = context.getSystemService(ActivityManager.class);
@@ -194,10 +199,20 @@
                 }
             }
 
+            for (int i = 0; i < mIndividualEnabled.size(); i++) {
+                int userId = mIndividualEnabled.keyAt(i);
+                SparseBooleanArray userIndividualEnabled =
+                        mIndividualEnabled.get(i);
+                for (int j = 0; j < userIndividualEnabled.size(); j++) {
+                    int sensor = userIndividualEnabled.keyAt(i);
+                    boolean enabled = userIndividualEnabled.valueAt(j);
+                    setUserRestriction(userId, sensor, enabled);
+                }
+            }
+
             int[] micAndCameraOps = new int[]{OP_RECORD_AUDIO, OP_CAMERA};
-            AppOpsManager appOpsManager = mContext.getSystemService(AppOpsManager.class);
-            appOpsManager.startWatchingNoted(micAndCameraOps, this);
-            appOpsManager.startWatchingStarted(micAndCameraOps, this);
+            mAppOpsManager.startWatchingNoted(micAndCameraOps, this);
+            mAppOpsManager.startWatchingStarted(micAndCameraOps, this);
 
             mContext.registerReceiver(new BroadcastReceiver() {
                 @Override
@@ -221,7 +236,7 @@
         public void onOpNoted(int code, int uid, String packageName,
                 String attributionTag, @AppOpsManager.OpFlags int flags,
                 @AppOpsManager.Mode int result) {
-            if (result != MODE_ALLOWED || (flags & AppOpsManager.OP_FLAGS_ALL_TRUSTED) == 0) {
+            if (result != MODE_IGNORED || (flags & AppOpsManager.OP_FLAGS_ALL_TRUSTED) == 0) {
                 return;
             }
 
@@ -1125,6 +1140,9 @@
             mSensorPrivacyManagerInternal.dispatch(userId, sensor, enabled);
             SparseArray<RemoteCallbackList<ISensorPrivacyListener>> listenersForUser =
                     mIndividualSensorListeners.get(userId);
+
+            setUserRestriction(userId, sensor, enabled);
+
             if (listenersForUser == null) {
                 return;
             }
@@ -1152,6 +1170,18 @@
         }
     }
 
+    private void setUserRestriction(int userId, int sensor, boolean enabled) {
+        if (sensor == CAMERA) {
+            mAppOpsManager.setUserRestrictionForUser(OP_CAMERA, enabled,
+                    mAppOpsRestrictionToken, new String[]{}, userId);
+        } else if (sensor == MICROPHONE) {
+            mAppOpsManager.setUserRestrictionForUser(OP_RECORD_AUDIO, enabled,
+                    mAppOpsRestrictionToken, new String[]{}, userId);
+            mAppOpsManager.setUserRestrictionForUser(OP_RECORD_AUDIO_HOTWORD, enabled,
+                    mAppOpsRestrictionToken, new String[]{}, userId);
+        }
+    }
+
     private final class DeathRecipient implements IBinder.DeathRecipient {
 
         private ISensorPrivacyListener mListener;
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index 98bfa28..ee3530a 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -2551,11 +2551,12 @@
      * Send a notification to registrants that the configs of physical channel has changed for
      * a particular subscription.
      *
+     * @param phoneId the phone id.
      * @param subId the subId
      * @param configs a list of {@link PhysicalChannelConfig}, the configs of physical channel.
      */
-    public void notifyPhysicalChannelConfigForSubscriber(
-            int subId, List<PhysicalChannelConfig> configs) {
+    public void notifyPhysicalChannelConfigForSubscriber(int phoneId, int subId,
+            List<PhysicalChannelConfig> configs) {
         if (!checkNotifyPermission("notifyPhysicalChannelConfig()")) {
             return;
         }
@@ -2567,7 +2568,6 @@
         }
 
         synchronized (mRecords) {
-            int phoneId = SubscriptionManager.getPhoneId(subId);
             if (validatePhoneId(phoneId)) {
                 mPhysicalChannelConfigs.set(phoneId, configs);
                 for (Record r : mRecords) {
@@ -2861,7 +2861,14 @@
         intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId);
         intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, phoneId);
         intent.putExtra(SubscriptionManager.EXTRA_SLOT_INDEX, phoneId);
+        // Send the broadcast twice -- once for all apps with READ_PHONE_STATE, then again
+        // for all apps with READ_PRIV but not READ_PHONE_STATE. This ensures that any app holding
+        // either READ_PRIV or READ_PHONE get this broadcast exactly once.
         mContext.sendBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.READ_PHONE_STATE);
+        mContext.createContextAsUser(UserHandle.ALL, 0)
+                .sendBroadcastMultiplePermissions(intent,
+                        new String[] { Manifest.permission.READ_PRIVILEGED_PHONE_STATE },
+                        new String[] { Manifest.permission.READ_PHONE_STATE });
     }
 
     private void broadcastSignalStrengthChanged(SignalStrength signalStrength, int phoneId,
@@ -2988,7 +2995,14 @@
                 getApnTypesStringFromBitmask(pdcs.getApnSetting().getApnTypeBitmask()));
         intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, slotIndex);
         intent.putExtra(PHONE_CONSTANTS_SUBSCRIPTION_KEY, subId);
+        // Send the broadcast twice -- once for all apps with READ_PHONE_STATE, then again
+        // for all apps with READ_PRIV but not READ_PHONE_STATE. This ensures that any app holding
+        // either READ_PRIV or READ_PHONE get this broadcast exactly once.
         mContext.sendBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.READ_PHONE_STATE);
+        mContext.createContextAsUser(UserHandle.ALL, 0)
+                .sendBroadcastMultiplePermissions(intent,
+                        new String[] { Manifest.permission.READ_PRIVILEGED_PHONE_STATE },
+                        new String[] { Manifest.permission.READ_PHONE_STATE });
     }
 
     /**
diff --git a/services/core/java/com/android/server/VcnManagementService.java b/services/core/java/com/android/server/VcnManagementService.java
index 039f4d9..4b52057 100644
--- a/services/core/java/com/android/server/VcnManagementService.java
+++ b/services/core/java/com/android/server/VcnManagementService.java
@@ -729,7 +729,7 @@
 
         // If multiple subscription IDs exist, they MUST all point to the same subscription
         // group. Otherwise undefined behavior may occur.
-        for (int subId : networkCapabilities.getSubIds()) {
+        for (int subId : networkCapabilities.getSubscriptionIds()) {
             // Verify that all subscriptions point to the same group
             if (subGrp != null && !subGrp.equals(snapshot.getGroupForSubId(subId))) {
                 Slog.wtf(TAG, "Got multiple subscription groups for a single network");
@@ -1003,14 +1003,14 @@
         }
 
         private boolean requiresRestartForCarrierWifi(NetworkCapabilities caps) {
-            if (!caps.hasTransport(TRANSPORT_WIFI) || caps.getSubIds() == null) {
+            if (!caps.hasTransport(TRANSPORT_WIFI) || caps.getSubscriptionIds() == null) {
                 return false;
             }
 
             synchronized (mCaps) {
                 for (NetworkCapabilities existing : mCaps.values()) {
                     if (existing.hasTransport(TRANSPORT_WIFI)
-                            && caps.getSubIds().equals(existing.getSubIds())) {
+                            && caps.getSubscriptionIds().equals(existing.getSubscriptionIds())) {
                         // Restart if any immutable capabilities have changed
                         return existing.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)
                                 != caps.hasCapability(NET_CAPABILITY_NOT_RESTRICTED);
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 4324717..10cf184 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -26,6 +26,7 @@
 import static android.os.PowerExemptionManager.REASON_ACTIVITY_VISIBILITY_GRACE_PERIOD;
 import static android.os.PowerExemptionManager.REASON_OP_ACTIVATE_PLATFORM_VPN;
 import static android.os.PowerExemptionManager.REASON_OP_ACTIVATE_VPN;
+import static android.os.PowerExemptionManager.REASON_TEMP_ALLOWED_WHILE_IN_USE;
 import static android.os.PowerWhitelistManager.REASON_ACTIVITY_STARTER;
 import static android.os.PowerWhitelistManager.REASON_ALLOWLISTED_PACKAGE;
 import static android.os.PowerWhitelistManager.REASON_BACKGROUND_ACTIVITY_PERMISSION;
@@ -3039,7 +3040,7 @@
             try {
                 r.mRecentCallerApplicationInfo =
                         mAm.mContext.getPackageManager().getApplicationInfoAsUser(callingPackage,
-                                0, userId);
+                                0, UserHandle.getUserId(callingUid));
             } catch (PackageManager.NameNotFoundException e) {
             }
             if (!mAm.validateAssociationAllowedLocked(callingPackage, callingUid, r.packageName,
@@ -5644,6 +5645,12 @@
         }
 
         if (ret == REASON_DENIED) {
+            if (mAm.mInternal.isTempAllowlistedForFgsWhileInUse(callingUid)) {
+                return REASON_TEMP_ALLOWED_WHILE_IN_USE;
+            }
+        }
+
+        if (ret == REASON_DENIED) {
             if (targetService != null && targetService.app != null) {
                 ActiveInstrumentation instr = targetService.app.getActiveInstrumentation();
                 if (instr != null && instr.mHasBackgroundActivityStartsPermission) {
@@ -5691,7 +5698,7 @@
     private @ReasonCode int shouldAllowFgsStartForegroundLocked(
             @ReasonCode int allowWhileInUse, String callingPackage, int callingPid,
             int callingUid, Intent intent, ServiceRecord r, int userId) {
-        FgsStartTempAllowList.TempFgsAllowListEntry tempAllowListReason =
+        ActivityManagerService.FgsTempAllowListItem tempAllowListReason =
                 r.mInfoTempFgsAllowListReason = mAm.isAllowlistedForFgsStartLOSP(callingUid);
         int ret = shouldAllowFgsStartForegroundLocked(allowWhileInUse, callingPid, callingUid,
                 callingPackage, r);
@@ -5790,13 +5797,13 @@
         }
 
         if (ret == REASON_DENIED) {
-            FgsStartTempAllowList.TempFgsAllowListEntry entry =
+            ActivityManagerService.FgsTempAllowListItem item =
                     mAm.isAllowlistedForFgsStartLOSP(callingUid);
-            if (entry != null) {
-                if (entry == ActivityManagerService.FAKE_TEMP_ALLOWLIST_ENTRY) {
+            if (item != null) {
+                if (item == ActivityManagerService.FAKE_TEMP_ALLOW_LIST_ITEM) {
                     ret = REASON_SYSTEM_ALLOW_LISTED;
                 } else {
-                    ret = entry.mReasonCode;
+                    ret = item.mReasonCode;
                 }
             }
         }
@@ -5921,4 +5928,12 @@
                 durationMs,
                 r.mStartForegroundCount);
     }
+
+    boolean canAllowWhileInUsePermissionInFgsLocked(int callingPid, int callingUid,
+            String callingPackage) {
+        return shouldAllowFgsWhileInUsePermissionLocked(callingPackage, callingPid, callingUid,
+                /* targetService */ null,
+                /* allowBackgroundActivityStarts */ false)
+                != REASON_DENIED;
+    }
 }
diff --git a/services/core/java/com/android/server/am/ActivityManagerLocal.java b/services/core/java/com/android/server/am/ActivityManagerLocal.java
index cd4180e..9a1bfdd 100644
--- a/services/core/java/com/android/server/am/ActivityManagerLocal.java
+++ b/services/core/java/com/android/server/am/ActivityManagerLocal.java
@@ -36,4 +36,26 @@
      * @return whether the app will be able to start a foreground service or not.
      */
     boolean canStartForegroundService(int pid, int uid, @NonNull String packageName);
+
+    /**
+     * Returns {@code true} if a foreground service started by an uid is allowed to have
+     * while-in-use permissions.
+     *
+     * @param pid The process id belonging to the app to be checked.
+     * @param uid The UID of the app to be checked.
+     * @param packageName The package name of the app to be checked.
+     * @return whether the foreground service is allowed to have while-in-use permissions.
+     * @hide
+     */
+    boolean canAllowWhileInUsePermissionInFgs(int pid, int uid, @NonNull String packageName);
+
+    /**
+     * Temporarily allow foreground service started by an uid to have while-in-use permission
+     * for durationMs.
+     *
+     * @param uid The UID of the app that starts the foreground service.
+     * @param durationMs elapsedRealTime duration in milliseconds.
+     * @hide
+     */
+    void tempAllowWhileInUsePermissionInFgs(int uid, long durationMs);
 }
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index e3b06d6..4b640a6 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -49,7 +49,7 @@
 import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_NORMAL;
 import static android.os.IServiceManager.DUMP_FLAG_PROTO;
 import static android.os.InputConstants.DEFAULT_DISPATCHING_TIMEOUT_MILLIS;
-import static android.os.PowerWhitelistManager.REASON_SYSTEM_ALLOW_LISTED;
+import static android.os.PowerExemptionManager.REASON_SYSTEM_ALLOW_LISTED;
 import static android.os.PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED;
 import static android.os.Process.BLUETOOTH_UID;
 import static android.os.Process.FIRST_APPLICATION_UID;
@@ -258,6 +258,7 @@
 import android.os.Message;
 import android.os.Parcel;
 import android.os.ParcelFileDescriptor;
+import android.os.PowerExemptionManager;
 import android.os.PowerExemptionManager.ReasonCode;
 import android.os.PowerExemptionManager.TempAllowListType;
 import android.os.PowerManager;
@@ -1201,15 +1202,45 @@
     @CompositeRWLock({"this", "mProcLock"})
     final PendingTempAllowlists mPendingTempAllowlist = new PendingTempAllowlists(this);
 
+    public static final class FgsTempAllowListItem {
+        final long mDuration;
+        final @PowerExemptionManager.ReasonCode int mReasonCode;
+        final String mReason;
+        final int mCallingUid;
+
+        FgsTempAllowListItem(long duration, @PowerExemptionManager.ReasonCode int reasonCode,
+                String reason, int callingUid) {
+            mDuration = duration;
+            mReasonCode = reasonCode;
+            mReason = reason;
+            mCallingUid = callingUid;
+        }
+
+        void dump(PrintWriter pw) {
+            pw.print(" duration=" + mDuration +
+                    " callingUid=" + UserHandle.formatUid(mCallingUid) +
+                    " reasonCode=" + PowerExemptionManager.reasonCodeToString(mReasonCode) +
+                    " reason=" + mReason);
+        }
+    }
+
     /**
      * The temp-allowlist that is allowed to start FGS from background.
      */
     @CompositeRWLock({"this", "mProcLock"})
-    final FgsStartTempAllowList mFgsStartTempAllowList = new FgsStartTempAllowList();
+    final FgsTempAllowList<Integer, FgsTempAllowListItem> mFgsStartTempAllowList =
+            new FgsTempAllowList();
 
-    static final FgsStartTempAllowList.TempFgsAllowListEntry FAKE_TEMP_ALLOWLIST_ENTRY = new
-            FgsStartTempAllowList.TempFgsAllowListEntry(Long.MAX_VALUE, Long.MAX_VALUE,
-            REASON_SYSTEM_ALLOW_LISTED, "", INVALID_UID);
+    static final FgsTempAllowListItem FAKE_TEMP_ALLOW_LIST_ITEM = new FgsTempAllowListItem(
+            Long.MAX_VALUE, REASON_SYSTEM_ALLOW_LISTED, "", INVALID_UID);
+
+    /*
+     * List of uids that are allowed to have while-in-use permission when FGS is started from
+     * background.
+     */
+    private final FgsTempAllowList<Integer, String> mFgsWhileInUseTempAllowList =
+            new FgsTempAllowList();
+
     /**
      * Information about and control over application operations
      */
@@ -5563,11 +5594,12 @@
      */
     @Nullable
     @GuardedBy(anyOf = {"this", "mProcLock"})
-    FgsStartTempAllowList.TempFgsAllowListEntry isAllowlistedForFgsStartLOSP(int uid) {
+    FgsTempAllowListItem isAllowlistedForFgsStartLOSP(int uid) {
         if (Arrays.binarySearch(mDeviceIdleExceptIdleAllowlist, UserHandle.getAppId(uid)) >= 0) {
-            return FAKE_TEMP_ALLOWLIST_ENTRY;
+            return FAKE_TEMP_ALLOW_LIST_ITEM;
         }
-        return mFgsStartTempAllowList.getAllowedDurationAndReason(uid);
+        final Pair<Long, FgsTempAllowListItem> entry = mFgsStartTempAllowList.get(uid);
+        return entry == null ? null : entry.second;
     }
 
     /**
@@ -6487,7 +6519,7 @@
         final long identity = Binder.clearCallingIdentity();
         try {
             // Send broadcast to shell to trigger bugreport using Bugreport API
-            mContext.sendBroadcast(triggerShellBugreport);
+            mContext.sendBroadcastAsUser(triggerShellBugreport, UserHandle.SYSTEM);
         } finally {
             Binder.restoreCallingIdentity(identity);
         }
@@ -9263,7 +9295,24 @@
                 }
             }
             pw.println("  mFgsStartTempAllowList:");
-            mFgsStartTempAllowList.dump(pw);
+            final long currentTimeNow = System.currentTimeMillis();
+            final long elapsedRealtimeNow = SystemClock.elapsedRealtime();
+            final Set<Integer> uids = mFgsStartTempAllowList.keySet();
+            for (Integer uid : uids) {
+                final Pair<Long, FgsTempAllowListItem> entry = mFgsStartTempAllowList.get(uid);
+                if (entry == null) {
+                    continue;
+                }
+                pw.print("    " + UserHandle.formatUid(uid) + ": ");
+                entry.second.dump(pw); pw.println();
+                pw.print("ms expiration=");
+                // Convert entry.mExpirationTime, which is an elapsed time since boot,
+                // to a time since epoch (i.e. System.currentTimeMillis()-based time.)
+                final long expirationInCurrentTime =
+                        currentTimeNow - elapsedRealtimeNow + entry.first;
+                TimeUtils.dumpTimeWithDelta(pw, expirationInCurrentTime, currentTimeNow);
+                pw.println();
+            }
         }
         if (mDebugApp != null || mOrigDebugApp != null || mDebugTransient
                 || mOrigWaitForDebugger) {
@@ -14541,7 +14590,8 @@
             mUiHandler.obtainMessage(PUSH_TEMP_ALLOWLIST_UI_MSG).sendToTarget();
 
             if (type == TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED) {
-                mFgsStartTempAllowList.add(targetUid, duration, reasonCode, reason, callingUid);
+                mFgsStartTempAllowList.add(targetUid, duration,
+                        new FgsTempAllowListItem(duration, reasonCode, reason, callingUid));
             }
         }
     }
@@ -15214,8 +15264,9 @@
                     mDeviceIdleTempAllowlist = appids;
                     if (adding) {
                         if (type == TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED) {
-                            mFgsStartTempAllowList.add(changingUid, durationMs, reasonCode, reason,
-                                    callingUid);
+                            mFgsStartTempAllowList.add(changingUid, durationMs,
+                                    new FgsTempAllowListItem(durationMs, reasonCode, reason,
+                                    callingUid));
                         }
                     }
                     setAppIdTempAllowlistStateLSP(changingUid, adding);
@@ -16035,6 +16086,24 @@
                 return mServices.canStartForegroundServiceLocked(pid, uid, packageName);
             }
         }
+
+        @Override
+        public void tempAllowWhileInUsePermissionInFgs(int uid, long durationMs) {
+            mFgsWhileInUseTempAllowList.add(uid, durationMs, "");
+        }
+
+        @Override
+        public boolean isTempAllowlistedForFgsWhileInUse(int uid) {
+            return mFgsWhileInUseTempAllowList.isAllowed(uid);
+        }
+
+        @Override
+        public boolean canAllowWhileInUsePermissionInFgs(int pid, int uid,
+                @NonNull String packageName) {
+            synchronized (ActivityManagerService.this) {
+                return mServices.canAllowWhileInUsePermissionInFgsLocked(pid, uid, packageName);
+            }
+        }
     }
 
     long inputDispatchingTimedOut(int pid, final boolean aboveSystem, String reason) {
diff --git a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
index 4942b11..859cc44 100644
--- a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
+++ b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
@@ -137,8 +137,8 @@
     @GuardedBy("mWorkerLock")
     private PowerStatsInternal mPowerStatsInternal = null;
 
-    // WiFi keeps an accumulated total of stats, unlike Bluetooth.
-    // Keep the last WiFi stats so we can compute a delta.
+    // WiFi keeps an accumulated total of stats. Keep the last WiFi stats so we can compute a delta.
+    // (This is unlike Bluetooth, where BatteryStatsImpl is left responsible for taking the delta.)
     @GuardedBy("mWorkerLock")
     private WifiActivityEnergyInfo mLastWifiInfo =
             new WifiActivityEnergyInfo(0, 0, 0, 0, 0, 0);
diff --git a/services/core/java/com/android/server/am/FgsStartTempAllowList.java b/services/core/java/com/android/server/am/FgsStartTempAllowList.java
deleted file mode 100644
index a844c2aa..0000000
--- a/services/core/java/com/android/server/am/FgsStartTempAllowList.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.am;
-
-import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
-
-import android.annotation.Nullable;
-import android.os.PowerWhitelistManager;
-import android.os.PowerWhitelistManager.ReasonCode;
-import android.os.SystemClock;
-import android.os.UserHandle;
-import android.util.Slog;
-import android.util.SparseArray;
-import android.util.TimeUtils;
-
-import java.io.PrintWriter;
-
-/**
- * List of uids that are temporarily allowed to start FGS from background.
- */
-final class FgsStartTempAllowList {
-    private static final int MAX_SIZE = 100;
-
-    public static final class TempFgsAllowListEntry {
-        final long mExpirationTime;
-        final long mDuration;
-        final @ReasonCode int mReasonCode;
-        final String mReason;
-        final int mCallingUid;
-
-        TempFgsAllowListEntry(long expirationTime, long duration, @ReasonCode int reasonCode,
-                String reason, int callingUid) {
-            mExpirationTime = expirationTime;
-            mDuration = duration;
-            mReasonCode = reasonCode;
-            mReason = reason;
-            mCallingUid = callingUid;
-        }
-    }
-
-    /**
-     * The key is the uid, the value is a TempAllowListEntry.
-     */
-    private final SparseArray<TempFgsAllowListEntry> mTempAllowListFgs = new SparseArray<>();
-
-    FgsStartTempAllowList() {
-    }
-
-    /**
-     * Add a uid and its duration with reason into the FGS temp-allowlist.
-     * @param uid
-     * @param duration temp-allowlisted duration in milliseconds.
-     * @param reason A human-readable reason for logging purposes.
-     * @param callingUid the callingUid that setup this temp allowlist, only valid when param adding
-     *                   is true.
-     */
-    void add(int uid, long duration, @ReasonCode int reasonCode, @Nullable String reason,
-            int callingUid) {
-        if (duration <= 0) {
-            Slog.e(TAG_AM, "FgsStartTempAllowList bad duration:" + duration + " uid: "
-                    + uid);
-            return;
-        }
-        // The temp allowlist should be a short list with only a few entries in it.
-        final int size = mTempAllowListFgs.size();
-        if (size > MAX_SIZE) {
-            Slog.w(TAG_AM, "FgsStartTempAllowList length:" + size + " exceeds " + MAX_SIZE);
-        }
-        final long now = SystemClock.elapsedRealtime();
-        for (int index = mTempAllowListFgs.size() - 1; index >= 0; index--) {
-            if (mTempAllowListFgs.valueAt(index).mExpirationTime < now) {
-                mTempAllowListFgs.removeAt(index);
-            }
-        }
-        final TempFgsAllowListEntry existing = mTempAllowListFgs.get(uid);
-        final long expirationTime = now + duration;
-        if (existing == null || existing.mExpirationTime < expirationTime) {
-            mTempAllowListFgs.put(uid,
-                    new TempFgsAllowListEntry(expirationTime, duration, reasonCode,
-                            reason == null ? "" : reason, callingUid));
-        }
-    }
-
-    /**
-     * Is this uid temp-allowlisted to start FGS.
-     * @param uid
-     * @return If uid is in the temp-allowlist, return the {@link TempFgsAllowListEntry}; If not in
-     *         temp-allowlist, return null.
-     */
-    @Nullable
-    TempFgsAllowListEntry getAllowedDurationAndReason(int uid) {
-        final int index = mTempAllowListFgs.indexOfKey(uid);
-        if (index < 0) {
-            return null;
-        } else if (mTempAllowListFgs.valueAt(index).mExpirationTime
-                < SystemClock.elapsedRealtime()) {
-            mTempAllowListFgs.removeAt(index);
-            return null;
-        } else {
-            return mTempAllowListFgs.valueAt(index);
-        }
-    }
-
-    void remove(int uid) {
-        mTempAllowListFgs.delete(uid);
-    }
-
-    void dump(PrintWriter pw) {
-        final long currentTimeNow = System.currentTimeMillis();
-        final long elapsedRealtimeNow = SystemClock.elapsedRealtime();
-        for (int i = 0; i < mTempAllowListFgs.size(); i++) {
-            final int uid = mTempAllowListFgs.keyAt(i);
-            final TempFgsAllowListEntry entry = mTempAllowListFgs.valueAt(i);
-            pw.println(
-                    "    " + UserHandle.formatUid(uid) + ": " +
-                    " callingUid=" + UserHandle.formatUid(entry.mCallingUid) +
-                    " reasonCode=" + PowerWhitelistManager.reasonCodeToString(entry.mReasonCode) +
-                    " reason=" + entry.mReason);
-            pw.print("        duration=" + entry.mDuration +
-                    "ms expiration=");
-
-            // Convert entry.mExpirationTime, which is an elapsed time since boot,
-            // to a time since epoch (i.e. System.currentTimeMillis()-based time.)
-            final long expirationInCurrentTime =
-                    currentTimeNow - elapsedRealtimeNow + entry.mExpirationTime;
-            TimeUtils.dumpTimeWithDelta(pw, expirationInCurrentTime, currentTimeNow);
-            pw.println();
-        }
-    }
-}
diff --git a/services/core/java/com/android/server/am/FgsTempAllowList.java b/services/core/java/com/android/server/am/FgsTempAllowList.java
new file mode 100644
index 0000000..847e82f
--- /dev/null
+++ b/services/core/java/com/android/server/am/FgsTempAllowList.java
@@ -0,0 +1,148 @@
+/*
+ * 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.am;
+
+import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
+
+import android.annotation.Nullable;
+import android.os.SystemClock;
+import android.util.ArrayMap;
+import android.util.Pair;
+import android.util.Slog;
+
+import java.util.Set;
+
+/**
+ * List of keys that have expiration time.
+ * If the expiration time is less than current elapsedRealtime, the key has expired.
+ * Otherwise it is valid (or allowed).
+ *
+ * <p>This is used for both FGS-BG-start restriction, and FGS-while-in-use permissions check.</p>
+ *
+ * <p>Note: the underlying data structure is an {@link ArrayMap}, for performance reason, it is only
+ * suitable to hold up to hundreds of entries.</p>
+ * @param <K> type of the key.
+ * @param <E> type of the additional optional info.
+ */
+public class FgsTempAllowList<K, E> {
+    private static final int DEFAULT_MAX_SIZE = 100;
+
+    /**
+     * The value is Pair type, Pair.first is the expirationTime(an elapsedRealtime),
+     * Pair.second is the optional information entry about this key.
+     */
+    private final ArrayMap<K, Pair<Long, E>> mTempAllowList = new ArrayMap<>();
+    private int mMaxSize = DEFAULT_MAX_SIZE;
+    private final Object mLock = new Object();
+
+    public FgsTempAllowList() {
+    }
+
+    /**
+     *
+     * @param maxSize The max size of the list. It is only a suggestion. If the list size is
+     *                larger than max size, a warning message is printed in logcat, new entry can
+     *                still be added to the list. The default max size is {@link #DEFAULT_MAX_SIZE}.
+     */
+    public FgsTempAllowList(int maxSize) {
+        if (maxSize <= 0) {
+            Slog.e(TAG_AM, "Invalid FgsTempAllowList maxSize:" + maxSize
+                    + ", force default maxSize:" + DEFAULT_MAX_SIZE);
+            mMaxSize = DEFAULT_MAX_SIZE;
+        } else {
+            mMaxSize = maxSize;
+        }
+    }
+
+    /**
+     * Add a key and its duration with optional info into the temp allowlist.
+     * @param key
+     * @param durationMs temp-allowlisted duration in milliseconds.
+     * @param entry additional optional information of this key, could be null.
+     */
+    public void add(K key, long durationMs, @Nullable E entry) {
+        synchronized (mLock) {
+            if (durationMs <= 0) {
+                Slog.e(TAG_AM, "FgsTempAllowList bad duration:" + durationMs + " key: "
+                        + key);
+                return;
+            }
+            // The temp allowlist should be a short list with only a few entries in it.
+            // for a very large list, HashMap structure should be used.
+            final long now = SystemClock.elapsedRealtime();
+            final int size = mTempAllowList.size();
+            if (size > mMaxSize) {
+                Slog.w(TAG_AM, "FgsTempAllowList length:" + size + " exceeds maxSize"
+                        + mMaxSize);
+                for (int index = size - 1; index >= 0; index--) {
+                    if (mTempAllowList.valueAt(index).first < now) {
+                        mTempAllowList.removeAt(index);
+                    }
+                }
+            }
+            final Pair<Long, E> existing = mTempAllowList.get(key);
+            final long expirationTime = now + durationMs;
+            if (existing == null || existing.first < expirationTime) {
+                mTempAllowList.put(key, new Pair(expirationTime, entry));
+            }
+        }
+    }
+
+    /**
+     * If the key has not expired (AKA allowed), return its non-null value.
+     * If the key has expired, return null.
+     * @param key
+     * @return
+     */
+    @Nullable
+    public Pair<Long, E> get(K key) {
+        synchronized (mLock) {
+            final int index = mTempAllowList.indexOfKey(key);
+            if (index < 0) {
+                return null;
+            } else if (mTempAllowList.valueAt(index).first < SystemClock.elapsedRealtime()) {
+                mTempAllowList.removeAt(index);
+                return null;
+            } else {
+                return mTempAllowList.valueAt(index);
+            }
+        }
+    }
+
+    /**
+     * If the key has not expired (AKA allowed), return true.
+     * If the key has expired, return false.
+     * @param key
+     * @return
+     */
+    public boolean isAllowed(K key) {
+        Pair<Long, E> entry = get(key);
+        return entry != null;
+    }
+
+    public void remove(K key) {
+        synchronized (mLock) {
+            mTempAllowList.remove(key);
+        }
+    }
+
+    public Set<K> keySet() {
+        synchronized (mLock) {
+            return mTempAllowList.keySet();
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/am/ProcessStateRecord.java b/services/core/java/com/android/server/am/ProcessStateRecord.java
index d97d343..94e7f34 100644
--- a/services/core/java/com/android/server/am/ProcessStateRecord.java
+++ b/services/core/java/com/android/server/am/ProcessStateRecord.java
@@ -1253,13 +1253,13 @@
         if (mAllowStartFgs == REASON_DENIED) {
             // uid is on DeviceIdleController's user/system allowlist
             // or AMS's FgsStartTempAllowList.
-            FgsStartTempAllowList.TempFgsAllowListEntry entry =
+            ActivityManagerService.FgsTempAllowListItem item =
                     mService.isAllowlistedForFgsStartLOSP(mApp.info.uid);
-            if (entry != null) {
-                if (entry == ActivityManagerService.FAKE_TEMP_ALLOWLIST_ENTRY) {
+            if (item != null) {
+                if (item == ActivityManagerService.FAKE_TEMP_ALLOW_LIST_ITEM) {
                     mAllowStartFgs = REASON_SYSTEM_ALLOW_LISTED;
                 } else {
-                    mAllowStartFgs = entry.mReasonCode;
+                    mAllowStartFgs = item.mReasonCode;
                 }
             }
         }
diff --git a/services/core/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java
index 21a02ed8..fd59e85 100644
--- a/services/core/java/com/android/server/am/ServiceRecord.java
+++ b/services/core/java/com/android/server/am/ServiceRecord.java
@@ -179,7 +179,7 @@
     // Debug info why mAllowStartForeground is allowed or denied.
     String mInfoAllowStartForeground;
     // Debug info if mAllowStartForeground is allowed because of a temp-allowlist.
-    FgsStartTempAllowList.TempFgsAllowListEntry mInfoTempFgsAllowListReason;
+    ActivityManagerService.FgsTempAllowListItem mInfoTempFgsAllowListReason;
     // Is the same mInfoAllowStartForeground string has been logged before? Used for dedup.
     boolean mLoggedInfoAllowStartForeground;
     // The number of times Service.startForeground() is called;
diff --git a/services/core/java/com/android/server/app/GameManagerService.java b/services/core/java/com/android/server/app/GameManagerService.java
index b103def..b7ef10a 100644
--- a/services/core/java/com/android/server/app/GameManagerService.java
+++ b/services/core/java/com/android/server/app/GameManagerService.java
@@ -199,13 +199,12 @@
         @Override
         public void onPropertiesChanged(Properties properties) {
             synchronized (mDeviceConfigLock) {
-                for (String key : properties.getKeyset()) {
+                for (final String packageName : properties.getKeyset()) {
                     try {
                         // Check if the package is installed before caching it.
-                        final String packageName = keyToPackageName(key);
                         mPackageManager.getPackageInfo(packageName, 0);
                         final GamePackageConfiguration config =
-                                GamePackageConfiguration.fromProperties(key, properties);
+                                GamePackageConfiguration.fromProperties(packageName, properties);
                         if (config.isValid()) {
                             putConfig(config);
                         } else {
@@ -290,8 +289,8 @@
         private final String mPackageName;
         private final ArrayMap<Integer, GameModeConfiguration> mModeConfigs;
 
-        private GamePackageConfiguration(String keyName) {
-            mPackageName = keyToPackageName(keyName);
+        private GamePackageConfiguration(String packageName) {
+            mPackageName = packageName;
             mModeConfigs = new ArrayMap<>();
         }
 
@@ -563,9 +562,9 @@
         }
     }
 
-    private void loadDeviceConfigLocked() {
+    void loadDeviceConfigLocked() {
         final List<PackageInfo> packages = mPackageManager.getInstalledPackages(0);
-        final String[] packageNames = packages.stream().map(e -> packageNameToKey(e.packageName))
+        final String[] packageNames = packages.stream().map(e -> e.packageName)
                 .toArray(String[]::new);
         synchronized (mDeviceConfigLock) {
             final Properties properties = DeviceConfig.getProperties(
@@ -680,8 +679,7 @@
                         case ACTION_PACKAGE_CHANGED:
                             synchronized (mDeviceConfigLock) {
                                 Properties properties = DeviceConfig.getProperties(
-                                        DeviceConfig.NAMESPACE_GAME_OVERLAY,
-                                        packageNameToKey(packageName));
+                                        DeviceConfig.NAMESPACE_GAME_OVERLAY, packageName);
                                 for (String key : properties.getKeyset()) {
                                     GamePackageConfiguration config =
                                             GamePackageConfiguration.fromProperties(key,
@@ -692,7 +690,9 @@
                             break;
                         case ACTION_PACKAGE_REMOVED:
                             disableCompatScale(packageName);
-                            mConfigs.remove(packageName);
+                            synchronized (mDeviceConfigLock) {
+                                mConfigs.remove(packageName);
+                            }
                             break;
                         default:
                             // do nothing
@@ -710,23 +710,6 @@
         mDeviceConfigListener = new DeviceConfigListener();
     }
 
-    /**
-     * Valid package name characters are [a-zA-Z0-9_] with a '.' delimiter. Policy keys can only use
-     * [a-zA-Z0-9_] so we must handle periods. We do this by appending a '_' to any existing
-     * sequence of '_', then we replace all '.' chars with '_';
-     */
-    private static String packageNameToKey(String name) {
-        return name.replaceAll("(_+)", "_$1").replaceAll("\\.", "_");
-    }
-
-    /**
-     * Replace the last '_' in a sequence with '.' (this can be one or more chars), then replace the
-     * resulting special case '_.' with just '_' to get the original package name.
-     */
-    private static String keyToPackageName(String key) {
-        return key.replaceAll("(_)(?!\\1)", ".").replaceAll("_\\.", "_");
-    }
-
     private String dumpDeviceConfigs() {
         StringBuilder out = new StringBuilder();
         for (String key : mConfigs.keySet()) {
diff --git a/services/core/java/com/android/server/apphibernation/AppHibernationService.java b/services/core/java/com/android/server/apphibernation/AppHibernationService.java
index 540589b..aa51800 100644
--- a/services/core/java/com/android/server/apphibernation/AppHibernationService.java
+++ b/services/core/java/com/android/server/apphibernation/AppHibernationService.java
@@ -109,7 +109,7 @@
     private final boolean mOatArtifactDeletionEnabled;
 
     @VisibleForTesting
-    boolean mIsServiceEnabled;
+    public static boolean sIsServiceEnabled;
 
     /**
      * Initializes the system service.
@@ -165,7 +165,7 @@
             });
         }
         if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) {
-            mIsServiceEnabled = isAppHibernationEnabled();
+            sIsServiceEnabled = isDeviceConfigAppHibernationEnabled();
             DeviceConfig.addOnPropertiesChangedListener(
                     NAMESPACE_APP_HIBERNATION,
                     ActivityThread.currentApplication().getMainExecutor(),
@@ -536,7 +536,7 @@
     private void onDeviceConfigChanged(Properties properties) {
         for (String key : properties.getKeyset()) {
             if (TextUtils.equals(KEY_APP_HIBERNATION_ENABLED, key)) {
-                mIsServiceEnabled = isAppHibernationEnabled();
+                sIsServiceEnabled = isDeviceConfigAppHibernationEnabled();
                 break;
             }
         }
@@ -574,10 +574,10 @@
     }
 
     private boolean checkHibernationEnabled(String methodName) {
-        if (!mIsServiceEnabled) {
+        if (!sIsServiceEnabled) {
             Slog.w(TAG, String.format("Attempted to call %s on unsupported device.", methodName));
         }
-        return mIsServiceEnabled;
+        return sIsServiceEnabled;
     }
 
     private void dump(PrintWriter pw) {
@@ -725,6 +725,10 @@
      * @return true if enabled, false otherwise
      */
     public static boolean isAppHibernationEnabled() {
+        return sIsServiceEnabled;
+    }
+
+    private static boolean isDeviceConfigAppHibernationEnabled() {
         return DeviceConfig.getBoolean(
                 NAMESPACE_APP_HIBERNATION,
                 KEY_APP_HIBERNATION_ENABLED,
diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java
index 3f07572..2a0beb8 100644
--- a/services/core/java/com/android/server/appop/AppOpsService.java
+++ b/services/core/java/com/android/server/appop/AppOpsService.java
@@ -565,6 +565,9 @@
                 } else if (mActivityManagerInternal != null
                         && mActivityManagerInternal.isPendingTopUid(uid)) {
                     return MODE_ALLOWED;
+                } else if (mActivityManagerInternal != null
+                        && mActivityManagerInternal.isTempAllowlistedForFgsWhileInUse(uid)) {
+                    return MODE_ALLOWED;
                 } else if (state <= UID_STATE_TOP) {
                     // process is in TOP.
                     return MODE_ALLOWED;
diff --git a/services/core/java/com/android/server/biometrics/BiometricStrengthController.java b/services/core/java/com/android/server/biometrics/BiometricStrengthController.java
index c96a182..270621c 100644
--- a/services/core/java/com/android/server/biometrics/BiometricStrengthController.java
+++ b/services/core/java/com/android/server/biometrics/BiometricStrengthController.java
@@ -84,6 +84,8 @@
             final int id = sensor.id;
             if (idToStrength.containsKey(id)) {
                 final int newStrength = idToStrength.get(id);
+                Slog.d(TAG, "updateStrengths: update sensorId=" + id + " to newStrength="
+                        + newStrength);
                 sensor.updateStrength(newStrength);
             }
         }
diff --git a/services/core/java/com/android/server/biometrics/Utils.java b/services/core/java/com/android/server/biometrics/Utils.java
index f4cb387..996f0fd 100644
--- a/services/core/java/com/android/server/biometrics/Utils.java
+++ b/services/core/java/com/android/server/biometrics/Utils.java
@@ -411,6 +411,23 @@
     }
 
     /**
+     * Returns the sensor's current strength, taking any updated strengths into effect.
+     *
+     * @param sensorId The sensor Id
+     * @return see {@link BiometricManager.Authenticators}
+     */
+    public static @Authenticators.Types int getCurrentStrength(int sensorId) {
+        IBiometricService service = IBiometricService.Stub.asInterface(
+                ServiceManager.getService(Context.BIOMETRIC_SERVICE));
+        try {
+            return service.getCurrentStrength(sensorId);
+        } catch (RemoteException e) {
+            Slog.e(TAG, "RemoteException", e);
+            return Authenticators.EMPTY_SET;
+        }
+    }
+
+    /**
      * Checks if a client package matches Keyguard and can perform internal biometric operations.
      *
      * @param context The system context.
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java
index d56fd12..82b1271d 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java
@@ -375,12 +375,12 @@
         }
 
         @Override
-        public void onFeaturesRetrieved(byte[] features, int enrollmentId) {
+        public void onFeaturesRetrieved(byte[] features) {
 
         }
 
         @Override
-        public void onFeatureSet(int enrollmentId, byte feature) {
+        public void onFeatureSet(byte feature) {
 
         }
 
@@ -557,6 +557,8 @@
 
         proto.write(SensorStateProto.SENSOR_ID, mSensorProperties.sensorId);
         proto.write(SensorStateProto.MODALITY, SensorStateProto.FACE);
+        proto.write(SensorStateProto.CURRENT_STRENGTH,
+                Utils.getCurrentStrength(mSensorProperties.sensorId));
         proto.write(SensorStateProto.SCHEDULER, mScheduler.dumpProtoState(clearSchedulerBuffer));
 
         for (UserInfo user : UserManager.get(mContext).getUsers()) {
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/TestHal.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/TestHal.java
index c63af7e..f1bfd53 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/TestHal.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/TestHal.java
@@ -32,6 +32,7 @@
  */
 public class TestHal extends IFace.Stub {
     private static final String TAG = "face.aidl.TestHal";
+
     @Override
     public SensorProps[] getSensorProps() {
         Slog.w(TAG, "getSensorProps");
@@ -102,16 +103,16 @@
             }
 
             @Override
-            public void getFeatures(int enrollmentId) throws RemoteException {
+            public void getFeatures() throws RemoteException {
                 Slog.w(TAG, "getFeatures");
-                cb.onFeaturesRetrieved(new byte[0], enrollmentId);
+                cb.onFeaturesRetrieved(new byte[0]);
             }
 
             @Override
-            public void setFeature(HardwareAuthToken hat, int enrollmentId,
-                    byte feature, boolean enabled) throws RemoteException {
+            public void setFeature(HardwareAuthToken hat, byte feature, boolean enabled)
+                    throws RemoteException {
                 Slog.w(TAG, "setFeature");
-                cb.onFeatureSet(enrollmentId, feature);
+                cb.onFeatureSet(feature);
             }
 
             @Override
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java
index 2cb2939..a40155b 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java
@@ -807,6 +807,8 @@
 
         proto.write(SensorStateProto.SENSOR_ID, mSensorProperties.sensorId);
         proto.write(SensorStateProto.MODALITY, SensorStateProto.FACE);
+        proto.write(SensorStateProto.CURRENT_STRENGTH,
+                Utils.getCurrentStrength(mSensorProperties.sensorId));
         proto.write(SensorStateProto.SCHEDULER, mScheduler.dumpProtoState(clearSchedulerBuffer));
 
         for (UserInfo user : UserManager.get(mContext).getUsers()) {
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
index 6a9b125..8be664e 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java
@@ -527,6 +527,8 @@
 
         proto.write(SensorStateProto.SENSOR_ID, mSensorProperties.sensorId);
         proto.write(SensorStateProto.MODALITY, SensorStateProto.FINGERPRINT);
+        proto.write(SensorStateProto.CURRENT_STRENGTH,
+                Utils.getCurrentStrength(mSensorProperties.sensorId));
         proto.write(SensorStateProto.SCHEDULER, mScheduler.dumpProtoState(clearSchedulerBuffer));
 
         for (UserInfo user : UserManager.get(mContext).getUsers()) {
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
index eb78245..fd7ef09 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
@@ -764,6 +764,8 @@
 
         proto.write(SensorStateProto.SENSOR_ID, mSensorProperties.sensorId);
         proto.write(SensorStateProto.MODALITY, SensorStateProto.FINGERPRINT);
+        proto.write(SensorStateProto.CURRENT_STRENGTH,
+                Utils.getCurrentStrength(mSensorProperties.sensorId));
         proto.write(SensorStateProto.SCHEDULER, mScheduler.dumpProtoState(clearSchedulerBuffer));
 
         for (UserInfo user : UserManager.get(mContext).getUsers()) {
diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java
index 47c7e39..e2aa071 100644
--- a/services/core/java/com/android/server/clipboard/ClipboardService.java
+++ b/services/core/java/com/android/server/clipboard/ClipboardService.java
@@ -952,14 +952,8 @@
             try {
                 CharSequence callingAppLabel = mPm.getApplicationLabel(
                         mPm.getApplicationInfoAsUser(callingPackage, 0, userId));
-                String message;
-                if (isText(clipboard.primaryClip)) {
-                    message = getContext().getString(
-                            R.string.pasted_text, callingAppLabel);
-                } else {
-                    message = getContext().getString(
-                            R.string.pasted_content, callingAppLabel);
-                }
+                String message =
+                        getContext().getString(R.string.pasted_from_clipboard, callingAppLabel);
                 Slog.i(TAG, message);
                 Toast.makeText(
                         getContext(), UiThread.get().getLooper(), message, Toast.LENGTH_SHORT)
diff --git a/services/core/java/com/android/server/connectivity/FullScore.java b/services/core/java/com/android/server/connectivity/FullScore.java
index 52da566..14cec09 100644
--- a/services/core/java/com/android/server/connectivity/FullScore.java
+++ b/services/core/java/com/android/server/connectivity/FullScore.java
@@ -259,6 +259,14 @@
     }
 
     /**
+     * Returns this score but validated.
+     */
+    public FullScore asValidated() {
+        return new FullScore(mLegacyInt, mPolicies | (1L << POLICY_IS_VALIDATED),
+                mKeepConnectedReason);
+    }
+
+    /**
      * For backward compatibility, get the legacy int.
      * This will be removed before S is published.
      */
diff --git a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
index 584174e..18becd4 100644
--- a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
+++ b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
@@ -950,6 +950,26 @@
     }
 
     /**
+     * Returns a Scoreable identical to this NAI, but validated.
+     *
+     * This is useful to probe what scoring would be if this network validated, to know
+     * whether to provisionally keep a network that may or may not validate.
+     *
+     * @return a Scoreable identical to this NAI, but validated.
+     */
+    public NetworkRanker.Scoreable getValidatedScoreable() {
+        return new NetworkRanker.Scoreable() {
+            @Override public FullScore getScore() {
+                return mScore.asValidated();
+            }
+
+            @Override public NetworkCapabilities getCapsNoCopy() {
+                return networkCapabilities;
+            }
+        };
+    }
+
+    /**
      * Return a {@link NetworkStateSnapshot} for this network.
      */
     @NonNull
diff --git a/services/core/java/com/android/server/connectivity/NetworkRanker.java b/services/core/java/com/android/server/connectivity/NetworkRanker.java
index 2b345e5..346af44 100644
--- a/services/core/java/com/android/server/connectivity/NetworkRanker.java
+++ b/services/core/java/com/android/server/connectivity/NetworkRanker.java
@@ -234,16 +234,17 @@
         NetworkAgentInfo bestNetwork = null;
         int bestScore = Integer.MIN_VALUE;
         for (final NetworkAgentInfo nai : nais) {
-            if (nai.getCurrentScore() > bestScore) {
+            final int naiScore = nai.getCurrentScore();
+            if (naiScore > bestScore) {
                 bestNetwork = nai;
-                bestScore = nai.getCurrentScore();
+                bestScore = naiScore;
             }
         }
         return bestNetwork;
     }
 
     /**
-     * Returns whether an offer has a chance to beat a champion network for a request.
+     * Returns whether a {@link Scoreable} has a chance to beat a champion network for a request.
      *
      * Offers are sent by network providers when they think they might be able to make a network
      * with the characteristics contained in the offer. If the offer has no chance to beat
@@ -257,15 +258,15 @@
      *
      * @param request The request to evaluate against.
      * @param champion The currently best network for this request.
-     * @param offer The offer.
+     * @param contestant The offer.
      * @return Whether the offer stands a chance to beat the champion.
      */
     public boolean mightBeat(@NonNull final NetworkRequest request,
             @Nullable final NetworkAgentInfo champion,
-            @NonNull final NetworkOffer offer) {
+            @NonNull final Scoreable contestant) {
         // If this network can't even satisfy the request then it can't beat anything, not
         // even an absence of network. It can't satisfy it anyway.
-        if (!request.canBeSatisfiedBy(offer.caps)) return false;
+        if (!request.canBeSatisfiedBy(contestant.getCapsNoCopy())) return false;
         // If there is no satisfying network, then this network can beat, because some network
         // is always better than no network.
         if (null == champion) return true;
@@ -274,25 +275,24 @@
             // Otherwise rank them.
             final ArrayList<Scoreable> candidates = new ArrayList<>();
             candidates.add(champion);
-            candidates.add(offer);
-            return offer == getBestNetworkByPolicy(candidates, champion);
+            candidates.add(contestant);
+            return contestant == getBestNetworkByPolicy(candidates, champion);
         } else {
-            return mightBeatByLegacyInt(request, champion.getScore(), offer);
+            return mightBeatByLegacyInt(champion.getScore(), contestant);
         }
     }
 
     /**
-     * Returns whether an offer might beat a champion according to the legacy int.
+     * Returns whether a contestant might beat a champion according to the legacy int.
      */
-    public boolean mightBeatByLegacyInt(@NonNull final NetworkRequest request,
-            @Nullable final FullScore championScore,
-            @NonNull final NetworkOffer offer) {
+    private boolean mightBeatByLegacyInt(@Nullable final FullScore championScore,
+            @NonNull final Scoreable contestant) {
         final int offerIntScore;
-        if (offer.caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) {
+        if (contestant.getCapsNoCopy().hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) {
             // If the offer might have Internet access, then it might validate.
-            offerIntScore = offer.score.getLegacyIntAsValidated();
+            offerIntScore = contestant.getScore().getLegacyIntAsValidated();
         } else {
-            offerIntScore = offer.score.getLegacyInt();
+            offerIntScore = contestant.getScore().getLegacyInt();
         }
         return championScore.getLegacyInt() < offerIntScore;
     }
diff --git a/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java b/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java
index fb14fbd..c0ab093 100644
--- a/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java
+++ b/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java
@@ -502,8 +502,8 @@
                 Slog.e(TAG, "Failed to lookup font file that has " + font.getPostScriptName());
                 return null;
             }
-            resolvedFonts.add(new FontConfig.Font(info.mFile, null, font.getFontStyle(),
-                    font.getIndex(), font.getFontVariationSettings(), null));
+            resolvedFonts.add(new FontConfig.Font(info.mFile, null, info.getPostScriptName(),
+                    font.getFontStyle(), font.getIndex(), font.getFontVariationSettings(), null));
         }
         return new FontConfig.FontFamily(resolvedFonts, fontFamily.getName(),
                 null, FontConfig.FontFamily.VARIANT_DEFAULT);
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
index 3678b19..6114094 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
@@ -222,7 +222,6 @@
         super.disableDevice(initiatedByCec, callback);
         assertRunOnServiceThread();
         mService.unregisterTvInputCallback(mTvInputCallback);
-        // TODO(b/129088603): check disableDevice and onStandby behaviors per spec
     }
 
     @Override
@@ -847,7 +846,6 @@
     }
 
     protected void switchToAudioInput() {
-        // TODO(b/111396634): switch input according to PROPERTY_SYSTEM_AUDIO_MODE_AUDIO_PORT
     }
 
     protected boolean isDirectConnectToTv() {
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index 7994fcc..94a5099 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -3177,7 +3177,7 @@
 
     @BinderThread
     @Override
-    public void reportPerceptible(IBinder windowToken, boolean perceptible) {
+    public void reportPerceptibleAsync(IBinder windowToken, boolean perceptible) {
         Objects.requireNonNull(windowToken, "windowToken must not be null");
         int uid = Binder.getCallingUid();
         synchronized (mMethodMap) {
@@ -5992,9 +5992,8 @@
 
         @BinderThread
         @Override
-        public void reportStartInput(IBinder startInputToken, IVoidResultCallback resultCallback) {
-            CallbackUtils.onResult(resultCallback,
-                    () -> mImms.reportStartInput(mToken, startInputToken));
+        public void reportStartInputAsync(IBinder startInputToken) {
+            mImms.reportStartInput(mToken, startInputToken);
         }
 
         @BinderThread
diff --git a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java
index 6244743..885093d 100644
--- a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java
@@ -1840,7 +1840,7 @@
 
         @BinderThread
         @Override
-        public void reportPerceptible(IBinder windowClient, boolean perceptible) {
+        public void reportPerceptibleAsync(IBinder windowClient, boolean perceptible) {
             reportNotSupported();
         }
 
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 045e06d0..2ffc62a 100644
--- a/services/core/java/com/android/server/location/eventlog/LocationEventLog.java
+++ b/services/core/java/com/android/server/location/eventlog/LocationEventLog.java
@@ -178,8 +178,9 @@
     }
 
     /** Logs that a provider has entered or exited stationary throttling. */
-    public void logProviderStationaryThrottled(String provider, boolean throttled) {
-        addLogEvent(EVENT_PROVIDER_STATIONARY_THROTTLED, provider, throttled);
+    public void logProviderStationaryThrottled(String provider, boolean throttled,
+            ProviderRequest request) {
+        addLogEvent(EVENT_PROVIDER_STATIONARY_THROTTLED, provider, throttled, request);
     }
 
     /** Logs that the location power save mode has changed. */
@@ -217,7 +218,7 @@
                         (Integer) args[1], (CallerIdentity) args[2]);
             case EVENT_PROVIDER_STATIONARY_THROTTLED:
                 return new ProviderStationaryThrottledEvent(timeDelta, (String) args[0],
-                        (Boolean) args[1]);
+                        (Boolean) args[1], (ProviderRequest) args[2]);
             case EVENT_LOCATION_POWER_SAVE_MODE_CHANGE:
                 return new LocationPowerSaveModeEvent(timeDelta, (Integer) args[0]);
             default:
@@ -355,17 +356,19 @@
     private static final class ProviderStationaryThrottledEvent extends ProviderEvent {
 
         private final boolean mStationaryThrottled;
+        private final ProviderRequest mRequest;
 
         ProviderStationaryThrottledEvent(long timeDelta, String provider,
-                boolean stationaryThrottled) {
+                boolean stationaryThrottled, ProviderRequest request) {
             super(timeDelta, provider);
             mStationaryThrottled = stationaryThrottled;
+            mRequest = request;
         }
 
         @Override
         public String getLogString() {
             return mProvider + " provider stationary/idle " + (mStationaryThrottled ? "throttled"
-                    : "unthrottled");
+                    : "unthrottled") + ", request = " + mRequest;
         }
     }
 
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 1ad3812..0be325f 100644
--- a/services/core/java/com/android/server/location/provider/LocationProviderManager.java
+++ b/services/core/java/com/android/server/location/provider/LocationProviderManager.java
@@ -25,12 +25,12 @@
 import static android.location.LocationManager.KEY_PROVIDER_ENABLED;
 import static android.location.LocationManager.PASSIVE_PROVIDER;
 import static android.os.IPowerManager.LOCATION_MODE_NO_CHANGE;
+import static android.os.PowerExemptionManager.REASON_LOCATION_PROVIDER;
+import static android.os.PowerExemptionManager.TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_ALLOWED;
 import static android.os.PowerManager.LOCATION_MODE_ALL_DISABLED_WHEN_SCREEN_OFF;
 import static android.os.PowerManager.LOCATION_MODE_FOREGROUND_ONLY;
 import static android.os.PowerManager.LOCATION_MODE_GPS_DISABLED_WHEN_SCREEN_OFF;
 import static android.os.PowerManager.LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF;
-import static android.os.PowerWhitelistManager.REASON_LOCATION_PROVIDER;
-import static android.os.PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED;
 
 import static com.android.server.location.LocationManagerService.D;
 import static com.android.server.location.LocationManagerService.TAG;
@@ -148,10 +148,10 @@
     private static final long MAX_HIGH_POWER_INTERVAL_MS = 5 * 60 * 1000;
 
     // max age of a location before it is no longer considered "current"
-    private static final long MAX_CURRENT_LOCATION_AGE_MS = 10 * 1000;
+    private static final long MAX_CURRENT_LOCATION_AGE_MS = 30 * 1000;
 
     // max timeout allowed for getting the current location
-    private static final long GET_CURRENT_LOCATION_MAX_TIMEOUT_MS = 30 * 1000;
+    private static final long MAX_GET_CURRENT_LOCATION_TIMEOUT_MS = 30 * 1000;
 
     // max jitter allowed for min update interval as a percentage of the interval
     private static final float FASTEST_INTERVAL_JITTER_PERCENTAGE = .10f;
@@ -230,7 +230,7 @@
             options.setDontSendToRestrictedApps(true);
             // allows apps to start a fg service in response to a location PI
             options.setTemporaryAppAllowlist(TEMPORARY_APP_ALLOWLIST_DURATION_MS,
-                    TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED,
+                    TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_ALLOWED,
                     REASON_LOCATION_PROVIDER,
                     "");
 
@@ -1655,9 +1655,9 @@
 
     public @Nullable ICancellationSignal getCurrentLocation(LocationRequest request,
             CallerIdentity identity, int permissionLevel, ILocationCallback callback) {
-        if (request.getDurationMillis() > GET_CURRENT_LOCATION_MAX_TIMEOUT_MS) {
+        if (request.getDurationMillis() > MAX_GET_CURRENT_LOCATION_TIMEOUT_MS) {
             request = new LocationRequest.Builder(request)
-                    .setDurationMillis(GET_CURRENT_LOCATION_MAX_TIMEOUT_MS)
+                    .setDurationMillis(MAX_GET_CURRENT_LOCATION_TIMEOUT_MS)
                     .build();
         }
 
diff --git a/services/core/java/com/android/server/location/provider/StationaryThrottlingLocationProvider.java b/services/core/java/com/android/server/location/provider/StationaryThrottlingLocationProvider.java
index ab7e526..22a675a 100644
--- a/services/core/java/com/android/server/location/provider/StationaryThrottlingLocationProvider.java
+++ b/services/core/java/com/android/server/location/provider/StationaryThrottlingLocationProvider.java
@@ -206,7 +206,7 @@
                 if (D) {
                     Log.d(TAG, mName + " provider stationary throttled");
                 }
-                EVENT_LOG.logProviderStationaryThrottled(mName, true);
+                EVENT_LOG.logProviderStationaryThrottled(mName, true, mOutgoingRequest);
             }
 
             if (mDeliverLastLocationCallback != null) {
@@ -224,7 +224,7 @@
             }
         } else {
             if (oldThrottlingIntervalMs != INTERVAL_DISABLED) {
-                EVENT_LOG.logProviderStationaryThrottled(mName, false);
+                EVENT_LOG.logProviderStationaryThrottled(mName, false, mOutgoingRequest);
                 if (D) {
                     Log.d(TAG, mName + " provider stationary unthrottled");
                 }
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
index 59f00a2..6cded50 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
@@ -1261,7 +1261,8 @@
         return getCredentialTypeInternal(userId) != CREDENTIAL_TYPE_NONE;
     }
 
-    private void setKeystorePassword(byte[] password, int userHandle) {
+    @VisibleForTesting /** Note: this method is overridden in unit tests */
+    void setKeystorePassword(byte[] password, int userHandle) {
         AndroidKeyStoreMaintenance.onUserPasswordChanged(userHandle, password);
     }
 
diff --git a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
index c01523a..90694d0 100644
--- a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
+++ b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
@@ -205,6 +205,7 @@
                 Slog.i(TAG, "Using server based resume on reboot");
                 rebootEscrowProvider = new RebootEscrowProviderServerBasedImpl(mContext, mStorage);
             } else {
+                Slog.i(TAG, "Using HAL based resume on reboot");
                 rebootEscrowProvider = new RebootEscrowProviderHalImpl();
             }
 
@@ -239,7 +240,7 @@
             return mKeyStoreManager;
         }
 
-        public RebootEscrowProviderInterface getRebootEscrowProvider() {
+        public RebootEscrowProviderInterface createRebootEscrowProviderIfNeeded() {
             // Initialize for the provider lazily. Because the device_config and service
             // implementation apps may change when system server is running.
             if (mRebootEscrowProvider == null) {
@@ -249,6 +250,14 @@
             return mRebootEscrowProvider;
         }
 
+        public RebootEscrowProviderInterface getRebootEscrowProvider() {
+            return mRebootEscrowProvider;
+        }
+
+        public void clearRebootEscrowProvider() {
+            mRebootEscrowProvider = null;
+        }
+
         public int getBootCount() {
             return Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.BOOT_COUNT,
                     0);
@@ -308,8 +317,6 @@
             mStorage.removeRebootEscrow(user.id);
         }
 
-        // Clear the old key in keystore.
-        mKeyStoreManager.clearKeyStoreEncryptionKey();
         onEscrowRestoreComplete(false, attemptCount);
     }
 
@@ -395,9 +402,6 @@
             allUsersUnlocked &= restoreRebootEscrowForUser(user.id, escrowKey, kk);
         }
 
-        // Clear the old key in keystore. A new key will be generated by new RoR requests.
-        mKeyStoreManager.clearKeyStoreEncryptionKey();
-
         if (!allUsersUnlocked && mLoadEscrowDataErrorCode == ERROR_NONE) {
             mLoadEscrowDataErrorCode = ERROR_UNLOCK_ALL_USERS;
         }
@@ -473,11 +477,17 @@
         if (success || (previousBootCount != -1 && bootCountDelta <= BOOT_COUNT_TOLERANCE)) {
             reportMetricOnRestoreComplete(success, attemptCount);
         }
+
+        // Clear the old key in keystore. A new key will be generated by new RoR requests.
+        mKeyStoreManager.clearKeyStoreEncryptionKey();
+        // Clear the saved reboot escrow provider
+        mInjector.clearRebootEscrowProvider();
         clearMetricsStorage();
     }
 
     private RebootEscrowKey getAndClearRebootEscrowKey(SecretKey kk) throws IOException {
-        RebootEscrowProviderInterface rebootEscrowProvider = mInjector.getRebootEscrowProvider();
+        RebootEscrowProviderInterface rebootEscrowProvider =
+                mInjector.createRebootEscrowProviderIfNeeded();
         if (rebootEscrowProvider == null) {
             Slog.w(TAG,
                     "Had reboot escrow data for users, but RebootEscrowProvider is unavailable");
@@ -529,9 +539,8 @@
             return;
         }
 
-        if (mInjector.getRebootEscrowProvider() == null) {
-            Slog.w(TAG,
-                    "Had reboot escrow data for users, but RebootEscrowProvider is unavailable");
+        if (mInjector.createRebootEscrowProviderIfNeeded() == null) {
+            Slog.w(TAG, "Not storing escrow data, RebootEscrowProvider is unavailable");
             return;
         }
 
@@ -586,13 +595,17 @@
         mRebootEscrowWanted = false;
         setRebootEscrowReady(false);
 
-        RebootEscrowProviderInterface rebootEscrowProvider = mInjector.getRebootEscrowProvider();
+        // We want to clear the internal data inside the provider, so always try to create the
+        // provider.
+        RebootEscrowProviderInterface rebootEscrowProvider =
+                mInjector.createRebootEscrowProviderIfNeeded();
         if (rebootEscrowProvider == null) {
             Slog.w(TAG, "RebootEscrowProvider is unavailable for clear request");
         } else {
             rebootEscrowProvider.clearRebootEscrowKey();
         }
 
+        mInjector.clearRebootEscrowProvider();
         clearMetricsStorage();
 
         List<UserInfo> users = mUserManager.getUsers();
@@ -610,8 +623,7 @@
 
         RebootEscrowProviderInterface rebootEscrowProvider = mInjector.getRebootEscrowProvider();
         if (rebootEscrowProvider == null) {
-            Slog.w(TAG,
-                    "Had reboot escrow data for users, but RebootEscrowProvider is unavailable");
+            Slog.w(TAG, "Not storing escrow key, RebootEscrowProvider is unavailable");
             clearRebootEscrowIfNeeded();
             return ARM_REBOOT_ERROR_NO_PROVIDER;
         }
@@ -677,11 +689,12 @@
     }
 
     boolean prepareRebootEscrow() {
-        if (mInjector.getRebootEscrowProvider() == null) {
+        clearRebootEscrowIfNeeded();
+        if (mInjector.createRebootEscrowProviderIfNeeded() == null) {
+            Slog.w(TAG, "No reboot escrow provider, skipping resume on reboot preparation.");
             return false;
         }
 
-        clearRebootEscrowIfNeeded();
         mRebootEscrowWanted = true;
         mEventLog.addEntry(RebootEscrowEvent.REQUESTED_LSKF);
         return true;
@@ -807,6 +820,10 @@
         pw.print("mPendingRebootEscrowKey is ");
         pw.println(keySet ? "set" : "not set");
 
+        RebootEscrowProviderInterface provider = mInjector.getRebootEscrowProvider();
+        String providerType = provider == null ? "null" : String.valueOf(provider.getType());
+        pw.print("RebootEscrowProvider type is " + providerType);
+
         pw.println();
         pw.println("Event log:");
         pw.increaseIndent();
diff --git a/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java b/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java
index bb996a0..9a19031 100644
--- a/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java
+++ b/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java
@@ -195,6 +195,7 @@
         options.setTemporaryAppAllowlist(fgsAllowlistDurationMs,
                 PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED,
                 PowerWhitelistManager.REASON_MEDIA_BUTTON, "");
+        options.setBackgroundActivityStartsAllowed(true);
         if (mPendingIntent != null) {
             if (DEBUG_KEY_EVENT) {
                 Log.d(TAG, "Sending " + keyEvent + " to the last known PendingIntent "
diff --git a/services/core/java/com/android/server/media/MediaSessionDeviceConfig.java b/services/core/java/com/android/server/media/MediaSessionDeviceConfig.java
index 9bb8e2e..7e747ce 100644
--- a/services/core/java/com/android/server/media/MediaSessionDeviceConfig.java
+++ b/services/core/java/com/android/server/media/MediaSessionDeviceConfig.java
@@ -46,6 +46,18 @@
     private static volatile long sMediaSessionCallbackFgsAllowlistDurationMs =
             DEFAULT_MEDIA_SESSION_CALLBACK_FGS_ALLOWLIST_DURATION_MS;
 
+    /**
+     * Denotes the duration for which an app receiving a media session callback and the FGS started
+     * there can be temporarily allowed to have while-in-use permissions such as
+     * location/camera/microphone for a duration of time.
+     */
+    private static final String KEY_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS =
+            "media_session_callback_fgs_while_in_use_temp_allow_duration_ms";
+    private static final long DEFAULT_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS
+            = 10_000;
+    private static volatile long sMediaSessionCallbackFgsWhileInUseTempAllowDurationMs =
+            DEFAULT_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS;
+
     private static void refresh(DeviceConfig.Properties properties) {
         final Set<String> keys = properties.getKeyset();
         properties.getKeyset().forEach(key -> {
@@ -58,6 +70,9 @@
                     sMediaSessionCallbackFgsAllowlistDurationMs = properties.getLong(key,
                             DEFAULT_MEDIA_SESSION_CALLBACK_FGS_ALLOWLIST_DURATION_MS);
                     break;
+                case KEY_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS:
+                    sMediaSessionCallbackFgsWhileInUseTempAllowDurationMs = properties.getLong(key,
+                            DEFAULT_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS);
             }
         });
     }
@@ -86,6 +101,15 @@
         return sMediaSessionCallbackFgsAllowlistDurationMs;
     }
 
+    /**
+     * Return the duration for which an app receiving a media session callback and the FGS started
+     * there can be temporarily allowed to have while-in-use permissions such as
+     * location/camera/micrphone.
+     */
+    public static long getMediaSessionCallbackFgsWhileInUseTempAllowDurationMs() {
+        return sMediaSessionCallbackFgsWhileInUseTempAllowDurationMs;
+    }
+
     public static void dump(PrintWriter pw, String prefix) {
         pw.println("Media session config:");
         final String dumpFormat = prefix + "  %s: [cur: %s, def: %s]";
@@ -97,5 +121,9 @@
                 KEY_MEDIA_SESSION_CALLBACK_FGS_ALLOWLIST_DURATION_MS,
                 sMediaSessionCallbackFgsAllowlistDurationMs,
                 DEFAULT_MEDIA_SESSION_CALLBACK_FGS_ALLOWLIST_DURATION_MS));
+        pw.println(TextUtils.formatSimple(dumpFormat,
+                KEY_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS,
+                sMediaSessionCallbackFgsWhileInUseTempAllowDurationMs,
+                DEFAULT_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS));
     }
 }
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index 50cfe1f..491cd18 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -552,15 +552,30 @@
         final long token = Binder.clearCallingIdentity();
         try {
             enforcePackageName(callingPackage, callingUid);
-            if (targetUid != callingUid && mActivityManagerLocal.canStartForegroundService(
-                    callingPid, callingUid, callingPackage)) {
-                final Context userContext = mContext.createContextAsUser(
-                        UserHandle.of(UserHandle.getUserId(targetUid)), /* flags= */ 0);
-                final PowerExemptionManager powerExemptionManager = userContext.getSystemService(
-                        PowerExemptionManager.class);
-                powerExemptionManager.addToTemporaryAllowList(targetPackage,
-                        PowerExemptionManager.REASON_MEDIA_SESSION_CALLBACK, reason,
-                        MediaSessionDeviceConfig.getMediaSessionCallbackFgsAllowlistDurationMs());
+            if (targetUid != callingUid) {
+                Log.d(TAG, "tempAllowlistTargetPkgIfPossible callingPackage:"
+                        + callingPackage + " targetPackage:" + targetPackage
+                        + " reason:" + reason);
+                boolean canAllowWhileInUse = mActivityManagerLocal
+                        .canAllowWhileInUsePermissionInFgs(callingPid, callingUid, callingPackage);
+                boolean canStartFgs = canAllowWhileInUse
+                        || mActivityManagerLocal.canStartForegroundService(callingPid, callingUid,
+                        callingPackage);
+                if (canAllowWhileInUse) {
+                    mActivityManagerLocal.tempAllowWhileInUsePermissionInFgs(targetUid,
+                            MediaSessionDeviceConfig
+                                    .getMediaSessionCallbackFgsWhileInUseTempAllowDurationMs());
+                }
+                if (canStartFgs) {
+                    final Context userContext = mContext.createContextAsUser(
+                            UserHandle.of(UserHandle.getUserId(targetUid)), /* flags= */ 0);
+                    final PowerExemptionManager powerExemptionManager =
+                            userContext.getSystemService(
+                                    PowerExemptionManager.class);
+                    powerExemptionManager.addToTemporaryAllowList(targetPackage,
+                            PowerExemptionManager.REASON_MEDIA_SESSION_CALLBACK, reason,
+                            MediaSessionDeviceConfig.getMediaSessionCallbackFgsAllowlistDurationMs());
+                }
             }
         } finally {
             Binder.restoreCallingIdentity(token);
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index 05922b3..7e4e29e 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -2016,7 +2016,7 @@
         if (LOGV) Slog.v(TAG, "updateNetworkRulesNL()");
         Trace.traceBegin(TRACE_TAG_NETWORK, "updateNetworkRulesNL");
 
-        final List<NetworkStateSnapshot> snapshots = mConnManager.getAllNetworkStateSnapshot();
+        final List<NetworkStateSnapshot> snapshots = mConnManager.getAllNetworkStateSnapshots();
 
         // First, generate identities of all connected networks so we can
         // quickly compare them against all defined policies below.
diff --git a/services/core/java/com/android/server/net/TEST_MAPPING b/services/core/java/com/android/server/net/TEST_MAPPING
index f707597..02095eb 100644
--- a/services/core/java/com/android/server/net/TEST_MAPPING
+++ b/services/core/java/com/android/server/net/TEST_MAPPING
@@ -1,5 +1,5 @@
 {
-  "presubmit": [
+  "presubmit-large": [
     {
       "name": "CtsHostsideNetworkTests",
       "file_patterns": ["(/|^)NetworkPolicy[^/]*\\.java"],
@@ -14,7 +14,9 @@
           "exclude-annotation": "android.platform.test.annotations.FlakyTest"
         }
       ]
-    },
+    }
+  ],
+  "presubmit": [
     {
       "name": "FrameworksServicesTests",
       "file_patterns": ["(/|^)NetworkPolicy[^/]*\\.java"],
diff --git a/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java b/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java
index 8bd3b1e..42b7c9d3 100644
--- a/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java
+++ b/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java
@@ -100,7 +100,7 @@
 
         IntentFilter deletionFilter = new IntentFilter(ACTION_HISTORY_DELETION);
         deletionFilter.addDataScheme(SCHEME_DELETION);
-        mContext.registerReceiver(mFileCleaupReceiver, deletionFilter);
+        mContext.registerReceiver(mFileCleanupReceiver, deletionFilter);
     }
 
     public void init() {
@@ -273,13 +273,36 @@
         }
     }
 
+    /**
+     * Remove the first entry from the list of history files whose file matches the given file path.
+     *
+     * This method is necessary for anything that only has an absolute file path rather than an
+     * AtomicFile object from the list of history files.
+     *
+     * filePath should be an absolute path.
+     */
+    void removeFilePathFromHistory(String filePath) {
+        if (filePath == null) {
+            return;
+        }
+
+        Iterator<AtomicFile> historyFileItr = mHistoryFiles.iterator();
+        while (historyFileItr.hasNext()) {
+            final AtomicFile af = historyFileItr.next();
+            if (af != null && filePath.equals(af.getBaseFile().getAbsolutePath())) {
+                historyFileItr.remove();
+                return;
+            }
+        }
+    }
+
     private void deleteFile(AtomicFile file) {
         if (DEBUG) {
             Slog.d(TAG, "Removed " + file.getBaseFile().getName());
         }
         file.delete();
         // TODO: delete all relevant bitmaps, once they exist
-        mHistoryFiles.remove(file);
+        removeFilePathFromHistory(file.getBaseFile().getAbsolutePath());
     }
 
     private void scheduleDeletion(File file, long creationTime, int retentionDays) {
@@ -342,7 +365,7 @@
         }
     }
 
-    private final BroadcastReceiver mFileCleaupReceiver = new BroadcastReceiver() {
+    private final BroadcastReceiver mFileCleanupReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
             String action = intent.getAction();
@@ -358,7 +381,7 @@
                             Slog.d(TAG, "Removed " + fileToDelete.getBaseFile().getName());
                         }
                         fileToDelete.delete();
-                        mHistoryFiles.remove(fileToDelete);
+                        removeFilePathFromHistory(filePath);
                     }
                 } catch (Exception e) {
                     Slog.e(TAG, "Failed to delete notification history file", e);
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 3ddfe6c..52a5dc1 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -380,8 +380,6 @@
     static final int INVALID_UID = -1;
     static final String ROOT_PKG = "root";
 
-    static final boolean ENABLE_BLOCKED_TOASTS = true;
-
     static final String[] DEFAULT_ALLOWED_ADJUSTMENTS = new String[] {
             Adjustment.KEY_CONTEXTUAL_ACTIONS,
             Adjustment.KEY_TEXT_REPLIES,
@@ -737,19 +735,22 @@
         final List<UserInfo> activeUsers = mUm.getUsers();
         for (UserInfo userInfo : activeUsers) {
             int userId = userInfo.getUserHandle().getIdentifier();
-            if (isNASMigrationDone(userId)) {
+            if (isNASMigrationDone(userId) || mUm.isManagedProfile(userId)) {
                 continue;
             }
             if (mAssistants.hasUserSet(userId)) {
-                mAssistants.loadDefaultsFromConfig(false);
                 ComponentName defaultFromConfig = mAssistants.getDefaultFromConfig();
                 List<ComponentName> allowedComponents = mAssistants.getAllowedComponents(userId);
-                if (allowedComponents.contains(defaultFromConfig)) {
+                if (allowedComponents.size() == 0) {
+                    setNASMigrationDone(userId);
+                    mAssistants.clearDefaults();
+                    continue;
+                } else if (allowedComponents.contains(defaultFromConfig)) {
                     setNASMigrationDone(userId);
                     mAssistants.resetDefaultFromConfig();
                     continue;
                 }
-                //User selected different NAS or none, need onboarding
+                //User selected different NAS, need onboarding
                 enqueueNotificationInternal(getContext().getPackageName(),
                         getContext().getOpPackageName(), Binder.getCallingUid(),
                         Binder.getCallingPid(), TAG,
@@ -821,9 +822,11 @@
     }
 
     @VisibleForTesting
-    void setNASMigrationDone(int userId) {
-        Settings.Secure.putIntForUser(getContext().getContentResolver(),
-                Settings.Secure.NAS_SETTINGS_UPDATED, 1, userId);
+    void setNASMigrationDone(int baseUserId) {
+        for (int profileId : mUm.getProfileIds(baseUserId, false)) {
+            Settings.Secure.putIntForUser(getContext().getContentResolver(),
+                    Settings.Secure.NAS_SETTINGS_UPDATED, 1, profileId);
+        }
     }
 
     @VisibleForTesting
@@ -3165,34 +3168,11 @@
             }
 
             final int callingUid = Binder.getCallingUid();
-            final UserHandle callingUser = Binder.getCallingUserHandle();
+            checkCallerIsSameApp(pkg);
             final boolean isSystemToast = isCallerSystemOrPhone()
                     || PackageManagerService.PLATFORM_PACKAGE_NAME.equals(pkg);
-            final boolean isPackageSuspended = isPackagePaused(pkg);
-            final boolean notificationsDisabledForPackage = !areNotificationsEnabledForPackage(pkg,
-                    callingUid);
-
-            final boolean appIsForeground;
-            final long callingIdentity = Binder.clearCallingIdentity();
-            try {
-                appIsForeground = mActivityManager.getUidImportance(callingUid)
-                        == IMPORTANCE_FOREGROUND;
-            } finally {
-                Binder.restoreCallingIdentity(callingIdentity);
-            }
-
-            if (ENABLE_BLOCKED_TOASTS && !isSystemToast && ((notificationsDisabledForPackage
-                    && !appIsForeground) || isPackageSuspended)) {
-                Slog.e(TAG, "Suppressing toast from package " + pkg
-                        + (isPackageSuspended ? " due to package suspended."
-                        : " by user request."));
-                return;
-            }
-
             boolean isAppRenderedToast = (callback != null);
-            if (blockToast(callingUid, isSystemToast, isAppRenderedToast)) {
-                Slog.w(TAG, "Blocking custom toast from package " + pkg
-                        + " due to package not in the foreground at time the toast was posted");
+            if (!checkCanEnqueueToast(pkg, callingUid, isAppRenderedToast, isSystemToast)) {
                 return;
             }
 
@@ -3246,6 +3226,39 @@
             }
         }
 
+        private boolean checkCanEnqueueToast(String pkg, int callingUid,
+                boolean isAppRenderedToast, boolean isSystemToast) {
+            final boolean isPackageSuspended = isPackagePaused(pkg);
+            final boolean notificationsDisabledForPackage = !areNotificationsEnabledForPackage(pkg,
+                    callingUid);
+
+            final boolean appIsForeground;
+            final long callingIdentity = Binder.clearCallingIdentity();
+            try {
+                appIsForeground = mActivityManager.getUidImportance(callingUid)
+                        == IMPORTANCE_FOREGROUND;
+            } finally {
+                Binder.restoreCallingIdentity(callingIdentity);
+            }
+
+            if (!isSystemToast && ((notificationsDisabledForPackage && !appIsForeground)
+                    || isPackageSuspended)) {
+                Slog.e(TAG, "Suppressing toast from package " + pkg
+                        + (isPackageSuspended ? " due to package suspended."
+                        : " by user request."));
+                return false;
+            }
+
+            if (blockToast(callingUid, isSystemToast, isAppRenderedToast,
+                    isPackageInForegroundForToast(callingUid))) {
+                Slog.w(TAG, "Blocking custom toast from package " + pkg
+                        + " due to package not in the foreground at time the toast was posted");
+                return false;
+            }
+
+            return true;
+        }
+
         @Override
         public void cancelToast(String pkg, IBinder token) {
             Slog.i(TAG, "cancelToast pkg=" + pkg + " token=" + token);
@@ -5163,12 +5176,7 @@
         @Override
         public ComponentName getDefaultNotificationAssistant() {
             checkCallerIsSystem();
-            ArraySet<ComponentName> defaultComponents = mAssistants.getDefaultComponents();
-            if (defaultComponents.size() > 1) {
-                Slog.w(TAG, "More than one default NotificationAssistant: "
-                        + defaultComponents.size());
-            }
-            return CollectionUtils.firstOrNull(defaultComponents);
+            return mAssistants.getDefaultFromConfig();
         }
 
         @Override
@@ -7692,12 +7700,13 @@
             boolean isWithinQuota =
                     mToastRateLimiter.isWithinQuota(userId, record.pkg, TOAST_QUOTA_TAG)
                             || isExemptFromRateLimiting(record.pkg, userId);
+            boolean isPackageInForeground = isPackageInForegroundForToast(record.uid);
 
             if (tryShowToast(
-                    record, rateLimitingEnabled, isWithinQuota)) {
+                    record, rateLimitingEnabled, isWithinQuota, isPackageInForeground)) {
                 scheduleDurationReachedLocked(record, lastToastWasTextRecord);
                 mIsCurrentToastShown = true;
-                if (rateLimitingEnabled) {
+                if (rateLimitingEnabled && !isPackageInForeground) {
                     mToastRateLimiter.noteEvent(userId, record.pkg, TOAST_QUOTA_TAG);
                 }
                 return;
@@ -7713,14 +7722,15 @@
 
     /** Returns true if it successfully showed the toast. */
     private boolean tryShowToast(ToastRecord record, boolean rateLimitingEnabled,
-            boolean isWithinQuota) {
-        if (rateLimitingEnabled && !isWithinQuota) {
+            boolean isWithinQuota, boolean isPackageInForeground) {
+        if (rateLimitingEnabled && !isWithinQuota && !isPackageInForeground) {
             reportCompatRateLimitingToastsChange(record.uid);
             Slog.w(TAG, "Package " + record.pkg + " is above allowed toast quota, the "
                     + "following toast was blocked and discarded: " + record);
             return false;
         }
-        if (blockToast(record.uid, record.isSystemToast, record.isAppRendered())) {
+        if (blockToast(record.uid, record.isSystemToast, record.isAppRendered(),
+                isPackageInForeground)) {
             Slog.w(TAG, "Blocking custom toast from package " + record.pkg
                     + " due to package not in the foreground at the time of showing the toast");
             return false;
@@ -7911,10 +7921,11 @@
      * with targetSdk < R. For apps with targetSdk R+, text toasts are not app-rendered, so
      * isAppRenderedToast == true means it's a custom toast.
      */
-    private boolean blockToast(int uid, boolean isSystemToast, boolean isAppRenderedToast) {
+    private boolean blockToast(int uid, boolean isSystemToast, boolean isAppRenderedToast,
+            boolean isPackageInForeground) {
         return isAppRenderedToast
                 && !isSystemToast
-                && !isPackageInForegroundForToast(uid)
+                && !isPackageInForeground
                 && CompatChanges.isChangeEnabled(CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK, uid);
     }
 
@@ -9392,6 +9403,9 @@
         }
 
         ComponentName getDefaultFromConfig() {
+            if (mDefaultFromConfig == null) {
+                loadDefaultsFromConfig(false);
+            }
             return mDefaultFromConfig;
         }
 
diff --git a/services/core/java/com/android/server/pm/DumpState.java b/services/core/java/com/android/server/pm/DumpState.java
index 6875b8a..ec79483 100644
--- a/services/core/java/com/android/server/pm/DumpState.java
+++ b/services/core/java/com/android/server/pm/DumpState.java
@@ -45,6 +45,7 @@
     public static final int DUMP_QUERIES = 1 << 26;
     public static final int DUMP_KNOWN_PACKAGES = 1 << 27;
     public static final int DUMP_PER_UID_READ_TIMEOUTS = 1 << 28;
+    public static final int DUMP_SNAPSHOT_STATISTICS = 1 << 29;
 
     public static final int OPTION_SHOW_FILTERS = 1 << 0;
     public static final int OPTION_DUMP_ALL_COMPONENTS = 1 << 1;
diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java
index dd80e16..edd43af 100644
--- a/services/core/java/com/android/server/pm/LauncherAppsService.java
+++ b/services/core/java/com/android/server/pm/LauncherAppsService.java
@@ -1043,22 +1043,24 @@
                 return false;
             }
 
+            final PackageManagerInternal pmInt =
+                    LocalServices.getService(PackageManagerInternal.class);
             final int callingUid = injectBinderCallingUid();
+            final int state = pmInt.getComponentEnabledSetting(component, callingUid,
+                    user.getIdentifier());
+            switch (state) {
+                case PackageManager.COMPONENT_ENABLED_STATE_DEFAULT:
+                    break; // Need to check the manifest's enabled state.
+                case PackageManager.COMPONENT_ENABLED_STATE_ENABLED:
+                    return true;
+                case PackageManager.COMPONENT_ENABLED_STATE_DISABLED:
+                case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER:
+                case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED:
+                    return false;
+            }
+
             final long ident = Binder.clearCallingIdentity();
             try {
-                final int state = mIPM.getComponentEnabledSetting(component, user.getIdentifier());
-                switch (state) {
-                    case PackageManager.COMPONENT_ENABLED_STATE_DEFAULT:
-                        break; // Need to check the manifest's enabled state.
-                    case PackageManager.COMPONENT_ENABLED_STATE_ENABLED:
-                        return true;
-                    case PackageManager.COMPONENT_ENABLED_STATE_DISABLED:
-                    case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER:
-                    case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED:
-                        return false;
-                }
-                final PackageManagerInternal pmInt =
-                        LocalServices.getService(PackageManagerInternal.class);
                 ActivityInfo info = pmInt.getActivityInfo(component,
                         PackageManager.MATCH_DIRECT_BOOT_AWARE
                                 | PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index 0a484e2..27077b6 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -527,6 +527,14 @@
             throw new SecurityException("User restriction prevents installing");
         }
 
+        if (params.dataLoaderParams != null
+                && mContext.checkCallingOrSelfPermission(Manifest.permission.USE_INSTALLER_V2)
+                        != PackageManager.PERMISSION_GRANTED) {
+            throw new SecurityException("You need the "
+                    + "com.android.permission.USE_INSTALLER_V2 permission "
+                    + "to use a data loader");
+        }
+
         // INSTALL_REASON_ROLLBACK allows an app to be rolled back without requiring the ROLLBACK
         // capability; ensure if this is set as the install reason the app has one of the necessary
         // signature permissions to perform the rollback.
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index e532790..b6a65dd 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -3636,12 +3636,14 @@
 
     @Override
     public DataLoaderParamsParcel getDataLoaderParams() {
+        mContext.enforceCallingOrSelfPermission(Manifest.permission.USE_INSTALLER_V2, null);
         return params.dataLoaderParams != null ? params.dataLoaderParams.getData() : null;
     }
 
     @Override
     public void addFile(int location, String name, long lengthBytes, byte[] metadata,
             byte[] signature) {
+        mContext.enforceCallingOrSelfPermission(Manifest.permission.USE_INSTALLER_V2, null);
         if (!isDataLoaderInstallation()) {
             throw new IllegalStateException(
                     "Cannot add files to non-data loader installation session.");
@@ -3674,6 +3676,7 @@
 
     @Override
     public void removeFile(int location, String name) {
+        mContext.enforceCallingOrSelfPermission(Manifest.permission.USE_INSTALLER_V2, null);
         if (!isDataLoaderInstallation()) {
             throw new IllegalStateException(
                     "Cannot add files to non-data loader installation session.");
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 85c5a5e..3c4a304 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -1495,6 +1495,9 @@
     // List of packages names to keep cached, even if they are uninstalled for all users
     private List<String> mKeepUninstalledPackages;
 
+    // Cached reference to IDevicePolicyManager.
+    private IDevicePolicyManager mDevicePolicyManager = null;
+
     private File mCacheDir;
 
     private Future<?> mPrepareAppDataFuture;
@@ -1914,6 +1917,18 @@
      */
     private interface Computer {
 
+        /**
+         * Administrative statistics: record that the snapshot has been used.  Every call
+         * to use() increments the usage counter.
+         */
+        void use();
+
+        /**
+         * Fetch the snapshot usage counter.
+         * @return The number of times this snapshot was used.
+         */
+        int getUsed();
+
         @NonNull List<ResolveInfo> queryIntentActivitiesInternal(Intent intent, String resolvedType,
                 int flags, @PrivateResolveFlags int privateResolveFlags, int filterCallingUid,
                 int userId, boolean resolveForStart, boolean allowDynamicSplits);
@@ -2065,6 +2080,9 @@
      */
     private static class ComputerEngine implements Computer {
 
+        // The administrative use counter.
+        private int mUsed = 0;
+
         // Cached attributes.  The names in this class are the same as the
         // names in PackageManagerService; see that class for documentation.
         protected final Settings mSettings;
@@ -2157,6 +2175,20 @@
             mService = args.service;
         }
 
+        /**
+         * Record that the snapshot was used.
+         */
+        public void use() {
+            mUsed++;
+        }
+
+        /**
+         * Return the usage counter.
+         */
+        public int getUsed() {
+            return mUsed;
+        }
+
         public @NonNull List<ResolveInfo> queryIntentActivitiesInternal(Intent intent,
                 String resolvedType, int flags, @PrivateResolveFlags int privateResolveFlags,
                 int filterCallingUid, int userId, boolean resolveForStart,
@@ -4885,121 +4917,11 @@
      */
     private final Object mSnapshotLock = new Object();
 
-    // A counter of all queries that hit the current snapshot.
-    @GuardedBy("mSnapshotLock")
-    private int mSnapshotHits = 0;
-
-    // A class to record snapshot statistics.
-    private static class SnapshotStatistics {
-        // A build time is "big" if it takes longer than 5ms.
-        private static final long SNAPSHOT_BIG_BUILD_TIME_NS = TimeUnit.MILLISECONDS.toNanos(5);
-
-        // A snapshot is in quick succession to the previous snapshot if it less than
-        // 100ms since the previous snapshot.
-        private static final long SNAPSHOT_QUICK_REBUILD_INTERVAL_NS =
-                TimeUnit.MILLISECONDS.toNanos(100);
-
-        // The interval between snapshot statistics logging, in ns.
-        private static final long SNAPSHOT_LOG_INTERVAL_NS = TimeUnit.MINUTES.toNanos(10);
-
-        // The throttle parameters for big build reporting.  Do not report more than this
-        // many events in a single log interval.
-        private static final int SNAPSHOT_BUILD_REPORT_LIMIT = 10;
-
-        // The time the snapshot statistics were last logged.
-        private long mStatisticsSent = 0;
-
-        // The number of build events logged since the last periodic log.
-        private int mLoggedBuilds = 0;
-
-        // The time of the last build.
-        private long mLastBuildTime = 0;
-
-        // The number of times the snapshot has been rebuilt since the statistics were
-        // last logged.
-        private int mRebuilds = 0;
-
-        // The number of times the snapshot has been used since it was rebuilt.
-        private int mReused = 0;
-
-        // The number of "big" build times since the last log.  "Big" is defined by
-        // SNAPSHOT_BIG_BUILD_TIME.
-        private int mBigBuilds = 0;
-
-        // The number of quick rebuilds.  "Quick" is defined by
-        // SNAPSHOT_QUICK_REBUILD_INTERVAL_NS.
-        private int mQuickRebuilds = 0;
-
-        // The time take to build a snapshot.  This is cumulative over the rebuilds recorded
-        // in mRebuilds, so the average time to build a snapshot is given by
-        // mBuildTimeNs/mRebuilds.
-        private int mBuildTimeNs = 0;
-
-        // The maximum build time since the last log.
-        private long mMaxBuildTimeNs = 0;
-
-        // The constant that converts ns to ms.  This is the divisor.
-        private final long NS_TO_MS = TimeUnit.MILLISECONDS.toNanos(1);
-
-        // Convert ns to an int ms.  The maximum range of this method is about 24 days.
-        // There is no expectation that an event will take longer than that.
-        private int nsToMs(long ns) {
-            return (int) (ns / NS_TO_MS);
-        }
-
-        // The single method records a rebuild.  The "now" parameter is passed in because
-        // the caller needed it to computer the duration, so pass it in to avoid
-        // recomputing it.
-        private void rebuild(long now, long done, int hits) {
-            if (mStatisticsSent == 0) {
-                mStatisticsSent = now;
-            }
-            final long elapsed = now - mLastBuildTime;
-            final long duration = done - now;
-            mLastBuildTime = now;
-
-            if (mMaxBuildTimeNs < duration) {
-                mMaxBuildTimeNs = duration;
-            }
-            mRebuilds++;
-            mReused += hits;
-            mBuildTimeNs += duration;
-
-            boolean log_build = false;
-            if (duration > SNAPSHOT_BIG_BUILD_TIME_NS) {
-                log_build = true;
-                mBigBuilds++;
-            }
-            if (elapsed < SNAPSHOT_QUICK_REBUILD_INTERVAL_NS) {
-                log_build = true;
-                mQuickRebuilds++;
-            }
-            if (log_build && mLoggedBuilds < SNAPSHOT_BUILD_REPORT_LIMIT) {
-                EventLogTags.writePmSnapshotRebuild(nsToMs(duration), nsToMs(elapsed));
-                mLoggedBuilds++;
-            }
-
-            final long log_interval = now - mStatisticsSent;
-            if (log_interval >= SNAPSHOT_LOG_INTERVAL_NS) {
-                EventLogTags.writePmSnapshotStats(mRebuilds, mReused,
-                                                  mBigBuilds, mQuickRebuilds,
-                                                  nsToMs(mMaxBuildTimeNs),
-                                                  nsToMs(mBuildTimeNs));
-                mStatisticsSent = now;
-                mRebuilds = 0;
-                mReused = 0;
-                mBuildTimeNs = 0;
-                mMaxBuildTimeNs = 0;
-                mBigBuilds = 0;
-                mQuickRebuilds = 0;
-                mLoggedBuilds = 0;
-            }
-        }
-    }
-
-    // Snapshot statistics.
-    @GuardedBy("mLock")
-    private final SnapshotStatistics mSnapshotStatistics = new SnapshotStatistics();
+    /**
+     * The snapshot statistics.  These are collected to track performance and to identify
+     * situations in which the snapshots are misbehaving.
+     */
+    private final SnapshotStatistics mSnapshotStatistics;
 
     // The snapshot disable/enable switch.  An image with the flag set true uses snapshots
     // and an image with the flag set false does not use snapshots.
@@ -5033,10 +4955,9 @@
             Computer c = mSnapshotComputer;
             if (sSnapshotCorked && (c != null)) {
                 // Snapshots are corked, which means new ones should not be built right now.
+                c.use();
                 return c;
             }
-            // Deliberately capture the value pre-increment
-            final int hits = mSnapshotHits++;
             if (sSnapshotInvalid || (c == null)) {
                 // The snapshot is invalid if it is marked as invalid or if it is null.  If it
                 // is null, then it is currently being rebuilt by rebuildSnapshot().
@@ -5046,7 +4967,7 @@
                     // self-consistent (the lock is being held) and is current as of the time
                     // this function is entered.
                     if (sSnapshotInvalid) {
-                        rebuildSnapshot(hits);
+                        rebuildSnapshot();
                     }
 
                     // Guaranteed to be non-null.  mSnapshotComputer is only be set to null
@@ -5056,6 +4977,7 @@
                     c = mSnapshotComputer;
                 }
             }
+            c.use();
             return c;
         }
     }
@@ -5065,16 +4987,16 @@
      * threads from using the invalid computer until it is rebuilt.
      */
     @GuardedBy("mLock")
-    private void rebuildSnapshot(int hits) {
-        final long now = System.nanoTime();
+    private void rebuildSnapshot() {
+        final long now = SystemClock.currentTimeMicro();
+        final int hits = mSnapshotComputer == null ? -1 : mSnapshotComputer.getUsed();
         mSnapshotComputer = null;
         sSnapshotInvalid = false;
         final Snapshot args = new Snapshot(Snapshot.SNAPPED);
         mSnapshotComputer = new ComputerEngine(args);
-        final long done = System.nanoTime();
+        final long done = SystemClock.currentTimeMicro();
 
         mSnapshotStatistics.rebuild(now, done, hits);
-        mSnapshotHits = 0;
     }
 
     /**
@@ -6327,6 +6249,7 @@
         mSnapshotEnabled = false;
         mLiveComputer = createLiveComputer();
         mSnapshotComputer = null;
+        mSnapshotStatistics = null;
 
         mPackages.putAll(testParams.packages);
         mEnableFreeCacheV2 = testParams.enableFreeCacheV2;
@@ -6479,17 +6402,20 @@
         mDomainVerificationManager = injector.getDomainVerificationManagerInternal();
         mDomainVerificationManager.setConnection(mDomainVerificationConnection);
 
-        // Create the computer as soon as the state objects have been installed.  The
-        // cached computer is the same as the live computer until the end of the
-        // constructor, at which time the invalidation method updates it.  The cache is
-        // corked initially to ensure a cached computer is not built until the end of the
-        // constructor.
-        mSnapshotEnabled = SNAPSHOT_ENABLED;
-        sSnapshotCorked = true;
-        sSnapshotInvalid = true;
-        mLiveComputer = createLiveComputer();
-        mSnapshotComputer = null;
-        registerObserver();
+        synchronized (mLock) {
+            // Create the computer as soon as the state objects have been installed.  The
+            // cached computer is the same as the live computer until the end of the
+            // constructor, at which time the invalidation method updates it.  The cache is
+            // corked initially to ensure a cached computer is not built until the end of the
+            // constructor.
+            mSnapshotEnabled = SNAPSHOT_ENABLED;
+            sSnapshotCorked = true;
+            sSnapshotInvalid = true;
+            mSnapshotStatistics = new SnapshotStatistics();
+            mLiveComputer = createLiveComputer();
+            mSnapshotComputer = null;
+            registerObserver();
+        }
 
         // CHECKSTYLE:OFF IndentationCheck
         synchronized (mInstallLock) {
@@ -20884,8 +20810,7 @@
     }
 
     private boolean isPackageDeviceAdmin(String packageName, int userId) {
-        IDevicePolicyManager dpm = IDevicePolicyManager.Stub.asInterface(
-                ServiceManager.getService(Context.DEVICE_POLICY_SERVICE));
+        final IDevicePolicyManager dpm = getDevicePolicyManager();
         try {
             if (dpm != null) {
                 final ComponentName deviceOwnerComponentName = dpm.getDeviceOwnerComponent(
@@ -20917,6 +20842,16 @@
         return false;
     }
 
+    /** Returns the device policy manager interface. */
+    private IDevicePolicyManager getDevicePolicyManager() {
+        if (mDevicePolicyManager == null) {
+            // No need to synchronize; worst-case scenario it will be fetched twice.
+            mDevicePolicyManager = IDevicePolicyManager.Stub.asInterface(
+                            ServiceManager.getService(Context.DEVICE_POLICY_SERVICE));
+        }
+        return mDevicePolicyManager;
+    }
+
     private boolean shouldKeepUninstalledPackageLPr(String packageName) {
         return mKeepUninstalledPackages != null && mKeepUninstalledPackages.contains(packageName);
     }
@@ -23693,11 +23628,17 @@
 
     @Override
     public int getComponentEnabledSetting(@NonNull ComponentName component, int userId) {
-        if (component == null) return COMPONENT_ENABLED_STATE_DEFAULT;
-        if (!mUserManager.exists(userId)) return COMPONENT_ENABLED_STATE_DISABLED;
         int callingUid = Binder.getCallingUid();
         enforceCrossUserPermission(callingUid, userId, false /*requireFullPermission*/,
                 false /*checkShell*/, "getComponentEnabled");
+        return getComponentEnabledSettingInternal(component, callingUid, userId);
+    }
+
+    private int getComponentEnabledSettingInternal(ComponentName component, int callingUid,
+            int userId) {
+        if (component == null) return COMPONENT_ENABLED_STATE_DEFAULT;
+        if (!mUserManager.exists(userId)) return COMPONENT_ENABLED_STATE_DISABLED;
+
         synchronized (mLock) {
             try {
                 if (shouldFilterApplicationLocked(
@@ -23957,6 +23898,7 @@
                 pw.println("    dexopt: dump dexopt state");
                 pw.println("    compiler-stats: dump compiler statistics");
                 pw.println("    service-permissions: dump permissions required by services");
+                pw.println("    snapshot: dump snapshot statistics");
                 pw.println("    known-packages: dump known packages");
                 pw.println("    <package.name>: info about given package");
                 return;
@@ -24105,6 +24047,8 @@
                 dumpState.setDump(DumpState.DUMP_KNOWN_PACKAGES);
             } else if ("t".equals(cmd) || "timeouts".equals(cmd)) {
                 dumpState.setDump(DumpState.DUMP_PER_UID_READ_TIMEOUTS);
+            } else if ("snapshot".equals(cmd)) {
+                dumpState.setDump(DumpState.DUMP_SNAPSHOT_STATISTICS);
             } else if ("write".equals(cmd)) {
                 synchronized (mLock) {
                     writeSettingsLPrTEMP();
@@ -24433,6 +24377,22 @@
                 pw.println(")");
             }
         }
+
+        if (!checkin && dumpState.isDumping(DumpState.DUMP_SNAPSHOT_STATISTICS)) {
+            pw.println("Snapshot statistics");
+            if (!mSnapshotEnabled) {
+                pw.println("  Snapshots disabled");
+            } else {
+                int hits = 0;
+                synchronized (mSnapshotLock) {
+                    if (mSnapshotComputer != null) {
+                        hits = mSnapshotComputer.getUsed();
+                    }
+                }
+                final long now = SystemClock.currentTimeMicro();
+                mSnapshotStatistics.dump(pw, "  ", now, hits, true);
+            }
+        }
     }
 
     /**
@@ -27124,6 +27084,13 @@
         }
 
         @Override
+        public @PackageManager.EnabledState int getComponentEnabledSetting(
+                @NonNull ComponentName componentName, int callingUid, int userId) {
+            return PackageManagerService.this.getComponentEnabledSettingInternal(componentName,
+                    callingUid, userId);
+        }
+
+        @Override
         public void setEnableRollbackCode(int token, int enableRollbackCode) {
             PackageManagerService.this.setEnableRollbackCode(token, enableRollbackCode);
         }
diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java
index c462a6c..464477d 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackage.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackage.java
@@ -92,6 +92,7 @@
 import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Predicate;
+import java.util.stream.Collectors;
 
 /**
  * Package information used by {@link ShortcutService}.
@@ -663,12 +664,14 @@
         });
         // Then, update the pinned state if necessary.
         final List<ShortcutInfo> pinned = getShortcutById(pinnedShortcuts);
-        pinned.forEach(si -> {
-            if (!si.isPinned()) {
-                si.addFlags(ShortcutInfo.FLAG_PINNED);
-            }
-        });
-        saveShortcut(pinned);
+        if (pinned != null) {
+            pinned.forEach(si -> {
+                if (!si.isPinned()) {
+                    si.addFlags(ShortcutInfo.FLAG_PINNED);
+                }
+            });
+            saveShortcut(pinned);
+        }
         forEachShortcutMutateIf(AppSearchShortcutInfo.QUERY_IS_PINNED, si -> {
             if (!pinnedShortcuts.contains(si.getId()) && si.isPinned()) {
                 si.clearFlags(ShortcutInfo.FLAG_PINNED);
@@ -719,7 +722,7 @@
 
         // If not reset yet, then reset.
         if (mLastResetTime < last) {
-            if (ShortcutService.DEBUG) {
+            if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) {
                 Slog.d(TAG, String.format("%s: last reset=%d, now=%d, last=%d: resetting",
                         getPackageName(), mLastResetTime, now, last));
             }
@@ -826,9 +829,11 @@
                 : s.getLauncherShortcutsLocked(callingLauncher, getPackageUserId(), launcherUserId)
                         .getPinnedShortcutIds(getPackageName(), getPackageUserId());
         final List<ShortcutInfo> shortcuts = getShortcutById(ids);
-        for (ShortcutInfo si : shortcuts) {
-            filter(result, query, cloneFlag, callingLauncher, pinnedByCallerSet,
-                    getPinnedByAnyLauncher, si);
+        if (shortcuts != null) {
+            for (ShortcutInfo si : shortcuts) {
+                filter(result, query, cloneFlag, callingLauncher, pinnedByCallerSet,
+                        getPinnedByAnyLauncher, si);
+            }
         }
     }
 
@@ -1097,7 +1102,7 @@
         }
         final int manifestShortcutSize = newManifestShortcutList == null ? 0
                 : newManifestShortcutList.size();
-        if (ShortcutService.DEBUG) {
+        if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) {
             Slog.d(TAG,
                     String.format("Package %s has %d manifest shortcut(s), and %d share target(s)",
                             getPackageName(), manifestShortcutSize, mShareTargets.size()));
@@ -1109,7 +1114,7 @@
             // disabled.
             return false;
         }
-        if (ShortcutService.DEBUG) {
+        if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) {
             Slog.d(TAG, String.format("Package %s %s, version %d -> %d", getPackageName(),
                     (isNewApp ? "added" : "updated"),
                     getPackageInfo().getVersionCode(), pi.getLongVersionCode()));
@@ -1198,7 +1203,7 @@
     }
 
     private boolean publishManifestShortcuts(List<ShortcutInfo> newManifestShortcutList) {
-        if (ShortcutService.DEBUG) {
+        if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) {
             Slog.d(TAG, String.format(
                     "Package %s: publishing manifest shortcuts", getPackageName()));
         }
@@ -1875,7 +1880,7 @@
                 final int depth = parser.getDepth();
 
                 final String tag = parser.getName();
-                if (ShortcutService.DEBUG_LOAD) {
+                if (ShortcutService.DEBUG_LOAD || ShortcutService.DEBUG_REBOOT) {
                     Slog.d(TAG, String.format("depth=%d type=%d name=%s", depth, type, tag));
                 }
                 if ((depth == 1) && TAG_ROOT.equals(tag)) {
@@ -1903,7 +1908,8 @@
         final ShortcutPackage ret = new ShortcutPackage(shortcutUser,
                 shortcutUser.getUserId(), packageName);
 
-        ret.mIsInitilized = ShortcutService.parseIntAttribute(parser, ATTR_SCHEMA_VERSON, 0) > 0;
+        ret.mIsInitilized = ShortcutService.parseIntAttribute(parser, ATTR_SCHEMA_VERSON, 0)
+                == AppSearchShortcutInfo.SCHEMA_VERSION;
         ret.mApiCallCount =
                 ShortcutService.parseIntAttribute(parser, ATTR_CALL_COUNT);
         ret.mLastResetTime =
@@ -2010,7 +2016,7 @@
             }
             final int depth = parser.getDepth();
             final String tag = parser.getName();
-            if (ShortcutService.DEBUG_LOAD) {
+            if (ShortcutService.DEBUG_LOAD || ShortcutService.DEBUG_REBOOT) {
                 Slog.d(TAG, String.format("  depth=%d type=%d name=%s",
                         depth, type, tag));
             }
@@ -2094,7 +2100,7 @@
             }
             final int depth = parser.getDepth();
             final String tag = parser.getName();
-            if (ShortcutService.DEBUG_LOAD) {
+            if (ShortcutService.DEBUG_LOAD || ShortcutService.DEBUG_REBOOT) {
                 Slog.d(TAG, String.format("  depth=%d type=%d name=%s",
                         depth, type, tag));
             }
@@ -2297,6 +2303,12 @@
             // No need to invoke AppSearch when there's nothing to save.
             return;
         }
+        if (ShortcutService.DEBUG_REBOOT) {
+            Slog.d(TAG, "Saving shortcuts for user=" + mShortcutUser.getUserId()
+                    + " pkg=" + getPackageName() + " ids=["
+                    + shortcuts.stream().map(ShortcutInfo::getId)
+                    .collect(Collectors.joining(",")) + "]");
+        }
         awaitInAppSearch("Saving shortcuts", session -> {
             final AndroidFuture<Boolean> future = new AndroidFuture<>();
             session.put(new PutDocumentsRequest.Builder()
@@ -2369,6 +2381,10 @@
                 shortcutIds.add(id);
             }
         }
+        if (ShortcutService.DEBUG_REBOOT) {
+            Slog.d(TAG, "Getting shortcuts for user=" + mShortcutUser.getUserId()
+                    + " pkg=" + getPackageName() + " ids: [" + String.join(",", ids) + "]");
+        }
         return awaitInAppSearch("Getting shortcut by id", session -> {
             final AndroidFuture<List<ShortcutInfo>> future = new AndroidFuture<>();
             session.getByUri(
@@ -2413,6 +2429,10 @@
 
     private void forEachShortcutMutateIf(@NonNull final String query,
             @NonNull final Function<ShortcutInfo, Boolean> cb) {
+        if (ShortcutService.DEBUG_REBOOT) {
+            Slog.d(TAG, "Changing shortcuts for user=" + mShortcutUser.getUserId()
+                    + " pkg=" + getPackageName());
+        }
         final SearchResults res = awaitInAppSearch("Mutating shortcuts", session ->
                 AndroidFuture.completedFuture(session.search(query, getSearchSpec())));
         if (res == null) return;
@@ -2434,6 +2454,10 @@
 
     private void forEachShortcutStopWhen(
             @NonNull final String query, @NonNull final Function<ShortcutInfo, Boolean> cb) {
+        if (ShortcutService.DEBUG_REBOOT) {
+            Slog.d(TAG, "Iterating shortcuts for user=" + mShortcutUser.getUserId()
+                    + " pkg=" + getPackageName());
+        }
         final SearchResults res = awaitInAppSearch("Iterating shortcuts", session ->
                 AndroidFuture.completedFuture(session.search(query, getSearchSpec())));
         if (res == null) return;
@@ -2447,6 +2471,10 @@
     }
 
     private List<ShortcutInfo> getNextPage(@NonNull final SearchResults res) {
+        if (ShortcutService.DEBUG_REBOOT) {
+            Slog.d(TAG, "Get next page for search result for user=" + mShortcutUser.getUserId()
+                    + " pkg=" + getPackageName());
+        }
         final AndroidFuture<List<ShortcutInfo>> future = new AndroidFuture<>();
         final List<ShortcutInfo> ret = new ArrayList<>();
         final long callingIdentity = Binder.clearCallingIdentity();
@@ -2524,6 +2552,10 @@
     @NonNull
     private AndroidFuture<AppSearchSession> setupSchema(
             @NonNull final AppSearchSession session) {
+        if (ShortcutService.DEBUG_REBOOT) {
+            Slog.d(TAG, "Setup Schema for user=" + mShortcutUser.getUserId()
+                    + " pkg=" + getPackageName());
+        }
         SetSchemaRequest.Builder schemaBuilder = new SetSchemaRequest.Builder()
                 .addSchemas(AppSearchPerson.SCHEMA, AppSearchShortcutInfo.SCHEMA)
                 .setForceOverride(true);
@@ -2564,6 +2596,15 @@
     }
 
     private void restoreParsedShortcuts(final boolean replace) {
+        if (ShortcutService.DEBUG_REBOOT) {
+            if (replace) {
+                Slog.d(TAG, "Replacing all shortcuts with the ones parsed from xml for user="
+                        + mShortcutUser.getUserId() + " pkg=" + getPackageName());
+            } else {
+                Slog.d(TAG, "Restoring pinned shortcuts from xml for user="
+                        + mShortcutUser.getUserId() + " pkg=" + getPackageName());
+            }
+        }
         if (replace) {
             removeShortcuts();
         }
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index dcf730d..8d03fce 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -164,6 +164,7 @@
     static final boolean DEBUG = false; // STOPSHIP if true
     static final boolean DEBUG_LOAD = false; // STOPSHIP if true
     static final boolean DEBUG_PROCSTATE = false; // STOPSHIP if true
+    static final boolean DEBUG_REBOOT = true;
 
     @VisibleForTesting
     static final long DEFAULT_RESET_INTERVAL_SEC = 24 * 60 * 60; // 1 day
@@ -659,7 +660,7 @@
 
     /** lifecycle event */
     void onBootPhase(int phase) {
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, "onBootPhase: " + phase);
         }
         switch (phase) {
@@ -674,7 +675,7 @@
 
     /** lifecycle event */
     void handleUnlockUser(int userId) {
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, "handleUnlockUser: user=" + userId);
         }
         synchronized (mUnlockedUsers) {
@@ -699,7 +700,7 @@
 
     /** lifecycle event */
     void handleStopUser(int userId) {
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, "handleStopUser: user=" + userId);
         }
         synchronized (mLock) {
@@ -713,7 +714,7 @@
 
     @GuardedBy("mLock")
     private void unloadUserLocked(int userId) {
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, "unloadUserLocked: user=" + userId);
         }
         // Save all dirty information.
@@ -945,7 +946,7 @@
     @VisibleForTesting
     void saveBaseStateLocked() {
         final AtomicFile file = getBaseStateFile();
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, "Saving to " + file.getBaseFile());
         }
 
@@ -978,7 +979,7 @@
         mRawLastResetTime = 0;
 
         final AtomicFile file = getBaseStateFile();
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, "Loading from " + file.getBaseFile());
         }
         try (FileInputStream in = file.openRead()) {
@@ -1028,7 +1029,7 @@
     @GuardedBy("mLock")
     private void saveUserLocked(@UserIdInt int userId) {
         final File path = getUserFile(userId);
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, "Saving to " + path);
         }
 
@@ -1086,7 +1087,7 @@
     @Nullable
     private ShortcutUser loadUserLocked(@UserIdInt int userId) {
         final File path = getUserFile(userId);
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, "Loading from " + path);
         }
         final AtomicFile file = new AtomicFile(path);
@@ -1095,7 +1096,7 @@
         try {
             in = file.openRead();
         } catch (FileNotFoundException e) {
-            if (DEBUG) {
+            if (DEBUG || DEBUG_REBOOT) {
                 Slog.d(TAG, "Not found " + path);
             }
             return null;
@@ -1132,7 +1133,7 @@
             final int depth = parser.getDepth();
 
             final String tag = parser.getName();
-            if (DEBUG_LOAD) {
+            if (DEBUG_LOAD || DEBUG_REBOOT) {
                 Slog.d(TAG, String.format("depth=%d type=%d name=%s",
                         depth, type, tag));
             }
@@ -1157,7 +1158,7 @@
     private final Runnable mSaveDirtyInfoRunner = this::saveDirtyInfo;
 
     private void scheduleSaveInner(@UserIdInt int userId) {
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, "Scheduling to save for " + userId);
         }
         synchronized (mLock) {
@@ -1172,7 +1173,7 @@
 
     @VisibleForTesting
     void saveDirtyInfo() {
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, "saveDirtyInfo");
         }
         if (mShutdown.get()) {
@@ -2942,6 +2943,10 @@
                 @Nullable String packageName, @Nullable List<String> shortcutIds,
                 @Nullable List<LocusId> locusIds, @Nullable ComponentName componentName,
                 int queryFlags, int userId, int callingPid, int callingUid) {
+            if (DEBUG_REBOOT) {
+                Slog.d(TAG, "Getting shortcuts for launcher= " + callingPackage
+                        + "user=" + userId + " pkg=" + packageName);
+            }
             final ArrayList<ShortcutInfo> ret = new ArrayList<>();
 
             int flags = ShortcutInfo.CLONE_REMOVE_FOR_LAUNCHER;
@@ -3639,7 +3644,7 @@
      */
     @VisibleForTesting
     void checkPackageChanges(@UserIdInt int ownerUserId) {
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, "checkPackageChanges() ownerUserId=" + ownerUserId);
         }
         if (injectIsSafeModeEnabled()) {
@@ -3685,6 +3690,9 @@
 
     @GuardedBy("mLock")
     private void rescanUpdatedPackagesLocked(@UserIdInt int userId, long lastScanTime) {
+        if (DEBUG_REBOOT) {
+            Slog.d(TAG, "rescan updated package user=" + userId + " last scanned=" + lastScanTime);
+        }
         final ShortcutUser user = getUserShortcutsLocked(userId);
 
         // Note after each OTA, we'll need to rescan all system apps, as their lastUpdateTime
@@ -3708,7 +3716,7 @@
     }
 
     private void handlePackageAdded(String packageName, @UserIdInt int userId) {
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, String.format("handlePackageAdded: %s user=%d", packageName, userId));
         }
         synchronized (mLock) {
@@ -3720,7 +3728,7 @@
     }
 
     private void handlePackageUpdateFinished(String packageName, @UserIdInt int userId) {
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, String.format("handlePackageUpdateFinished: %s user=%d",
                     packageName, userId));
         }
@@ -3736,7 +3744,7 @@
     }
 
     private void handlePackageRemoved(String packageName, @UserIdInt int packageUserId) {
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, String.format("handlePackageRemoved: %s user=%d", packageName,
                     packageUserId));
         }
@@ -3746,7 +3754,7 @@
     }
 
     private void handlePackageDataCleared(String packageName, int packageUserId) {
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, String.format("handlePackageDataCleared: %s user=%d", packageName,
                     packageUserId));
         }
@@ -3761,7 +3769,7 @@
             handlePackageRemoved(packageName, packageUserId);
             return;
         }
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, String.format("handlePackageChanged: %s user=%d", packageName,
                     packageUserId));
         }
@@ -3948,7 +3956,7 @@
 
     private void forUpdatedPackages(@UserIdInt int userId, long lastScanTime, boolean afterOta,
             Consumer<ApplicationInfo> callback) {
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, "forUpdatedPackages for user " + userId + ", lastScanTime=" + lastScanTime
                     + " afterOta=" + afterOta);
         }
@@ -3960,7 +3968,7 @@
             // Also if it's right after an OTA, always re-scan all apps anyway, since the
             // shortcut parser might have changed.
             if (afterOta || (pi.lastUpdateTime >= lastScanTime)) {
-                if (DEBUG) {
+                if (DEBUG || DEBUG_REBOOT) {
                     Slog.d(TAG, "Found updated package " + pi.packageName
                             + " updateTime=" + pi.lastUpdateTime);
                 }
@@ -4313,7 +4321,7 @@
     @Override
     public void applyRestore(byte[] payload, @UserIdInt int userId) {
         enforceSystem();
-        if (DEBUG) {
+        if (DEBUG || DEBUG_REBOOT) {
             Slog.d(TAG, "Restoring user " + userId);
         }
         synchronized (mLock) {
diff --git a/services/core/java/com/android/server/pm/ShortcutUser.java b/services/core/java/com/android/server/pm/ShortcutUser.java
index 069944d..e66cb03 100644
--- a/services/core/java/com/android/server/pm/ShortcutUser.java
+++ b/services/core/java/com/android/server/pm/ShortcutUser.java
@@ -328,6 +328,10 @@
 
     public void rescanPackageIfNeeded(@NonNull String packageName, boolean forceRescan) {
         final boolean isNewApp = !mPackages.containsKey(packageName);
+        if (ShortcutService.DEBUG_REBOOT) {
+            Slog.d(TAG, "rescanPackageIfNeeded " + getUserId() + "@" + packageName
+                    + ", forceRescan=" + forceRescan + " , isNewApp=" + isNewApp);
+        }
 
         final ShortcutPackage shortcutPackage = getPackageShortcuts(packageName);
 
@@ -397,7 +401,7 @@
         } else {
             // Save each ShortcutPackageItem in a separate Xml file.
             final File path = getShortcutPackageItemFile(spi);
-            if (ShortcutService.DEBUG) {
+            if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) {
                 Slog.d(TAG, "Saving package item " + spi.getPackageName() + " to " + path);
             }
 
diff --git a/services/core/java/com/android/server/pm/SnapshotStatistics.java b/services/core/java/com/android/server/pm/SnapshotStatistics.java
new file mode 100644
index 0000000..c425bad5
--- /dev/null
+++ b/services/core/java/com/android/server/pm/SnapshotStatistics.java
@@ -0,0 +1,622 @@
+/*
+ * 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.pm;
+
+import android.annotation.Nullable;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.os.SystemClock;
+import android.text.TextUtils;
+
+import com.android.server.EventLogTags;
+
+import java.io.PrintWriter;
+import java.util.Arrays;
+import java.util.Locale;
+
+/**
+ * This class records statistics about PackageManagerService snapshots.  It maintains two sets of
+ * statistics: a periodic set which represents the last 10 minutes, and a cumulative set since
+ * process boot.  The key metrics that are recorded are:
+ * <ul>
+ * <li> The time to create a snapshot - this is the performance cost of a snapshot
+ * <li> The lifetime of the snapshot - creation time over lifetime is the amortized cost
+ * <li> The number of times a snapshot is reused - this is the number of times lock
+ *      contention was avoided.
+ * </ul>
+
+ * The time conversions in this class are designed to keep arithmetic using ints, rather
+ * than longs.  Raw times are supplied as longs in units of us.  These are left long.
+ * Rebuild durations however, are converted to ints.  An int can express a duration of
+ * approximately 35 minutes.  This is longer than any expected snapshot rebuild time, so
+ * an int is satisfactory.  The exception is the cumulative rebuild time over the course
+ * of a monitoring cycle: this value is kept long since the cycle time is one week and in
+ * a badly behaved system, the rebuild time might exceed 35 minutes.
+
+ * @hide
+ */
+public class SnapshotStatistics {
+    /**
+     * The interval at which statistics should be ticked.  It is 60s.  The interval is in
+     * units of milliseconds because that is what's required by Handler.sendMessageDelayed().
+     */
+    public static final int SNAPSHOT_TICK_INTERVAL_MS = 60 * 1000;
+
+    /**
+     * The number of ticks for long statistics.  This is one week.
+     */
+    public static final int SNAPSHOT_LONG_TICKS = 7 * 24 * 60;
+
+    /**
+     * The number snapshot event logs that can be generated in a single logging interval.
+     * A small number limits the logging generated by this class.  A snapshot event log is
+     * generated for every big snapshot build time, up to the limit, or whenever the
+     * maximum build time is exceeded in the logging interval.
+     */
+    public static final int SNAPSHOT_BUILD_REPORT_LIMIT = 10;
+
+    /**
+     * The number of microseconds in a millisecond.
+     */
+    private static final int US_IN_MS = 1000;
+
+    /**
+     * A snapshot build time is "big" if it takes longer than 10ms.
+     */
+    public static final int SNAPSHOT_BIG_BUILD_TIME_US = 10 * US_IN_MS;
+
+    /**
+     * A snapshot build time is reportable if it takes longer than 30ms.  Testing shows
+     * that this is very rare.
+     */
+    public static final int SNAPSHOT_REPORTABLE_BUILD_TIME_US = 30 * US_IN_MS;
+
+    /**
+     * A snapshot is short-lived it used fewer than 5 times.
+     */
+    public static final int SNAPSHOT_SHORT_LIFETIME = 5;
+
+    /**
+     * The lock to control access to this object.
+     */
+    private final Object mLock = new Object();
+
+    /**
+     * The bins for the build time histogram.  Values are in us.
+     */
+    private final BinMap mTimeBins;
+
+    /**
+     * The bins for the snapshot use histogram.
+     */
+    private final BinMap mUseBins;
+
+    /**
+     * The number of events reported in the current tick.
+     */
+    private int mEventsReported = 0;
+
+    /**
+     * The tick counter.  At the default tick interval, this wraps every 4000 years or so.
+     */
+    private int mTicks = 0;
+
+    /**
+     * The handler used for the periodic ticks.
+     */
+    private Handler mHandler = null;
+
+    /**
+     * Convert ns to an int ms.  The maximum range of this method is about 24 days.  There
+     * is no expectation that an event will take longer than that.
+     */
+    private int usToMs(int us) {
+        return us / US_IN_MS;
+    }
+
+    /**
+     * This class exists to provide a fast bin lookup for histograms.  An instance has an
+     * integer array that maps incoming values to bins.  Values larger than the array are
+     * mapped to the top-most bin.
+     */
+    private static class BinMap {
+
+        // The number of bins
+        private int mCount;
+        // The mapping of low integers to bins
+        private int[] mBinMap;
+        // The maximum mapped value.  Values at or above this are mapped to the
+        // top bin.
+        private int mMaxBin;
+        // A copy of the original key
+        private int[] mUserKey;
+
+        /**
+         * Create a bin map.  The input is an array of integers, which must be
+         * monotonically increasing (this is not checked).  The result is an integer array
+         * as long as the largest value in the input.
+         */
+        BinMap(int[] userKey) {
+            mUserKey = Arrays.copyOf(userKey, userKey.length);
+            // The number of bins is the length of the keys, plus 1 (for the max).
+            mCount = mUserKey.length + 1;
+            // The maximum value is one more than the last one in the map.
+            mMaxBin = mUserKey[mUserKey.length - 1] + 1;
+            mBinMap = new int[mMaxBin + 1];
+
+            int j = 0;
+            for (int i = 0; i < mUserKey.length; i++) {
+                while (j <= mUserKey[i]) {
+                    mBinMap[j] = i;
+                    j++;
+                }
+            }
+            mBinMap[mMaxBin] = mUserKey.length;
+        }
+
+        /**
+         * Map a value to a bin.
+         */
+        public int getBin(int x) {
+            if (x >= 0 && x < mMaxBin) {
+                return mBinMap[x];
+            } else if (x >= mMaxBin) {
+                return mBinMap[mMaxBin];
+            } else {
+                // x is negative.  The bin will not be used.
+                return 0;
+            }
+        }
+
+        /**
+         * The number of bins in this map
+         */
+        public int count() {
+            return mCount;
+        }
+
+        /**
+         * For convenience, return the user key.
+         */
+        public int[] userKeys() {
+            return mUserKey;
+        }
+    }
+
+    /**
+     * A complete set of statistics.  These are public, making it simpler for a client to
+     * fetch the individual fields.
+     */
+    public class Stats {
+
+        /**
+         * The start time for this set of statistics, in us.
+         */
+        public long mStartTimeUs = 0;
+
+        /**
+         * The completion time for this set of statistics, in ns.  A value of zero means
+         * the statistics are still active.
+         */
+        public long mStopTimeUs = 0;
+
+        /**
+         * The build-time histogram.  The total number of rebuilds is the sum over the
+         * histogram entries.
+         */
+        public int[] mTimes;
+
+        /**
+         * The reuse histogram.  The total number of snapshot uses is the sum over the
+         * histogram entries.
+         */
+        public int[] mUsed;
+
+        /**
+         * The total number of rebuilds.  This could be computed by summing over the use
+         * bins, but is maintained separately for convenience.
+         */
+        public int mTotalBuilds = 0;
+
+        /**
+         * The total number of times any snapshot was used.
+         */
+        public int mTotalUsed = 0;
+
+        /**
+         * The total number of builds that count as big, which means they took longer than
+         * SNAPSHOT_BIG_BUILD_TIME_NS.
+         */
+        public int mBigBuilds = 0;
+
+        /**
+         * The total number of short-lived snapshots
+         */
+        public int mShortLived = 0;
+
+        /**
+         * The time taken to build snapshots.  This is cumulative over the rebuilds
+         * recorded in mRebuilds, so the average time to build a snapshot is given by
+         * mBuildTimeNs/mRebuilds.  Note that this cannot be computed from the histogram.
+         */
+        public long mTotalTimeUs = 0;
+
+        /**
+         * The maximum build time since the last log.
+         */
+        public int mMaxBuildTimeUs = 0;
+
+        /**
+         * Record the rebuild.  The parameters are the length of time it took to build the
+         * latest snapshot, and the number of times the _previous_ snapshot was used.  A
+         * negative value for used signals an invalid value, which is the case the first
+         * time a snapshot is every built.
+         */
+        private void rebuild(int duration, int used,
+                int buildBin, int useBin, boolean big, boolean quick) {
+            mTotalBuilds++;
+            mTimes[buildBin]++;
+
+            if (used >= 0) {
+                mTotalUsed += used;
+                mUsed[useBin]++;
+            }
+
+            mTotalTimeUs += duration;
+            boolean reportIt = false;
+
+            if (big) {
+                mBigBuilds++;
+            }
+            if (quick) {
+                mShortLived++;
+            }
+            if (mMaxBuildTimeUs < duration) {
+                mMaxBuildTimeUs = duration;
+            }
+        }
+
+        private Stats(long now) {
+            mStartTimeUs = now;
+            mTimes = new int[mTimeBins.count()];
+            mUsed = new int[mUseBins.count()];
+        }
+
+        /**
+         * Create a copy of the argument.  The copy is made under lock but can then be
+         * used without holding the lock.
+         */
+        private Stats(Stats orig) {
+            mStartTimeUs = orig.mStartTimeUs;
+            mStopTimeUs = orig.mStopTimeUs;
+            mTimes = Arrays.copyOf(orig.mTimes, orig.mTimes.length);
+            mUsed = Arrays.copyOf(orig.mUsed, orig.mUsed.length);
+            mTotalBuilds = orig.mTotalBuilds;
+            mTotalUsed = orig.mTotalUsed;
+            mBigBuilds = orig.mBigBuilds;
+            mShortLived = orig.mShortLived;
+            mTotalTimeUs = orig.mTotalTimeUs;
+            mMaxBuildTimeUs = orig.mMaxBuildTimeUs;
+        }
+
+        /**
+         * Set the end time for the statistics.  The end time is used only for reporting
+         * in the dump() method.
+         */
+        private void complete(long stop) {
+            mStopTimeUs = stop;
+        }
+
+        /**
+         * Format a time span into ddd:HH:MM:SS.  The input is in us.
+         */
+        private String durationToString(long us) {
+            // s has a range of several years
+            int s = (int) (us / (1000 * 1000));
+            int m = s / 60;
+            s %= 60;
+            int h = m / 60;
+            m %= 60;
+            int d = h / 24;
+            h %= 24;
+            if (d != 0) {
+                return TextUtils.formatSimple("%2d:%02d:%02d:%02d", d, h, m, s);
+            } else if (h != 0) {
+                return TextUtils.formatSimple("%2s %02d:%02d:%02d", "", h, m, s);
+            } else {
+                return TextUtils.formatSimple("%2s %2s %2d:%02d", "", "", m, s);
+            }
+        }
+
+        /**
+         * Print the prefix for dumping.  This does not generate a line to the output.
+         */
+        private void dumpPrefix(PrintWriter pw, String indent, long now, boolean header,
+                                String title) {
+            pw.print(indent + " ");
+            if (header) {
+                pw.format(Locale.US, "%-23s", title);
+            } else {
+                pw.format(Locale.US, "%11s", durationToString(now - mStartTimeUs));
+                if (mStopTimeUs != 0) {
+                    pw.format(Locale.US, " %11s", durationToString(now - mStopTimeUs));
+                } else {
+                    pw.format(Locale.US, " %11s", "now");
+                }
+            }
+        }
+
+        /**
+         * Dump the summary statistics record.  Choose the header or the data.
+         *    number of builds
+         *    number of uses
+         *    number of big builds
+         *    number of short lifetimes
+         *    cumulative build time, in seconds
+         *    maximum build time, in ms
+         */
+        private void dumpStats(PrintWriter pw, String indent, long now, boolean header) {
+            dumpPrefix(pw, indent, now, header, "Summary stats");
+            if (header) {
+                pw.format(Locale.US, "  %10s  %10s  %10s  %10s  %10s  %10s",
+                          "TotBlds", "TotUsed", "BigBlds", "ShortLvd",
+                          "TotTime", "MaxTime");
+            } else {
+                pw.format(Locale.US,
+                        "  %10d  %10d  %10d  %10d  %10d  %10d",
+                        mTotalBuilds, mTotalUsed, mBigBuilds, mShortLived,
+                        mTotalTimeUs / 1000, mMaxBuildTimeUs / 1000);
+            }
+            pw.println();
+        }
+
+        /**
+         * Dump the build time histogram.  Choose the header or the data.
+         */
+        private void dumpTimes(PrintWriter pw, String indent, long now, boolean header) {
+            dumpPrefix(pw, indent, now, header, "Build times");
+            if (header) {
+                int[] keys = mTimeBins.userKeys();
+                for (int i = 0; i < keys.length; i++) {
+                    pw.format(Locale.US, "  %10s",
+                            TextUtils.formatSimple("<= %dms", keys[i]));
+                }
+                pw.format(Locale.US, "  %10s",
+                        TextUtils.formatSimple("> %dms", keys[keys.length - 1]));
+            } else {
+                for (int i = 0; i < mTimes.length; i++) {
+                    pw.format(Locale.US, "  %10d", mTimes[i]);
+                }
+            }
+            pw.println();
+        }
+
+        /**
+         * Dump the usage histogram.  Choose the header or the data.
+         */
+        private void dumpUsage(PrintWriter pw, String indent, long now, boolean header) {
+            dumpPrefix(pw, indent, now, header, "Use counters");
+            if (header) {
+                int[] keys = mUseBins.userKeys();
+                for (int i = 0; i < keys.length; i++) {
+                    pw.format(Locale.US, "  %10s", TextUtils.formatSimple("<= %d", keys[i]));
+                }
+                pw.format(Locale.US, "  %10s",
+                        TextUtils.formatSimple("> %d", keys[keys.length - 1]));
+            } else {
+                for (int i = 0; i < mUsed.length; i++) {
+                    pw.format(Locale.US, "  %10d", mUsed[i]);
+                }
+            }
+            pw.println();
+        }
+
+        /**
+         * Dump something, based on the "what" parameter.
+         */
+        private void dump(PrintWriter pw, String indent, long now, boolean header, String what) {
+            if (what.equals("stats")) {
+                dumpStats(pw, indent, now, header);
+            } else if (what.equals("times")) {
+                dumpTimes(pw, indent, now, header);
+            } else if (what.equals("usage")) {
+                dumpUsage(pw, indent, now, header);
+            } else {
+                throw new IllegalArgumentException("unrecognized choice: " + what);
+            }
+        }
+
+        /**
+         * Report the object via an event.  Presumably the record indicates an anomalous
+         * incident.
+         */
+        private void report() {
+            EventLogTags.writePmSnapshotStats(
+                    mTotalBuilds, mTotalUsed, mBigBuilds, mShortLived,
+                    mMaxBuildTimeUs / US_IN_MS, mTotalTimeUs / US_IN_MS);
+        }
+    }
+
+    /**
+     * Long statistics.  These roll over approximately every week.
+     */
+    private Stats[] mLong;
+
+    /**
+     * Short statistics.  These roll over approximately every minute;
+     */
+    private Stats[] mShort;
+
+    /**
+     * The time of the last build.  This can be used to compute the length of time a
+     * snapshot existed before being replaced.
+     */
+    private long mLastBuildTime = 0;
+
+    /**
+     * Create a snapshot object.  Initialize the bin levels.  The last bin catches
+     * everything that is not caught earlier, so its value is not really important.
+     */
+    public SnapshotStatistics() {
+        // Create the bin thresholds.  The time bins are in units of us.
+        mTimeBins = new BinMap(new int[] { 1, 2, 5, 10, 20, 50, 100 });
+        mUseBins = new BinMap(new int[] { 1, 2, 5, 10, 20, 50, 100 });
+
+        // Create the raw statistics
+        final long now = SystemClock.currentTimeMicro();
+        mLong = new Stats[2];
+        mLong[0] = new Stats(now);
+        mShort = new Stats[10];
+        mShort[0] = new Stats(now);
+
+        // Create the message handler for ticks and start the ticker.
+        mHandler = new Handler(Looper.getMainLooper()) {
+                @Override
+                public void handleMessage(Message msg) {
+                    SnapshotStatistics.this.handleMessage(msg);
+                }
+            };
+        scheduleTick();
+    }
+
+    /**
+     * Handle a message.  The only messages are ticks, so the message parameter is ignored.
+     */
+    private void handleMessage(@Nullable Message msg) {
+        tick();
+        scheduleTick();
+    }
+
+    /**
+     * Schedule one tick, a tick interval in the future.
+     */
+    private void scheduleTick() {
+        mHandler.sendEmptyMessageDelayed(0, SNAPSHOT_TICK_INTERVAL_MS);
+    }
+
+    /**
+     * Record a rebuild.  Cumulative and current statistics are updated.  Events may be
+     * generated.
+     * @param now The time at which the snapshot rebuild began, in ns.
+     * @param done The time at which the snapshot rebuild completed, in ns.
+     * @param hits The number of times the previous snapshot was used.
+     */
+    public void rebuild(long now, long done, int hits) {
+        // The duration has a span of about 2000s
+        final int duration = (int) (done - now);
+        boolean reportEvent = false;
+        synchronized (mLock) {
+            mLastBuildTime = now;
+
+            final int timeBin = mTimeBins.getBin(duration / 1000);
+            final int useBin = mUseBins.getBin(hits);
+            final boolean big = duration >= SNAPSHOT_BIG_BUILD_TIME_US;
+            final boolean quick = hits <= SNAPSHOT_SHORT_LIFETIME;
+
+            mShort[0].rebuild(duration, hits, timeBin, useBin, big, quick);
+            mLong[0].rebuild(duration, hits, timeBin, useBin, big, quick);
+            if (duration >= SNAPSHOT_REPORTABLE_BUILD_TIME_US) {
+                if (mEventsReported++ < SNAPSHOT_BUILD_REPORT_LIMIT) {
+                    reportEvent = true;
+                }
+            }
+        }
+        // The IO to the logger is done outside the lock.
+        if (reportEvent) {
+            // Report the first N big builds, and every new maximum after that.
+            EventLogTags.writePmSnapshotRebuild(duration / US_IN_MS, hits);
+        }
+    }
+
+    /**
+     * Roll a stats array.  Shift the elements up an index and create a new element at
+     * index zero.  The old element zero is completed with the specified time.
+     */
+    private void shift(Stats[] s, long now) {
+        s[0].complete(now);
+        for (int i = s.length - 1; i > 0; i--) {
+            s[i] = s[i - 1];
+        }
+        s[0] = new Stats(now);
+    }
+
+    /**
+     * Roll the statistics.
+     * <ul>
+     * <li> Roll the quick statistics immediately.
+     * <li> Roll the long statistics every SNAPSHOT_LONG_TICKER ticks.  The long
+     * statistics hold a week's worth of data.
+     * <li> Roll the logging statistics every SNAPSHOT_LOGGING_TICKER ticks.  The logging
+     * statistics hold 10 minutes worth of data.
+     * </ul>
+     */
+    private void tick() {
+        synchronized (mLock) {
+            long now = SystemClock.currentTimeMicro();
+            mTicks++;
+            if (mTicks % SNAPSHOT_LONG_TICKS == 0) {
+                shift(mLong, now);
+            }
+            shift(mShort, now);
+            mEventsReported = 0;
+        }
+    }
+
+    /**
+     * Dump the statistics.  The header is dumped from l[0], so that must not be null.
+     */
+    private void dump(PrintWriter pw, String indent, long now, Stats[] l, Stats[] s, String what) {
+        l[0].dump(pw, indent, now, true, what);
+        for (int i = 0; i < s.length; i++) {
+            if (s[i] != null) {
+                s[i].dump(pw, indent, now, false, what);
+            }
+        }
+        for (int i = 0; i < l.length; i++) {
+            if (l[i] != null) {
+                l[i].dump(pw, indent, now, false, what);
+            }
+        }
+    }
+
+    /**
+     * Dump the statistics.  The format is compatible with the PackageManager dumpsys
+     * output.
+     */
+    public void dump(PrintWriter pw, String indent, long now, int unrecorded, boolean full) {
+        // Grab the raw statistics under lock, but print them outside of the lock.
+        Stats[] l;
+        Stats[] s;
+        synchronized (mLock) {
+            l = Arrays.copyOf(mLong, mLong.length);
+            l[0] = new Stats(l[0]);
+            s = Arrays.copyOf(mShort, mShort.length);
+            s[0] = new Stats(s[0]);
+        }
+        pw.format(Locale.US, "%s Unrecorded hits %d", indent, unrecorded);
+        pw.println();
+        dump(pw, indent, now, l, s, "stats");
+        if (!full) {
+            return;
+        }
+        pw.println();
+        dump(pw, indent, now, l, s, "times");
+        pw.println();
+        dump(pw, indent, now, l, s, "usage");
+    }
+}
diff --git a/services/core/java/com/android/server/pm/verify/domain/DomainVerificationService.java b/services/core/java/com/android/server/pm/verify/domain/DomainVerificationService.java
index f0fdad0..a3e1a9c 100644
--- a/services/core/java/com/android/server/pm/verify/domain/DomainVerificationService.java
+++ b/services/core/java/com/android/server/pm/verify/domain/DomainVerificationService.java
@@ -892,7 +892,7 @@
 
             boolean hasAutoVerifyDomains = newDomainsSize > 0;
             boolean needsBroadcast =
-                    applyImmutableState(pkgName, newStateMap, newAutoVerifyDomains);
+                    applyImmutableState(newPkgSetting, newStateMap, newAutoVerifyDomains);
 
             sendBroadcast = hasAutoVerifyDomains && needsBroadcast;
 
@@ -943,7 +943,8 @@
             pkgState = new DomainVerificationPkgState(pkgName, domainSetId, hasAutoVerifyDomains);
         }
 
-        boolean needsBroadcast = applyImmutableState(pkgState, domains);
+        boolean needsBroadcast =
+                applyImmutableState(newPkgSetting, pkgState.getStateMap(), domains);
         if (needsBroadcast && !isPendingOrRestored) {
             // TODO(b/159952358): Test this behavior
             // Attempt to preserve user experience by automatically verifying all domains from
@@ -990,22 +991,17 @@
         }
     }
 
-    private boolean applyImmutableState(@NonNull DomainVerificationPkgState pkgState,
-            @NonNull ArraySet<String> autoVerifyDomains) {
-        return applyImmutableState(pkgState.getPackageName(), pkgState.getStateMap(),
-                autoVerifyDomains);
-    }
-
     /**
      * Applies any immutable state as the final step when adding or migrating state. Currently only
-     * applies {@link SystemConfig#getLinkedApps()}, which approves all domains for a package.
+     * applies {@link SystemConfig#getLinkedApps()}, which approves all domains for a system app.
      *
      * @return whether or not a broadcast is necessary for this package
      */
-    private boolean applyImmutableState(@NonNull String packageName,
+    private boolean applyImmutableState(@NonNull PackageSetting pkgSetting,
             @NonNull ArrayMap<String, Integer> stateMap,
             @NonNull ArraySet<String> autoVerifyDomains) {
-        if (mSystemConfig.getLinkedApps().contains(packageName)) {
+        if (pkgSetting.isSystem()
+                && mSystemConfig.getLinkedApps().contains(pkgSetting.getName())) {
             int domainsSize = autoVerifyDomains.size();
             for (int index = 0; index < domainsSize; index++) {
                 stateMap.put(autoVerifyDomains.valueAt(index),
@@ -1318,7 +1314,7 @@
                         if (pkgSetting == null || pkgSetting.getPkg() == null) {
                             continue;
                         }
-                        resetDomainState(pkgState, pkgSetting.getPkg());
+                        resetDomainState(pkgState.getStateMap(), pkgSetting);
                     }
                 } else {
                     int size = packageNames.size();
@@ -1329,7 +1325,7 @@
                         if (pkgSetting == null || pkgSetting.getPkg() == null) {
                             continue;
                         }
-                        resetDomainState(pkgState, pkgSetting.getPkg());
+                        resetDomainState(pkgState.getStateMap(), pkgSetting);
                     }
                 }
             }
@@ -1341,9 +1337,8 @@
     /**
      * Reset states that are mutable by the domain verification agent.
      */
-    private void resetDomainState(@NonNull DomainVerificationPkgState pkgState,
-            @NonNull AndroidPackage pkg) {
-        ArrayMap<String, Integer> stateMap = pkgState.getStateMap();
+    private void resetDomainState(@NonNull ArrayMap<String, Integer> stateMap,
+            @NonNull PackageSetting pkgSetting) {
         int size = stateMap.size();
         for (int index = size - 1; index >= 0; index--) {
             Integer state = stateMap.valueAt(index);
@@ -1363,7 +1358,8 @@
             }
         }
 
-        applyImmutableState(pkgState, mCollector.collectValidAutoVerifyDomains(pkg));
+        applyImmutableState(pkgSetting, stateMap,
+                mCollector.collectValidAutoVerifyDomains(pkgSetting.getPkg()));
     }
 
     @Override
diff --git a/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java b/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java
index cd7f685..6f6bdac 100644
--- a/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java
+++ b/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java
@@ -394,13 +394,13 @@
                     throw new IllegalStateException("Have not received sensor event.");
                 }
 
-                if (latestEvent.values.length != mExpectedValues.size()) {
+                if (latestEvent.values.length < mExpectedValues.size()) {
                     throw new RuntimeException("Number of supplied numeric range(s) does not "
                             + "match the number of values in the latest sensor event for sensor: "
                             + mSensor);
                 }
 
-                for (int i = 0; i < latestEvent.values.length; i++) {
+                for (int i = 0; i < mExpectedValues.size(); i++) {
                     if (!adheresToRange(latestEvent.values[i], mExpectedValues.get(i))) {
                         return false;
                     }
diff --git a/services/core/java/com/android/server/rotationresolver/RemoteRotationResolverService.java b/services/core/java/com/android/server/rotationresolver/RemoteRotationResolverService.java
index 189f47f..35aff8d 100644
--- a/services/core/java/com/android/server/rotationresolver/RemoteRotationResolverService.java
+++ b/services/core/java/com/android/server/rotationresolver/RemoteRotationResolverService.java
@@ -21,8 +21,8 @@
 import static android.service.rotationresolver.RotationResolverService.ROTATION_RESULT_FAILURE_CANCELLED;
 import static android.service.rotationresolver.RotationResolverService.ROTATION_RESULT_FAILURE_TIMED_OUT;
 
-import static com.android.server.rotationresolver.RotationResolverManagerService.RESOLUTION_FAILURE;
-import static com.android.server.rotationresolver.RotationResolverManagerService.logRotationStats;
+import static com.android.server.rotationresolver.RotationResolverManagerService.errorCodeToProto;
+import static com.android.server.rotationresolver.RotationResolverManagerService.surfaceRotationToProto;
 
 import android.annotation.NonNull;
 import android.content.ComponentName;
@@ -173,8 +173,10 @@
                     request.mCallbackInternal.onSuccess(rotation);
                     final long timeToCalculate =
                             SystemClock.elapsedRealtime() - request.mRequestStartTimeMillis;
-                    logRotationStats(request.mRemoteRequest.getProposedRotation(),
-                            request.mRemoteRequest.getCurrentRotation(), rotation, timeToCalculate);
+                    RotationResolverManagerService.logRotationStatsWithTimeToCalculate(
+                            request.mRemoteRequest.getProposedRotation(),
+                            request.mRemoteRequest.getCurrentRotation(),
+                            surfaceRotationToProto(rotation), timeToCalculate);
                     Slog.d(TAG, "onSuccess:" + rotation);
                     Slog.d(TAG, "timeToCalculate:" + timeToCalculate);
                 }
@@ -192,8 +194,9 @@
                     request.mCallbackInternal.onFailure(error);
                     final long timeToCalculate =
                             SystemClock.elapsedRealtime() - request.mRequestStartTimeMillis;
-                    logRotationStats(request.mRemoteRequest.getProposedRotation(),
-                            request.mRemoteRequest.getCurrentRotation(), RESOLUTION_FAILURE,
+                    RotationResolverManagerService.logRotationStatsWithTimeToCalculate(
+                            request.mRemoteRequest.getProposedRotation(),
+                            request.mRemoteRequest.getCurrentRotation(), errorCodeToProto(error),
                             timeToCalculate);
                     Slog.d(TAG, "onFailure:" + error);
                     Slog.d(TAG, "timeToCalculate:" + timeToCalculate);
diff --git a/services/core/java/com/android/server/rotationresolver/RotationResolverManagerService.java b/services/core/java/com/android/server/rotationresolver/RotationResolverManagerService.java
index a749d18..19a246e 100644
--- a/services/core/java/com/android/server/rotationresolver/RotationResolverManagerService.java
+++ b/services/core/java/com/android/server/rotationresolver/RotationResolverManagerService.java
@@ -18,6 +18,9 @@
 
 import static android.provider.DeviceConfig.NAMESPACE_ROTATION_RESOLVER;
 import static android.service.rotationresolver.RotationResolverService.ROTATION_RESULT_FAILURE_CANCELLED;
+import static android.service.rotationresolver.RotationResolverService.ROTATION_RESULT_FAILURE_NOT_SUPPORTED;
+import static android.service.rotationresolver.RotationResolverService.ROTATION_RESULT_FAILURE_PREEMPTED;
+import static android.service.rotationresolver.RotationResolverService.ROTATION_RESULT_FAILURE_TIMED_OUT;
 
 import static com.android.internal.util.FrameworkStatsLog.AUTO_ROTATE_REPORTED__PROPOSED_ORIENTATION__ROTATION_0;
 import static com.android.internal.util.FrameworkStatsLog.AUTO_ROTATE_REPORTED__PROPOSED_ORIENTATION__ROTATION_180;
@@ -37,6 +40,7 @@
 import android.provider.DeviceConfig;
 import android.rotationresolver.RotationResolverInternal;
 import android.service.rotationresolver.RotationResolutionRequest;
+import android.service.rotationresolver.RotationResolverService;
 import android.text.TextUtils;
 import android.util.IndentingPrintWriter;
 import android.util.Slog;
@@ -217,24 +221,37 @@
         }
     }
 
-    static void logRotationStats(int proposedRotation, int currentRotation,
-            int resolvedRotation, long timeToCalculate) {
+    static void logRotationStatsWithTimeToCalculate(int proposedRotation, int currentRotation,
+            int result, long timeToCalculate) {
         FrameworkStatsLog.write(FrameworkStatsLog.AUTO_ROTATE_REPORTED,
                 /* previous_orientation= */ surfaceRotationToProto(currentRotation),
                 /* proposed_orientation= */ surfaceRotationToProto(proposedRotation),
-                /* resolved_orientation= */ surfaceRotationToProto(resolvedRotation),
+                result,
                 /* process_duration_millis= */ timeToCalculate);
     }
 
     static void logRotationStats(int proposedRotation, int currentRotation,
-            int resolvedRotation) {
+            int result) {
         FrameworkStatsLog.write(FrameworkStatsLog.AUTO_ROTATE_REPORTED,
                 /* previous_orientation= */ surfaceRotationToProto(currentRotation),
                 /* proposed_orientation= */ surfaceRotationToProto(proposedRotation),
-                /* resolved_orientation= */ surfaceRotationToProto(resolvedRotation));
+                result);
     }
 
-    private static int surfaceRotationToProto(@Surface.Rotation int rotationPoseResult) {
+    static int errorCodeToProto(@RotationResolverService.FailureCodes int error) {
+        switch (error) {
+            case ROTATION_RESULT_FAILURE_NOT_SUPPORTED:
+                return RESOLUTION_UNAVAILABLE;
+            case ROTATION_RESULT_FAILURE_TIMED_OUT:
+            case ROTATION_RESULT_FAILURE_PREEMPTED:
+            case ROTATION_RESULT_FAILURE_CANCELLED:
+                return ORIENTATION_UNKNOWN;
+            default:
+                return RESOLUTION_FAILURE;
+        }
+    }
+
+    static int surfaceRotationToProto(@Surface.Rotation int rotationPoseResult) {
         switch (rotationPoseResult) {
             case Surface.ROTATION_0:
                 return AUTO_ROTATE_REPORTED__PROPOSED_ORIENTATION__ROTATION_0;
@@ -245,7 +262,8 @@
             case Surface.ROTATION_270:
                 return AUTO_ROTATE_REPORTED__PROPOSED_ORIENTATION__ROTATION_270;
             default:
-                return ORIENTATION_UNKNOWN;
+                // Should not reach here.
+                return RESOLUTION_FAILURE;
         }
     }
 }
diff --git a/services/core/java/com/android/server/timedetector/EnvironmentImpl.java b/services/core/java/com/android/server/timedetector/EnvironmentImpl.java
index 072cc16f..7649958 100644
--- a/services/core/java/com/android/server/timedetector/EnvironmentImpl.java
+++ b/services/core/java/com/android/server/timedetector/EnvironmentImpl.java
@@ -82,6 +82,9 @@
                         handleAutoTimeDetectionChangedOnHandlerThread();
                     }
                 });
+        mServiceConfigAccessor.addListener(
+                () -> mHandler.post(
+                        EnvironmentImpl.this::handleAutoTimeDetectionChangedOnHandlerThread));
     }
 
     /** Internal method for handling the auto time setting being changed. */
diff --git a/services/core/java/com/android/server/timedetector/ServerFlags.java b/services/core/java/com/android/server/timedetector/ServerFlags.java
index d91e9c2..7145f5e 100644
--- a/services/core/java/com/android/server/timedetector/ServerFlags.java
+++ b/services/core/java/com/android/server/timedetector/ServerFlags.java
@@ -30,7 +30,9 @@
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.time.DateTimeException;
 import java.time.Duration;
+import java.time.Instant;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
@@ -62,6 +64,8 @@
             KEY_LOCATION_TIME_ZONE_DETECTION_UNCERTAINTY_DELAY_MILLIS,
             KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE,
             KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT,
+            KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE,
+            KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE,
     })
     @Retention(RetentionPolicy.SOURCE)
     @interface DeviceConfigKey {}
@@ -135,6 +139,23 @@
     public static final String KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT =
             "location_time_zone_detection_setting_enabled_default";
 
+    /**
+     * The key to override the time detector origin priorities configuration. A comma-separated list
+     * of strings that will be passed to {@link TimeDetectorStrategy#stringToOrigin(String)}.
+     * All values must be recognized or the override value will be ignored.
+     */
+    @DeviceConfigKey
+    public static final String KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE =
+            "time_detector_origin_priorities_override";
+
+    /**
+     * The key to override the time detector lower bound configuration. The values is the number of
+     * milliseconds since the beginning of the Unix epoch.
+     */
+    @DeviceConfigKey
+    public static final String KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE =
+            "time_detector_lower_bound_millis_override";
+
     @GuardedBy("mListeners")
     private final ArrayMap<ConfigurationChangeListener, Set<String>> mListeners = new ArrayMap<>();
 
@@ -209,6 +230,38 @@
     }
 
     /**
+     * Returns an optional string array value from {@link DeviceConfig} from the system_time
+     * namespace, returns {@link Optional#empty()} if there is no explicit value set.
+     */
+    @NonNull
+    public Optional<String[]> getOptionalStringArray(@DeviceConfigKey String key) {
+        Optional<String> string = getOptionalString(key);
+        if (!string.isPresent()) {
+            return Optional.empty();
+        }
+        return Optional.of(string.get().split(","));
+    }
+
+    /**
+     * Returns an {@link Instant} from {@link DeviceConfig} from the system_time
+     * namespace, returns the {@code defaultValue} if the value is missing or invalid.
+     */
+    @NonNull
+    public Optional<Instant> getOptionalInstant(@DeviceConfigKey String key) {
+        String value = DeviceConfig.getProperty(NAMESPACE_SYSTEM_TIME, key);
+        if (value == null) {
+            return Optional.empty();
+        }
+
+        try {
+            long millis = Long.parseLong(value);
+            return Optional.of(Instant.ofEpochMilli(millis));
+        } catch (DateTimeException | NumberFormatException e) {
+            return Optional.empty();
+        }
+    }
+
+    /**
      * Returns an optional boolean value from {@link DeviceConfig} from the system_time
      * namespace, returns {@link Optional#empty()} if there is no explicit value set.
      */
diff --git a/services/core/java/com/android/server/timedetector/ServiceConfigAccessor.java b/services/core/java/com/android/server/timedetector/ServiceConfigAccessor.java
index be4432a..7f7d01c 100644
--- a/services/core/java/com/android/server/timedetector/ServiceConfigAccessor.java
+++ b/services/core/java/com/android/server/timedetector/ServiceConfigAccessor.java
@@ -15,9 +15,10 @@
  */
 package com.android.server.timedetector;
 
+import static com.android.server.timedetector.ServerFlags.KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE;
+import static com.android.server.timedetector.ServerFlags.KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE;
 import static com.android.server.timedetector.TimeDetectorStrategy.ORIGIN_NETWORK;
 import static com.android.server.timedetector.TimeDetectorStrategy.ORIGIN_TELEPHONY;
-import static com.android.server.timedetector.TimeDetectorStrategy.stringToOrigin;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -28,12 +29,17 @@
 
 import com.android.internal.R;
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.util.Preconditions;
+import com.android.server.timedetector.TimeDetectorStrategy.Origin;
 import com.android.server.timezonedetector.ConfigurationChangeListener;
 
 import java.time.Instant;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.Set;
+import java.util.function.Supplier;
 
 /**
  * A singleton that provides access to service configuration for time detection. This hides how
@@ -48,7 +54,7 @@
      * By default telephony and network only suggestions are accepted and telephony takes
      * precedence over network.
      */
-    private static final @TimeDetectorStrategy.Origin int[]
+    private static final @Origin int[]
             DEFAULT_AUTOMATIC_TIME_ORIGIN_PRIORITIES = { ORIGIN_TELEPHONY, ORIGIN_NETWORK };
 
     /**
@@ -58,8 +64,11 @@
     private static final Instant TIME_LOWER_BOUND_DEFAULT = Instant.ofEpochMilli(
             Long.max(android.os.Environment.getRootDirectory().lastModified(), Build.TIME));
 
+    /** Device config keys that affect the {@link TimeDetectorService}. */
     private static final Set<String> SERVER_FLAGS_KEYS_TO_WATCH = Collections.unmodifiableSet(
             new ArraySet<>(new String[] {
+                    KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE,
+                    KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE,
             }));
 
     private static final Object SLOCK = new Object();
@@ -70,8 +79,9 @@
     private static ServiceConfigAccessor sInstance;
 
     @NonNull private final Context mContext;
+    @NonNull private final ConfigOriginPrioritiesSupplier mConfigOriginPrioritiesSupplier;
+    @NonNull private final ServerFlagsOriginPrioritiesSupplier mServerFlagsOriginPrioritiesSupplier;
     @NonNull private final ServerFlags mServerFlags;
-    @NonNull private final int[] mOriginPriorities;
 
     /**
      * If a newly calculated system clock time and the current system clock time differs by this or
@@ -83,7 +93,9 @@
     private ServiceConfigAccessor(@NonNull Context context) {
         mContext = Objects.requireNonNull(context);
         mServerFlags = ServerFlags.getInstance(mContext);
-        mOriginPriorities = getOriginPrioritiesInternal();
+        mConfigOriginPrioritiesSupplier = new ConfigOriginPrioritiesSupplier(context);
+        mServerFlagsOriginPrioritiesSupplier =
+                new ServerFlagsOriginPrioritiesSupplier(mServerFlags);
         mSystemClockUpdateThresholdMillis =
                 SystemProperties.getInt("ro.sys.time_detector_update_diff",
                         SYSTEM_CLOCK_UPDATE_THRESHOLD_MILLIS_DEFAULT);
@@ -111,31 +123,109 @@
     }
 
     @NonNull
-    int[] getOriginPriorities() {
-        return mOriginPriorities;
+    @Origin int[] getOriginPriorities() {
+        int[] serverFlagsValue = mServerFlagsOriginPrioritiesSupplier.get();
+        if (serverFlagsValue != null) {
+            return serverFlagsValue;
+        }
+
+        int[] configValue = mConfigOriginPrioritiesSupplier.get();
+        if (configValue != null) {
+            return configValue;
+        }
+        return DEFAULT_AUTOMATIC_TIME_ORIGIN_PRIORITIES;
     }
 
     int systemClockUpdateThresholdMillis() {
         return mSystemClockUpdateThresholdMillis;
     }
 
+    @NonNull
     Instant autoTimeLowerBound() {
-        return TIME_LOWER_BOUND_DEFAULT;
+        return mServerFlags.getOptionalInstant(KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE)
+                .orElse(TIME_LOWER_BOUND_DEFAULT);
     }
 
-    private int[] getOriginPrioritiesInternal() {
-        String[] originStrings =
-                mContext.getResources().getStringArray(R.array.config_autoTimeSourcesPriority);
-        if (originStrings.length == 0) {
-            return DEFAULT_AUTOMATIC_TIME_ORIGIN_PRIORITIES;
-        } else {
-            int[] origins = new int[originStrings.length];
-            for (int i = 0; i < originStrings.length; i++) {
-                int origin = stringToOrigin(originStrings[i]);
-                origins[i] = origin;
-            }
+    /**
+     * A base supplier of an array of time origin integers in priority order.
+     * It handles memoization of the result to avoid repeated string parsing when nothing has
+     * changed.
+     */
+    private abstract static class BaseOriginPrioritiesSupplier implements Supplier<@Origin int[]> {
+        @GuardedBy("this") @Nullable private String[] mLastPriorityStrings;
+        @GuardedBy("this") @Nullable private int[] mLastPriorityInts;
 
-            return origins;
+        /** Returns an array of {@code ORIGIN_*} values, or {@code null}. */
+        @Override
+        @Nullable
+        public @Origin int[] get() {
+            String[] priorityStrings = lookupPriorityStrings();
+            synchronized (this) {
+                if (Arrays.equals(mLastPriorityStrings, priorityStrings)) {
+                    return mLastPriorityInts;
+                }
+
+                int[] priorityInts = null;
+                if (priorityStrings != null && priorityStrings.length > 0) {
+                    priorityInts = new int[priorityStrings.length];
+                    try {
+                        for (int i = 0; i < priorityInts.length; i++) {
+                            String priorityString = priorityStrings[i];
+                            Preconditions.checkArgument(priorityString != null);
+
+                            priorityString = priorityString.trim();
+                            priorityInts[i] = TimeDetectorStrategy.stringToOrigin(priorityString);
+                        }
+                    } catch (IllegalArgumentException e) {
+                        // If any strings were bad and they were ignored then the semantics of the
+                        // whole list could change, so return null.
+                        priorityInts = null;
+                    }
+                }
+                mLastPriorityStrings = priorityStrings;
+                mLastPriorityInts = priorityInts;
+                return priorityInts;
+            }
+        }
+
+        @Nullable
+        protected abstract String[] lookupPriorityStrings();
+    }
+
+    /** Supplies origin priorities from config_autoTimeSourcesPriority. */
+    private static class ConfigOriginPrioritiesSupplier extends BaseOriginPrioritiesSupplier {
+
+        @NonNull private final Context mContext;
+
+        private ConfigOriginPrioritiesSupplier(Context context) {
+            mContext = Objects.requireNonNull(context);
+        }
+
+        @Override
+        @Nullable
+        protected String[] lookupPriorityStrings() {
+            return mContext.getResources().getStringArray(R.array.config_autoTimeSourcesPriority);
+        }
+    }
+
+    /**
+     * Supplies origin priorities from device_config (server flags), see
+     * {@link ServerFlags#KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE}.
+     */
+    private static class ServerFlagsOriginPrioritiesSupplier extends BaseOriginPrioritiesSupplier {
+
+        @NonNull private final ServerFlags mServerFlags;
+
+        private ServerFlagsOriginPrioritiesSupplier(ServerFlags serverFlags) {
+            mServerFlags = Objects.requireNonNull(serverFlags);
+        }
+
+        @Override
+        @Nullable
+        protected String[] lookupPriorityStrings() {
+            Optional<String[]> priorityStrings = mServerFlags.getOptionalStringArray(
+                    KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE);
+            return priorityStrings.orElse(null);
         }
     }
 }
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorService.java b/services/core/java/com/android/server/timedetector/TimeDetectorService.java
index 14cab38..0f14af4 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorService.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorService.java
@@ -30,6 +30,8 @@
 import android.content.Context;
 import android.os.Binder;
 import android.os.Handler;
+import android.os.ResultReceiver;
+import android.os.ShellCallback;
 import android.util.IndentingPrintWriter;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -100,6 +102,7 @@
     }
 
     @Override
+    @NonNull
     public TimeCapabilitiesAndConfig getCapabilitiesAndConfig() {
         int userId = mCallerIdentityInjector.getCallingUserId();
         return getTimeCapabilitiesAndConfig(userId);
@@ -119,7 +122,7 @@
     }
 
     @Override
-    public boolean updateConfiguration(TimeConfiguration timeConfiguration) {
+    public boolean updateConfiguration(@NonNull TimeConfiguration timeConfiguration) {
         enforceManageTimeDetectorPermission();
         // TODO(b/172891783) Add actual logic
         return false;
@@ -180,6 +183,13 @@
         ipw.flush();
     }
 
+    @Override
+    public void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err,
+            String[] args, ShellCallback callback, ResultReceiver resultReceiver) {
+        new TimeDetectorShellCommand(this).exec(
+                this, in, out, err, args, callback, resultReceiver);
+    }
+
     private void enforceSuggestTelephonyTimePermission() {
         mContext.enforceCallingPermission(
                 android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE,
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java b/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java
new file mode 100644
index 0000000..721986b
--- /dev/null
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java
@@ -0,0 +1,83 @@
+/*
+ * 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.timedetector;
+
+import static android.app.timedetector.TimeDetector.SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED;
+import static android.app.timedetector.TimeDetector.SHELL_COMMAND_SERVICE_NAME;
+import static android.provider.DeviceConfig.NAMESPACE_SYSTEM_TIME;
+
+import static com.android.server.timedetector.ServerFlags.KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE;
+import static com.android.server.timedetector.ServerFlags.KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE;
+
+import android.os.ShellCommand;
+
+import java.io.PrintWriter;
+
+/** Implements the shell command interface for {@link TimeDetectorService}. */
+class TimeDetectorShellCommand extends ShellCommand {
+
+    private final TimeDetectorService mInterface;
+
+    TimeDetectorShellCommand(TimeDetectorService timeDetectorService) {
+        mInterface = timeDetectorService;
+    }
+
+    @Override
+    public int onCommand(String cmd) {
+        if (cmd == null) {
+            return handleDefaultCommands(cmd);
+        }
+
+        switch (cmd) {
+            case SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED:
+                return runIsAutoDetectionEnabled();
+            default: {
+                return handleDefaultCommands(cmd);
+            }
+        }
+    }
+
+    private int runIsAutoDetectionEnabled() {
+        final PrintWriter pw = getOutPrintWriter();
+        boolean enabled = mInterface.getCapabilitiesAndConfig()
+                .getTimeConfiguration()
+                .isAutoDetectionEnabled();
+        pw.println(enabled);
+        return 0;
+    }
+
+    @Override
+    public void onHelp() {
+        final PrintWriter pw = getOutPrintWriter();
+        pw.printf("Time Detector (%s) commands:\n", SHELL_COMMAND_SERVICE_NAME);
+        pw.printf("  help\n");
+        pw.printf("    Print this help text.\n");
+        pw.printf("  %s\n", SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED);
+        pw.printf("    Prints true/false according to the automatic time detection setting.\n");
+        pw.println();
+        pw.printf("This service is also affected by the following device_config flags in the"
+                + " %s namespace:\n", NAMESPACE_SYSTEM_TIME);
+        pw.printf("  %s\n", KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE);
+        pw.printf("    The lower bound used to validate time suggestions when they are received."
+                + "\n");
+        pw.printf("    Specified in milliseconds since the start of the Unix epoch.\n");
+        pw.printf("  %s\n", KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE);
+        pw.printf("    A comma separated list of origins. See TimeDetectorStrategy for details.\n");
+        pw.println();
+        pw.printf("See \"adb shell cmd device_config\" for more information on setting flags.\n");
+        pw.println();
+    }
+}
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java
index be382f0..ff5060e 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java
@@ -27,10 +27,13 @@
 import android.os.TimestampedValue;
 import android.util.IndentingPrintWriter;
 
+import com.android.internal.util.Preconditions;
 import com.android.server.timezonedetector.Dumpable;
 
+import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
 
 /**
  * The interface for the class that implements the time detection algorithm used by the
@@ -44,9 +47,9 @@
  */
 public interface TimeDetectorStrategy extends Dumpable {
 
-    @IntDef({ ORIGIN_TELEPHONY, ORIGIN_MANUAL, ORIGIN_NETWORK, ORIGIN_GNSS,
-        ORIGIN_EXTERNAL })
+    @IntDef({ ORIGIN_TELEPHONY, ORIGIN_MANUAL, ORIGIN_NETWORK, ORIGIN_GNSS, ORIGIN_EXTERNAL })
     @Retention(RetentionPolicy.SOURCE)
+    @Target({ ElementType.TYPE_USE, ElementType.TYPE_PARAMETER })
     @interface Origin {}
 
     /** Used when a time value originated from a telephony signal. */
@@ -126,9 +129,11 @@
 
     /**
      * Converts a human readable config string to one of the {@code ORIGIN_} constants.
-     * Throws an {@link IllegalArgumentException} if the value is unrecognized.
+     * Throws an {@link IllegalArgumentException} if the value is unrecognized or {@code null}.
      */
     static @Origin int stringToOrigin(String originString) {
+        Preconditions.checkArgument(originString != null);
+
         switch (originString) {
             case "manual":
                 return ORIGIN_MANUAL;
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
index db8a59e..357c232 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
@@ -325,9 +325,9 @@
         ipw.println("mEnvironment.systemClockMillis()=" + mEnvironment.systemClockMillis());
         ipw.println("mEnvironment.systemClockUpdateThresholdMillis()="
                 + mEnvironment.systemClockUpdateThresholdMillis());
+        Instant autoTimeLowerBound = mEnvironment.autoTimeLowerBound();
         ipw.printf("mEnvironment.autoTimeLowerBound()=%s(%s)\n",
-                mEnvironment.autoTimeLowerBound(),
-                mEnvironment.autoTimeLowerBound().toEpochMilli());
+                autoTimeLowerBound, autoTimeLowerBound.toEpochMilli());
         String priorities =
                 Arrays.stream(mEnvironment.autoOriginPriorities())
                         .mapToObj(TimeDetectorStrategy::originToString)
diff --git a/services/core/java/com/android/server/timezonedetector/ServiceConfigAccessor.java b/services/core/java/com/android/server/timezonedetector/ServiceConfigAccessor.java
index dddb11b..4a1d9c4 100644
--- a/services/core/java/com/android/server/timezonedetector/ServiceConfigAccessor.java
+++ b/services/core/java/com/android/server/timezonedetector/ServiceConfigAccessor.java
@@ -70,6 +70,10 @@
      */
     public static final @ProviderMode String PROVIDER_MODE_ENABLED = "enabled";
 
+    /**
+     * Device config keys that affect the {@link TimeZoneDetectorService} service and {@link
+     * com.android.server.timezonedetector.location.LocationTimeZoneManagerService}.
+     */
     private static final Set<String> SERVER_FLAGS_KEYS_TO_WATCH = Collections.unmodifiableSet(
             new ArraySet<>(new String[] {
                     ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED,
diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java
index c20400a..457dc43 100644
--- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java
+++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java
@@ -321,6 +321,13 @@
         ipw.flush();
     }
 
+    @Override
+    public void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err,
+            String[] args, ShellCallback callback, ResultReceiver resultReceiver) {
+        new TimeZoneDetectorShellCommand(this).exec(
+                this, in, out, err, args, callback, resultReceiver);
+    }
+
     private void enforceManageTimeZoneDetectorPermission() {
         mContext.enforceCallingPermission(
                 android.Manifest.permission.MANAGE_TIME_AND_ZONE_DETECTION,
@@ -346,13 +353,5 @@
                 android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE,
                 "suggest manual time and time zone");
     }
-
-    @Override
-    public void onShellCommand(FileDescriptor in, FileDescriptor out,
-            FileDescriptor err, String[] args, ShellCallback callback,
-            ResultReceiver resultReceiver) {
-        new TimeZoneDetectorShellCommand(this).exec(
-                this, in, out, err, args, callback, resultReceiver);
-    }
 }
 
diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java
index 8c529c4..9899b448b 100644
--- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java
+++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java
@@ -18,12 +18,19 @@
 import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED;
 import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_IS_GEO_DETECTION_ENABLED;
 import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_IS_GEO_DETECTION_SUPPORTED;
+import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SERVICE_NAME;
 import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SET_AUTO_DETECTION_ENABLED;
 import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SET_GEO_DETECTION_ENABLED;
 import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SUGGEST_GEO_LOCATION_TIME_ZONE;
 import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SUGGEST_MANUAL_TIME_ZONE;
 import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SUGGEST_TELEPHONY_TIME_ZONE;
+import static android.provider.DeviceConfig.NAMESPACE_SYSTEM_TIME;
 
+import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED;
+import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT;
+import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE;
+
+import android.app.time.LocationTimeZoneManager;
 import android.app.time.TimeZoneConfiguration;
 import android.app.timezonedetector.ManualTimeZoneSuggestion;
 import android.app.timezonedetector.TelephonyTimeZoneSuggestion;
@@ -155,20 +162,21 @@
     @Override
     public void onHelp() {
         final PrintWriter pw = getOutPrintWriter();
-        pw.println("Time Zone Detector (time_zone_detector) commands:");
-        pw.println("  help");
-        pw.println("    Print this help text.");
+        pw.printf("Time Zone Detector (%s) commands:\n", SHELL_COMMAND_SERVICE_NAME);
+        pw.printf("  help\n");
+        pw.printf("    Print this help text.\n");
         pw.printf("  %s\n", SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED);
-        pw.println("    Prints true/false according to the automatic tz detection setting");
+        pw.printf("    Prints true/false according to the automatic time zone detection setting\n");
         pw.printf("  %s true|false\n", SHELL_COMMAND_SET_AUTO_DETECTION_ENABLED);
-        pw.println("    Sets the automatic tz detection setting.");
+        pw.printf("    Sets the automatic time zone detection setting.\n");
         pw.printf("  %s\n", SHELL_COMMAND_IS_GEO_DETECTION_SUPPORTED);
-        pw.println("    Prints true/false according to whether geolocation time zone detection is"
-                + " supported on this device");
+        pw.printf("    Prints true/false according to whether geolocation time zone detection is"
+                + " supported on this device.\n");
         pw.printf("  %s\n", SHELL_COMMAND_IS_GEO_DETECTION_ENABLED);
-        pw.println("    Prints true/false according to the geolocation tz detection setting");
+        pw.printf("    Prints true/false according to the geolocation time zone detection setting."
+                + "\n");
         pw.printf("  %s true|false\n", SHELL_COMMAND_SET_GEO_DETECTION_ENABLED);
-        pw.println("    Sets the geolocation tz detection setting.");
+        pw.printf("    Sets the geolocation time zone detection enabled setting.\n");
         pw.printf("  %s <geolocation suggestion opts>\n",
                 SHELL_COMMAND_SUGGEST_GEO_LOCATION_TIME_ZONE);
         pw.printf("  %s <manual suggestion opts>\n",
@@ -182,5 +190,27 @@
         pw.println();
         TelephonyTimeZoneSuggestion.printCommandLineOpts(pw);
         pw.println();
+        pw.printf("This service is also affected by the following device_config flags in the"
+                + " %s namespace:\n", NAMESPACE_SYSTEM_TIME);
+        pw.printf("  %s\n", KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED);
+        pw.printf("    Only observed if the geolocation time zone detection feature is enabled in"
+                + " config.\n");
+        pw.printf("    Set this to false to disable the feature.\n");
+        pw.printf("  %s\n", KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT);
+        pw.printf("    Only used if the device does not have an explicit 'geolocation time zone"
+                + " detection enabled' setting stored [*].\n");
+        pw.printf("    The default is when unset is false.\n");
+        pw.printf("  %s\n", KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE);
+        pw.printf("    Used to override the device's 'geolocation time zone detection enabled'"
+                + " setting [*].\n");
+        pw.println();
+        pw.printf("[*] To be enabled, the user must still have location = on / auto time zone"
+                + " detection = on.\n");
+        pw.println();
+        pw.printf("See \"adb shell cmd device_config\" for more information on setting flags.\n");
+        pw.println();
+        pw.printf("Also see \"adb shell cmd %s help\" for lower-level location time zone"
+                        + " commands / settings.\n", LocationTimeZoneManager.SERVICE_NAME);
+        pw.println();
     }
 }
diff --git a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java
index c6df624..0f0de50 100644
--- a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java
+++ b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java
@@ -24,9 +24,6 @@
 import static android.app.time.LocationTimeZoneManager.SHELL_COMMAND_STOP;
 import static android.provider.DeviceConfig.NAMESPACE_SYSTEM_TIME;
 
-import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED;
-import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT;
-import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE;
 import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_UNCERTAINTY_DELAY_MILLIS;
 import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_FUZZ_MILLIS;
 import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_MILLIS;
@@ -48,6 +45,7 @@
 import android.app.time.LocationTimeZoneManagerProto;
 import android.app.time.LocationTimeZoneManagerServiceStateProto;
 import android.app.time.TimeZoneProviderStateProto;
+import android.app.timezonedetector.TimeZoneDetector;
 import android.os.Bundle;
 import android.os.ShellCommand;
 import android.util.IndentingPrintWriter;
@@ -103,84 +101,68 @@
     public void onHelp() {
         final PrintWriter pw = getOutPrintWriter();
         pw.printf("Location Time Zone Manager (%s) commands for tests:\n", SERVICE_NAME);
-        pw.println("  help");
-        pw.println("    Print this help text.");
+        pw.printf("  help\n");
+        pw.printf("    Print this help text.\n");
         pw.printf("  %s\n", SHELL_COMMAND_START);
-        pw.println("    Starts the location_time_zone_manager, creating time zone providers.");
+        pw.printf("    Starts the service, creating location time zone providers.\n");
         pw.printf("  %s\n", SHELL_COMMAND_STOP);
-        pw.println("    Stops the location_time_zone_manager, destroying time zone providers.");
+        pw.printf("    Stops the service, destroying location time zone providers.\n");
         pw.printf("  %s (true|false)\n", SHELL_COMMAND_RECORD_PROVIDER_STATES);
         pw.printf("    Enables / disables provider state recording mode. See also %s. The default"
                 + " state is always \"false\".\n", SHELL_COMMAND_DUMP_STATE);
-        pw.println("    Note: When enabled, this mode consumes memory and it is only intended for"
-                + " testing.");
-        pw.println("     It should be disabled after use, or the device can be rebooted to"
-                + " reset the mode to disabled.");
-        pw.println("     Disabling (or enabling repeatedly) clears any existing stored states.");
+        pw.printf("    Note: When enabled, this mode consumes memory and it is only intended for"
+                + " testing.\n");
+        pw.printf("    It should be disabled after use, or the device can be rebooted to"
+                + " reset the mode to disabled.\n");
+        pw.printf("    Disabling (or enabling repeatedly) clears any existing stored states.\n");
         pw.printf("  %s [%s]\n", SHELL_COMMAND_DUMP_STATE, DUMP_STATE_OPTION_PROTO);
-        pw.println("    Dumps Location Time Zone Manager state for tests as text or binary proto"
-                + " form.");
-        pw.println("    See the LocationTimeZoneManagerServiceStateProto definition for details.");
+        pw.printf("    Dumps service state for tests as text or binary proto form.\n");
+        pw.printf("    See the LocationTimeZoneManagerServiceStateProto definition for details.\n");
         pw.printf("  %s <provider index> <test command>\n",
                 SHELL_COMMAND_SEND_PROVIDER_TEST_COMMAND);
-        pw.println("    Passes a test command to the named provider.");
+        pw.printf("    Passes a test command to the named provider.\n");
         pw.println();
-        pw.println("<provider index> = 0 (primary), 1 (secondary)");
+        pw.printf("<provider index> = 0 (primary), 1 (secondary)\n");
         pw.println();
         pw.printf("%s details:\n", SHELL_COMMAND_SEND_PROVIDER_TEST_COMMAND);
         pw.println();
-        pw.println("Provider <test command> encoding:");
+        pw.printf("Provider <test command> encoding:\n");
         pw.println();
         TestCommand.printShellCommandEncodingHelp(pw);
         pw.println();
-        pw.println("Simulated provider mode can be used to test the system server behavior or to"
-                + " reproduce bugs without the complexity of using real providers.");
+        pw.printf("Simulated provider mode can be used to test the system server behavior or to"
+                + " reproduce bugs without the complexity of using real providers.\n");
         pw.println();
-        pw.println("The test commands for simulated providers are:");
+        pw.printf("The test commands for simulated providers are:\n");
         SimulatedLocationTimeZoneProviderProxy.printTestCommandShellHelp(pw);
         pw.println();
-        pw.println("Test commands cannot currently be passed to real provider implementations.");
+        pw.printf("Test commands cannot currently be passed to real provider implementations.\n");
         pw.println();
         pw.printf("This service is also affected by the following device_config flags in the"
                 + " %s namespace:\n", NAMESPACE_SYSTEM_TIME);
-        pw.printf("    %s - [default=true], only observed if the feature is enabled in config,"
-                        + "set this to false to disable the feature\n",
-                KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED);
-        pw.printf("    %s - [default=false]. Only used if the device does not have an explicit"
-                        + " 'location time zone detection enabled' setting configured [*].\n",
-                KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT);
-        pw.printf("    %s - [default=<unset>]. Used to override the device's 'location time zone"
-                        + " detection enabled' setting [*]\n",
-                KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE);
-        pw.printf("    %s - Overrides the mode of the primary provider. Values=%s|%s|%s\n",
-                KEY_PRIMARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE,
+        pw.printf("  %s\n", KEY_PRIMARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE);
+        pw.printf("    Overrides the mode of the primary provider. Values=%s|%s|%s\n",
                 PROVIDER_MODE_DISABLED, PROVIDER_MODE_ENABLED, PROVIDER_MODE_SIMULATED);
-        pw.printf("    %s - Overrides the mode of the secondary provider. Values=%s|%s|%s\n",
-                KEY_SECONDARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE,
+        pw.printf("  %s\n", KEY_SECONDARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE);
+        pw.printf("    Overrides the mode of the secondary provider. Values=%s|%s|%s\n",
                 PROVIDER_MODE_DISABLED, PROVIDER_MODE_ENABLED, PROVIDER_MODE_SIMULATED);
-        pw.printf("    %s - \n",
-                KEY_SECONDARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE);
-        pw.printf("    %s - Sets the amount of time the service waits when uncertain before making"
-                        + " an 'uncertain' suggestion to the time zone detector.\n",
-                KEY_LOCATION_TIME_ZONE_DETECTION_UNCERTAINTY_DELAY_MILLIS);
-        pw.printf("    %s - Sets the initialization time passed to the location time zone providers"
-                        + "\n",
-                KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_MILLIS);
-        pw.printf("    %s - Sets the amount of extra time added to the location time zone providers"
-                        + " initialization time\n",
-                KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_FUZZ_MILLIS);
-        pw.println();
-        pw.println("[*] The user must still have location = on / auto time zone detection = on");
+        pw.printf("  %s\n", KEY_LOCATION_TIME_ZONE_DETECTION_UNCERTAINTY_DELAY_MILLIS);
+        pw.printf("    Sets the amount of time the service waits when uncertain before making an"
+                + " 'uncertain' suggestion to the time zone detector.\n");
+        pw.printf("  %s\n", KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_MILLIS);
+        pw.printf("    Sets the initialization time passed to the providers.\n");
+        pw.printf("  %s\n", KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_FUZZ_MILLIS);
+        pw.printf("    Sets the amount of extra time added to the providers' initialization time."
+                + "\n");
         pw.println();
         pw.printf("Typically, use '%s' to stop the service before setting individual"
                 + " flags and '%s' after to restart it.\n",
                 SHELL_COMMAND_STOP, SHELL_COMMAND_START);
         pw.println();
-        pw.println("Example:");
-        pw.printf("    $ adb shell cmd device_config put %s %s %s\n",
-                NAMESPACE_SYSTEM_TIME, KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT,
-                "true");
-        pw.println("See adb shell cmd device_config for more information.");
+        pw.printf("See \"adb shell cmd device_config\" for more information on setting flags.\n");
+        pw.println();
+        pw.printf("Also see \"adb shell cmd %s help\" for higher-level location time zone"
+                + " commands / settings.\n", TimeZoneDetector.SHELL_COMMAND_SERVICE_NAME);
         pw.println();
     }
 
diff --git a/services/core/java/com/android/server/tv/TvInputManagerService.java b/services/core/java/com/android/server/tv/TvInputManagerService.java
index e728ab0..49170f3 100755
--- a/services/core/java/com/android/server/tv/TvInputManagerService.java
+++ b/services/core/java/com/android/server/tv/TvInputManagerService.java
@@ -24,7 +24,6 @@
 import android.annotation.Nullable;
 import android.annotation.UserIdInt;
 import android.app.ActivityManager;
-import android.app.ActivityManager.RunningAppProcessInfo;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.ContentResolver;
@@ -109,6 +108,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.UUID;
 import java.util.regex.Matcher;
@@ -511,11 +511,21 @@
                 sessionStatesToRelease.add(sessionState);
             }
         }
+        boolean notifyInfoUpdated = false;
         for (SessionState sessionState : sessionStatesToRelease) {
             try {
                 sessionState.session.release();
+                sessionState.currentChannel = null;
+                if (sessionState.isCurrent) {
+                    sessionState.isCurrent = false;
+                    notifyInfoUpdated = true;
+                }
             } catch (RemoteException e) {
                 Slog.e(TAG, "error in release", e);
+            } finally {
+                if (notifyInfoUpdated) {
+                    notifyCurrentChannelInfosUpdatedLocked(userState);
+                }
             }
             clearSessionAndNotifyClientLocked(sessionState);
         }
@@ -576,12 +586,22 @@
                 return;
             }
             // Release all created sessions.
+            boolean notifyInfoUpdated = false;
             for (SessionState state : userState.sessionStateMap.values()) {
                 if (state.session != null) {
                     try {
                         state.session.release();
+                        state.currentChannel = null;
+                        if (state.isCurrent) {
+                            state.isCurrent = false;
+                            notifyInfoUpdated = true;
+                        }
                     } catch (RemoteException e) {
                         Slog.e(TAG, "error in release", e);
+                    } finally {
+                        if (notifyInfoUpdated) {
+                            notifyCurrentChannelInfosUpdatedLocked(userState);
+                        }
                     }
                 }
             }
@@ -826,9 +846,11 @@
                 sessionState.session.asBinder().unlinkToDeath(sessionState, 0);
                 sessionState.session.release();
             }
-            sessionState.isCurrent = false;
             sessionState.currentChannel = null;
-            notifyCurrentChannelInfosUpdatedLocked(userState);
+            if (sessionState.isCurrent) {
+                sessionState.isCurrent = false;
+                notifyCurrentChannelInfosUpdatedLocked(userState);
+            }
         } catch (RemoteException | SessionNotFoundException e) {
             Slog.e(TAG, "error in releaseSession", e);
         } finally {
@@ -898,6 +920,11 @@
             }
             ITvInputSession session = getSessionLocked(sessionState);
             session.setMain(isMain);
+            if (sessionState.isMainSession != isMain) {
+                UserState userState = getUserStateLocked(userId);
+                sessionState.isMainSession = isMain;
+                notifyCurrentChannelInfosUpdatedLocked(userState);
+            }
         } catch (RemoteException | SessionNotFoundException e) {
             Slog.e(TAG, "error in setMain", e);
         }
@@ -987,6 +1014,10 @@
             try {
                 ITvInputManagerCallback callback = userState.mCallbacks.getBroadcastItem(i);
                 Pair<Integer, Integer> pidUid = userState.callbackPidUidMap.get(callback);
+                if (mContext.checkPermission(android.Manifest.permission.ACCESS_TUNED_INFO,
+                        pidUid.first, pidUid.second) != PackageManager.PERMISSION_GRANTED) {
+                    continue;
+                }
                 List<TunedInfo> infos = getCurrentTunedInfosInternalLocked(
                         userState, pidUid.first, pidUid.second);
                 callback.onCurrentTunedInfosUpdated(infos);
@@ -1517,6 +1548,11 @@
                             getSessionLocked(sessionState.hardwareSessionToken,
                                     Process.SYSTEM_UID, resolvedUserId).setSurface(surface);
                         }
+                        boolean isVisible = (surface == null);
+                        if (sessionState.isVisible != isVisible) {
+                            sessionState.isVisible = isVisible;
+                            notifyCurrentChannelInfosUpdatedLocked(userState);
+                        }
                     } catch (RemoteException | SessionNotFoundException e) {
                         Slog.e(TAG, "error in setSurface", e);
                     }
@@ -1609,9 +1645,12 @@
                         UserState userState = getOrCreateUserStateLocked(resolvedUserId);
                         SessionState sessionState = getSessionStateLocked(sessionToken, callingUid,
                                 userState);
-                        sessionState.isCurrent = true;
-                        sessionState.currentChannel = channelUri;
-                        notifyCurrentChannelInfosUpdatedLocked(userState);
+                        if (!sessionState.isCurrent
+                                || !Objects.equals(sessionState.currentChannel, channelUri)) {
+                            sessionState.isCurrent = true;
+                            sessionState.currentChannel = channelUri;
+                            notifyCurrentChannelInfosUpdatedLocked(userState);
+                        }
                         if (TvContract.isChannelUriForPassthroughInput(channelUri)) {
                             // Do not log the watch history for passthrough inputs.
                             return;
@@ -2309,6 +2348,11 @@
 
         @Override
         public List<TunedInfo> getCurrentTunedInfos(@UserIdInt int userId) {
+            if (mContext.checkCallingPermission(android.Manifest.permission.ACCESS_TUNED_INFO)
+                    != PackageManager.PERMISSION_GRANTED) {
+                throw new SecurityException(
+                        "The caller does not have access tuned info permission");
+            }
             int callingPid = Binder.getCallingPid();
             int callingUid = Binder.getCallingUid();
             final int resolvedUserId = resolveCallingUserId(callingPid, callingUid, userId,
@@ -2524,7 +2568,8 @@
                         state.inputId,
                         watchedProgramsAccess ? state.currentChannel : null,
                         state.isRecordingSession,
-                        isForeground(state.callingPid),
+                        state.isVisible,
+                        state.isMainSession,
                         appType,
                         appTag));
             }
@@ -2532,23 +2577,6 @@
         return channelInfos;
     }
 
-    private boolean isForeground(int pid) {
-        if (mActivityManager == null) {
-            return false;
-        }
-        List<RunningAppProcessInfo> appProcesses = mActivityManager.getRunningAppProcesses();
-        if (appProcesses == null) {
-            return false;
-        }
-        for (RunningAppProcessInfo appProcess : appProcesses) {
-            if (appProcess.pid == pid
-                    && appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
-                return true;
-            }
-        }
-        return false;
-    }
-
     private boolean hasAccessWatchedProgramsPermission(int callingPid, int callingUid) {
         return mContext.checkPermission(PERMISSION_ACCESS_WATCHED_PROGRAMS, callingPid, callingUid)
                 == PackageManager.PERMISSION_GRANTED;
@@ -2788,6 +2816,8 @@
 
         private boolean isCurrent = false;
         private Uri currentChannel = null;
+        private boolean isVisible = false;
+        private boolean isMainSession = false;
 
         private SessionState(IBinder sessionToken, String inputId, ComponentName componentName,
                 boolean isRecordingSession, ITvInputClient client, int seq, int callingUid,
@@ -3039,16 +3069,19 @@
                 if (mSessionState.session == null || mSessionState.client == null) {
                     return;
                 }
-                mSessionState.isCurrent = true;
-                mSessionState.currentChannel = channelUri;
-                UserState userState = getOrCreateUserStateLocked(mSessionState.userId);
-                notifyCurrentChannelInfosUpdatedLocked(userState);
                 try {
                     // TODO: Consider adding this channel change in the watch log. When we do
                     // that, how we can protect the watch log from malicious tv inputs should
                     // be addressed. e.g. add a field which represents where the channel change
                     // originated from.
                     mSessionState.client.onChannelRetuned(channelUri, mSessionState.seq);
+                    if (!mSessionState.isCurrent
+                            || !Objects.equals(mSessionState.currentChannel, channelUri)) {
+                        UserState userState = getOrCreateUserStateLocked(mSessionState.userId);
+                        mSessionState.isCurrent = true;
+                        mSessionState.currentChannel = channelUri;
+                        notifyCurrentChannelInfosUpdatedLocked(userState);
+                    }
                 } catch (RemoteException e) {
                     Slog.e(TAG, "error in onChannelRetuned", e);
                 }
diff --git a/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java b/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java
index 48ccad33..8818023 100644
--- a/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java
+++ b/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java
@@ -154,14 +154,14 @@
      * Builds the Route selection request
      *
      * <p>This request is guaranteed to select carrier-owned, non-VCN underlying networks by virtue
-     * of a populated set of subIds as expressed in NetworkCapabilities#getSubIds(). Only carrier
-     * owned networks may be selected, as the request specifies only subIds in the VCN's
+     * of a populated set of subIds as expressed in NetworkCapabilities#getSubscriptionIds(). Only
+     * carrier owned networks may be selected, as the request specifies only subIds in the VCN's
      * subscription group, while the VCN networks are excluded by virtue of not having subIds set on
      * the VCN-exposed networks.
      */
     private NetworkRequest getRouteSelectionRequest() {
         return getBaseNetworkRequestBuilder()
-                .setSubIds(mLastSnapshot.getAllSubIdsInGroup(mSubscriptionGroup))
+                .setSubscriptionIds(mLastSnapshot.getAllSubIdsInGroup(mSubscriptionGroup))
                 .build();
     }
 
@@ -177,7 +177,7 @@
     private NetworkRequest getWifiNetworkRequest() {
         return getBaseNetworkRequestBuilder()
                 .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
-                .setSubIds(mLastSnapshot.getAllSubIdsInGroup(mSubscriptionGroup))
+                .setSubscriptionIds(mLastSnapshot.getAllSubIdsInGroup(mSubscriptionGroup))
                 .build();
     }
 
diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
index 23fb95b..38f5dd6 100644
--- a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
+++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
@@ -2127,7 +2127,7 @@
                 (VcnControlPlaneIkeConfig) mConnectionConfig.getControlPlaneConfig();
         final IkeSessionParams.Builder builder =
                 new IkeSessionParams.Builder(controlPlaneConfig.getIkeSessionParams());
-        builder.setConfiguredNetwork(network);
+        builder.setNetwork(network);
 
         return builder.build();
     }
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index 89b7bbd..9acbdcc 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -2378,6 +2378,46 @@
         }
     }
 
+    /**
+     * Propagate a wake event to the wallpaper engine.
+     */
+    public void notifyWakingUp(int x, int y, @NonNull Bundle extras) {
+        synchronized (mLock) {
+            final WallpaperData data = mWallpaperMap.get(mCurrentUserId);
+            data.connection.forEachDisplayConnector(
+                    displayConnector -> {
+                        if (displayConnector.mEngine != null) {
+                            try {
+                                displayConnector.mEngine.dispatchWallpaperCommand(
+                                        WallpaperManager.COMMAND_WAKING_UP, x, y, -1, extras);
+                            } catch (RemoteException e) {
+                                e.printStackTrace();
+                            }
+                        }
+                    });
+        }
+    }
+
+    /**
+     * Propagate a sleep event to the wallpaper engine.
+     */
+    public void notifyGoingToSleep(int x, int y, @NonNull Bundle extras) {
+        synchronized (mLock) {
+            final WallpaperData data = mWallpaperMap.get(mCurrentUserId);
+            data.connection.forEachDisplayConnector(
+                    displayConnector -> {
+                        if (displayConnector.mEngine != null) {
+                            try {
+                                displayConnector.mEngine.dispatchWallpaperCommand(
+                                        WallpaperManager.COMMAND_GOING_TO_SLEEP, x, y, -1, extras);
+                            } catch (RemoteException e) {
+                                e.printStackTrace();
+                            }
+                        }
+                    });
+        }
+    }
+
     @Override
     public boolean setLockWallpaperCallback(IWallpaperManagerCallback cb) {
         checkPermission(android.Manifest.permission.INTERNAL_SYSTEM_WINDOW);
diff --git a/services/core/java/com/android/server/wm/ActivityClientController.java b/services/core/java/com/android/server/wm/ActivityClientController.java
index c5115b2..efee0a1 100644
--- a/services/core/java/com/android/server/wm/ActivityClientController.java
+++ b/services/core/java/com/android/server/wm/ActivityClientController.java
@@ -45,8 +45,10 @@
 import android.app.IActivityClientController;
 import android.app.IRequestFinishCallback;
 import android.app.PictureInPictureParams;
+import android.app.PictureInPictureUiState;
 import android.app.servertransaction.ClientTransaction;
 import android.app.servertransaction.EnterPipRequestedItem;
+import android.app.servertransaction.PipStateTransactionItem;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -779,6 +781,26 @@
         }
     }
 
+    /**
+     * Alert the client that the Picture-in-Picture state has changed.
+     */
+    void onPictureInPictureStateChanged(@NonNull ActivityRecord r,
+            PictureInPictureUiState pipState) {
+        if (!r.inPinnedWindowingMode()) {
+            throw new IllegalStateException("Activity is not in PIP mode");
+        }
+
+        try {
+            final ClientTransaction transaction = ClientTransaction.obtain(
+                    r.app.getThread(), r.token);
+            transaction.addCallback(PipStateTransactionItem.obtain(pipState));
+            mService.getLifecycleManager().scheduleTransaction(transaction);
+        } catch (Exception e) {
+            Slog.w(TAG, "Failed to send pip state transaction item: "
+                    + r.intent.getComponent(), e);
+        }
+    }
+
     @Override
     public void toggleFreeformWindowingMode(IBinder token) {
         final long ident = Binder.clearCallingIdentity();
diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
index e4dc8c2..561f1ad 100644
--- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
+++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
@@ -96,6 +96,8 @@
 import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.function.pooled.PooledLambda;
 import com.android.server.LocalServices;
+import com.android.server.apphibernation.AppHibernationManagerInternal;
+import com.android.server.apphibernation.AppHibernationService;
 
 import java.util.ArrayList;
 import java.util.LinkedList;
@@ -163,6 +165,8 @@
      */
     private final LaunchObserverRegistryImpl mLaunchObserver;
     @VisibleForTesting static final int LAUNCH_OBSERVER_ACTIVITY_RECORD_PROTO_CHUNK_SIZE = 512;
+    private final ArrayMap<String, Boolean> mLastHibernationStates = new ArrayMap<>();
+    private AppHibernationManagerInternal mAppHibernationManagerInternal;
 
     /**
      * The information created when an intent is incoming but we do not yet know whether it will be
@@ -789,6 +793,27 @@
         }
     }
 
+    @Nullable
+    private AppHibernationManagerInternal getAppHibernationManagerInternal() {
+        if (!AppHibernationService.isAppHibernationEnabled()) return null;
+        if (mAppHibernationManagerInternal == null) {
+            mAppHibernationManagerInternal =
+                    LocalServices.getService(AppHibernationManagerInternal.class);
+        }
+        return mAppHibernationManagerInternal;
+    }
+
+    /**
+     * Notifies the tracker before the package is unstopped because of launching activity.
+     * @param packageName The package to be unstopped.
+     */
+    void notifyBeforePackageUnstopped(@NonNull String packageName) {
+        final AppHibernationManagerInternal ahmInternal = getAppHibernationManagerInternal();
+        if (ahmInternal != null) {
+            mLastHibernationStates.put(packageName, ahmInternal.isHibernatingGlobally(packageName));
+        }
+    }
+
     /**
      * Notifies the tracker that we called immediately before we call bindApplication on the client.
      *
@@ -823,6 +848,8 @@
         }
 
         stopLaunchTrace(info);
+        final Boolean isHibernating =
+                mLastHibernationStates.remove(info.mLastLaunchedActivity.packageName);
         if (abort) {
             mSupervisor.stopWaitingForActivityVisible(info.mLastLaunchedActivity);
             launchObserverNotifyActivityLaunchCancelled(info);
@@ -830,7 +857,7 @@
             if (info.isInterestingToLoggerAndObserver()) {
                 launchObserverNotifyActivityLaunchFinished(info, timestampNs);
             }
-            logAppTransitionFinished(info);
+            logAppTransitionFinished(info, isHibernating != null ? isHibernating : false);
         }
         info.mPendingDrawActivities.clear();
         mTransitionInfoList.remove(info);
@@ -859,7 +886,7 @@
         }
     }
 
-    private void logAppTransitionFinished(@NonNull TransitionInfo info) {
+    private void logAppTransitionFinished(@NonNull TransitionInfo info, boolean isHibernating) {
         if (DEBUG_METRICS) Slog.i(TAG, "logging finished transition " + info);
 
         // Take a snapshot of the transition info before sending it to the handler for logging.
@@ -868,7 +895,7 @@
         if (info.isInterestingToLoggerAndObserver()) {
             BackgroundThread.getHandler().post(() -> logAppTransition(
                     info.mCurrentTransitionDeviceUptime, info.mCurrentTransitionDelayMs,
-                    infoSnapshot));
+                    infoSnapshot, isHibernating));
         }
         BackgroundThread.getHandler().post(() -> logAppDisplayed(infoSnapshot));
         if (info.mPendingFullyDrawn != null) {
@@ -880,7 +907,7 @@
 
     // This gets called on a background thread without holding the activity manager lock.
     private void logAppTransition(int currentTransitionDeviceUptime, int currentTransitionDelayMs,
-            TransitionInfoSnapshot info) {
+            TransitionInfoSnapshot info, boolean isHibernating) {
         final LogMaker builder = new LogMaker(APP_TRANSITION);
         builder.setPackageName(info.packageName);
         builder.setType(info.type);
@@ -933,7 +960,8 @@
                 packageOptimizationInfo.getCompilationReason(),
                 packageOptimizationInfo.getCompilationFilter(),
                 info.sourceType,
-                info.sourceEventDelayMs);
+                info.sourceEventDelayMs,
+                isHibernating);
 
         if (DEBUG_METRICS) {
             Slog.i(TAG, String.format("APP_START_OCCURRED(%s, %s, %s, %s, %s)",
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index f5cfc9d..131ba12 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -189,6 +189,7 @@
 import static com.android.server.wm.IdentifierProto.HASH_CODE;
 import static com.android.server.wm.IdentifierProto.TITLE;
 import static com.android.server.wm.IdentifierProto.USER_ID;
+import static com.android.server.wm.LetterboxConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO;
 import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
 import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
 import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_WINDOW_ANIMATION;
@@ -215,14 +216,8 @@
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT_REPEATS;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_STARTING_WINDOW_VERBOSE;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
-import static com.android.server.wm.WindowManagerService.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
-import static com.android.server.wm.WindowManagerService.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
-import static com.android.server.wm.WindowManagerService.LETTERBOX_BACKGROUND_SOLID_COLOR;
-import static com.android.server.wm.WindowManagerService.LETTERBOX_BACKGROUND_WALLPAPER;
-import static com.android.server.wm.WindowManagerService.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO;
 import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_NORMAL;
 import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_WILL_PLACE_SURFACES;
-import static com.android.server.wm.WindowManagerService.letterboxBackgroundTypeToString;
 import static com.android.server.wm.WindowState.LEGACY_POLICY_VISIBILITY;
 import static com.android.server.wm.WindowStateAnimator.HAS_DRAWN;
 import static com.android.server.wm.WindowStateAnimator.ROOT_TASK_CLIP_BEFORE_ANIM;
@@ -268,7 +263,6 @@
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
-import android.graphics.Color;
 import android.graphics.PixelFormat;
 import android.graphics.Point;
 import android.graphics.Rect;
@@ -344,7 +338,6 @@
 import com.android.server.wm.SurfaceAnimator.AnimationType;
 import com.android.server.wm.Task.ActivityState;
 import com.android.server.wm.WindowManagerService.H;
-import com.android.server.wm.WindowManagerService.LetterboxBackgroundType;
 import com.android.server.wm.utils.InsetUtils;
 
 import com.google.android.collect.Sets;
@@ -587,7 +580,10 @@
 
     AnimatingActivityRegistry mAnimatingActivityRegistry;
 
-    private Task mLastParent;
+    // Set to the previous Task parent of the ActivityRecord when it is reparented to a new Task
+    // due to picture-in-picture. This gets cleared whenever this activity or the Task
+    // it references to gets removed. This should also be cleared when we move out of pip.
+    private Task mLastParentBeforePip;
 
     boolean firstWindowDrawn;
     /** Whether the visible window(s) of this activity is drawn. */
@@ -642,7 +638,8 @@
      */
     private boolean mWillCloseOrEnterPip;
 
-    private Letterbox mLetterbox;
+    @VisibleForTesting
+    final LetterboxUiController mLetterboxUiController;
 
     /**
      * The scale to fit at least one side of the activity to its parent. If the activity uses
@@ -671,8 +668,6 @@
     @Nullable
     private Rect mLetterboxBoundsForFixedOrientationAndAspectRatio;
 
-    private boolean mShowWallpaperForLetterboxBackground;
-
     // activity is not displayed?
     // TODO: rename to mNoDisplay
     @VisibleForTesting
@@ -1095,61 +1090,14 @@
             if (info.configChanges != 0) {
                 pw.println(prefix + "configChanges=0x" + Integer.toHexString(info.configChanges));
             }
+            pw.println(prefix + "neverSandboxDisplayApis=" + info.neverSandboxDisplayApis());
+            pw.println(prefix + "alwaysSandboxDisplayApis=" + info.alwaysSandboxDisplayApis());
+        }
+        if (mLastParentBeforePip != null) {
+            pw.println(prefix + "lastParentTaskIdBeforePip=" + mLastParentBeforePip.mTaskId);
         }
 
-        dumpLetterboxInfo(pw, prefix);
-    }
-
-    private void dumpLetterboxInfo(PrintWriter pw, String prefix) {
-        final WindowState mainWin = findMainWindow();
-        if (mainWin == null) {
-            return;
-        }
-
-        boolean areBoundsLetterboxed = mainWin.isLetterboxedAppWindow();
-        pw.println(prefix + "areBoundsLetterboxed=" + areBoundsLetterboxed);
-        if (!areBoundsLetterboxed) {
-            return;
-        }
-
-        pw.println(prefix + "  letterboxReason=" + getLetterboxReasonString(mainWin));
-        pw.println(prefix + "  letterboxAspectRatio=" + computeAspectRatio(getBounds()));
-
-        boolean isLetterboxUiShown = isLetterboxed(mainWin);
-        pw.println(prefix + "isLetterboxUiShown=" + isLetterboxUiShown);
-
-        if (!isLetterboxUiShown) {
-            return;
-        }
-        pw.println(prefix + "  letterboxBackgroundColor=" + Integer.toHexString(
-                getLetterboxBackgroundColor().toArgb()));
-        pw.println(prefix + "  letterboxBackgroundType="
-                + letterboxBackgroundTypeToString(mWmService.getLetterboxBackgroundType()));
-        if (mWmService.getLetterboxBackgroundType() == LETTERBOX_BACKGROUND_WALLPAPER) {
-            pw.println(prefix + "  isLetterboxWallpaperBlurSupported="
-                    + isLetterboxWallpaperBlurSupported());
-            pw.println(prefix + "  letterboxBackgroundWallpaperDarkScrimAlpha="
-                    + getLetterboxWallpaperDarkScrimAlpha());
-            pw.println(prefix + "  letterboxBackgroundWallpaperBlurRadius="
-                    + getLetterboxWallpaperBlurRadius());
-        }
-    }
-
-    /**
-     * Returns a string representing the reason for letterboxing. This method assumes the activity
-     * is letterboxed.
-     */
-    private String getLetterboxReasonString(WindowState mainWin) {
-        if (inSizeCompatMode()) {
-            return "SIZE_COMPAT_MODE";
-        }
-        if (isLetterboxedForFixedOrientationAndAspectRatio()) {
-            return "FIXED_ORIENTATION";
-        }
-        if (mainWin.isLetterboxedForDisplayCutout()) {
-            return "DISPLAY_CUTOUT";
-        }
-        return "UNKNOWN_REASON";
+        mLetterboxUiController.dump(pw, prefix);
     }
 
     void setAppTimeTracker(AppTimeTracker att) {
@@ -1349,7 +1297,7 @@
             if (getDisplayContent() != null) {
                 getDisplayContent().mClosingApps.remove(this);
             }
-        } else if (mLastParent != null && mLastParent.getRootTask() != null) {
+        } else if (oldTask != null && oldTask.getRootTask() != null) {
             task.getRootTask().mExitingActivities.remove(this);
         }
         final Task rootTask = getRootTask();
@@ -1362,7 +1310,10 @@
                 ? rootTask.getAnimatingActivityRegistry()
                 : null;
 
-        mLastParent = task;
+        if (task == mLastParentBeforePip) {
+            // Activity's reparented back from pip, clear the links once established
+            clearLastParentBeforePip();
+        }
 
         updateColorTransform();
 
@@ -1381,6 +1332,26 @@
         }
     }
 
+    /**
+     * Sets {@link #mLastParentBeforePip} to the current parent Task, it's caller's job to ensure
+     * {@link #getTask()} is set before this is called.
+     */
+    void setLastParentBeforePip() {
+        mLastParentBeforePip = getTask();
+        mLastParentBeforePip.mChildPipActivity = this;
+    }
+
+    private void clearLastParentBeforePip() {
+        if (mLastParentBeforePip != null) {
+            mLastParentBeforePip.mChildPipActivity = null;
+            mLastParentBeforePip = null;
+        }
+    }
+
+    @Nullable Task getLastParentBeforePip() {
+        return mLastParentBeforePip;
+    }
+
     private void updateColorTransform() {
         if (mSurfaceControl != null && mLastAppSaturationInfo != null) {
             getPendingTransaction().setColorTransform(mSurfaceControl,
@@ -1415,183 +1386,29 @@
             }
         }
 
-        if (mLetterbox != null) {
-            mLetterbox.onMovedToDisplay(mDisplayContent.getDisplayId());
-        }
+        mLetterboxUiController.onMovedToDisplay(mDisplayContent.getDisplayId());
     }
 
-    // TODO(b/183754168): Move letterbox UI logic into a separate class.
     void layoutLetterbox(WindowState winHint) {
-        final WindowState w = findMainWindow();
-        if (w == null || winHint != null && w != winHint) {
-            return;
-        }
-        final boolean surfaceReady = w.isDrawn()  // Regular case
-                || w.isDragResizeChanged();  // Waiting for relayoutWindow to call preserveSurface.
-        final boolean needsLetterbox = surfaceReady && isLetterboxed(w);
-        updateRoundedCorners(w);
-        updateWallpaperForLetterbox(w);
-        if (needsLetterbox) {
-            if (mLetterbox == null) {
-                mLetterbox = new Letterbox(() -> makeChildSurface(null),
-                        mWmService.mTransactionFactory,
-                        mWmService::isLetterboxActivityCornersRounded,
-                        this::getLetterboxBackgroundColor,
-                        this::hasWallpaperBackgroudForLetterbox,
-                        this::getLetterboxWallpaperBlurRadius,
-                        this::getLetterboxWallpaperDarkScrimAlpha);
-                mLetterbox.attachInput(w);
-            }
-            getPosition(mTmpPoint);
-            // Get the bounds of the "space-to-fill". The transformed bounds have the highest
-            // priority because the activity is launched in a rotated environment. In multi-window
-            // mode, the task-level represents this. In fullscreen-mode, the task container does
-            // (since the orientation letterbox is also applied to the task).
-            final Rect transformedBounds = getFixedRotationTransformDisplayBounds();
-            final Rect spaceToFill = transformedBounds != null
-                    ? transformedBounds
-                    : inMultiWindowMode()
-                            ? getRootTask().getBounds()
-                            : getRootTask().getParent().getBounds();
-            mLetterbox.layout(spaceToFill, w.getFrame(), mTmpPoint);
-        } else if (mLetterbox != null) {
-            mLetterbox.hide();
-        }
-    }
-
-    private Color getLetterboxBackgroundColor() {
-        final WindowState w = findMainWindow();
-        if (w == null || w.isLetterboxedForDisplayCutout()) {
-            return Color.valueOf(Color.BLACK);
-        }
-        @LetterboxBackgroundType int letterboxBackgroundType =
-                mWmService.getLetterboxBackgroundType();
-        switch (letterboxBackgroundType) {
-            case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING:
-                if (taskDescription != null && taskDescription.getBackgroundColorFloating() != 0) {
-                    return Color.valueOf(taskDescription.getBackgroundColorFloating());
-                }
-                break;
-            case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND:
-                if (taskDescription != null && taskDescription.getBackgroundColor() != 0) {
-                    return Color.valueOf(taskDescription.getBackgroundColor());
-                }
-                break;
-            case LETTERBOX_BACKGROUND_WALLPAPER:
-                if (hasWallpaperBackgroudForLetterbox()) {
-                    // Color is used for translucent scrim that dims wallpaper.
-                    return Color.valueOf(Color.BLACK);
-                }
-                Slog.w(TAG, "Wallpaper option is selected for letterbox background but "
-                        + "blur is not supported by a device or not supported in the current "
-                        + "window configuration or both alpha scrim and blur radius aren't "
-                        + "provided so using solid color background");
-                break;
-            case LETTERBOX_BACKGROUND_SOLID_COLOR:
-                return mWmService.getLetterboxBackgroundColor();
-            default:
-                throw new AssertionError(
-                    "Unexpected letterbox background type: " + letterboxBackgroundType);
-        }
-        // If picked option configured incorrectly or not supported then default to a solid color
-        // background.
-        return mWmService.getLetterboxBackgroundColor();
-    }
-
-    /**
-     * @return {@code true} when the main window is letterboxed, this activity isn't transparent
-     * and doesn't show a wallpaper.
-     */
-    @VisibleForTesting
-    boolean isLetterboxed(WindowState mainWindow) {
-        return mainWindow.isLetterboxedAppWindow() && fillsParent()
-                // Check for FLAG_SHOW_WALLPAPER explicitly instead of using
-                // WindowContainer#showWallpaper because the later will return true when this
-                // activity is using blurred wallpaper for letterbox backgroud.
-                && (mainWindow.mAttrs.flags & FLAG_SHOW_WALLPAPER) == 0;
-    }
-
-    private void updateRoundedCorners(WindowState mainWindow) {
-        int cornersRadius =
-                // Don't round corners if letterboxed only for display cutout.
-                isLetterboxed(mainWindow) && !mainWindow.isLetterboxedForDisplayCutout()
-                        ? Math.max(0, mWmService.getLetterboxActivityCornersRadius()) : 0;
-        setCornersRadius(mainWindow, cornersRadius);
-    }
-
-    private void setCornersRadius(WindowState mainWindow, int cornersRadius) {
-        final SurfaceControl windowSurface = mainWindow.getClientViewRootSurface();
-        if (windowSurface != null && windowSurface.isValid()) {
-            Transaction transaction = getSyncTransaction();
-            transaction.setCornerRadius(windowSurface, cornersRadius);
-        }
+        mLetterboxUiController.layoutLetterbox(winHint);
     }
 
     boolean hasWallpaperBackgroudForLetterbox() {
-        return mShowWallpaperForLetterboxBackground;
-    }
-
-    private void updateWallpaperForLetterbox(WindowState mainWindow) {
-        @LetterboxBackgroundType int letterboxBackgroundType =
-                mWmService.getLetterboxBackgroundType();
-        boolean wallpaperShouldBeShown =
-                letterboxBackgroundType == LETTERBOX_BACKGROUND_WALLPAPER
-                        && isLetterboxed(mainWindow)
-                        // Don't use wallpaper as a background if letterboxed for display cutout.
-                        && !mainWindow.isLetterboxedForDisplayCutout()
-                        // Check that dark scrim alpha or blur radius are provided
-                        && (getLetterboxWallpaperBlurRadius() > 0
-                                || getLetterboxWallpaperDarkScrimAlpha() > 0)
-                        // Check that blur is supported by a device if blur radius is provided.
-                        && (getLetterboxWallpaperBlurRadius() <= 0
-                                || isLetterboxWallpaperBlurSupported());
-        if (mShowWallpaperForLetterboxBackground != wallpaperShouldBeShown) {
-            mShowWallpaperForLetterboxBackground = wallpaperShouldBeShown;
-            requestUpdateWallpaperIfNeeded();
-        }
-    }
-
-    private int getLetterboxWallpaperBlurRadius() {
-        int blurRadius = mWmService.getLetterboxBackgroundWallpaperBlurRadius();
-        return blurRadius < 0 ? 0 : blurRadius;
-    }
-
-    private float getLetterboxWallpaperDarkScrimAlpha() {
-        float alpha = mWmService.getLetterboxBackgroundWallpaperDarkScrimAlpha();
-        // No scrim by default.
-        return (alpha < 0 || alpha >= 1) ? 0.0f : alpha;
-    }
-
-    private boolean isLetterboxWallpaperBlurSupported() {
-        return mWmService.mContext.getSystemService(WindowManager.class).isCrossWindowBlurEnabled();
+        return mLetterboxUiController.hasWallpaperBackgroudForLetterbox();
     }
 
     void updateLetterboxSurface(WindowState winHint) {
-        final WindowState w = findMainWindow();
-        if (w != winHint && winHint != null && w != null) {
-            return;
-        }
-        layoutLetterbox(winHint);
-        if (mLetterbox != null && mLetterbox.needsApplySurfaceChanges()) {
-            mLetterbox.applySurfaceChanges(getSyncTransaction());
-        }
+        mLetterboxUiController.updateLetterboxSurface(winHint);
     }
 
+    /** Gets the letterbox insets. The insets will be empty if there is no letterbox. */
     Rect getLetterboxInsets() {
-        if (mLetterbox != null) {
-            return mLetterbox.getInsets();
-        } else {
-            return new Rect();
-        }
+        return mLetterboxUiController.getLetterboxInsets();
     }
 
     /** Gets the inner bounds of letterbox. The bounds will be empty if there is no letterbox. */
     void getLetterboxInnerBounds(Rect outBounds) {
-        if (mLetterbox != null) {
-            outBounds.set(mLetterbox.getInnerFrame());
-        } else {
-            outBounds.setEmpty();
-        }
+        mLetterboxUiController.getLetterboxInnerBounds(outBounds);
     }
 
     /**
@@ -1599,7 +1416,7 @@
      *     when the current activity is displayed.
      */
     boolean isFullyTransparentBarAllowed(Rect rect) {
-        return mLetterbox == null || mLetterbox.notIntersectsOrFullyContains(rect);
+        return mLetterboxUiController.isFullyTransparentBarAllowed(rect);
     }
 
     /**
@@ -1607,7 +1424,7 @@
      * the given {@code rect}.
      */
     boolean isLetterboxOverlappingWith(Rect rect) {
-        return mLetterbox != null && mLetterbox.isOverlappingWith(rect);
+        return mLetterboxUiController.isLetterboxOverlappingWith(rect);
     }
 
     static class Token extends IApplicationToken.Stub {
@@ -1856,6 +1673,9 @@
 
         mPersistentState = persistentState;
         taskDescription = _taskDescription;
+
+        mLetterboxUiController = new LetterboxUiController(mWmService, this);
+
         if (_createTime > 0) {
             createTime = _createTime;
         }
@@ -2108,12 +1928,16 @@
     }
 
     void scheduleAddStartingWindow() {
-        // Note: we really want to do sendMessageAtFrontOfQueue() because we
-        // want to process the message ASAP, before any other queued
-        // messages.
-        if (!mWmService.mAnimationHandler.hasCallbacks(mAddStartingWindow)) {
-            ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Enqueueing ADD_STARTING");
-            mWmService.mAnimationHandler.postAtFrontOfQueue(mAddStartingWindow);
+        if (StartingSurfaceController.DEBUG_ENABLE_SHELL_DRAWER) {
+            mAddStartingWindow.run();
+        } else {
+            // Note: we really want to do sendMessageAtFrontOfQueue() because we
+            // want to process the message ASAP, before any other queued
+            // messages.
+            if (!mWmService.mAnimationHandler.hasCallbacks(mAddStartingWindow)) {
+                ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Enqueueing ADD_STARTING");
+                mWmService.mAnimationHandler.postAtFrontOfQueue(mAddStartingWindow);
+            }
         }
     }
 
@@ -2125,7 +1949,9 @@
             final StartingData startingData;
             synchronized (mWmService.mGlobalLock) {
                 // There can only be one adding request, silly caller!
-                mWmService.mAnimationHandler.removeCallbacks(this);
+                if (!StartingSurfaceController.DEBUG_ENABLE_SHELL_DRAWER) {
+                    mWmService.mAnimationHandler.removeCallbacks(this);
+                }
 
                 if (mStartingData == null) {
                     // Animation has been canceled... do nothing.
@@ -2140,7 +1966,6 @@
             ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Add starting %s: startingData=%s",
                     this, startingData);
 
-
             WindowManagerPolicy.StartingSurface surface = null;
             try {
                 surface = startingData.createStartingSurface(ActivityRecord.this);
@@ -2375,17 +2200,22 @@
                 + " startingView=%s Callers=%s", this, mStartingWindow, mStartingSurface,
                 Debug.getCallers(5));
 
-
-        // Use the same thread to remove the window as we used to add it, as otherwise we end up
-        // with things in the view hierarchy being called from different threads.
-        mWmService.mAnimationHandler.post(() -> {
+        final Runnable removeSurface = () -> {
             ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Removing startingView=%s", surface);
             try {
                 surface.remove(prepareAnimation);
             } catch (Exception e) {
                 Slog.w(TAG_WM, "Exception when removing starting window", e);
             }
-        });
+        };
+
+        if (StartingSurfaceController.DEBUG_ENABLE_SHELL_DRAWER) {
+            removeSurface.run();
+        } else {
+            // Use the same thread to remove the window as we used to add it, as otherwise we end up
+            // with things in the view hierarchy being called from different threads.
+            mWmService.mAnimationHandler.post(removeSurface);
+        }
     }
 
     private void removeAppTokenFromDisplay() {
@@ -3434,6 +3264,7 @@
      */
     void cleanUp(boolean cleanServices, boolean setState) {
         task.cleanUpActivityReferences(this);
+        clearLastParentBeforePip();
 
         deferRelaunchUntilPaused = false;
         frozenBeforeDestroy = false;
@@ -3687,10 +3518,8 @@
             dc.setFocusedApp(null);
             mWmService.updateFocusedWindowLocked(UPDATE_FOCUS_NORMAL, true /*updateInputWindows*/);
         }
-        if (mLetterbox != null) {
-            mLetterbox.destroy();
-            mLetterbox = null;
-        }
+
+        mLetterboxUiController.destroy();
 
         if (!delayed) {
             updateReportedVisibilityLocked();
@@ -7028,11 +6857,13 @@
         // and back which can cause visible issues (see b/184078928).
         final int parentWindowingMode =
                 newParentConfiguration.windowConfiguration.getWindowingMode();
+        final boolean isFixedOrientationLetterboxAllowed =
+                isSplitScreenWindowingMode(parentWindowingMode)
+                        || parentWindowingMode == WINDOWING_MODE_MULTI_WINDOW
+                        || parentWindowingMode == WINDOWING_MODE_FULLSCREEN;
         // TODO(b/181207944): Consider removing the if condition and always run
         // resolveFixedOrientationConfiguration() since this should be applied for all cases.
-        if (isSplitScreenWindowingMode(parentWindowingMode)
-                || parentWindowingMode == WINDOWING_MODE_MULTI_WINDOW
-                || parentWindowingMode == WINDOWING_MODE_FULLSCREEN) {
+        if (isFixedOrientationLetterboxAllowed) {
             resolveFixedOrientationConfiguration(newParentConfiguration);
         }
 
@@ -7053,12 +6884,16 @@
             resolveFullscreenConfiguration(newParentConfiguration);
         }
 
+        if (isFixedOrientationLetterboxAllowed || mCompatDisplayInsets != null
+                // In fullscreen, can be letterboxed for aspect ratio.
+                || !inMultiWindowMode()) {
+            updateResolvedBoundsHorizontalPosition(newParentConfiguration);
+        }
+
         if (mVisibleRequested) {
             updateCompatDisplayInsets();
         }
 
-        // TODO(b/175212232): Consolidate position logic from each "resolve" method above here.
-
         // Assign configuration sequence number into hierarchy because there is a different way than
         // ensureActivityConfiguration() in this class that uses configuration in WindowState during
         // layout traversals.
@@ -7066,7 +6901,8 @@
         getResolvedOverrideConfiguration().seq = mConfigurationSeq;
 
         // Sandbox max bounds by setting it to the activity bounds, if activity is letterboxed, or
-        // has or will have mCompatDisplayInsets for size compat.
+        // has or will have mCompatDisplayInsets for size compat. Also forces an activity to be
+        // sandboxed or not depending upon the configuration settings.
         if (providesMaxBounds()) {
             mTmpBounds.set(resolvedConfig.windowConfiguration.getBounds());
             if (mTmpBounds.isEmpty()) {
@@ -7076,11 +6912,15 @@
             }
             if (DEBUG_CONFIGURATION) {
                 ProtoLog.d(WM_DEBUG_CONFIGURATION, "Sandbox max bounds for uid %s to bounds %s. "
+                                + "config to never sandbox = %s, "
+                                + "config to always sandbox = %s, "
                                 + "letterboxing from mismatch with parent bounds = %s, "
                                 + "has mCompatDisplayInsets = %s, "
                                 + "should create compatDisplayInsets = %s",
                         getUid(),
                         mTmpBounds,
+                        info.neverSandboxDisplayApis(),
+                        info.alwaysSandboxDisplayApis(),
                         !matchParentBounds(),
                         mCompatDisplayInsets != null,
                         shouldCreateCompatDisplayInsets());
@@ -7089,6 +6929,48 @@
         }
     }
 
+
+    /**
+     * Adjusts horizontal position of resolved bounds if they doesn't fill the parent using gravity
+     * requested in the config or via an ADB command. For more context see {@link
+     * WindowManagerService#getLetterboxHorizontalPositionMultiplier}.
+     */
+    private void updateResolvedBoundsHorizontalPosition(Configuration newParentConfiguration) {
+        final Configuration resolvedConfig = getResolvedOverrideConfiguration();
+        final Rect resolvedBounds = resolvedConfig.windowConfiguration.getBounds();
+        final Rect screenResolvedBounds =
+                mSizeCompatBounds != null ? mSizeCompatBounds : resolvedBounds;
+        final Rect parentAppBounds = newParentConfiguration.windowConfiguration.getAppBounds();
+        final Rect parentBounds = newParentConfiguration.windowConfiguration.getBounds();
+        if (resolvedBounds.isEmpty() || parentBounds.width() == screenResolvedBounds.width()) {
+            return;
+        }
+
+        int offsetX = 0;
+        if (screenResolvedBounds.width() >= parentAppBounds.width()) {
+            // If resolved bounds overlap with insets, center within app bounds.
+            offsetX = getHorizontalCenterOffset(
+                    parentAppBounds.width(), screenResolvedBounds.width());
+        } else {
+            float positionMultiplier =
+                    mWmService.mLetterboxConfiguration.getLetterboxHorizontalPositionMultiplier();
+            positionMultiplier =
+                    (positionMultiplier < 0.0f || positionMultiplier > 1.0f)
+                            // Default to central position if invalid value is provided.
+                            ? 0.5f : positionMultiplier;
+            offsetX = (int) Math.ceil((parentAppBounds.width() - screenResolvedBounds.width())
+                    * positionMultiplier);
+        }
+
+        if (mSizeCompatBounds != null) {
+            mSizeCompatBounds.offset(offsetX, 0 /* offsetY */);
+            final int dx = mSizeCompatBounds.left - resolvedBounds.left;
+            offsetBounds(resolvedConfig, dx,  0 /* offsetY */);
+        } else {
+            offsetBounds(resolvedConfig, offsetX, 0 /* offsetY */);
+        }
+    }
+
     /**
      * Whether this activity is letterboxed for fixed orientation. If letterboxed due to fixed
      * orientation then aspect ratio restrictions are also already respected.
@@ -7144,7 +7026,7 @@
         // Override from config_fixedOrientationLetterboxAspectRatio or via ADB with
         // set-fixed-orientation-letterbox-aspect-ratio.
         final float letterboxAspectRatioOverride =
-                mWmService.getFixedOrientationLetterboxAspectRatio();
+                mWmService.mLetterboxConfiguration.getFixedOrientationLetterboxAspectRatio();
         aspect = letterboxAspectRatioOverride > MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO
                 ? letterboxAspectRatioOverride : aspect;
 
@@ -7166,7 +7048,10 @@
             resolvedBounds.set(parentBounds.left, top, parentBounds.right, top + height);
         } else {
             final int width = (int) Math.rint(parentHeight / aspect);
-            final int left = parentBounds.centerX() - width / 2;
+            final Rect parentAppBounds = newParentConfig.windowConfiguration.getAppBounds();
+            final int left = width <= parentAppBounds.width()
+                    // Avoid overlapping with the horizontal decor area when possible.
+                    ? parentAppBounds.left : parentBounds.centerX() - width / 2;
             resolvedBounds.set(left, parentBounds.top, left + width, parentBounds.bottom);
         }
 
@@ -7218,12 +7103,6 @@
             task.computeConfigResourceOverrides(resolvedConfig, newParentConfiguration,
                     getFixedRotationTransformDisplayInfo());
         }
-        if (needToBeCentered) {
-            // Offset to center relative to parent's app bounds.
-            final int offsetX = getHorizontalCenterOffset(
-                    parentAppBounds.width(), resolvedBounds.width());
-            offsetBounds(resolvedConfig, offsetX, 0 /* offsetY */);
-        }
     }
 
     /**
@@ -7321,8 +7200,8 @@
 
         final Rect resolvedAppBounds = resolvedConfig.windowConfiguration.getAppBounds();
 
-        // Calculates the scale and offset to horizontal center the size compatibility bounds into
-        // the region which is available to application.
+        // Calculates the scale the size compatibility bounds into the region which is available
+        // to application.
         final int contentW = resolvedAppBounds.width();
         final int contentH = resolvedAppBounds.height();
         final int viewportW = containerAppBounds.width();
@@ -7330,8 +7209,9 @@
         // Only allow to scale down.
         mSizeCompatScale = (contentW <= viewportW && contentH <= viewportH)
                 ? 1f : Math.min((float) viewportW / contentW, (float) viewportH / contentH);
-        final int screenTopInset = containerAppBounds.top - containerBounds.top;
-        final boolean topNotAligned = screenTopInset != resolvedAppBounds.top - resolvedBounds.top;
+        final int containerTopInset = containerAppBounds.top - containerBounds.top;
+        final boolean topNotAligned =
+                containerTopInset != resolvedAppBounds.top - resolvedBounds.top;
         if (mSizeCompatScale != 1f || topNotAligned) {
             if (mSizeCompatBounds == null) {
                 mSizeCompatBounds = new Rect();
@@ -7340,18 +7220,15 @@
             mSizeCompatBounds.offsetTo(0, 0);
             mSizeCompatBounds.scale(mSizeCompatScale);
             // The insets are included in height, e.g. the area of real cutout shouldn't be scaled.
-            mSizeCompatBounds.bottom += screenTopInset;
+            mSizeCompatBounds.bottom += containerTopInset;
         } else {
             mSizeCompatBounds = null;
         }
 
-        // Center horizontally in parent (app bounds) and align to top of parent (bounds)
-        // - this is a UX choice.
-        final int offsetX = getHorizontalCenterOffset(
-                (int) viewportW, (int) (contentW * mSizeCompatScale));
+        // Align to top of parent (bounds) - this is a UX choice and exclude the horizontal decor
+        // if needed. Horizontal position is adjusted in updateResolvedBoundsHorizontalPosition.
         // Above coordinates are in "@" space, now place "*" and "#" to screen space.
-        final int screenPosX = (fillContainer
-                ? containerBounds.left : containerAppBounds.left) + offsetX;
+        final int screenPosX = fillContainer ? containerBounds.left : containerAppBounds.left;
         final int screenPosY = containerBounds.top;
         if (screenPosX != 0 || screenPosY != 0) {
             if (mSizeCompatBounds != null) {
@@ -7441,12 +7318,19 @@
         if (mDisplayContent != null && !mDisplayContent.sandboxDisplayApis()) {
             return false;
         }
+        // Never apply sandboxing to an app that should be explicitly excluded from the config.
+        if (info != null && info.neverSandboxDisplayApis()) {
+            return false;
+        }
+        // Always apply sandboxing to an app that should be explicitly included from the config.
+        if (info != null && info.alwaysSandboxDisplayApis()) {
+            return true;
+        }
         // Max bounds should be sandboxed where an activity is letterboxed (activity bounds will be
         // smaller than task bounds).
         if (!matchParentBounds()) {
             return true;
         }
-
         // Max bounds should be sandboxed when an activity should have compatDisplayInsets, and it
         // will keep the same bounds and screen configuration when it was first launched regardless
         // how its parent window changes, so that the sandbox API will provide a consistent result.
@@ -7667,7 +7551,7 @@
     /**
      * Returns the aspect ratio of the given {@code rect}.
      */
-    private static float computeAspectRatio(Rect rect) {
+    static float computeAspectRatio(Rect rect) {
         final int width = rect.width();
         final int height = rect.height();
         if (width == 0 || height == 0) {
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index a0beee4..ee503d5 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -141,6 +141,7 @@
 import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.app.PictureInPictureParams;
+import android.app.PictureInPictureUiState;
 import android.app.ProfilerInfo;
 import android.app.RemoteAction;
 import android.app.WaitResult;
@@ -3644,6 +3645,17 @@
         }
     }
 
+    @Override
+    public void onPictureInPictureStateChanged(PictureInPictureUiState pipState) {
+        enforceTaskPermission("onPictureInPictureStateChanged");
+        final Task rootPinnedStask = mRootWindowContainer.getDefaultTaskDisplayArea()
+                .getRootPinnedTask();
+        if (rootPinnedStask != null && rootPinnedStask.getTopMostActivity() != null) {
+            mWindowManager.mAtmService.mActivityClientController.onPictureInPictureStateChanged(
+                    rootPinnedStask.getTopMostActivity(), pipState);
+        }
+    }
+
     void dumpLastANRLocked(PrintWriter pw) {
         pw.println("ACTIVITY MANAGER LAST ANR (dumpsys activity lastanr)");
         if (mLastANRState == null) {
@@ -4514,11 +4526,9 @@
                             .setContentTitle(text)
                             .setContentText(
                                     mContext.getText(R.string.heavy_weight_notification_detail))
-                            // TODO(b/175194709) Please replace FLAG_MUTABLE_UNAUDITED below
-                            // with either FLAG_IMMUTABLE (recommended) or FLAG_MUTABLE.
                             .setContentIntent(PendingIntent.getActivityAsUser(mContext, 0,
                                     intent, PendingIntent.FLAG_CANCEL_CURRENT
-                                    | PendingIntent.FLAG_MUTABLE_UNAUDITED, null,
+                                    | PendingIntent.FLAG_IMMUTABLE, null,
                                     new UserHandle(userId)))
                             .build();
             try {
diff --git a/services/core/java/com/android/server/wm/DisplayHashController.java b/services/core/java/com/android/server/wm/DisplayHashController.java
index 5a8af45..af0c3e3 100644
--- a/services/core/java/com/android/server/wm/DisplayHashController.java
+++ b/services/core/java/com/android/server/wm/DisplayHashController.java
@@ -16,8 +16,8 @@
 
 package com.android.server.wm;
 
-import static android.service.displayhash.DisplayHasherService.EXTRA_VERIFIED_DISPLAY_HASH;
-import static android.service.displayhash.DisplayHasherService.SERVICE_META_DATA;
+import static android.service.displayhash.DisplayHashingService.EXTRA_VERIFIED_DISPLAY_HASH;
+import static android.service.displayhash.DisplayHashingService.SERVICE_META_DATA;
 import static android.view.displayhash.DisplayHashResultCallback.DISPLAY_HASH_ERROR_INVALID_HASH_ALGORITHM;
 import static android.view.displayhash.DisplayHashResultCallback.DISPLAY_HASH_ERROR_TOO_MANY_REQUESTS;
 import static android.view.displayhash.DisplayHashResultCallback.DISPLAY_HASH_ERROR_UNKNOWN;
@@ -52,8 +52,8 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.service.displayhash.DisplayHashParams;
-import android.service.displayhash.DisplayHasherService;
-import android.service.displayhash.IDisplayHasherService;
+import android.service.displayhash.DisplayHashingService;
+import android.service.displayhash.IDisplayHashingService;
 import android.util.AttributeSet;
 import android.util.Size;
 import android.util.Slog;
@@ -79,7 +79,7 @@
 import java.util.function.BiConsumer;
 
 /**
- * Handles requests into {@link android.service.displayhash.DisplayHasherService}
+ * Handles requests into {@link DisplayHashingService}
  *
  * Do not hold the {@link WindowManagerService#mGlobalLock} when calling methods since they are
  * blocking calls into another service.
@@ -91,7 +91,7 @@
     private final Object mServiceConnectionLock = new Object();
 
     @GuardedBy("mServiceConnectionLock")
-    private DisplayHasherServiceConnection mServiceConnection;
+    private DisplayHashingServiceConnection mServiceConnection;
 
     private final Context mContext;
 
@@ -150,7 +150,7 @@
     private boolean mDisplayHashThrottlingEnabled = true;
 
     private interface Command {
-        void run(IDisplayHasherService service) throws RemoteException;
+        void run(IDisplayHashingService service) throws RemoteException;
     }
 
     DisplayHashController(Context context) {
@@ -233,7 +233,7 @@
                     (float) size.getHeight() / boundsInWindow.height());
         }
 
-        args.setGrayscale(displayHashParams.isGrayscaleBuffer());
+        args.setGrayscale(displayHashParams.isUseGrayscale());
 
         SurfaceControl.ScreenshotHardwareBuffer screenshotHardwareBuffer =
                 SurfaceControl.captureLayers(args.build());
@@ -405,9 +405,9 @@
                 }
             }
 
-            TypedArray sa = res.obtainAttributes(attrs, R.styleable.DisplayHasherService);
+            TypedArray sa = res.obtainAttributes(attrs, R.styleable.DisplayHashingService);
             mThrottleDurationMillis = sa.getInt(
-                    R.styleable.DisplayHasherService_throttleDurationMillis, 0);
+                    R.styleable.DisplayHashingService_throttleDurationMillis, 0);
             sa.recycle();
             mParsedXml = true;
             return true;
@@ -424,7 +424,7 @@
                 if (DEBUG) Slog.v(TAG, "creating connection");
 
                 // Create the connection
-                mServiceConnection = new DisplayHasherServiceConnection();
+                mServiceConnection = new DisplayHashingServiceConnection();
 
                 final ComponentName component = getServiceComponentName();
                 if (DEBUG) Slog.v(TAG, "binding to: " + component);
@@ -455,7 +455,7 @@
             return null;
         }
 
-        final Intent intent = new Intent(DisplayHasherService.SERVICE_INTERFACE);
+        final Intent intent = new Intent(DisplayHashingService.SERVICE_INTERFACE);
         intent.setPackage(packageName);
         final ResolveInfo resolveInfo = mContext.getPackageManager().resolveService(intent,
                 PackageManager.GET_SERVICES | PackageManager.GET_META_DATA);
@@ -472,10 +472,10 @@
         if (serviceInfo == null) return null;
 
         final ComponentName name = new ComponentName(serviceInfo.packageName, serviceInfo.name);
-        if (!Manifest.permission.BIND_DISPLAY_HASHER_SERVICE
+        if (!Manifest.permission.BIND_DISPLAY_HASHING_SERVICE
                 .equals(serviceInfo.permission)) {
             Slog.w(TAG, name.flattenToShortString() + " requires permission "
-                    + Manifest.permission.BIND_DISPLAY_HASHER_SERVICE);
+                    + Manifest.permission.BIND_DISPLAY_HASHING_SERVICE);
             return null;
         }
 
@@ -488,7 +488,7 @@
         private Bundle mResult;
         private final CountDownLatch mCountDownLatch = new CountDownLatch(1);
 
-        public Bundle run(BiConsumer<IDisplayHasherService, RemoteCallback> func) {
+        public Bundle run(BiConsumer<IDisplayHashingService, RemoteCallback> func) {
             connectAndRun(service -> {
                 RemoteCallback callback = new RemoteCallback(result -> {
                     mResult = result;
@@ -507,9 +507,9 @@
         }
     }
 
-    private class DisplayHasherServiceConnection implements ServiceConnection {
+    private class DisplayHashingServiceConnection implements ServiceConnection {
         @GuardedBy("mServiceConnectionLock")
-        private IDisplayHasherService mRemoteService;
+        private IDisplayHashingService mRemoteService;
 
         @GuardedBy("mServiceConnectionLock")
         private ArrayList<Command> mQueuedCommands;
@@ -518,7 +518,7 @@
         public void onServiceConnected(ComponentName name, IBinder service) {
             if (DEBUG) Slog.v(TAG, "onServiceConnected(): " + name);
             synchronized (mServiceConnectionLock) {
-                mRemoteService = IDisplayHasherService.Stub.asInterface(service);
+                mRemoteService = IDisplayHashingService.Stub.asInterface(service);
                 if (mQueuedCommands != null) {
                     final int size = mQueuedCommands.size();
                     if (DEBUG) Slog.d(TAG, "running " + size + " queued commands");
diff --git a/services/core/java/com/android/server/wm/LetterboxConfiguration.java b/services/core/java/com/android/server/wm/LetterboxConfiguration.java
new file mode 100644
index 0000000..eb7087c
--- /dev/null
+++ b/services/core/java/com/android/server/wm/LetterboxConfiguration.java
@@ -0,0 +1,328 @@
+/*
+ * 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.wm;
+
+import android.annotation.IntDef;
+import android.content.Context;
+import android.graphics.Color;
+
+import com.android.internal.R;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/** Reads letterbox configs from resources and controls their overrides at runtime. */
+final class LetterboxConfiguration {
+
+    /**
+     * Override of aspect ratio for fixed orientation letterboxing that is set via ADB with
+     * set-fixed-orientation-letterbox-aspect-ratio or via {@link
+     * com.android.internal.R.dimen.config_fixedOrientationLetterboxAspectRatio} will be ignored
+     * if it is <= this value.
+     */
+    static final float MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO = 1.0f;
+
+    /** Enum for Letterbox background type. */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef({LETTERBOX_BACKGROUND_SOLID_COLOR, LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND,
+            LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING, LETTERBOX_BACKGROUND_WALLPAPER})
+    @interface LetterboxBackgroundType {};
+    /** Solid background using color specified in R.color.config_letterboxBackgroundColor. */
+    static final int LETTERBOX_BACKGROUND_SOLID_COLOR = 0;
+
+    /** Color specified in R.attr.colorBackground for the letterboxed application. */
+    static final int LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND = 1;
+
+    /** Color specified in R.attr.colorBackgroundFloating for the letterboxed application. */
+    static final int LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING = 2;
+
+    /** Using wallpaper as a background which can be blurred or dimmed with dark scrim. */
+    static final int LETTERBOX_BACKGROUND_WALLPAPER = 3;
+
+    final Context mContext;
+
+    // Aspect ratio of letterbox for fixed orientation, values <=
+    // MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO will be ignored.
+    private float mFixedOrientationLetterboxAspectRatio;
+
+    // Corners radius for activities presented in the letterbox mode, values < 0 will be ignored.
+    private int mLetterboxActivityCornersRadius;
+
+    // Color for {@link #LETTERBOX_BACKGROUND_SOLID_COLOR} letterbox background type.
+    private Color mLetterboxBackgroundColor;
+
+    @LetterboxBackgroundType
+    private int mLetterboxBackgroundType;
+
+    // Blur radius for LETTERBOX_BACKGROUND_WALLPAPER option in mLetterboxBackgroundType.
+    // Values <= 0 are ignored and 0 is used instead.
+    private int mLetterboxBackgroundWallpaperBlurRadius;
+
+    // Alpha of a black scrim shown over wallpaper letterbox background when
+    // LETTERBOX_BACKGROUND_WALLPAPER option is selected for mLetterboxBackgroundType.
+    // Values < 0 or >= 1 are ignored and 0.0 (transparent) is used instead.
+    private float mLetterboxBackgroundWallpaperDarkScrimAlpha;
+
+    // Horizontal position of a center of the letterboxed app window. 0 corresponds to the left
+    // side of the screen and 1.0 to the right side.
+    private float mLetterboxHorizontalPositionMultiplier;
+
+    LetterboxConfiguration(Context context) {
+        mContext = context;
+        mFixedOrientationLetterboxAspectRatio = context.getResources().getFloat(
+                R.dimen.config_fixedOrientationLetterboxAspectRatio);
+        mLetterboxActivityCornersRadius = context.getResources().getInteger(
+                R.integer.config_letterboxActivityCornersRadius);
+        mLetterboxBackgroundColor = Color.valueOf(context.getResources().getColor(
+                R.color.config_letterboxBackgroundColor));
+        mLetterboxBackgroundType = readLetterboxBackgroundTypeFromConfig(context);
+        mLetterboxBackgroundWallpaperBlurRadius = context.getResources().getDimensionPixelSize(
+                R.dimen.config_letterboxBackgroundWallpaperBlurRadius);
+        mLetterboxBackgroundWallpaperDarkScrimAlpha = context.getResources().getFloat(
+                R.dimen.config_letterboxBackgroundWallaperDarkScrimAlpha);
+        mLetterboxHorizontalPositionMultiplier = context.getResources().getFloat(
+                R.dimen.config_letterboxHorizontalPositionMultiplier);
+    }
+
+    /**
+     * Overrides the aspect ratio of letterbox for fixed orientation. If given value is <= {@link
+     * #MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO}, both it and a value of {@link
+     * com.android.internal.R.dimen.config_fixedOrientationLetterboxAspectRatio} will be ignored and
+     * the framework implementation will be used to determine the aspect ratio.
+     */
+    void setFixedOrientationLetterboxAspectRatio(float aspectRatio) {
+        mFixedOrientationLetterboxAspectRatio = aspectRatio;
+    }
+
+    /**
+     * Resets the aspect ratio of letterbox for fixed orientation to {@link
+     * com.android.internal.R.dimen.config_fixedOrientationLetterboxAspectRatio}.
+     */
+    void resetFixedOrientationLetterboxAspectRatio() {
+        mFixedOrientationLetterboxAspectRatio = mContext.getResources().getFloat(
+                com.android.internal.R.dimen.config_fixedOrientationLetterboxAspectRatio);
+    }
+
+    /**
+     * Gets the aspect ratio of letterbox for fixed orientation.
+     */
+    float getFixedOrientationLetterboxAspectRatio() {
+        return mFixedOrientationLetterboxAspectRatio;
+    }
+
+    /**
+     * Overrides corners raidus for activities presented in the letterbox mode. If given value < 0,
+     * both it and a value of {@link
+     * com.android.internal.R.integer.config_letterboxActivityCornersRadius} will be ignored and
+     * and corners of the activity won't be rounded.
+     */
+    void setLetterboxActivityCornersRadius(int cornersRadius) {
+        mLetterboxActivityCornersRadius = cornersRadius;
+    }
+
+    /**
+     * Resets corners raidus for activities presented in the letterbox mode to {@link
+     * com.android.internal.R.integer.config_letterboxActivityCornersRadius}.
+     */
+    void resetLetterboxActivityCornersRadius() {
+        mLetterboxActivityCornersRadius = mContext.getResources().getInteger(
+                com.android.internal.R.integer.config_letterboxActivityCornersRadius);
+    }
+
+    /**
+     * Whether corners of letterboxed activities are rounded.
+     */
+    boolean isLetterboxActivityCornersRounded() {
+        return getLetterboxActivityCornersRadius() > 0;
+    }
+
+    /**
+     * Gets corners raidus for activities presented in the letterbox mode.
+     */
+    int getLetterboxActivityCornersRadius() {
+        return mLetterboxActivityCornersRadius;
+    }
+
+    /**
+     * Gets color of letterbox background which is  used when {@link
+     * #getLetterboxBackgroundType()} is {@link #LETTERBOX_BACKGROUND_SOLID_COLOR} or as
+     * fallback for other backfround types.
+     */
+    Color getLetterboxBackgroundColor() {
+        return mLetterboxBackgroundColor;
+    }
+
+
+    /**
+     * Sets color of letterbox background which is used when {@link
+     * #getLetterboxBackgroundType()} is {@link #LETTERBOX_BACKGROUND_SOLID_COLOR} or as
+     * fallback for other backfround types.
+     */
+    void setLetterboxBackgroundColor(Color color) {
+        mLetterboxBackgroundColor = color;
+    }
+
+    /**
+     * Resets color of letterbox background to {@link
+     * com.android.internal.R.color.config_letterboxBackgroundColor}.
+     */
+    void resetLetterboxBackgroundColor() {
+        mLetterboxBackgroundColor = Color.valueOf(mContext.getResources().getColor(
+                com.android.internal.R.color.config_letterboxBackgroundColor));
+    }
+
+    /**
+     * Gets {@link LetterboxBackgroundType} specified in {@link
+     * com.android.internal.R.integer.config_letterboxBackgroundType} or over via ADB command.
+     */
+    @LetterboxBackgroundType
+    int getLetterboxBackgroundType() {
+        return mLetterboxBackgroundType;
+    }
+
+    /** Sets letterbox background type. */
+    void setLetterboxBackgroundType(@LetterboxBackgroundType int backgroundType) {
+        mLetterboxBackgroundType = backgroundType;
+    }
+
+    /**
+     * Resets cletterbox background type to {@link
+     * com.android.internal.R.integer.config_letterboxBackgroundType}.
+     */
+    void resetLetterboxBackgroundType() {
+        mLetterboxBackgroundType = readLetterboxBackgroundTypeFromConfig(mContext);
+    }
+
+    /** Returns a string representing the given {@link LetterboxBackgroundType}. */
+    static String letterboxBackgroundTypeToString(
+            @LetterboxBackgroundType int backgroundType) {
+        switch (backgroundType) {
+            case LETTERBOX_BACKGROUND_SOLID_COLOR:
+                return "LETTERBOX_BACKGROUND_SOLID_COLOR";
+            case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND:
+                return "LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND";
+            case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING:
+                return "LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING";
+            case LETTERBOX_BACKGROUND_WALLPAPER:
+                return "LETTERBOX_BACKGROUND_WALLPAPER";
+            default:
+                return "unknown=" + backgroundType;
+        }
+    }
+
+    @LetterboxBackgroundType
+    private static int readLetterboxBackgroundTypeFromConfig(Context context) {
+        int backgroundType = context.getResources().getInteger(
+                com.android.internal.R.integer.config_letterboxBackgroundType);
+        return backgroundType == LETTERBOX_BACKGROUND_SOLID_COLOR
+                    || backgroundType == LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND
+                    || backgroundType == LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING
+                    || backgroundType == LETTERBOX_BACKGROUND_WALLPAPER
+                    ? backgroundType : LETTERBOX_BACKGROUND_SOLID_COLOR;
+    }
+
+    /**
+     * Overrides alpha of a black scrim shown over wallpaper for {@link
+     * #LETTERBOX_BACKGROUND_WALLPAPER} option in {@link mLetterboxBackgroundType}.
+     *
+     * <p>If given value is < 0 or >= 1, both it and a value of {@link
+     * com.android.internal.R.dimen.config_letterboxBackgroundWallaperDarkScrimAlpha} are ignored
+     * and 0.0 (transparent) is instead.
+     */
+    void setLetterboxBackgroundWallpaperDarkScrimAlpha(float alpha) {
+        mLetterboxBackgroundWallpaperDarkScrimAlpha = alpha;
+    }
+
+    /**
+     * Resets alpha of a black scrim shown over wallpaper letterbox background to {@link
+     * com.android.internal.R.dimen.config_letterboxBackgroundWallaperDarkScrimAlpha}.
+     */
+    void resetLetterboxBackgroundWallpaperDarkScrimAlpha() {
+        mLetterboxBackgroundWallpaperDarkScrimAlpha = mContext.getResources().getFloat(
+                com.android.internal.R.dimen.config_letterboxBackgroundWallaperDarkScrimAlpha);
+    }
+
+    /**
+     * Gets alpha of a black scrim shown over wallpaper letterbox background.
+     */
+    float getLetterboxBackgroundWallpaperDarkScrimAlpha() {
+        return mLetterboxBackgroundWallpaperDarkScrimAlpha;
+    }
+
+    /**
+     * Overrides blur radius for {@link #LETTERBOX_BACKGROUND_WALLPAPER} option in
+     * {@link mLetterboxBackgroundType}.
+     *
+     * <p> If given value <= 0, both it and a value of {@link
+     * com.android.internal.R.dimen.config_letterboxBackgroundWallpaperBlurRadius} are ignored
+     * and 0 is used instead.
+     */
+    void setLetterboxBackgroundWallpaperBlurRadius(int radius) {
+        mLetterboxBackgroundWallpaperBlurRadius = radius;
+    }
+
+    /**
+     * Resets blur raidus for {@link #LETTERBOX_BACKGROUND_WALLPAPER} option in {@link
+     * mLetterboxBackgroundType} to {@link
+     * com.android.internal.R.dimen.config_letterboxBackgroundWallpaperBlurRadius}.
+     */
+    void resetLetterboxBackgroundWallpaperBlurRadius() {
+        mLetterboxBackgroundWallpaperBlurRadius = mContext.getResources().getDimensionPixelSize(
+                com.android.internal.R.dimen.config_letterboxBackgroundWallpaperBlurRadius);
+    }
+
+    /**
+     * Gets blur raidus for {@link #LETTERBOX_BACKGROUND_WALLPAPER} option in {@link
+     * mLetterboxBackgroundType}.
+     */
+    int getLetterboxBackgroundWallpaperBlurRadius() {
+        return mLetterboxBackgroundWallpaperBlurRadius;
+    }
+
+    /*
+     * Gets horizontal position of a center of the letterboxed app window specified
+     * in {@link com.android.internal.R.dimen.config_letterboxHorizontalPositionMultiplier}
+     * or via an ADB command. 0 corresponds to the left side of the screen and 1 to the
+     * right side.
+     *
+     * <p>This value can be outside of [0, 1] range so clients need to check and default to the
+     * central position (0.5).
+     */
+    float getLetterboxHorizontalPositionMultiplier() {
+        return mLetterboxHorizontalPositionMultiplier;
+    }
+
+    /**
+     * Overrides horizontal position of a center of the letterboxed app window. If given value < 0
+     * or > 1, then it and a value of {@link
+     * com.android.internal.R.dimen.config_letterboxHorizontalPositionMultiplier} are ignored and
+     * central position (0.5) is used.
+     */
+    void setLetterboxHorizontalPositionMultiplier(float multiplier) {
+        mLetterboxHorizontalPositionMultiplier = multiplier;
+    }
+
+    /**
+     * Resets horizontal position of a center of the letterboxed app window to {@link
+     * com.android.internal.R.dimen.config_letterboxHorizontalPositionMultiplier}.
+     */
+    void resetLetterboxHorizontalPositionMultiplier() {
+        mLetterboxHorizontalPositionMultiplier = mContext.getResources().getFloat(
+                com.android.internal.R.dimen.config_letterboxHorizontalPositionMultiplier);
+    }
+
+}
diff --git a/services/core/java/com/android/server/wm/LetterboxUiController.java b/services/core/java/com/android/server/wm/LetterboxUiController.java
new file mode 100644
index 0000000..130f680
--- /dev/null
+++ b/services/core/java/com/android/server/wm/LetterboxUiController.java
@@ -0,0 +1,336 @@
+/*
+ * 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.wm;
+
+import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
+
+import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
+import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
+import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
+import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
+import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_SOLID_COLOR;
+import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_WALLPAPER;
+import static com.android.server.wm.LetterboxConfiguration.letterboxBackgroundTypeToString;
+
+import android.annotation.Nullable;
+import android.app.ActivityManager.TaskDescription;
+import android.graphics.Color;
+import android.graphics.Point;
+import android.graphics.Rect;
+import android.util.Slog;
+import android.view.SurfaceControl;
+import android.view.SurfaceControl.Transaction;
+import android.view.WindowManager;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.wm.LetterboxConfiguration.LetterboxBackgroundType;
+
+import java.io.PrintWriter;
+
+/** Controls behaviour of the letterbox UI for {@link mActivityRecord}. */
+// TODO(b/185262487): Improve test coverage of this class. Parts of it are tested in
+// SizeCompatTests and LetterboxTests but not all.
+// TODO(b/185264020): Consider making LetterboxUiController applicable to any level of the
+// hierarchy in addition to ActivityRecord (Task, DisplayArea, ...).
+final class LetterboxUiController {
+
+    private static final String TAG = TAG_WITH_CLASS_NAME ? "LetterboxUiController" : TAG_ATM;
+
+    private final Point mTmpPoint = new Point();
+
+    private final LetterboxConfiguration mLetterboxConfiguration;
+    private final ActivityRecord mActivityRecord;
+
+    private boolean mShowWallpaperForLetterboxBackground;
+
+    @Nullable
+    private Letterbox mLetterbox;
+
+    LetterboxUiController(WindowManagerService wmService, ActivityRecord activityRecord) {
+        mLetterboxConfiguration = wmService.mLetterboxConfiguration;
+        // Given activityRecord may not be fully constructed since LetterboxUiController
+        // is created in its constructor. It shouldn't be used in this constructor but it's safe
+        // to use it after since controller is only used in ActivityRecord.
+        mActivityRecord = activityRecord;
+    }
+
+    /** Cleans up {@link Letterbox} if it exists.*/
+    void destroy() {
+        if (mLetterbox != null) {
+            mLetterbox.destroy();
+            mLetterbox = null;
+        }
+    }
+
+    void onMovedToDisplay(int displayId) {
+        if (mLetterbox != null) {
+            mLetterbox.onMovedToDisplay(displayId);
+        }
+    }
+
+    boolean hasWallpaperBackgroudForLetterbox() {
+        return mShowWallpaperForLetterboxBackground;
+    }
+
+    /** Gets the letterbox insets. The insets will be empty if there is no letterbox. */
+    Rect getLetterboxInsets() {
+        if (mLetterbox != null) {
+            return mLetterbox.getInsets();
+        } else {
+            return new Rect();
+        }
+    }
+
+    /** Gets the inner bounds of letterbox. The bounds will be empty if there is no letterbox. */
+    void getLetterboxInnerBounds(Rect outBounds) {
+        if (mLetterbox != null) {
+            outBounds.set(mLetterbox.getInnerFrame());
+        } else {
+            outBounds.setEmpty();
+        }
+    }
+
+    /**
+     * @return {@code true} if bar shown within a given rectangle is allowed to be fully transparent
+     *     when the current activity is displayed.
+     */
+    boolean isFullyTransparentBarAllowed(Rect rect) {
+        return mLetterbox == null || mLetterbox.notIntersectsOrFullyContains(rect);
+    }
+
+    /**
+     * @return {@code true} if there is a letterbox and any part of that letterbox overlaps with
+     * the given {@code rect}.
+     */
+    boolean isLetterboxOverlappingWith(Rect rect) {
+        return mLetterbox != null && mLetterbox.isOverlappingWith(rect);
+    }
+
+    void updateLetterboxSurface(WindowState winHint) {
+        final WindowState w = mActivityRecord.findMainWindow();
+        if (w != winHint && winHint != null && w != null) {
+            return;
+        }
+        layoutLetterbox(winHint);
+        if (mLetterbox != null && mLetterbox.needsApplySurfaceChanges()) {
+            mLetterbox.applySurfaceChanges(mActivityRecord.getSyncTransaction());
+        }
+    }
+
+    void layoutLetterbox(WindowState winHint) {
+        final WindowState w = mActivityRecord.findMainWindow();
+        if (w == null || winHint != null && w != winHint) {
+            return;
+        }
+        final boolean surfaceReady = w.isDrawn()  // Regular case
+                || w.isDragResizeChanged();  // Waiting for relayoutWindow to call preserveSurface.
+        final boolean needsLetterbox = surfaceReady && isLetterboxed(w);
+        updateRoundedCorners(w);
+        updateWallpaperForLetterbox(w);
+        if (needsLetterbox) {
+            if (mLetterbox == null) {
+                mLetterbox = new Letterbox(() -> mActivityRecord.makeChildSurface(null),
+                        mActivityRecord.mWmService.mTransactionFactory,
+                        mLetterboxConfiguration::isLetterboxActivityCornersRounded,
+                        this::getLetterboxBackgroundColor,
+                        this::hasWallpaperBackgroudForLetterbox,
+                        this::getLetterboxWallpaperBlurRadius,
+                        this::getLetterboxWallpaperDarkScrimAlpha);
+                mLetterbox.attachInput(w);
+            }
+            mActivityRecord.getPosition(mTmpPoint);
+            // Get the bounds of the "space-to-fill". The transformed bounds have the highest
+            // priority because the activity is launched in a rotated environment. In multi-window
+            // mode, the task-level represents this. In fullscreen-mode, the task container does
+            // (since the orientation letterbox is also applied to the task).
+            final Rect transformedBounds = mActivityRecord.getFixedRotationTransformDisplayBounds();
+            final Rect spaceToFill = transformedBounds != null
+                    ? transformedBounds
+                    : mActivityRecord.inMultiWindowMode()
+                            ? mActivityRecord.getRootTask().getBounds()
+                            : mActivityRecord.getRootTask().getParent().getBounds();
+            mLetterbox.layout(spaceToFill, w.getFrame(), mTmpPoint);
+        } else if (mLetterbox != null) {
+            mLetterbox.hide();
+        }
+    }
+
+    /**
+     * @return {@code true} when the main window is letterboxed, this activity isn't transparent
+     * and doesn't show a wallpaper.
+     */
+    @VisibleForTesting
+    boolean isLetterboxed(WindowState mainWindow) {
+        return mainWindow.isLetterboxedAppWindow() && mActivityRecord.fillsParent()
+                // Check for FLAG_SHOW_WALLPAPER explicitly instead of using
+                // WindowContainer#showWallpaper because the later will return true when this
+                // activity is using blurred wallpaper for letterbox backgroud.
+                && (mainWindow.mAttrs.flags & FLAG_SHOW_WALLPAPER) == 0;
+    }
+
+    private Color getLetterboxBackgroundColor() {
+        final WindowState w = mActivityRecord.findMainWindow();
+        if (w == null || w.isLetterboxedForDisplayCutout()) {
+            return Color.valueOf(Color.BLACK);
+        }
+        @LetterboxBackgroundType int letterboxBackgroundType =
+                mLetterboxConfiguration.getLetterboxBackgroundType();
+        TaskDescription taskDescription = mActivityRecord.taskDescription;
+        switch (letterboxBackgroundType) {
+            case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING:
+                if (taskDescription != null && taskDescription.getBackgroundColorFloating() != 0) {
+                    return Color.valueOf(taskDescription.getBackgroundColorFloating());
+                }
+                break;
+            case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND:
+                if (taskDescription != null && taskDescription.getBackgroundColor() != 0) {
+                    return Color.valueOf(taskDescription.getBackgroundColor());
+                }
+                break;
+            case LETTERBOX_BACKGROUND_WALLPAPER:
+                if (hasWallpaperBackgroudForLetterbox()) {
+                    // Color is used for translucent scrim that dims wallpaper.
+                    return Color.valueOf(Color.BLACK);
+                }
+                Slog.w(TAG, "Wallpaper option is selected for letterbox background but "
+                        + "blur is not supported by a device or not supported in the current "
+                        + "window configuration or both alpha scrim and blur radius aren't "
+                        + "provided so using solid color background");
+                break;
+            case LETTERBOX_BACKGROUND_SOLID_COLOR:
+                return mLetterboxConfiguration.getLetterboxBackgroundColor();
+            default:
+                throw new AssertionError(
+                    "Unexpected letterbox background type: " + letterboxBackgroundType);
+        }
+        // If picked option configured incorrectly or not supported then default to a solid color
+        // background.
+        return mLetterboxConfiguration.getLetterboxBackgroundColor();
+    }
+
+    private void updateRoundedCorners(WindowState mainWindow) {
+        int cornersRadius =
+                // Don't round corners if letterboxed only for display cutout.
+                isLetterboxed(mainWindow)
+                                && !mainWindow.isLetterboxedForDisplayCutout()
+                        ? Math.max(0, mLetterboxConfiguration.getLetterboxActivityCornersRadius())
+                        : 0;
+        setCornersRadius(mainWindow, cornersRadius);
+    }
+
+    private void setCornersRadius(WindowState mainWindow, int cornersRadius) {
+        final SurfaceControl windowSurface = mainWindow.getClientViewRootSurface();
+        if (windowSurface != null && windowSurface.isValid()) {
+            Transaction transaction = mActivityRecord.getSyncTransaction();
+            transaction.setCornerRadius(windowSurface, cornersRadius);
+        }
+    }
+
+    private void updateWallpaperForLetterbox(WindowState mainWindow) {
+        @LetterboxBackgroundType int letterboxBackgroundType =
+                mLetterboxConfiguration.getLetterboxBackgroundType();
+        boolean wallpaperShouldBeShown =
+                letterboxBackgroundType == LETTERBOX_BACKGROUND_WALLPAPER
+                        && isLetterboxed(mainWindow)
+                        // Don't use wallpaper as a background if letterboxed for display cutout.
+                        && !mainWindow.isLetterboxedForDisplayCutout()
+                        // Check that dark scrim alpha or blur radius are provided
+                        && (getLetterboxWallpaperBlurRadius() > 0
+                                || getLetterboxWallpaperDarkScrimAlpha() > 0)
+                        // Check that blur is supported by a device if blur radius is provided.
+                        && (getLetterboxWallpaperBlurRadius() <= 0
+                                || isLetterboxWallpaperBlurSupported());
+        if (mShowWallpaperForLetterboxBackground != wallpaperShouldBeShown) {
+            mShowWallpaperForLetterboxBackground = wallpaperShouldBeShown;
+            mActivityRecord.requestUpdateWallpaperIfNeeded();
+        }
+    }
+
+    private int getLetterboxWallpaperBlurRadius() {
+        int blurRadius = mLetterboxConfiguration.getLetterboxBackgroundWallpaperBlurRadius();
+        return blurRadius < 0 ? 0 : blurRadius;
+    }
+
+    private float getLetterboxWallpaperDarkScrimAlpha() {
+        float alpha = mLetterboxConfiguration.getLetterboxBackgroundWallpaperDarkScrimAlpha();
+        // No scrim by default.
+        return (alpha < 0 || alpha >= 1) ? 0.0f : alpha;
+    }
+
+    private boolean isLetterboxWallpaperBlurSupported() {
+        return mLetterboxConfiguration.mContext.getSystemService(WindowManager.class)
+                .isCrossWindowBlurEnabled();
+    }
+
+    void dump(PrintWriter pw, String prefix) {
+        final WindowState mainWin = mActivityRecord.findMainWindow();
+        if (mainWin == null) {
+            return;
+        }
+
+        boolean areBoundsLetterboxed = mainWin.isLetterboxedAppWindow();
+        pw.println(prefix + "areBoundsLetterboxed=" + areBoundsLetterboxed);
+        if (!areBoundsLetterboxed) {
+            return;
+        }
+
+        pw.println(prefix + "  letterboxReason=" + getLetterboxReasonString(mainWin));
+        pw.println(prefix + "  letterboxAspectRatio="
+                + mActivityRecord.computeAspectRatio(mActivityRecord.getBounds()));
+
+        boolean isLetterboxUiShown = isLetterboxed(mainWin);
+        pw.println(prefix + "isLetterboxUiShown=" + isLetterboxUiShown);
+
+        if (!isLetterboxUiShown) {
+            return;
+        }
+        pw.println(prefix + "  letterboxBackgroundColor=" + Integer.toHexString(
+                getLetterboxBackgroundColor().toArgb()));
+        pw.println(prefix + "  letterboxBackgroundType="
+                + letterboxBackgroundTypeToString(
+                        mLetterboxConfiguration.getLetterboxBackgroundType()));
+        if (mLetterboxConfiguration.getLetterboxBackgroundType()
+                == LETTERBOX_BACKGROUND_WALLPAPER) {
+            pw.println(prefix + "  isLetterboxWallpaperBlurSupported="
+                    + isLetterboxWallpaperBlurSupported());
+            pw.println(prefix + "  letterboxBackgroundWallpaperDarkScrimAlpha="
+                    + getLetterboxWallpaperDarkScrimAlpha());
+            pw.println(prefix + "  letterboxBackgroundWallpaperBlurRadius="
+                    + getLetterboxWallpaperBlurRadius());
+        }
+        pw.println(prefix + "  letterboxHorizontalPositionMultiplier="
+                + mLetterboxConfiguration.getLetterboxHorizontalPositionMultiplier());
+    }
+
+    /**
+     * Returns a string representing the reason for letterboxing. This method assumes the activity
+     * is letterboxed.
+     */
+    private String getLetterboxReasonString(WindowState mainWin) {
+        if (mActivityRecord.inSizeCompatMode()) {
+            return "SIZE_COMPAT_MODE";
+        }
+        if (mActivityRecord.isLetterboxedForFixedOrientationAndAspectRatio()) {
+            return "FIXED_ORIENTATION";
+        }
+        if (mainWin.isLetterboxedForDisplayCutout()) {
+            return "DISPLAY_CUTOUT";
+        }
+        return "UNKNOWN_REASON";
+    }
+
+}
diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java
index 6631a3e..9f9ac3e 100644
--- a/services/core/java/com/android/server/wm/RecentTasks.java
+++ b/services/core/java/com/android/server/wm/RecentTasks.java
@@ -1415,6 +1415,9 @@
             return true;
         }
 
+        // The given task if always treated as in visible range if it is the origin of pinned task.
+        if (task.mChildPipActivity != null) return true;
+
         if (mMaxNumVisibleTasks >= 0) {
             // Always keep up to the max number of recent tasks, but return false afterwards
             return numVisibleTasks <= mMaxNumVisibleTasks;
@@ -1433,20 +1436,18 @@
 
     /** @return whether the given task can be trimmed even if it is outside the visible range. */
     protected boolean isTrimmable(Task task) {
-        final Task rootTask = task.getRootTask();
-
-        // No stack for task, just trim it
-        if (rootTask == null) {
+        // The task was detached, just trim it.
+        if (!task.isAttached()) {
             return true;
         }
 
         // Ignore tasks from different displays
         // TODO (b/115289124): No Recents on non-default displays.
-        if (!rootTask.isOnHomeDisplay()) {
+        if (!task.isOnHomeDisplay()) {
             return false;
         }
 
-        final Task rootHomeTask = rootTask.getDisplayArea().getRootHomeTask();
+        final Task rootHomeTask = task.getDisplayArea().getRootHomeTask();
         // Home task does not exist. Don't trim the task.
         if (rootHomeTask == null) {
             return false;
diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java
index 129a6ce..19c2e73 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimationController.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java
@@ -675,6 +675,8 @@
         }
         final SurfaceControl.Transaction t = mDisplayContent.getPendingTransaction();
         final WindowContainer parent = navToken.getParent();
+        t.setLayer(navToken.getSurfaceControl(), navToken.getLastLayer());
+
         if (animate) {
             final NavBarFadeAnimationController navBarFadeAnimationController =
                     mDisplayContent.getDisplayPolicy().getNavBarFadeAnimationController();
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index 52551ec..b9fc8b1 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -2124,6 +2124,8 @@
                         .setDeferTaskAppear(true)
                         .setHasBeenVisible(true)
                         .build();
+                // Establish bi-directional link between the original and pinned task.
+                r.setLastParentBeforePip();
                 // It's possible the task entering PIP is in freeform, so save the last
                 // non-fullscreen bounds. Then when this new PIP task exits PIP, it can restore
                 // to its previous freeform bounds.
diff --git a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
index 95a4f69e..fb66c04 100644
--- a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
+++ b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
@@ -36,9 +36,11 @@
 import android.animation.ArgbEvaluator;
 import android.content.Context;
 import android.graphics.Color;
+import android.graphics.GraphicBuffer;
 import android.graphics.Matrix;
 import android.graphics.Point;
 import android.graphics.Rect;
+import android.hardware.HardwareBuffer;
 import android.os.Trace;
 import android.util.Slog;
 import android.util.proto.ProtoOutputStream;
@@ -210,9 +212,9 @@
             String name = "RotationLayer";
             mScreenshotLayer = displayContent.makeOverlay()
                     .setName(name)
-                    .setBufferSize(mWidth, mHeight)
                     .setSecure(isSecure)
                     .setCallsite("ScreenRotationAnimation")
+                    .setBLASTLayer()
                     .build();
             // This is the way to tell the input system to exclude this surface from occlusion
             // detection since we don't have a window for it. We do this because this window is
@@ -225,32 +227,29 @@
                     .setCallsite("ScreenRotationAnimation")
                     .build();
 
-            final Surface surface = mService.mSurfaceFactory.get();
-            // In case display bounds change, screenshot buffer and surface may mismatch so
-            // set a scaling mode.
-            surface.copyFrom(mScreenshotLayer);
-            surface.setScalingMode(Surface.SCALING_MODE_SCALE_TO_WINDOW);
-
+            HardwareBuffer hardwareBuffer = screenshotBuffer.getHardwareBuffer();
             Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER,
                     "ScreenRotationAnimation#getMedianBorderLuma");
-            mStartLuma = RotationAnimationUtils.getMedianBorderLuma(
-                    screenshotBuffer.getHardwareBuffer(), screenshotBuffer.getColorSpace());
+            mStartLuma = RotationAnimationUtils.getMedianBorderLuma(hardwareBuffer,
+                    screenshotBuffer.getColorSpace());
             Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
-            try {
-                surface.attachAndQueueBufferWithColorSpace(screenshotBuffer.getHardwareBuffer(),
-                        screenshotBuffer.getColorSpace());
-            } catch (RuntimeException e) {
-                Slog.w(TAG, "Failed to attach screenshot - " + e.getMessage());
-            }
+
+            GraphicBuffer buffer = GraphicBuffer.createFromHardwareBuffer(
+                    screenshotBuffer.getHardwareBuffer());
+            // Scale the layer to the display size.
+            float dsdx = (float) mWidth / hardwareBuffer.getWidth();
+            float dsdy = (float) mHeight / hardwareBuffer.getHeight();
 
             t.setLayer(mScreenshotLayer, SCREEN_FREEZE_LAYER_BASE);
             t.reparent(mBackColorSurface, displayContent.getSurfaceControl());
             t.setLayer(mBackColorSurface, -1);
             t.setColor(mBackColorSurface, new float[]{mStartLuma, mStartLuma, mStartLuma});
             t.setAlpha(mBackColorSurface, 1);
+            t.setBuffer(mScreenshotLayer, buffer);
+            t.setColorSpace(mScreenshotLayer, screenshotBuffer.getColorSpace());
+            t.setMatrix(mScreenshotLayer, dsdx, 0, 0, dsdy);
             t.show(mScreenshotLayer);
             t.show(mBackColorSurface);
-            surface.destroy();
 
         } catch (OutOfResourcesException e) {
             Slog.w(TAG, "Unable to allocate freeze surface", e);
diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java
index b82a308..c6cd560 100644
--- a/services/core/java/com/android/server/wm/Session.java
+++ b/services/core/java/com/android/server/wm/Session.java
@@ -640,9 +640,16 @@
         }
     }
 
-    void windowAddedLocked(String packageName) {
-        mPackageName = packageName;
-        mRelayoutTag = "relayoutWindow: " + mPackageName;
+    void windowAddedLocked() {
+        if (mPackageName == null) {
+            final WindowProcessController wpc = mService.mAtmService.mProcessMap.getProcess(mPid);
+            if (wpc != null) {
+                mPackageName = wpc.mInfo.packageName;
+                mRelayoutTag = "relayoutWindow: " + mPackageName;
+            } else {
+                Slog.e(TAG_WM, "Unknown process pid=" + mPid);
+            }
+        }
         if (mSurfaceSession == null) {
             if (DEBUG) {
                 Slog.v(TAG_WM, "First window added to " + this + ", creating SurfaceSession");
diff --git a/services/core/java/com/android/server/wm/ShellRoot.java b/services/core/java/com/android/server/wm/ShellRoot.java
index 0902948..b56e76d 100644
--- a/services/core/java/com/android/server/wm/ShellRoot.java
+++ b/services/core/java/com/android/server/wm/ShellRoot.java
@@ -76,8 +76,11 @@
                 throw new IllegalArgumentException(shellRootLayer
                         + " is not an acceptable shell root layer.");
         }
-        mToken = new WindowToken(
-                dc.mWmService, client.asBinder(), windowType, true, dc, true, false);
+        mToken = new WindowToken.Builder(dc.mWmService, client.asBinder(), windowType)
+                .setDisplayContent(dc)
+                .setPersistOnEmpty(true)
+                .setOwnerCanManageAppTokens(true)
+                .build();
         mSurfaceControl = mToken.makeChildSurface(null)
                 .setContainerLayer()
                 .setName("Shell Root Leash " + dc.getDisplayId())
diff --git a/services/core/java/com/android/server/wm/StartingSurfaceController.java b/services/core/java/com/android/server/wm/StartingSurfaceController.java
index 140ae3e..a9b06ca 100644
--- a/services/core/java/com/android/server/wm/StartingSurfaceController.java
+++ b/services/core/java/com/android/server/wm/StartingSurfaceController.java
@@ -58,10 +58,12 @@
                     overrideConfig, displayId);
         }
 
-        final Task task = activity.getTask();
-        if (task != null && mService.mAtmService.mTaskOrganizerController.addStartingWindow(task,
-                activity.token, theme)) {
-            return new ShellStartingSurface(task);
+        synchronized (mService.mGlobalLock) {
+            final Task task = activity.getTask();
+            if (task != null && mService.mAtmService.mTaskOrganizerController.addStartingWindow(
+                    task, activity.token, theme, null /* taskSnapshot */)) {
+                return new ShellStartingSurface(task);
+            }
         }
         return null;
     }
@@ -124,14 +126,13 @@
                 activity.mDisplayContent.handleTopActivityLaunchingInDifferentOrientation(
                         topFullscreenActivity, false /* checkOpening */);
             }
+            if (DEBUG_ENABLE_SHELL_DRAWER) {
+                mService.mAtmService.mTaskOrganizerController.addStartingWindow(task,
+                        activity.token, 0 /* launchTheme */, taskSnapshot);
+                return new ShellStartingSurface(task);
+            }
         }
-        if (!DEBUG_ENABLE_SHELL_DRAWER) {
-            return mService.mTaskSnapshotController
-                    .createStartingSurface(activity, taskSnapshot);
-        }
-        mService.mAtmService.mTaskOrganizerController.addStartingWindow(task, activity.token,
-                0 /* launchTheme */);
-        return new ShellStartingSurface(task);
+        return mService.mTaskSnapshotController.createStartingSurface(activity, taskSnapshot);
     }
 
 
@@ -144,8 +145,9 @@
 
         @Override
         public void remove(boolean animate) {
-            mService.mAtmService.mTaskOrganizerController.removeStartingWindow(mTask,
-                    animate);
+            synchronized (mService.mGlobalLock) {
+                mService.mAtmService.mTaskOrganizerController.removeStartingWindow(mTask, animate);
+            }
         }
     }
 }
diff --git a/services/core/java/com/android/server/wm/SurfaceFreezer.java b/services/core/java/com/android/server/wm/SurfaceFreezer.java
index 6f434e0..e0a791e 100644
--- a/services/core/java/com/android/server/wm/SurfaceFreezer.java
+++ b/services/core/java/com/android/server/wm/SurfaceFreezer.java
@@ -22,6 +22,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.graphics.GraphicBuffer;
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
 import android.hardware.HardwareBuffer;
@@ -153,29 +154,24 @@
          */
         Snapshot(Supplier<Surface> surfaceFactory, SurfaceControl.Transaction t,
                 SurfaceControl.ScreenshotHardwareBuffer screenshotBuffer, SurfaceControl parent) {
-            Surface drawSurface = surfaceFactory.get();
             // We can't use a delegating constructor since we need to
             // reference this::onAnimationFinished
-            HardwareBuffer hardwareBuffer = screenshotBuffer.getHardwareBuffer();
-            final int width = hardwareBuffer.getWidth();
-            final int height = hardwareBuffer.getHeight();
+            GraphicBuffer graphicBuffer = GraphicBuffer.createFromHardwareBuffer(
+                    screenshotBuffer.getHardwareBuffer());
 
             mSurfaceControl = mAnimatable.makeAnimationLeash()
                     .setName("snapshot anim: " + mAnimatable.toString())
-                    .setBufferSize(width, height)
                     .setFormat(PixelFormat.TRANSLUCENT)
                     .setParent(parent)
                     .setSecure(screenshotBuffer.containsSecureLayers())
                     .setCallsite("SurfaceFreezer.Snapshot")
+                    .setBLASTLayer()
                     .build();
 
             ProtoLog.i(WM_SHOW_TRANSACTIONS, "  THUMBNAIL %s: CREATE", mSurfaceControl);
 
-            // Transfer the thumbnail to the surface
-            drawSurface.copyFrom(mSurfaceControl);
-            drawSurface.attachAndQueueBufferWithColorSpace(hardwareBuffer,
-                    screenshotBuffer.getColorSpace());
-            drawSurface.release();
+            t.setBuffer(mSurfaceControl, graphicBuffer);
+            t.setColorSpace(mSurfaceControl, screenshotBuffer.getColorSpace());
             t.show(mSurfaceControl);
 
             // We parent the thumbnail to the container, and just place it on top of anything else
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 8690499..858d9f3 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -131,6 +131,7 @@
 import static com.android.server.wm.TaskProto.CREATED_BY_ORGANIZER;
 import static com.android.server.wm.TaskProto.DISPLAY_ID;
 import static com.android.server.wm.TaskProto.FILLS_PARENT;
+import static com.android.server.wm.TaskProto.HAS_CHILD_PIP_ACTIVITY;
 import static com.android.server.wm.TaskProto.LAST_NON_FULLSCREEN_BOUNDS;
 import static com.android.server.wm.TaskProto.MIN_HEIGHT;
 import static com.android.server.wm.TaskProto.MIN_WIDTH;
@@ -836,6 +837,14 @@
     // The task will be removed when TaskOrganizer, which is managing the task, is destroyed.
     boolean mRemoveWithTaskOrganizer;
 
+    /**
+     * Reference to the pinned activity that is logically parented to this task, ie.
+     * the previous top activity within this task is put into pinned mode.
+     * This always gets cleared in pair with the ActivityRecord-to-Task link as seen in
+     * {@link ActivityRecord#clearLastParentBeforePip()}.
+     */
+    ActivityRecord mChildPipActivity;
+
     private Task(ActivityTaskManagerService atmService, int _taskId, Intent _intent,
             Intent _affinityIntent, String _affinity, String _rootAffinity,
             ComponentName _realActivity, ComponentName _origActivity, boolean _rootWasReset,
@@ -1841,6 +1850,10 @@
 
     /** Completely remove all activities associated with an existing task. */
     void performClearTask(String reason) {
+        // The original task is to be removed, try remove also the pinned task.
+        if (mChildPipActivity != null && mChildPipActivity.getTask() != null) {
+            mTaskSupervisor.removeRootTask(mChildPipActivity.getTask());
+        }
         // Broken down into to cases to avoid object create due to capturing mStack.
         if (getRootTask() == null) {
             forAllActivities((r) -> {
@@ -4449,6 +4462,7 @@
         }
         pw.print(prefix); pw.print("taskId=" + mTaskId);
         pw.println(" rootTaskId=" + getRootTaskId());
+        pw.print(prefix); pw.println("hasChildPipActivity=" + (mChildPipActivity != null));
         pw.print(prefix); pw.print("mHasBeenVisible="); pw.println(getHasBeenVisible());
         pw.print(prefix); pw.print("mResizeMode=");
         pw.print(ActivityInfo.resizeModeToString(mResizeMode));
@@ -5328,7 +5342,6 @@
             return;
         }
         final int currentMode = getWindowingMode();
-        final int currentOverrideMode = getRequestedOverrideWindowingMode();
         final Task topTask = getTopMostTask();
         int windowingMode = preferredWindowingMode;
 
@@ -5397,9 +5410,26 @@
                 mTaskSupervisor.mNoAnimActivities.add(topActivity);
             }
             super.setWindowingMode(windowingMode);
-            // setWindowingMode triggers an onConfigurationChanged cascade which can result in a
-            // different resolved windowing mode (usually when preferredWindowingMode is UNDEFINED).
-            windowingMode = getWindowingMode();
+
+            // Try reparent pinned activity back to its original task after onConfigurationChanged
+            // cascade finishes. This is done on Task level instead of
+            // {@link ActivityRecord#onConfigurationChanged(Configuration)} since when we exit PiP,
+            // we set final windowing mode on the ActivityRecord first and then on its Task when
+            // the exit PiP transition finishes. Meanwhile, the exit transition is always
+            // performed on its original task, reparent immediately in ActivityRecord breaks it.
+            if (currentMode == WINDOWING_MODE_PINNED) {
+                if (topActivity != null && topActivity.getLastParentBeforePip() != null) {
+                    // Do not reparent if the pinned task is in removal, indicated by the
+                    // force hidden flag.
+                    if (!isForceHidden()) {
+                        final Task lastParentBeforePip = topActivity.getLastParentBeforePip();
+                        topActivity.reparent(lastParentBeforePip,
+                                lastParentBeforePip.getChildCount() /* top */,
+                                "movePinnedActivityToOriginalTask");
+                        lastParentBeforePip.moveToFront("movePinnedActivityToOriginalTask");
+                    }
+                }
+            }
 
             if (creating) {
                 // Nothing else to do if we don't have a window container yet. E.g. call from ctor.
@@ -6279,6 +6309,8 @@
         // Launching this app's activity, make sure the app is no longer
         // considered stopped.
         try {
+            mTaskSupervisor.getActivityMetricsLogger()
+                    .notifyBeforePackageUnstopped(next.packageName);
             mAtmService.getPackageManager().setPackageStoppedState(
                     next.packageName, false, next.mUserId); /* TODO: Verify if correct userid */
         } catch (RemoteException e1) {
@@ -7530,7 +7562,11 @@
             final Task task = getBottomMostTask();
             setWindowingMode(WINDOWING_MODE_UNDEFINED);
 
-            getDisplayArea().positionChildAt(POSITION_TOP, this, false /* includingParents */);
+            // Task could have been removed from the hierarchy due to windowing mode change
+            // where its only child is reparented back to their original parent task.
+            if (isAttached()) {
+                getDisplayArea().positionChildAt(POSITION_TOP, this, false /* includingParents */);
+            }
 
             mTaskSupervisor.scheduleUpdatePictureInPictureModeIfNeeded(task, this);
         });
@@ -7831,6 +7867,7 @@
 
         proto.write(CREATED_BY_ORGANIZER, mCreatedByOrganizer);
         proto.write(AFFINITY, affinity);
+        proto.write(HAS_CHILD_PIP_ACTIVITY, mChildPipActivity != null);
 
         proto.end(token);
     }
diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
index dff621c..625cff3 100644
--- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
+++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
@@ -439,6 +439,13 @@
             taskDisplayArea = mSupervisor.mRootWindowContainer.getDefaultTaskDisplayArea();
         }
 
+        // Re-route to default display if the home activity doesn't support multi-display
+        if (taskDisplayArea != null && activityRecord.isActivityTypeHome()
+                && !mSupervisor.mRootWindowContainer.canStartHomeOnDisplayArea(activityRecord.info,
+                        taskDisplayArea, false /* allowInstrumenting */)) {
+            taskDisplayArea = mSupervisor.mRootWindowContainer.getDefaultTaskDisplayArea();
+        }
+
         return (taskDisplayArea != null)
                 ? taskDisplayArea
                 : getFallbackDisplayAreaForActivity(activityRecord, request);
diff --git a/services/core/java/com/android/server/wm/TaskOrganizerController.java b/services/core/java/com/android/server/wm/TaskOrganizerController.java
index 565804f..ccc0916 100644
--- a/services/core/java/com/android/server/wm/TaskOrganizerController.java
+++ b/services/core/java/com/android/server/wm/TaskOrganizerController.java
@@ -43,6 +43,7 @@
 import android.window.ITaskOrganizerController;
 import android.window.StartingWindowInfo;
 import android.window.TaskAppearedInfo;
+import android.window.TaskSnapshot;
 import android.window.WindowContainerToken;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -118,25 +119,25 @@
             return mTaskOrganizer.asBinder();
         }
 
-        void addStartingWindow(Task task, IBinder appToken, int launchTheme) {
+        void addStartingWindow(Task task, IBinder appToken, int launchTheme,
+                TaskSnapshot taskSnapshot) {
             final StartingWindowInfo info = task.getStartingWindowInfo();
             if (launchTheme != 0) {
                 info.splashScreenThemeResId = launchTheme;
             }
-            mDeferTaskOrgCallbacksConsumer.accept(() -> {
-                try {
-                    mTaskOrganizer.addStartingWindow(info, appToken);
-                } catch (RemoteException e) {
-                    Slog.e(TAG, "Exception sending onTaskStart callback", e);
-                }
-            });
+            info.mTaskSnapshot = taskSnapshot;
+            // make this happen prior than prepare surface
+            try {
+                mTaskOrganizer.addStartingWindow(info, appToken);
+            } catch (RemoteException e) {
+                Slog.e(TAG, "Exception sending onTaskStart callback", e);
+            }
         }
 
         void removeStartingWindow(Task task, boolean prepareAnimation) {
-            mDeferTaskOrgCallbacksConsumer.accept(() -> {
-                SurfaceControl firstWindowLeash = null;
-                Rect mainFrame = null;
-                // TODO enable shift up animation once we fix flicker test
+            SurfaceControl firstWindowLeash = null;
+            Rect mainFrame = null;
+            // TODO enable shift up animation once we fix flicker test
 //                final boolean playShiftUpAnimation = !task.inMultiWindowMode();
 //                if (prepareAnimation && playShiftUpAnimation) {
 //                    final ActivityRecord topActivity = task.topActivityWithStartingWindow();
@@ -144,32 +145,29 @@
 //                        final WindowState mainWindow =
 //                                topActivity.findMainWindow(false/* includeStartingApp */);
 //                        if (mainWindow != null) {
-                // TODO create proper leash instead of the copied SC
+            // TODO create proper leash instead of the copied SC
 //                            firstWindowLeash = new SurfaceControl(mainWindow.getSurfaceControl(),
 //                                    "TaskOrganizerController.removeStartingWindow");
 //                            mainFrame = mainWindow.getRelativeFrame();
 //                        }
 //                    }
 //                }
-                try {
-                    mTaskOrganizer.removeStartingWindow(task.mTaskId, firstWindowLeash, mainFrame,
-                    /* TODO(183004107) Revert this when jankiness is solved
-                        prepareAnimation); */ false);
+            try {
+                mTaskOrganizer.removeStartingWindow(task.mTaskId, firstWindowLeash, mainFrame,
+                /* TODO(183004107) Revert this when jankiness is solved
+                    prepareAnimation); */ false);
 
-                } catch (RemoteException e) {
-                    Slog.e(TAG, "Exception sending onStartTaskFinished callback", e);
-                }
-            });
+            } catch (RemoteException e) {
+                Slog.e(TAG, "Exception sending onStartTaskFinished callback", e);
+            }
         }
 
         void copySplashScreenView(Task task) {
-            mDeferTaskOrgCallbacksConsumer.accept(() -> {
-                try {
-                    mTaskOrganizer.copySplashScreenView(task.mTaskId);
-                } catch (RemoteException e) {
-                    Slog.e(TAG, "Exception sending copyStartingWindowView callback", e);
-                }
-            });
+            try {
+                mTaskOrganizer.copySplashScreenView(task.mTaskId);
+            } catch (RemoteException e) {
+                Slog.e(TAG, "Exception sending copyStartingWindowView callback", e);
+            }
         }
 
         SurfaceControl prepareLeash(Task task, boolean visible, String reason) {
@@ -266,8 +264,9 @@
             mUid = uid;
         }
 
-        void addStartingWindow(Task t, IBinder appToken, int launchTheme) {
-            mOrganizer.addStartingWindow(t, appToken, launchTheme);
+        void addStartingWindow(Task t, IBinder appToken, int launchTheme,
+                TaskSnapshot taskSnapshot) {
+            mOrganizer.addStartingWindow(t, appToken, launchTheme, taskSnapshot);
         }
 
         void removeStartingWindow(Task t, boolean prepareAnimation) {
@@ -505,14 +504,15 @@
         return !ArrayUtils.contains(UNSUPPORTED_WINDOWING_MODES, winMode);
     }
 
-    boolean addStartingWindow(Task task, IBinder appToken, int launchTheme) {
+    boolean addStartingWindow(Task task, IBinder appToken, int launchTheme,
+            TaskSnapshot taskSnapshot) {
         final Task rootTask = task.getRootTask();
         if (rootTask == null || rootTask.mTaskOrganizer == null) {
             return false;
         }
         final TaskOrganizerState state =
                 mTaskOrganizerStates.get(rootTask.mTaskOrganizer.asBinder());
-        state.addStartingWindow(task, appToken, launchTheme);
+        state.addStartingWindow(task, appToken, launchTheme, taskSnapshot);
         return true;
     }
 
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java
index a467d82..d49b6a0 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotController.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java
@@ -486,7 +486,7 @@
         return builder.build();
     }
 
-    private boolean shouldDisableSnapshots() {
+    boolean shouldDisableSnapshots() {
         return mIsRunningOnWear || mIsRunningOnTv || mIsRunningOnIoT;
     }
 
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index 191c3a11..bea733b 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -1257,7 +1257,14 @@
         mOrientation = orientation;
         final WindowContainer parent = getParent();
         if (parent != null) {
-            if (getConfiguration().orientation != getRequestedConfigurationOrientation()) {
+            if (getConfiguration().orientation != getRequestedConfigurationOrientation()
+                    // Update configuration directly only if the change won't be dispatched from
+                    // ancestor. This prevents from computing intermediate configuration when the
+                    // parent also needs to be updated from the ancestor. E.g. the app requests
+                    // portrait but the task is still in landscape. While updating from display,
+                    // the task can be updated to portrait first so the configuration can be
+                    // computed in a consistent environment.
+                    && (inMultiWindowMode() || !handlesOrientationChangeFromDescendant())) {
                 // Resolve the requested orientation.
                 onConfigurationChanged(parent.getConfiguration());
             }
diff --git a/services/core/java/com/android/server/wm/WindowContextListenerController.java b/services/core/java/com/android/server/wm/WindowContextListenerController.java
index 5e75996..b417832 100644
--- a/services/core/java/com/android/server/wm/WindowContextListenerController.java
+++ b/services/core/java/com/android/server/wm/WindowContextListenerController.java
@@ -231,7 +231,7 @@
         }
 
         @Override
-        public void onRequestedOverrideConfigurationChanged(Configuration overrideConfiguration) {
+        public void onMergedOverrideConfigurationChanged(Configuration mergedOverrideConfig) {
             reportConfigToWindowTokenClient();
         }
 
@@ -271,6 +271,21 @@
             if (mDeathRecipient == null) {
                 throw new IllegalStateException("Invalid client token: " + mClientToken);
             }
+            final WindowToken windowToken = mContainer.asWindowToken();
+            if (windowToken != null && windowToken.isFromClient()) {
+                // If the WindowContext created WindowToken is removed by
+                // WMS#postWindowRemoveCleanupLocked, the WindowContext should switch back to
+                // listen to previous associated DisplayArea.
+                final DisplayContent dc = windowToken.mWmService.mRoot
+                        .getDisplayContent(mLastReportedDisplay);
+                // If we cannot obtain the DisplayContent, the DisplayContent may also be removed.
+                // We should proceed the removal process.
+                if (dc != null) {
+                    final DisplayArea da = dc.findAreaForToken(windowToken);
+                    updateContainer(da);
+                    return;
+                }
+            }
             mDeathRecipient.unlinkToDeath();
             IWindowToken windowTokenClient = IWindowToken.Stub.asInterface(mClientToken);
             try {
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index c80a38f..2707b4d 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -159,7 +159,6 @@
 import android.content.res.TypedArray;
 import android.database.ContentObserver;
 import android.graphics.Bitmap;
-import android.graphics.Color;
 import android.graphics.Insets;
 import android.graphics.Matrix;
 import android.graphics.Point;
@@ -977,52 +976,7 @@
     private boolean mAnimationsDisabled = false;
     boolean mPointerLocationEnabled = false;
 
-    /**
-     * Override of aspect ratio for fixed orientation letterboxing that is set via ADB with
-     * set-fixed-orientation-letterbox-aspect-ratio or via {@link
-     * com.android.internal.R.dimen.config_fixedOrientationLetterboxAspectRatio} will be ignored
-     * if it is <= this value.
-     */
-    static final float MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO = 1.0f;
-
-    /** Enum for Letterbox background type. */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef({LETTERBOX_BACKGROUND_SOLID_COLOR, LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND,
-            LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING, LETTERBOX_BACKGROUND_WALLPAPER})
-    @interface LetterboxBackgroundType {};
-    /** Solid background using color specified in R.color.config_letterboxBackgroundColor. */
-    static final int LETTERBOX_BACKGROUND_SOLID_COLOR = 0;
-
-    /** Color specified in R.attr.colorBackground for the letterboxed application. */
-    static final int LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND = 1;
-
-    /** Color specified in R.attr.colorBackgroundFloating for the letterboxed application. */
-    static final int LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING = 2;
-
-    /** Using wallpaper as a background which can be blurred or dimmed with dark scrim. */
-    static final int LETTERBOX_BACKGROUND_WALLPAPER = 3;
-
-    // Aspect ratio of letterbox for fixed orientation, values <=
-    // MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO will be ignored.
-    private float mFixedOrientationLetterboxAspectRatio;
-
-    // Corners radius for activities presented in the letterbox mode, values < 0 will be ignored.
-    private int mLetterboxActivityCornersRadius;
-
-    // Color for {@link #LETTERBOX_BACKGROUND_SOLID_COLOR} letterbox background type.
-    private Color mLetterboxBackgroundColor;
-
-    @LetterboxBackgroundType
-    private int mLetterboxBackgroundType;
-
-    // Blur radius for LETTERBOX_BACKGROUND_WALLPAPER option in mLetterboxBackgroundType.
-    // Values <= 0 are ignored and 0 is used instead.
-    private int mLetterboxBackgroundWallpaperBlurRadius;
-
-    // Alpha of a black scrim shown over wallpaper letterbox background when
-    // LETTERBOX_BACKGROUND_WALLPAPER option is selected for mLetterboxBackgroundType.
-    // Values < 0 or >= 1 are ignored and 0.0 (transparent) is used instead.
-    private float mLetterboxBackgroundWallpaperDarkScrimAlpha;
+    final LetterboxConfiguration mLetterboxConfiguration;
 
     final InputManagerService mInputManager;
     final DisplayManagerInternal mDisplayManagerInternal;
@@ -1254,17 +1208,7 @@
         mAssistantOnTopOfDream = context.getResources().getBoolean(
                 com.android.internal.R.bool.config_assistantOnTopOfDream);
 
-        mFixedOrientationLetterboxAspectRatio = context.getResources().getFloat(
-                com.android.internal.R.dimen.config_fixedOrientationLetterboxAspectRatio);
-        mLetterboxActivityCornersRadius = context.getResources().getInteger(
-                com.android.internal.R.integer.config_letterboxActivityCornersRadius);
-        mLetterboxBackgroundColor = Color.valueOf(context.getResources().getColor(
-                com.android.internal.R.color.config_letterboxBackgroundColor));
-        mLetterboxBackgroundType = readLetterboxBackgroundTypeFromConfig(context);
-        mLetterboxBackgroundWallpaperBlurRadius = context.getResources().getDimensionPixelSize(
-                com.android.internal.R.dimen.config_letterboxBackgroundWallpaperBlurRadius);
-        mLetterboxBackgroundWallpaperDarkScrimAlpha = context.getResources().getFloat(
-                com.android.internal.R.dimen.config_letterboxBackgroundWallaperDarkScrimAlpha);
+        mLetterboxConfiguration = new LetterboxConfiguration(context);
 
         mInputManager = inputManager; // Must be before createDisplayContentLocked.
         mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class);
@@ -1599,13 +1543,20 @@
                     final IBinder binder = attrs.token != null ? attrs.token : windowContextToken;
                     final Bundle options = mWindowContextListenerController
                             .getOptions(windowContextToken);
-                    token = new WindowToken(this, binder, type, false /* persistOnEmpty */,
-                            displayContent, session.mCanAddInternalSystemWindow,
-                            isRoundedCornerOverlay, true /* fromClientToken */, options);
+                    token = new WindowToken.Builder(this, binder, type)
+                            .setDisplayContent(displayContent)
+                            .setOwnerCanManageAppTokens(session.mCanAddInternalSystemWindow)
+                            .setRoundedCornerOverlay(isRoundedCornerOverlay)
+                            .setFromClientToken(true)
+                            .setOptions(options)
+                            .build();
                 } else {
                     final IBinder binder = attrs.token != null ? attrs.token : client.asBinder();
-                    token = new WindowToken(this, binder, type, false, displayContent,
-                            session.mCanAddInternalSystemWindow, isRoundedCornerOverlay);
+                    token = new WindowToken.Builder(this, binder, type)
+                            .setDisplayContent(displayContent)
+                            .setOwnerCanManageAppTokens(session.mCanAddInternalSystemWindow)
+                            .setRoundedCornerOverlay(isRoundedCornerOverlay)
+                            .build();
                 }
             } else if (rootType >= FIRST_APPLICATION_WINDOW
                     && rootType <= LAST_APPLICATION_WINDOW) {
@@ -1676,8 +1627,10 @@
                 // It is not valid to use an app token with other system types; we will
                 // instead make a new token for it (as if null had been passed in for the token).
                 attrs.token = null;
-                token = new WindowToken(this, client.asBinder(), type, false /* persistOnEmpty */,
-                        displayContent, session.mCanAddInternalSystemWindow);
+                token = new WindowToken.Builder(this, client.asBinder(), type)
+                        .setDisplayContent(displayContent)
+                        .setOwnerCanManageAppTokens(session.mCanAddInternalSystemWindow)
+                        .build();
             }
 
             final WindowState win = new WindowState(this, session, client, token, parentWindow,
@@ -2703,9 +2656,12 @@
                 new WallpaperWindowToken(this, binder, true, dc,
                         true /* ownerCanManageAppTokens */, options);
             } else {
-                new WindowToken(this, binder, type, true /* persistOnEmpty */, dc,
-                        true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
-                        false /* fromClientToken */, options);
+                new WindowToken.Builder(this, binder, type)
+                        .setDisplayContent(dc)
+                        .setPersistOnEmpty(true)
+                        .setOwnerCanManageAppTokens(true)
+                        .setOptions(options)
+                        .build();
             }
         }
     }
@@ -3863,201 +3819,6 @@
         }
     }
 
-    /**
-     * Overrides the aspect ratio of letterbox for fixed orientation. If given value is <= {@link
-     * #MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO}, both it and a value of {@link
-     * com.android.internal.R.dimen.config_fixedOrientationLetterboxAspectRatio} will be ignored and
-     * the framework implementation will be used to determine the aspect ratio.
-     */
-    void setFixedOrientationLetterboxAspectRatio(float aspectRatio) {
-        mFixedOrientationLetterboxAspectRatio = aspectRatio;
-    }
-
-    /**
-     * Resets the aspect ratio of letterbox for fixed orientation to {@link
-     * com.android.internal.R.dimen.config_fixedOrientationLetterboxAspectRatio}.
-     */
-    void resetFixedOrientationLetterboxAspectRatio() {
-        mFixedOrientationLetterboxAspectRatio = mContext.getResources().getFloat(
-                com.android.internal.R.dimen.config_fixedOrientationLetterboxAspectRatio);
-    }
-
-    /**
-     * Gets the aspect ratio of letterbox for fixed orientation.
-     */
-    float getFixedOrientationLetterboxAspectRatio() {
-        return mFixedOrientationLetterboxAspectRatio;
-    }
-
-    /**
-     * Overrides corners raidus for activities presented in the letterbox mode. If given value < 0,
-     * both it and a value of {@link
-     * com.android.internal.R.integer.config_letterboxActivityCornersRadius} will be ignored and
-     * and corners of the activity won't be rounded.
-     */
-    void setLetterboxActivityCornersRadius(int cornersRadius) {
-        mLetterboxActivityCornersRadius = cornersRadius;
-    }
-
-    /**
-     * Resets corners raidus for activities presented in the letterbox mode to {@link
-     * com.android.internal.R.integer.config_letterboxActivityCornersRadius}.
-     */
-    void resetLetterboxActivityCornersRadius() {
-        mLetterboxActivityCornersRadius = mContext.getResources().getInteger(
-                com.android.internal.R.integer.config_letterboxActivityCornersRadius);
-    }
-
-    /**
-     * Whether corners of letterboxed activities are rounded.
-     */
-    boolean isLetterboxActivityCornersRounded() {
-        return getLetterboxActivityCornersRadius() > 0;
-    }
-
-    /**
-     * Gets corners raidus for activities presented in the letterbox mode.
-     */
-    int getLetterboxActivityCornersRadius() {
-        return mLetterboxActivityCornersRadius;
-    }
-
-    /**
-     * Gets color of letterbox background which is  used when {@link
-     * #getLetterboxBackgroundType()} is {@link #LETTERBOX_BACKGROUND_SOLID_COLOR} or as
-     * fallback for other backfround types.
-     */
-    Color getLetterboxBackgroundColor() {
-        return mLetterboxBackgroundColor;
-    }
-
-
-    /**
-     * Sets color of letterbox background which is used when {@link
-     * #getLetterboxBackgroundType()} is {@link #LETTERBOX_BACKGROUND_SOLID_COLOR} or as
-     * fallback for other backfround types.
-     */
-    void setLetterboxBackgroundColor(Color color) {
-        mLetterboxBackgroundColor = color;
-    }
-
-    /**
-     * Resets color of letterbox background to {@link
-     * com.android.internal.R.color.config_letterboxBackgroundColor}.
-     */
-    void resetLetterboxBackgroundColor() {
-        mLetterboxBackgroundColor = Color.valueOf(mContext.getResources().getColor(
-                com.android.internal.R.color.config_letterboxBackgroundColor));
-    }
-
-    /**
-     * Gets {@link LetterboxBackgroundType} specified in {@link
-     * com.android.internal.R.integer.config_letterboxBackgroundType} or over via ADB command.
-     */
-    @LetterboxBackgroundType
-    int getLetterboxBackgroundType() {
-        return mLetterboxBackgroundType;
-    }
-
-    /** Sets letterbox background type. */
-    void setLetterboxBackgroundType(@LetterboxBackgroundType int backgroundType) {
-        mLetterboxBackgroundType = backgroundType;
-    }
-
-    /**
-     * Resets cletterbox background type to {@link
-     * com.android.internal.R.integer.config_letterboxBackgroundType}.
-     */
-    void resetLetterboxBackgroundType() {
-        mLetterboxBackgroundType = readLetterboxBackgroundTypeFromConfig(mContext);
-    }
-
-    @LetterboxBackgroundType
-    private static int readLetterboxBackgroundTypeFromConfig(Context context) {
-        int backgroundType = context.getResources().getInteger(
-                com.android.internal.R.integer.config_letterboxBackgroundType);
-        return backgroundType == LETTERBOX_BACKGROUND_SOLID_COLOR
-                    || backgroundType == LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND
-                    || backgroundType == LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING
-                    || backgroundType == LETTERBOX_BACKGROUND_WALLPAPER
-                    ? backgroundType : LETTERBOX_BACKGROUND_SOLID_COLOR;
-    }
-
-    /** Returns a string representing the given {@link LetterboxBackgroundType}. */
-    static String letterboxBackgroundTypeToString(
-            @LetterboxBackgroundType int backgroundType) {
-        switch (backgroundType) {
-            case LETTERBOX_BACKGROUND_SOLID_COLOR:
-                return "LETTERBOX_BACKGROUND_SOLID_COLOR";
-            case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND:
-                return "LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND";
-            case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING:
-                return "LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING";
-            case LETTERBOX_BACKGROUND_WALLPAPER:
-                return "LETTERBOX_BACKGROUND_WALLPAPER";
-            default:
-                return "unknown=" + backgroundType;
-        }
-    }
-
-    /**
-     * Overrides alpha of a black scrim shown over wallpaper for {@link
-     * #LETTERBOX_BACKGROUND_WALLPAPER} option in {@link mLetterboxBackgroundType}.
-     *
-     * <p>If given value is < 0 or >= 1, both it and a value of {@link
-     * com.android.internal.R.dimen.config_letterboxBackgroundWallaperDarkScrimAlpha} are ignored
-     * and 0.0 (transparent) is instead.
-     */
-    void setLetterboxBackgroundWallpaperDarkScrimAlpha(float alpha) {
-        mLetterboxBackgroundWallpaperDarkScrimAlpha = alpha;
-    }
-
-    /**
-     * Resets alpha of a black scrim shown over wallpaper letterbox background to {@link
-     * com.android.internal.R.dimen.config_letterboxBackgroundWallaperDarkScrimAlpha}.
-     */
-    void resetLetterboxBackgroundWallpaperDarkScrimAlpha() {
-        mLetterboxBackgroundWallpaperDarkScrimAlpha = mContext.getResources().getFloat(
-                com.android.internal.R.dimen.config_letterboxBackgroundWallaperDarkScrimAlpha);
-    }
-
-    /**
-     * Gets alpha of a black scrim shown over wallpaper letterbox background.
-     */
-    float getLetterboxBackgroundWallpaperDarkScrimAlpha() {
-        return mLetterboxBackgroundWallpaperDarkScrimAlpha;
-    }
-
-    /**
-     * Overrides blur radius for {@link #LETTERBOX_BACKGROUND_WALLPAPER} option in
-     * {@link mLetterboxBackgroundType}.
-     *
-     * <p> If given value <= 0, both it and a value of {@link
-     * com.android.internal.R.dimen.config_letterboxBackgroundWallpaperBlurRadius} are ignored
-     * and 0 is used instead.
-     */
-    void setLetterboxBackgroundWallpaperBlurRadius(int radius) {
-        mLetterboxBackgroundWallpaperBlurRadius = radius;
-    }
-
-    /**
-     * Resets blur raidus for {@link #LETTERBOX_BACKGROUND_WALLPAPER} option in {@link
-     * mLetterboxBackgroundType} to {@link
-     * com.android.internal.R.dimen.config_letterboxBackgroundWallpaperBlurRadius}.
-     */
-    void resetLetterboxBackgroundWallpaperBlurRadius() {
-        mLetterboxBackgroundWallpaperBlurRadius = mContext.getResources().getDimensionPixelSize(
-                com.android.internal.R.dimen.config_letterboxBackgroundWallpaperBlurRadius);
-    }
-
-    /**
-     * Gets blur raidus for {@link #LETTERBOX_BACKGROUND_WALLPAPER} option in {@link
-     * mLetterboxBackgroundType}.
-     */
-    int getLetterboxBackgroundWallpaperBlurRadius() {
-        return mLetterboxBackgroundWallpaperBlurRadius;
-    }
-
     @Override
     public void setIgnoreOrientationRequest(int displayId, boolean ignoreOrientationRequest) {
         if (!checkCallingPermission(
@@ -8749,6 +8510,13 @@
         mDisplayHashController.setDisplayHashThrottlingEnabled(enable);
     }
 
+    @Override
+    public boolean isTaskSnapshotSupported() {
+        synchronized (mGlobalLock) {
+            return !mTaskSnapshotController.shouldDisableSnapshots();
+        }
+    }
+
     void generateDisplayHash(Session session, IWindow window, Rect boundsInWindow,
             String hashAlgorithm, RemoteCallback callback) {
         final SurfaceControl displaySurfaceControl;
diff --git a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
index 5942f34..1b578d1 100644
--- a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
+++ b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
@@ -19,10 +19,10 @@
 import static android.os.Build.IS_USER;
 import static android.view.CrossWindowBlurListeners.CROSS_WINDOW_BLUR_SUPPORTED;
 
-import static com.android.server.wm.WindowManagerService.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
-import static com.android.server.wm.WindowManagerService.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
-import static com.android.server.wm.WindowManagerService.LETTERBOX_BACKGROUND_SOLID_COLOR;
-import static com.android.server.wm.WindowManagerService.LETTERBOX_BACKGROUND_WALLPAPER;
+import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
+import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
+import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_SOLID_COLOR;
+import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_WALLPAPER;
 
 import android.graphics.Color;
 import android.graphics.Point;
@@ -41,7 +41,7 @@
 import com.android.internal.protolog.ProtoLogImpl;
 import com.android.server.LocalServices;
 import com.android.server.statusbar.StatusBarManagerInternal;
-import com.android.server.wm.WindowManagerService.LetterboxBackgroundType;
+import com.android.server.wm.LetterboxConfiguration.LetterboxBackgroundType;
 
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -64,10 +64,12 @@
 
     // Internal service impl -- must perform security checks before touching.
     private final WindowManagerService mInternal;
+    private final LetterboxConfiguration mLetterboxConfiguration;
 
     public WindowManagerShellCommand(WindowManagerService service) {
         mInterface = service;
         mInternal = service;
+        mLetterboxConfiguration = service.mLetterboxConfiguration;
     }
 
     @Override
@@ -119,30 +121,12 @@
                     return runGetIgnoreOrientationRequest(pw);
                 case "dump-visible-window-views":
                     return runDumpVisibleWindowViews(pw);
-                case "set-fixed-orientation-letterbox-aspect-ratio":
-                    return runSetFixedOrientationLetterboxAspectRatio(pw);
-                case "get-fixed-orientation-letterbox-aspect-ratio":
-                    return runGetFixedOrientationLetterboxAspectRatio(pw);
-                case "set-letterbox-activity-corners-radius":
-                    return runSetLetterboxActivityCornersRadius(pw);
-                case "get-letterbox-activity-corners-radius":
-                    return runGetLetterboxActivityCornersRadius(pw);
-                case "set-letterbox-background-type":
-                    return runSetLetterboxBackgroundType(pw);
-                case "get-letterbox-background-type":
-                    return runGetLetterboxBackgroundType(pw);
-                case "set-letterbox-background-color":
-                    return runSetLetterboxBackgroundColor(pw);
-                case "get-letterbox-background-color":
-                    return runGetLetterboxBackgroundColor(pw);
-                case "set-letterbox-background-wallpaper-blur-radius":
-                    return runSetLetterboxBackgroundWallpaperBlurRadius(pw);
-                case "get-letterbox-background-wallpaper-blur-radius":
-                    return runGetLetterboxBackgroundWallpaperBlurRadius(pw);
-                case "set-letterbox-background-wallpaper-dark-scrim-alpha":
-                    return runSetLetterboxBackgroundWallpaperDarkScrimAlpha(pw);
-                case "get-letterbox-background-wallpaper-dark-scrim-alpha":
-                    return runGetLetterboxBackgroundWallpaperDarkScrimAlpha(pw);
+                case "set-letterbox-style":
+                    return runSetLetterboxStyle(pw);
+                case "get-letterbox-style":
+                    return runGetLetterboxStyle(pw);
+                case "reset-letterbox-style":
+                    return runResetLetterboxStyle(pw);
                 case "set-sandbox-display-apis":
                     return runSandboxDisplayApis(pw);
                 case "reset":
@@ -607,12 +591,6 @@
         final float aspectRatio;
         try {
             String arg = getNextArgRequired();
-            if ("reset".equals(arg)) {
-                synchronized (mInternal.mGlobalLock) {
-                    mInternal.resetFixedOrientationLetterboxAspectRatio();
-                }
-                return 0;
-            }
             aspectRatio = Float.parseFloat(arg);
         } catch (NumberFormatException  e) {
             getErrPrintWriter().println("Error: bad aspect ratio format " + e);
@@ -623,19 +601,7 @@
             return -1;
         }
         synchronized (mInternal.mGlobalLock) {
-            mInternal.setFixedOrientationLetterboxAspectRatio(aspectRatio);
-        }
-        return 0;
-    }
-
-    private int runGetFixedOrientationLetterboxAspectRatio(PrintWriter pw) throws RemoteException {
-        synchronized (mInternal.mGlobalLock) {
-            final float aspectRatio = mInternal.getFixedOrientationLetterboxAspectRatio();
-            if (aspectRatio <= WindowManagerService.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO) {
-                pw.println("Letterbox aspect ratio is not set");
-            } else {
-                pw.println("Letterbox aspect ratio is " + aspectRatio);
-            }
+            mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(aspectRatio);
         }
         return 0;
     }
@@ -644,12 +610,6 @@
         final int cornersRadius;
         try {
             String arg = getNextArgRequired();
-            if ("reset".equals(arg)) {
-                synchronized (mInternal.mGlobalLock) {
-                    mInternal.resetLetterboxActivityCornersRadius();
-                }
-                return 0;
-            }
             cornersRadius = Integer.parseInt(arg);
         } catch (NumberFormatException  e) {
             getErrPrintWriter().println("Error: bad corners radius format " + e);
@@ -660,110 +620,59 @@
             return -1;
         }
         synchronized (mInternal.mGlobalLock) {
-            mInternal.setLetterboxActivityCornersRadius(cornersRadius);
-        }
-        return 0;
-    }
-
-    private int runGetLetterboxActivityCornersRadius(PrintWriter pw) throws RemoteException {
-        synchronized (mInternal.mGlobalLock) {
-            final int cornersRadius = mInternal.getLetterboxActivityCornersRadius();
-            if (cornersRadius < 0) {
-                pw.println("Letterbox corners radius is not set");
-            } else {
-                pw.println("Letterbox corners radius is " + cornersRadius);
-            }
+            mLetterboxConfiguration.setLetterboxActivityCornersRadius(cornersRadius);
         }
         return 0;
     }
 
     private int runSetLetterboxBackgroundType(PrintWriter pw) throws RemoteException {
         @LetterboxBackgroundType final int backgroundType;
-
-        String arg = getNextArgRequired();
-        if ("reset".equals(arg)) {
-            synchronized (mInternal.mGlobalLock) {
-                mInternal.resetLetterboxBackgroundType();
-            }
-            return 0;
-        }
-        switch (arg) {
-            case "solid_color":
-                backgroundType = LETTERBOX_BACKGROUND_SOLID_COLOR;
-                break;
-            case "app_color_background":
-                backgroundType = LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
-                break;
-            case "app_color_background_floating":
-                backgroundType = LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
-                break;
-            case "wallpaper":
-                backgroundType = LETTERBOX_BACKGROUND_WALLPAPER;
-                break;
-            default:
-                getErrPrintWriter().println(
-                        "Error: 'reset', 'solid_color', 'app_color_background' or "
-                        + "'wallpaper' should be provided as an argument");
-                return -1;
-        }
-        synchronized (mInternal.mGlobalLock) {
-            mInternal.setLetterboxBackgroundType(backgroundType);
-        }
-        return 0;
-    }
-
-    private int runGetLetterboxBackgroundType(PrintWriter pw) throws RemoteException {
-        synchronized (mInternal.mGlobalLock) {
-            @LetterboxBackgroundType final int backgroundType =
-                    mInternal.getLetterboxBackgroundType();
-            switch (backgroundType) {
-                case LETTERBOX_BACKGROUND_SOLID_COLOR:
-                    pw.println("Letterbox background type is 'solid_color'");
+        try {
+            String arg = getNextArgRequired();
+            switch (arg) {
+                case "solid_color":
+                    backgroundType = LETTERBOX_BACKGROUND_SOLID_COLOR;
                     break;
-                case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND:
-                    pw.println("Letterbox background type is 'app_color_background'");
+                case "app_color_background":
+                    backgroundType = LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
                     break;
-                case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING:
-                    pw.println("Letterbox background type is 'app_color_background_floating'");
+                case "app_color_background_floating":
+                    backgroundType = LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
                     break;
-                case LETTERBOX_BACKGROUND_WALLPAPER:
-                    pw.println("Letterbox background type is 'wallpaper'");
+                case "wallpaper":
+                    backgroundType = LETTERBOX_BACKGROUND_WALLPAPER;
                     break;
                 default:
-                    throw new AssertionError(
-                            "Unexpected letterbox background type: " + backgroundType);
+                    getErrPrintWriter().println(
+                            "Error: 'reset', 'solid_color', 'app_color_background' or "
+                            + "'wallpaper' should be provided as an argument");
+                    return -1;
             }
+        } catch (IllegalArgumentException  e) {
+            getErrPrintWriter().println(
+                    "Error: 'reset', 'solid_color', 'app_color_background' or "
+                        + "'wallpaper' should be provided as an argument" + e);
+            return -1;
+        }
+        synchronized (mInternal.mGlobalLock) {
+            mLetterboxConfiguration.setLetterboxBackgroundType(backgroundType);
         }
         return 0;
     }
 
     private int runSetLetterboxBackgroundColor(PrintWriter pw) throws RemoteException {
         final Color color;
-        String arg = getNextArgRequired();
         try {
-            if ("reset".equals(arg)) {
-                synchronized (mInternal.mGlobalLock) {
-                    mInternal.resetLetterboxBackgroundColor();
-                }
-                return 0;
-            }
+            String arg = getNextArgRequired();
             color = Color.valueOf(Color.parseColor(arg));
         } catch (IllegalArgumentException  e) {
             getErrPrintWriter().println(
                     "Error: 'reset' or color in #RRGGBB format should be provided as "
-                            + "an argument " + e + " but got " + arg);
+                            + "an argument " + e);
             return -1;
         }
         synchronized (mInternal.mGlobalLock) {
-            mInternal.setLetterboxBackgroundColor(color);
-        }
-        return 0;
-    }
-
-    private int runGetLetterboxBackgroundColor(PrintWriter pw) throws RemoteException {
-        synchronized (mInternal.mGlobalLock) {
-            final Color color = mInternal.getLetterboxBackgroundColor();
-            pw.println("Letterbox background color is " + Integer.toHexString(color.toArgb()));
+            mLetterboxConfiguration.setLetterboxBackgroundColor(color);
         }
         return 0;
     }
@@ -773,12 +682,6 @@
         final int radius;
         try {
             String arg = getNextArgRequired();
-            if ("reset".equals(arg)) {
-                synchronized (mInternal.mGlobalLock) {
-                    mInternal.resetLetterboxBackgroundWallpaperBlurRadius();
-                }
-                return 0;
-            }
             radius = Integer.parseInt(arg);
         } catch (NumberFormatException  e) {
             getErrPrintWriter().println("Error: blur radius format " + e);
@@ -789,20 +692,7 @@
             return -1;
         }
         synchronized (mInternal.mGlobalLock) {
-            mInternal.setLetterboxBackgroundWallpaperBlurRadius(radius);
-        }
-        return 0;
-    }
-
-    private int runGetLetterboxBackgroundWallpaperBlurRadius(PrintWriter pw)
-            throws RemoteException {
-        synchronized (mInternal.mGlobalLock) {
-            final int radius = mInternal.getLetterboxBackgroundWallpaperBlurRadius();
-            if (radius <= 0) {
-                pw.println("Letterbox background wallpaper blur radius is not set");
-            } else {
-                pw.println("Letterbox background wallpaper blur radius is " + radius);
-            }
+            mLetterboxConfiguration.setLetterboxBackgroundWallpaperBlurRadius(radius);
         }
         return 0;
     }
@@ -812,12 +702,6 @@
         final float alpha;
         try {
             String arg = getNextArgRequired();
-            if ("reset".equals(arg)) {
-                synchronized (mInternal.mGlobalLock) {
-                    mInternal.resetLetterboxBackgroundWallpaperDarkScrimAlpha();
-                }
-                return 0;
-            }
             alpha = Float.parseFloat(arg);
         } catch (NumberFormatException  e) {
             getErrPrintWriter().println("Error: bad alpha format " + e);
@@ -828,24 +712,140 @@
             return -1;
         }
         synchronized (mInternal.mGlobalLock) {
-            mInternal.setLetterboxBackgroundWallpaperDarkScrimAlpha(alpha);
+            mLetterboxConfiguration.setLetterboxBackgroundWallpaperDarkScrimAlpha(alpha);
         }
         return 0;
     }
 
-    private int runGetLetterboxBackgroundWallpaperDarkScrimAlpha(PrintWriter pw)
-            throws RemoteException {
+    private int runSeLetterboxHorizontalPositionMultiplier(PrintWriter pw) throws RemoteException {
+        final float multiplier;
+        try {
+            String arg = getNextArgRequired();
+            multiplier = Float.parseFloat(arg);
+        } catch (NumberFormatException  e) {
+            getErrPrintWriter().println("Error: bad multiplier format " + e);
+            return -1;
+        } catch (IllegalArgumentException  e) {
+            getErrPrintWriter().println(
+                    "Error: 'reset' or multiplier should be provided as an argument " + e);
+            return -1;
+        }
         synchronized (mInternal.mGlobalLock) {
-            final float alpha = mInternal.getLetterboxBackgroundWallpaperDarkScrimAlpha();
-            if (alpha < 0 || alpha >= 1) {
-                pw.println("Letterbox dark scrim alpha is not set");
-            } else {
-                pw.println("Letterbox dark scrim alpha is " + alpha);
+            mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(multiplier);
+        }
+        return 0;
+    }
+
+    private int runSetLetterboxStyle(PrintWriter pw) throws RemoteException {
+        if (peekNextArg() == null) {
+            getErrPrintWriter().println("Error: No arguments provided.");
+        }
+        while (peekNextArg() != null) {
+            String arg = getNextArg();
+            switch (arg) {
+                case "--aspectRatio":
+                    runSetFixedOrientationLetterboxAspectRatio(pw);
+                    break;
+                case "--cornerRadius":
+                    runSetLetterboxActivityCornersRadius(pw);
+                    break;
+                case "--backgroundType":
+                    runSetLetterboxBackgroundType(pw);
+                    break;
+                case "--backgroundColor":
+                    runSetLetterboxBackgroundColor(pw);
+                    break;
+                case "--wallpaperBlurRadius":
+                    runSetLetterboxBackgroundWallpaperBlurRadius(pw);
+                    break;
+                case "--wallpaperDarkScrimAlpha":
+                    runSetLetterboxBackgroundWallpaperDarkScrimAlpha(pw);
+                    break;
+                case "--horizontalPositionMultiplier":
+                    runSeLetterboxHorizontalPositionMultiplier(pw);
+                    break;
+                default:
+                    getErrPrintWriter().println(
+                            "Error: Unrecognized letterbox style option: " + arg);
+                    return -1;
             }
         }
         return 0;
     }
 
+    private int runResetLetterboxStyle(PrintWriter pw) throws RemoteException {
+        if (peekNextArg() == null) {
+            resetLetterboxStyle();
+        }
+        synchronized (mInternal.mGlobalLock) {
+            while (peekNextArg() != null) {
+                String arg = getNextArg();
+                switch (arg) {
+                    case "aspectRatio":
+                        mLetterboxConfiguration.resetFixedOrientationLetterboxAspectRatio();
+                        break;
+                    case "cornerRadius":
+                        mLetterboxConfiguration.resetLetterboxActivityCornersRadius();
+                        break;
+                    case "backgroundType":
+                        mLetterboxConfiguration.resetLetterboxBackgroundType();
+                        break;
+                    case "backgroundColor":
+                        mLetterboxConfiguration.resetLetterboxBackgroundColor();
+                        break;
+                    case "wallpaperBlurRadius":
+                        mLetterboxConfiguration.resetLetterboxBackgroundWallpaperBlurRadius();
+                        break;
+                    case "wallpaperDarkScrimAlpha":
+                        mLetterboxConfiguration.resetLetterboxBackgroundWallpaperDarkScrimAlpha();
+                        break;
+                    case "horizontalPositionMultiplier":
+                        mLetterboxConfiguration.resetLetterboxHorizontalPositionMultiplier();
+                        break;
+                    default:
+                        getErrPrintWriter().println(
+                                "Error: Unrecognized letterbox style option: " + arg);
+                        return -1;
+                }
+            }
+        }
+        return 0;
+    }
+
+    private void resetLetterboxStyle() {
+        synchronized (mInternal.mGlobalLock) {
+            mLetterboxConfiguration.resetFixedOrientationLetterboxAspectRatio();
+            mLetterboxConfiguration.resetLetterboxActivityCornersRadius();
+            mLetterboxConfiguration.resetLetterboxBackgroundType();
+            mLetterboxConfiguration.resetLetterboxBackgroundColor();
+            mLetterboxConfiguration.resetLetterboxBackgroundWallpaperBlurRadius();
+            mLetterboxConfiguration.resetLetterboxBackgroundWallpaperDarkScrimAlpha();
+            mLetterboxConfiguration.resetLetterboxHorizontalPositionMultiplier();
+        }
+    }
+
+    private int runGetLetterboxStyle(PrintWriter pw) throws RemoteException {
+        synchronized (mInternal.mGlobalLock) {
+            pw.println("Corner radius: "
+                    + mLetterboxConfiguration.getLetterboxActivityCornersRadius());
+            pw.println("Horizontal position multiplier: "
+                    + mLetterboxConfiguration.getLetterboxHorizontalPositionMultiplier());
+            pw.println("Aspect ratio: "
+                    + mLetterboxConfiguration.getFixedOrientationLetterboxAspectRatio());
+
+            pw.println("Background type: "
+                    + LetterboxConfiguration.letterboxBackgroundTypeToString(
+                            mLetterboxConfiguration.getLetterboxBackgroundType()));
+            pw.println("    Background color: " + Integer.toHexString(
+                    mLetterboxConfiguration.getLetterboxBackgroundColor().toArgb()));
+            pw.println("    Wallpaper blur radius: "
+                    + mLetterboxConfiguration.getLetterboxBackgroundWallpaperBlurRadius());
+            pw.println("    Wallpaper dark scrim alpha: "
+                    + mLetterboxConfiguration.getLetterboxBackgroundWallpaperDarkScrimAlpha());
+        }
+        return 0;
+    }
+
     private int runReset(PrintWriter pw) throws RemoteException {
         int displayId = getDisplayId(getNextArg());
 
@@ -870,23 +870,8 @@
         // set-ignore-orientation-request
         mInterface.setIgnoreOrientationRequest(displayId, false /* ignoreOrientationRequest */);
 
-        // set-fixed-orientation-letterbox-aspect-ratio
-        mInternal.resetFixedOrientationLetterboxAspectRatio();
-
-        // set-letterbox-activity-corners-radius
-        mInternal.resetLetterboxActivityCornersRadius();
-
-        // set-letterbox-background-type
-        mInternal.resetLetterboxBackgroundType();
-
-        // set-letterbox-background-color
-        mInternal.resetLetterboxBackgroundColor();
-
-        // set-letterbox-background-wallpaper-blur-radius
-        mInternal.resetLetterboxBackgroundWallpaperBlurRadius();
-
-        // set-letterbox-background-wallpaper-dark-scrim-alpha
-        mInternal.resetLetterboxBackgroundWallpaperDarkScrimAlpha();
+        // set-letterbox-style
+        resetLetterboxStyle();
 
         // set-sandbox-display-apis
         mInternal.setSandboxDisplayApis(displayId, /* sandboxDisplayApis= */ true);
@@ -922,42 +907,13 @@
         pw.println("  set-ignore-orientation-request [-d DISPLAY_ID] [true|1|false|0]");
         pw.println("  get-ignore-orientation-request [-d DISPLAY_ID] ");
         pw.println("    If app requested orientation should be ignored.");
-        pw.println("  set-fixed-orientation-letterbox-aspect-ratio [reset|aspectRatio]");
-        pw.println("  get-fixed-orientation-letterbox-aspect-ratio");
-        pw.println("    Aspect ratio of letterbox for fixed orientation. If aspectRatio <= "
-                + WindowManagerService.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO);
-        pw.println("    both it and R.dimen.config_fixedOrientationLetterboxAspectRatio will be");
-        pw.println("    ignored and framework implementation will determine aspect ratio.");
-        pw.println("  set-letterbox-activity-corners-radius [reset|cornersRadius]");
-        pw.println("  get-letterbox-activity-corners-radius");
-        pw.println("    Corners radius for activities in the letterbox mode. If radius < 0,");
-        pw.println("    both it and R.integer.config_letterboxActivityCornersRadius will be");
-        pw.println("    ignored and corners of the activity won't be rounded.");
-        pw.println("  set-letterbox-background-color [reset|colorName|'\\#RRGGBB']");
-        pw.println("  get-letterbox-background-color");
-        pw.println("    Color of letterbox background which is be used when letterbox background");
-        pw.println("    type is 'solid-color'. Use get(set)-letterbox-background-type to check");
-        pw.println("    and control letterbox background type. See Color#parseColor for allowed");
-        pw.println("    color formats (#RRGGBB and some colors by name, e.g. magenta or olive). ");
-        pw.println("  set-letterbox-background-type [reset|solid_color|app_color_background");
-        pw.println("    |app_color_background_floating|wallpaper]");
-        pw.println("  get-letterbox-background-type");
-        pw.println("    Type of background used in the letterbox mode.");
-        pw.println("  set-letterbox-background-wallpaper-blur-radius [reset|radius]");
-        pw.println("  get-letterbox-background-wallpaper-blur-radius");
-        pw.println("    Blur radius for 'wallpaper' letterbox background. If radius <= 0");
-        pw.println("    both it and R.dimen.config_letterboxBackgroundWallpaperBlurRadius are ");
-        pw.println("    ignored and 0 is used.");
-        pw.println("  set-letterbox-background-wallpaper-dark-scrim-alpha [reset|alpha]");
-        pw.println("  get-letterbox-background-wallpaper-dark-scrim-alpha");
-        pw.println("    Alpha of a black translucent scrim shown over 'wallpaper'");
-        pw.println("    letterbox background. If alpha < 0 or >= 1 both it and");
-        pw.println("    R.dimen.config_letterboxBackgroundWallaperDarkScrimAlpha are ignored and ");
-        pw.println("    0.0 (transparent) is used instead.");
         pw.println("  set-sandbox-display-apis [true|1|false|0]");
         pw.println("    Sets override of Display APIs getRealSize / getRealMetrics to reflect ");
         pw.println("    DisplayArea of the activity, or the window bounds if in letterbox or");
         pw.println("    Size Compat Mode.");
+
+        printLetterboxHelp(pw);
+
         pw.println("  reset [-d DISPLAY_ID]");
         pw.println("    Reset all override settings.");
         if (!IS_USER) {
@@ -967,4 +923,47 @@
             pw.println("    Logging settings.");
         }
     }
+
+    private void printLetterboxHelp(PrintWriter pw) {
+        pw.println("  set-letterbox-style");
+        pw.println("    Sets letterbox style using the following options:");
+        pw.println("      --aspectRatio aspectRatio");
+        pw.println("        Aspect ratio of letterbox for fixed orientation. If aspectRatio <= "
+                + LetterboxConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO);
+        pw.println("        both it and R.dimen.config_fixedOrientationLetterboxAspectRatio will");
+        pw.println("        be ignored and framework implementation will determine aspect ratio.");
+        pw.println("      --cornerRadius radius");
+        pw.println("        Corners radius for activities in the letterbox mode. If radius < 0,");
+        pw.println("        both it and R.integer.config_letterboxActivityCornersRadius will be");
+        pw.println("        ignored and corners of the activity won't be rounded.");
+        pw.println("      --backgroundType [reset|solid_color|app_color_background");
+        pw.println("          |app_color_background_floating|wallpaper]");
+        pw.println("        Type of background used in the letterbox mode.");
+        pw.println("      --backgroundColor color");
+        pw.println("        Color of letterbox which is be used when letterbox background type");
+        pw.println("        is 'solid-color'. Use (set)get-letterbox-style to check and control");
+        pw.println("        letterbox background type. See Color#parseColor for allowed color");
+        pw.println("        formats (#RRGGBB and some colors by name, e.g. magenta or olive).");
+        pw.println("      --wallpaperBlurRadius radius");
+        pw.println("        Blur radius for 'wallpaper' letterbox background. If radius <= 0");
+        pw.println("        both it and R.dimen.config_letterboxBackgroundWallpaperBlurRadius");
+        pw.println("        are ignored and 0 is used.");
+        pw.println("      --wallpaperDarkScrimAlpha alpha");
+        pw.println("        Alpha of a black translucent scrim shown over 'wallpaper'");
+        pw.println("        letterbox background. If alpha < 0 or >= 1 both it and");
+        pw.println("        R.dimen.config_letterboxBackgroundWallaperDarkScrimAlpha are ignored");
+        pw.println("        and 0.0 (transparent) is used instead.");
+        pw.println("      --horizontalPositionMultiplier multiplier");
+        pw.println("        Horizontal position of app window center. If multiplier < 0 or > 1,");
+        pw.println("        both it and R.dimen.config_letterboxHorizontalPositionMultiplier");
+        pw.println("        are ignored and central position (0.5) is used.");
+        pw.println("  reset-letterbox-style [aspectRatio|cornerRadius|backgroundType");
+        pw.println("      |backgroundColor|wallpaperBlurRadius|wallpaperDarkScrimAlpha");
+        pw.println("      |horizontalPositionMultiplier]");
+        pw.println("    Resets overrides to default values for specified properties separated");
+        pw.println("    by space, e.g. 'reset-letterbox-style aspectRatio cornerRadius'.");
+        pw.println("    If no arguments provided, all values will be reset.");
+        pw.println("  get-letterbox-style");
+        pw.println("    Prints letterbox style configuration.");
+    }
 }
diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java
index 2e37fee..9382b8e 100644
--- a/services/core/java/com/android/server/wm/WindowOrganizerController.java
+++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java
@@ -36,6 +36,7 @@
 import android.app.WindowConfiguration;
 import android.content.pm.ActivityInfo;
 import android.content.res.Configuration;
+import android.graphics.GraphicBuffer;
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
 import android.os.Binder;
@@ -45,7 +46,6 @@
 import android.os.RemoteException;
 import android.util.ArraySet;
 import android.util.Slog;
-import android.view.Surface;
 import android.view.SurfaceControl;
 import android.window.IDisplayAreaOrganizerController;
 import android.window.ITaskOrganizerController;
@@ -766,18 +766,21 @@
             return false;
         }
 
+        GraphicBuffer graphicBuffer = GraphicBuffer.createFromHardwareBuffer(
+                buffer.getHardwareBuffer());
         SurfaceControl screenshot = mService.mWindowManager.mSurfaceControlFactory.apply(null)
                 .setName(wc.getName() + " - Organizer Screenshot")
-                .setBufferSize(bounds.width(), bounds.height())
                 .setFormat(PixelFormat.TRANSLUCENT)
                 .setParent(wc.getParentSurfaceControl())
+                .setSecure(buffer.containsSecureLayers())
                 .setCallsite("WindowOrganizerController.takeScreenshot")
+                .setBLASTLayer()
                 .build();
 
-        Surface surface = new Surface();
-        surface.copyFrom(screenshot);
-        surface.attachAndQueueBufferWithColorSpace(buffer.getHardwareBuffer(), null);
-        surface.release();
+        SurfaceControl.Transaction transaction = mService.mWindowManager.mTransactionFactory.get();
+        transaction.setBuffer(screenshot, graphicBuffer);
+        transaction.setColorSpace(screenshot, buffer.getColorSpace());
+        transaction.apply();
 
         outSurfaceControl.copyFrom(screenshot, "WindowOrganizerController.takeScreenshot");
         return true;
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 46d923b..1a5042f 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -1140,7 +1140,7 @@
 
     void attach() {
         if (DEBUG) Slog.v(TAG, "Attaching " + this + " token=" + mToken);
-        mSession.windowAddedLocked(mAttrs.packageName);
+        mSession.windowAddedLocked();
     }
 
     /**
diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java
index ef39560..fbfa400 100644
--- a/services/core/java/com/android/server/wm/WindowToken.java
+++ b/services/core/java/com/android/server/wm/WindowToken.java
@@ -53,6 +53,7 @@
 import android.view.InsetsState;
 import android.view.SurfaceControl;
 import android.view.WindowManager;
+import android.view.WindowManager.LayoutParams.WindowType;
 import android.window.WindowContext;
 
 import com.android.internal.protolog.common.ProtoLog;
@@ -70,10 +71,10 @@
 class WindowToken extends WindowContainer<WindowState> {
     private static final String TAG = TAG_WITH_CLASS_NAME ? "WindowToken" : TAG_WM;
 
-    // The actual token.
+    /** The actual token */
     final IBinder token;
 
-    // The type of window this token is for, as per WindowManager.LayoutParams.
+    /** The type of window this token is for, as per {@link WindowManager.LayoutParams} */
     final int windowType;
 
     /**
@@ -86,8 +87,10 @@
     /** {@code true} if this holds the rounded corner overlay */
     final boolean mRoundedCornerOverlay;
 
-    // Set if this token was explicitly added by a client, so should
-    // persist (not be removed) when all windows are removed.
+    /**
+     * Set if this token was explicitly added by a client, so should persist (not be removed)
+     * when all windows are removed.
+     */
     boolean mPersistOnEmpty;
 
     // For printing.
@@ -198,21 +201,15 @@
         return isFirstChildWindowGreaterThanSecond(newWindow, existingWindow) ? 1 : -1;
     };
 
-    WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty,
-            DisplayContent dc, boolean ownerCanManageAppTokens) {
+    protected WindowToken(WindowManagerService service, IBinder _token, int type,
+            boolean persistOnEmpty, DisplayContent dc, boolean ownerCanManageAppTokens) {
         this(service, _token, type, persistOnEmpty, dc, ownerCanManageAppTokens,
-                false /* roundedCornerOverlay */);
+                false /* roundedCornerOverlay */, false /* fromClientToken */, null /* options */);
     }
 
-    WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty,
-            DisplayContent dc, boolean ownerCanManageAppTokens, boolean roundedCornerOverlay) {
-        this(service, _token, type, persistOnEmpty, dc, ownerCanManageAppTokens,
-                roundedCornerOverlay, false /* fromClientToken */, null /* options */);
-    }
-
-    WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty,
-            DisplayContent dc, boolean ownerCanManageAppTokens, boolean roundedCornerOverlay,
-            boolean fromClientToken, @Nullable Bundle options) {
+    protected WindowToken(WindowManagerService service, IBinder _token, int type,
+            boolean persistOnEmpty, DisplayContent dc, boolean ownerCanManageAppTokens,
+            boolean roundedCornerOverlay, boolean fromClientToken, @Nullable Bundle options) {
         super(service);
         token = _token;
         windowType = type;
@@ -770,7 +767,69 @@
     }
 
     @Override
-    @WindowManager.LayoutParams.WindowType int getWindowType() {
+    @WindowType int getWindowType() {
         return windowType;
     }
+
+    static class Builder {
+        private final WindowManagerService mService;
+        private final IBinder mToken;
+        @WindowType
+        private final int mType;
+
+        private boolean mPersistOnEmpty;
+        private DisplayContent mDisplayContent;
+        private boolean mOwnerCanManageAppTokens;
+        private boolean mRoundedCornerOverlay;
+        private boolean mFromClientToken;
+        @Nullable
+        private Bundle mOptions;
+
+        Builder(WindowManagerService service, IBinder token, int type) {
+            mService = service;
+            mToken = token;
+            mType = type;
+        }
+
+        /** @see WindowToken#mPersistOnEmpty */
+        Builder setPersistOnEmpty(boolean persistOnEmpty) {
+            mPersistOnEmpty = persistOnEmpty;
+            return this;
+        }
+
+        /** Sets the {@link DisplayContent} to be associated. */
+        Builder setDisplayContent(DisplayContent dc) {
+            mDisplayContent = dc;
+            return this;
+        }
+
+        /** @see WindowToken#mOwnerCanManageAppTokens */
+        Builder setOwnerCanManageAppTokens(boolean ownerCanManageAppTokens) {
+            mOwnerCanManageAppTokens = ownerCanManageAppTokens;
+            return this;
+        }
+
+        /** @see WindowToken#mRoundedCornerOverlay */
+        Builder setRoundedCornerOverlay(boolean roundedCornerOverlay) {
+            mRoundedCornerOverlay = roundedCornerOverlay;
+            return this;
+        }
+
+        /** @see WindowToken#mFromClientToken */
+        Builder setFromClientToken(boolean fromClientToken) {
+            mFromClientToken = fromClientToken;
+            return this;
+        }
+
+        /** @see WindowToken#mOptions */
+        Builder setOptions(Bundle options) {
+            mOptions = options;
+            return this;
+        }
+
+        WindowToken build() {
+            return new WindowToken(mService, mToken, mType, mPersistOnEmpty, mDisplayContent,
+                    mOwnerCanManageAppTokens, mRoundedCornerOverlay, mFromClientToken, mOptions);
+        }
+    }
 }
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
index a99679a..74fbb42 100644
--- a/services/core/jni/Android.bp
+++ b/services/core/jni/Android.bp
@@ -190,7 +190,6 @@
             shared_libs: [
                 "libarcbridge",
                 "libarcbridgeservice",
-                "libarctimer",
                 "libbase",
                 "libcap",
                 "libchrome",
diff --git a/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp
index f0210ee..db52683 100644
--- a/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp
+++ b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp
@@ -171,17 +171,23 @@
     return result;
 }
 
-static inline std::vector<char> readBytes(borrowed_fd fd) {
-    int32_t size = readLEInt32(fd);
-    std::vector<char> result(size);
-    android::base::ReadFully(fd, result.data(), size);
-    return result;
+static inline bool skipBytes(borrowed_fd fd, int* max_size) {
+    int32_t size = std::min(readLEInt32(fd), *max_size);
+    if (size <= 0) {
+        return false;
+    }
+    *max_size -= size;
+    return (TEMP_FAILURE_RETRY(lseek64(fd.get(), size, SEEK_CUR)) >= 0);
 }
 
 static inline int32_t skipIdSigHeaders(borrowed_fd fd) {
-    readLEInt32(fd);        // version
-    readBytes(fd);          // hashingInfo
-    readBytes(fd);          // signingInfo
+    // version
+    auto version = readLEInt32(fd);
+    int max_size = INCFS_MAX_SIGNATURE_SIZE - sizeof(version);
+    // hashingInfo and signingInfo
+    if (!skipBytes(fd, &max_size) || !skipBytes(fd, &max_size)) {
+        return -1;
+    }
     return readLEInt32(fd); // size of the verity tree
 }
 
@@ -253,8 +259,12 @@
 
     unique_fd idsigFd = openLocalFile(env, jni, shellCommand, idsigPath);
     if (idsigFd.ok()) {
-        auto treeSize = verityTreeSizeForFile(size);
         auto actualTreeSize = skipIdSigHeaders(idsigFd);
+        if (actualTreeSize < 0) {
+            ALOGE("Error reading .idsig file: wrong format.");
+            return {};
+        }
+        auto treeSize = verityTreeSizeForFile(size);
         if (treeSize != actualTreeSize) {
             ALOGE("Verity tree size mismatch: %d vs .idsig: %d.", int(treeSize),
                   int(actualTreeSize));
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index cf9b88a..20c56fb 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -96,6 +96,7 @@
 import static android.app.admin.DevicePolicyManager.PROVISIONING_RESULT_SETTING_PROFILE_OWNER_FAILED;
 import static android.app.admin.DevicePolicyManager.PROVISIONING_RESULT_SET_DEVICE_OWNER_FAILED;
 import static android.app.admin.DevicePolicyManager.PROVISIONING_RESULT_STARTING_PROFILE_FAILED;
+import static android.app.admin.DevicePolicyManager.STATE_USER_UNMANAGED;
 import static android.app.admin.DevicePolicyManager.WIPE_EUICC;
 import static android.app.admin.DevicePolicyManager.WIPE_EXTERNAL_STORAGE;
 import static android.app.admin.DevicePolicyManager.WIPE_RESET_PROTECTION_DATA;
@@ -625,6 +626,10 @@
     @EnabledSince(targetSdkVersion = Build.VERSION_CODES.S)
     private static final long PREVENT_SETTING_PASSWORD_QUALITY_ON_PARENT = 165573442L;
 
+    private static final String CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG =
+            "The alias provided must be contained in the aliases specified in the credential "
+                    + "management app's authentication policy";
+
     final Context mContext;
     final Injector mInjector;
     final IPackageManager mIPackageManager;
@@ -5449,11 +5454,17 @@
             boolean isUserSelectable) {
         final CallerIdentity caller = getCallerIdentity(who, callerPackage);
         final boolean isCallerDelegate = isCallerDelegate(caller, DELEGATION_CERT_INSTALL);
-        final boolean isCredentialManagementApp =
-                isCredentialManagementApp(caller, alias, isUserSelectable);
+        final boolean isCredentialManagementApp = isCredentialManagementApp(caller);
         Preconditions.checkCallAuthorization((caller.hasAdminComponent()
                 && (isProfileOwner(caller) || isDeviceOwner(caller)))
                 || (caller.hasPackage() && (isCallerDelegate || isCredentialManagementApp)));
+        if (isCredentialManagementApp) {
+            Preconditions.checkCallAuthorization(isUserSelectable, "The credential "
+                    + "management app is not allowed to install a user selectable key pair");
+            Preconditions.checkCallAuthorization(
+                    isAliasInCredentialManagementAppPolicy(caller, alias),
+                    CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG);
+        }
         checkCanExecuteOrThrowUnsafe(DevicePolicyManager.OPERATION_INSTALL_KEY_PAIR);
 
         final long id = mInjector.binderClearCallingIdentity();
@@ -5508,10 +5519,15 @@
     public boolean removeKeyPair(ComponentName who, String callerPackage, String alias) {
         final CallerIdentity caller = getCallerIdentity(who, callerPackage);
         final boolean isCallerDelegate = isCallerDelegate(caller, DELEGATION_CERT_INSTALL);
-        final boolean isCredentialManagementApp = isCredentialManagementApp(caller, alias);
+        final boolean isCredentialManagementApp = isCredentialManagementApp(caller);
         Preconditions.checkCallAuthorization((caller.hasAdminComponent()
                 && (isProfileOwner(caller) || isDeviceOwner(caller)))
                 || (caller.hasPackage() && (isCallerDelegate || isCredentialManagementApp)));
+        if (isCredentialManagementApp) {
+            Preconditions.checkCallAuthorization(
+                    isAliasInCredentialManagementAppPolicy(caller, alias),
+                    CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG);
+        }
         checkCanExecuteOrThrowUnsafe(DevicePolicyManager.OPERATION_REMOVE_KEY_PAIR);
 
         final long id = Binder.clearCallingIdentity();
@@ -5545,8 +5561,14 @@
     @Override
     public boolean hasKeyPair(String callerPackage, String alias) {
         final CallerIdentity caller = getCallerIdentity(callerPackage);
+        final boolean isCredentialManagementApp = isCredentialManagementApp(caller);
         Preconditions.checkCallAuthorization(canManageCertificates(caller)
-                || isCredentialManagementApp(caller, alias));
+                || isCredentialManagementApp);
+        if (isCredentialManagementApp) {
+            Preconditions.checkCallAuthorization(
+                    isAliasInCredentialManagementAppPolicy(caller, alias),
+                    CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG);
+        }
 
         return mInjector.binderWithCleanCallingIdentity(() -> {
             try (KeyChainConnection keyChainConnection =
@@ -5781,7 +5803,7 @@
 
         final CallerIdentity caller = getCallerIdentity(who, callerPackage);
         final boolean isCallerDelegate = isCallerDelegate(caller, DELEGATION_CERT_INSTALL);
-        final boolean isCredentialManagementApp = isCredentialManagementApp(caller, alias);
+        final boolean isCredentialManagementApp = isCredentialManagementApp(caller);
         if (deviceIdAttestationRequired && attestationUtilsFlags.length > 0) {
             // TODO: replace enforce methods
             enforceCallerCanRequestDeviceIdAttestation(caller);
@@ -5790,6 +5812,11 @@
             Preconditions.checkCallAuthorization((caller.hasAdminComponent()
                     && (isProfileOwner(caller) || isDeviceOwner(caller)))
                     || (caller.hasPackage() && (isCallerDelegate || isCredentialManagementApp)));
+            if (isCredentialManagementApp) {
+                Preconditions.checkCallAuthorization(
+                        isAliasInCredentialManagementAppPolicy(caller, alias),
+                        CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG);
+            }
         }
 
         if (TextUtils.isEmpty(alias)) {
@@ -5917,10 +5944,15 @@
             byte[] cert, byte[] chain, boolean isUserSelectable) {
         final CallerIdentity caller = getCallerIdentity(who, callerPackage);
         final boolean isCallerDelegate = isCallerDelegate(caller, DELEGATION_CERT_INSTALL);
-        final boolean isCredentialManagementApp = isCredentialManagementApp(caller, alias);
+        final boolean isCredentialManagementApp = isCredentialManagementApp(caller);
         Preconditions.checkCallAuthorization((caller.hasAdminComponent()
                 && (isProfileOwner(caller) || isDeviceOwner(caller)))
                 || (caller.hasPackage() && (isCallerDelegate || isCredentialManagementApp)));
+        if (isCredentialManagementApp) {
+            Preconditions.checkCallAuthorization(
+                    isAliasInCredentialManagementAppPolicy(caller, alias),
+                    CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG);
+        }
 
         final long id = mInjector.binderClearCallingIdentity();
         try (final KeyChainConnection keyChainConnection =
@@ -6366,55 +6398,36 @@
      * privileged APIs.
      * <p>
      * This is done by checking that the calling package is authorized to perform the app operation
-     * {@link android.app.AppOpsManager#OP_MANAGE_CREDENTIALS}. The alias provided must be contained
-     * in the aliases specified in the credential management app's authentication policy. The
-     * key pair to install must not be user selectable.
+     * {@link android.app.AppOpsManager#OP_MANAGE_CREDENTIALS}.
      *
      * @param caller the calling identity
      * @return {@code true} if the calling process is the credential management app.
      */
-    private boolean isCredentialManagementApp(CallerIdentity caller, String alias,
-            boolean isUserSelectable) {
-        // Should not be user selectable
-        if (isUserSelectable) {
-            Slogf.e(LOG_TAG, "The credential management app is not allowed to install a "
-                    + "user selectable key pair");
-            return false;
-        }
-        return isCredentialManagementApp(caller, alias);
+    private boolean isCredentialManagementApp(CallerIdentity caller) {
+        return mInjector.binderWithCleanCallingIdentity(() -> {
+            AppOpsManager appOpsManager = mInjector.getAppOpsManager();
+            if (appOpsManager == null) return false;
+            return appOpsManager.noteOpNoThrow(AppOpsManager.OP_MANAGE_CREDENTIALS, caller.getUid(),
+                    caller.getPackageName(), null, null) == AppOpsManager.MODE_ALLOWED;
+        });
     }
 
     /**
-     * Check whether a caller application is the credential mangement app, which can access
-     * privileged APIs.
-     * <p>
-     * This is done by checking that the calling package is authorized to perform the app operation
-     * {@link android.app.AppOpsManager#OP_MANAGE_CREDENTIALS}. The alias provided must be contained
+     * If the caller is the credential management app, the alias provided must be contained
      * in the aliases specified in the credential management app's authentication policy.
-     *
-     * @param caller the calling identity
-     * @return {@code true} if the calling process is the credential management app.
      */
-    private boolean isCredentialManagementApp(CallerIdentity caller, String alias) {
+    private boolean isAliasInCredentialManagementAppPolicy(CallerIdentity caller, String alias) {
         return mInjector.binderWithCleanCallingIdentity(() -> {
-            // Should include alias in authentication policy
             try (KeyChainConnection connection = KeyChain.bindAsUser(mContext,
                     caller.getUserHandle())) {
                 // The policy will be null if there is no credential management app
                 AppUriAuthenticationPolicy policy =
                         connection.getService().getCredentialManagementAppPolicy();
-                if (policy == null || policy.getAppAndUriMappings().isEmpty()
-                        || !containsAlias(policy, alias)) {
-                    return false;
-                }
+                return policy != null && !policy.getAppAndUriMappings().isEmpty()
+                        && containsAlias(policy, alias);
             } catch (RemoteException | InterruptedException e) {
                 return false;
             }
-
-            AppOpsManager appOpsManager = mInjector.getAppOpsManager();
-            if (appOpsManager == null) return false;
-            return appOpsManager.noteOpNoThrow(AppOpsManager.OP_MANAGE_CREDENTIALS, caller.getUid(),
-                    caller.getPackageName(), null, null) == AppOpsManager.MODE_ALLOWED;
         });
     }
 
@@ -8735,7 +8748,8 @@
 
         final CallerIdentity caller = getCallerIdentity();
         if (userHandle != mOwners.getDeviceOwnerUserId() && !mOwners.hasProfileOwner(userHandle)
-                && getManagedUserId(userHandle) == -1) {
+                && getManagedUserId(userHandle) == -1
+                && newState != STATE_USER_UNMANAGED) {
             // No managed device, user or profile, so setting provisioning state makes no sense.
             throw new IllegalStateException("Not allowed to change provisioning state unless a "
                       + "device or profile owner is set.");
@@ -8798,6 +8812,12 @@
             case DevicePolicyManager.STATE_USER_SETUP_FINALIZED:
                 // Cannot transition out of finalized.
                 break;
+            case DevicePolicyManager.STATE_USER_PROFILE_FINALIZED:
+                // Should only move to an unmanaged state after removing the work profile.
+                if (newState == DevicePolicyManager.STATE_USER_UNMANAGED) {
+                    return;
+                }
+                break;
         }
 
         // Didn't meet any of the accepted state transition checks above, throw appropriate error.
diff --git a/services/incremental/Android.bp b/services/incremental/Android.bp
index 5140b9f..0bd737b 100644
--- a/services/incremental/Android.bp
+++ b/services/incremental/Android.bp
@@ -77,6 +77,7 @@
         "libcutils",
         "libincfs",
         "liblog",
+        "libpermission",
         "libz",
     ],
 }
diff --git a/services/incremental/TEST_MAPPING b/services/incremental/TEST_MAPPING
index d935256..6aa8a93 100644
--- a/services/incremental/TEST_MAPPING
+++ b/services/incremental/TEST_MAPPING
@@ -24,7 +24,9 @@
     },
     {
       "name": "CtsIncrementalInstallHostTestCases"
-    },
+    }
+  ],
+  "presubmit-large": [
     {
       "name": "CtsInstalledLoadingProgressHostTests"
     }
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 4c4c582..6dedca1 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -2731,13 +2731,6 @@
                 t.traceEnd();
             }
 
-            t.traceBegin("StartSystemUI");
-            try {
-                startSystemUi(context, windowManagerF);
-            } catch (Throwable e) {
-                reportWtf("starting System UI", e);
-            }
-            t.traceEnd();
             // Enable airplane mode in safe mode. setAirplaneMode() cannot be called
             // earlier as it sends broadcasts to other services.
             // TODO: This may actually be too late if radio firmware already started leaking
@@ -2939,6 +2932,14 @@
             }
         }, t);
 
+        t.traceBegin("StartSystemUI");
+        try {
+            startSystemUi(context, windowManagerF);
+        } catch (Throwable e) {
+            reportWtf("starting System UI", e);
+        }
+        t.traceEnd();
+
         t.traceEnd(); // startOtherServices
     }
 
diff --git a/services/people/java/com/android/server/people/data/DataManager.java b/services/people/java/com/android/server/people/data/DataManager.java
index 9f24d9a..d913d4e 100644
--- a/services/people/java/com/android/server/people/data/DataManager.java
+++ b/services/people/java/com/android/server/people/data/DataManager.java
@@ -111,7 +111,8 @@
     private static final long RECENT_NOTIFICATIONS_MAX_AGE_MS = 10 * DateUtils.DAY_IN_MILLIS;
     private static final long QUERY_EVENTS_MAX_AGE_MS = 5L * DateUtils.MINUTE_IN_MILLIS;
     private static final long USAGE_STATS_QUERY_INTERVAL_SEC = 120L;
-    @VisibleForTesting static final int MAX_CACHED_RECENT_SHORTCUTS = 30;
+    @VisibleForTesting
+    static final int MAX_CACHED_RECENT_SHORTCUTS = 30;
 
     private final Context mContext;
     private final Injector mInjector;
@@ -256,14 +257,23 @@
     @Nullable
     private ConversationChannel getConversationChannel(String packageName, int userId,
             String shortcutId, ConversationInfo conversationInfo) {
+        ShortcutInfo shortcutInfo = getShortcut(packageName, userId, shortcutId);
+        return getConversationChannel(shortcutInfo, conversationInfo);
+    }
+
+    @Nullable
+    private ConversationChannel getConversationChannel(ShortcutInfo shortcutInfo,
+            ConversationInfo conversationInfo) {
         if (conversationInfo == null) {
             return null;
         }
-        ShortcutInfo shortcutInfo = getShortcut(packageName, userId, shortcutId);
         if (shortcutInfo == null) {
-            Slog.e(TAG, " Shortcut no longer found: " + shortcutId);
+            Slog.e(TAG, " Shortcut no longer found");
             return null;
         }
+        String packageName = shortcutInfo.getPackage();
+        String shortcutId = shortcutInfo.getId();
+        int userId = shortcutInfo.getUserId();
         int uid = mPackageManagerInternal.getPackageUid(packageName, 0, userId);
         NotificationChannel parentChannel =
                 mNotificationManagerInternal.getNotificationChannel(packageName, uid,
@@ -363,7 +373,9 @@
                     }
                 }
                 builder.setStatuses(newStatuses);
-                cs.addOrUpdate(builder.build());
+                updateConversationStoreThenNotifyListeners(cs, builder.build(),
+                        packageData.getPackageName(),
+                        packageData.getUserId());
             });
         });
     }
@@ -397,11 +409,7 @@
         ConversationInfo convToModify = getConversationInfoOrThrow(cs, conversationId);
         ConversationInfo.Builder builder = new ConversationInfo.Builder(convToModify);
         builder.addOrUpdateStatus(status);
-        ConversationInfo modifiedConv = builder.build();
-        cs.addOrUpdate(modifiedConv);
-        ConversationChannel conversation = getConversationChannel(packageName, userId,
-                conversationId, modifiedConv);
-        notifyConversationsListeners(Arrays.asList(conversation));
+        updateConversationStoreThenNotifyListeners(cs, builder.build(), packageName, userId);
 
         if (status.getEndTimeMillis() >= 0) {
             mStatusExpReceiver.scheduleExpiration(
@@ -416,7 +424,7 @@
         ConversationInfo convToModify = getConversationInfoOrThrow(cs, conversationId);
         ConversationInfo.Builder builder = new ConversationInfo.Builder(convToModify);
         builder.clearStatus(statusId);
-        cs.addOrUpdate(builder.build());
+        updateConversationStoreThenNotifyListeners(cs, builder.build(), packageName, userId);
     }
 
     public void clearStatuses(String packageName, int userId, String conversationId) {
@@ -424,7 +432,7 @@
         ConversationInfo convToModify = getConversationInfoOrThrow(cs, conversationId);
         ConversationInfo.Builder builder = new ConversationInfo.Builder(convToModify);
         builder.setStatuses(null);
-        cs.addOrUpdate(builder.build());
+        updateConversationStoreThenNotifyListeners(cs, builder.build(), packageName, userId);
     }
 
     public @NonNull List<ConversationStatus> getStatuses(String packageName, int userId,
@@ -882,7 +890,8 @@
                 }
             }
         }
-        conversationStore.addOrUpdate(builder.build());
+        updateConversationStoreThenNotifyListeners(conversationStore, builder.build(),
+                shortcutInfo);
     }
 
     @VisibleForTesting
@@ -945,6 +954,7 @@
                     conversationSelector.mConversationStore =
                             packageData.getConversationStore();
                     conversationSelector.mConversationInfo = ci;
+                    conversationSelector.mPackageName = packageData.getPackageName();
                 }
             });
             if (conversationSelector.mConversationInfo == null) {
@@ -955,13 +965,16 @@
                     new ConversationInfo.Builder(conversationSelector.mConversationInfo);
             builder.setContactStarred(helper.isStarred());
             builder.setContactPhoneNumber(helper.getPhoneNumber());
-            conversationSelector.mConversationStore.addOrUpdate(builder.build());
+            updateConversationStoreThenNotifyListeners(conversationSelector.mConversationStore,
+                    builder.build(),
+                    conversationSelector.mPackageName, userId);
             mLastUpdatedTimestamp = helper.getLastUpdatedTimestamp();
         }
 
         private class ConversationSelector {
             private ConversationStore mConversationStore = null;
             private ConversationInfo mConversationInfo = null;
+            private String mPackageName = null;
         }
     }
 
@@ -1140,6 +1153,7 @@
                         .setLastEventTimestamp(sbn.getPostTime())
                         .setParentNotificationChannelId(sbn.getNotification().getChannelId())
                         .build();
+                // Don't update listeners on notifications posted.
                 packageData.getConversationStore().addOrUpdate(updated);
 
                 EventHistoryImpl eventHistory = packageData.getEventStore().getOrCreateEventHistory(
@@ -1215,7 +1229,8 @@
                     builder.setBubbled(false);
                     break;
             }
-            conversationStore.addOrUpdate(builder.build());
+            updateConversationStoreThenNotifyListeners(conversationStore, builder.build(), pkg,
+                    packageData.getUserId());
         }
 
         synchronized boolean hasActiveNotifications(String packageName, String shortcutId) {
@@ -1253,7 +1268,9 @@
                 ConversationInfo updated = new ConversationInfo.Builder(conversationInfo)
                         .setLastEventTimestamp(event.getTimestamp())
                         .build();
-                packageData.getConversationStore().addOrUpdate(updated);
+                updateConversationStoreThenNotifyListeners(packageData.getConversationStore(),
+                        updated,
+                        packageData.getPackageName(), packageData.getUserId());
             }
         }
     }
@@ -1266,7 +1283,27 @@
         }
     }
 
-    // TODO(b/178792356): Trigger ConversationsListener on all-related data changes.
+    private void updateConversationStoreThenNotifyListeners(ConversationStore cs,
+            ConversationInfo modifiedConv,
+            String packageName, int userId) {
+        cs.addOrUpdate(modifiedConv);
+        ConversationChannel channel = getConversationChannel(packageName, userId,
+                modifiedConv.getShortcutId(), modifiedConv);
+        if (channel != null) {
+            notifyConversationsListeners(Arrays.asList(channel));
+        }
+    }
+
+    private void updateConversationStoreThenNotifyListeners(ConversationStore cs,
+            ConversationInfo modifiedConv, ShortcutInfo shortcutInfo) {
+        cs.addOrUpdate(modifiedConv);
+        ConversationChannel channel = getConversationChannel(shortcutInfo, modifiedConv);
+        if (channel != null) {
+            notifyConversationsListeners(Arrays.asList(channel));
+        }
+    }
+
+
     @VisibleForTesting
     void notifyConversationsListeners(
             @Nullable final List<ConversationChannel> changedConversations) {
diff --git a/services/smartspace/java/com/android/server/smartspace/SmartspaceManagerService.java b/services/smartspace/java/com/android/server/smartspace/SmartspaceManagerService.java
index b07fe19..39ed4dd 100644
--- a/services/smartspace/java/com/android/server/smartspace/SmartspaceManagerService.java
+++ b/services/smartspace/java/com/android/server/smartspace/SmartspaceManagerService.java
@@ -156,7 +156,7 @@
                 @NonNull final Consumer<SmartspacePerUserService> c) {
             ActivityManagerInternal am = LocalServices.getService(ActivityManagerInternal.class);
             final int userId = am.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
-                    sessionId.getUserId(), false, ALLOW_NON_FULL, null, null);
+                    sessionId.getUserHandle().getIdentifier(), false, ALLOW_NON_FULL, null, null);
 
             if (DEBUG) {
                 Slog.d(TAG, "runForUserLocked:" + func + " from pid=" + Binder.getCallingPid()
diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationEnforcerTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationEnforcerTest.kt
index 2d852e5..886b2e0 100644
--- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationEnforcerTest.kt
+++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationEnforcerTest.kt
@@ -338,6 +338,7 @@
             whenever(readUserState(0)) { PackageUserState() }
             whenever(readUserState(1)) { PackageUserState() }
             whenever(getInstantApp(anyInt())) { false }
+            whenever(isSystem()) { false }
         }
     }
 
diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationManagerApiTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationManagerApiTest.kt
index 3838f68..0fe3913 100644
--- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationManagerApiTest.kt
+++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationManagerApiTest.kt
@@ -527,6 +527,7 @@
         whenever(firstInstallTime) { 0L }
         whenever(readUserState(0)) { pkgUserState0() }
         whenever(readUserState(1)) { pkgUserState1() }
+        whenever(isSystem()) { false }
     }
 
     private fun DomainVerificationService.addPackages(vararg pkgSettings: PackageSetting) =
diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationPackageTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationPackageTest.kt
index 1097c45..8540b8a 100644
--- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationPackageTest.kt
+++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationPackageTest.kt
@@ -101,6 +101,70 @@
     }
 
     @Test
+    fun addPackageSystemConfigured() {
+        val pkg1 = mockPkgSetting(PKG_ONE, UUID_ONE, SIGNATURE_ONE, isSystemApp = false)
+        val pkg2 = mockPkgSetting(PKG_TWO, UUID_TWO, SIGNATURE_TWO, isSystemApp = true)
+
+        val service = makeService(
+            systemConfiguredPackageNames = ArraySet(setOf(pkg1.getName(), pkg2.getName())),
+            pkg1, pkg2
+        )
+        service.addPackage(pkg1)
+        service.addPackage(pkg2)
+
+        service.getInfo(pkg1.getName()).apply {
+            assertThat(packageName).isEqualTo(pkg1.getName())
+            assertThat(identifier).isEqualTo(pkg1.domainSetId)
+            assertThat(hostToStateMap).containsExactlyEntriesIn(
+                mapOf(
+                    DOMAIN_1 to STATE_NO_RESPONSE,
+                    DOMAIN_2 to STATE_NO_RESPONSE,
+                )
+            )
+        }
+
+        service.getUserState(pkg1.getName()).apply {
+            assertThat(packageName).isEqualTo(pkg1.getName())
+            assertThat(identifier).isEqualTo(pkg1.domainSetId)
+            assertThat(isLinkHandlingAllowed).isEqualTo(true)
+            assertThat(user.identifier).isEqualTo(USER_ID)
+            assertThat(hostToStateMap).containsExactlyEntriesIn(
+                mapOf(
+                    DOMAIN_1 to DOMAIN_STATE_NONE,
+                    DOMAIN_2 to DOMAIN_STATE_NONE,
+                )
+            )
+        }
+
+        service.getInfo(pkg2.getName()).apply {
+            assertThat(packageName).isEqualTo(pkg2.getName())
+            assertThat(identifier).isEqualTo(pkg2.domainSetId)
+            assertThat(hostToStateMap).containsExactlyEntriesIn(
+                mapOf(
+                    DOMAIN_1 to STATE_UNMODIFIABLE,
+                    DOMAIN_2 to STATE_UNMODIFIABLE,
+                )
+            )
+        }
+
+        service.getUserState(pkg2.getName()).apply {
+            assertThat(packageName).isEqualTo(pkg2.getName())
+            assertThat(identifier).isEqualTo(pkg2.domainSetId)
+            assertThat(isLinkHandlingAllowed).isEqualTo(true)
+            assertThat(user.identifier).isEqualTo(USER_ID)
+            assertThat(hostToStateMap).containsExactlyEntriesIn(
+                mapOf(
+                    DOMAIN_1 to DOMAIN_STATE_VERIFIED,
+                    DOMAIN_2 to DOMAIN_STATE_VERIFIED,
+                )
+            )
+        }
+
+        assertThat(service.queryValidVerificationPackageNames())
+                .containsExactly(pkg1.getName(), pkg2.getName())
+    }
+
+    @Test
     fun addPackageRestoredMatchingSignature() {
         // language=XML
         val xml = """
@@ -457,42 +521,52 @@
             getDomainVerificationUserState(pkgName, USER_ID)
                     .also { assertThat(it).isNotNull() }!!
 
+    private fun makeService(
+        systemConfiguredPackageNames: ArraySet<String> = ArraySet(),
+        vararg pkgSettings: PackageSetting
+    ) = makeService(systemConfiguredPackageNames = systemConfiguredPackageNames) {
+        pkgName -> pkgSettings.find { pkgName == it.getName() }
+    }
+
     private fun makeService(vararg pkgSettings: PackageSetting) =
-            makeService { pkgName -> pkgSettings.find { pkgName == it.getName()} }
+        makeService { pkgName -> pkgSettings.find { pkgName == it.getName() } }
 
-    private fun makeService(pkgSettingFunction: (String) -> PackageSetting? = { null }) =
-            DomainVerificationService(mockThrowOnUnmocked {
-                // Assume the test has every permission necessary
-                whenever(enforcePermission(anyString(), anyInt(), anyInt(), anyString()))
-                whenever(checkPermission(anyString(), anyInt(), anyInt())) {
-                    PackageManager.PERMISSION_GRANTED
-                }
-            }, mockThrowOnUnmocked {
-                whenever(linkedApps) { ArraySet<String>() }
-            }, mockThrowOnUnmocked {
-                whenever(isChangeEnabledInternalNoLogging(anyLong(), any())) { true }
-            }).apply {
-                setConnection(mockThrowOnUnmocked {
-                    whenever(filterAppAccess(anyString(), anyInt(), anyInt())) { false }
-                    whenever(doesUserExist(0)) { true }
-                    whenever(doesUserExist(1)) { true }
-                    whenever(scheduleWriteSettings())
-
-                    // Need to provide an internal UID so some permission checks are ignored
-                    whenever(callingUid) { Process.ROOT_UID }
-                    whenever(callingUserId) { 0 }
-
-                    mockPackageSettings {
-                        pkgSettingFunction(it)
-                    }
-                })
+    private fun makeService(
+        systemConfiguredPackageNames: ArraySet<String> = ArraySet(),
+        pkgSettingFunction: (String) -> PackageSetting? = { null }
+    ) = DomainVerificationService(mockThrowOnUnmocked {
+            // Assume the test has every permission necessary
+            whenever(enforcePermission(anyString(), anyInt(), anyInt(), anyString()))
+            whenever(checkPermission(anyString(), anyInt(), anyInt())) {
+                PackageManager.PERMISSION_GRANTED
             }
+        }, mockThrowOnUnmocked {
+            whenever(this.linkedApps) { systemConfiguredPackageNames }
+        }, mockThrowOnUnmocked {
+            whenever(isChangeEnabledInternalNoLogging(anyLong(), any())) { true }
+        }).apply {
+            setConnection(mockThrowOnUnmocked {
+                whenever(filterAppAccess(anyString(), anyInt(), anyInt())) { false }
+                whenever(doesUserExist(0)) { true }
+                whenever(doesUserExist(1)) { true }
+                whenever(scheduleWriteSettings())
+
+                // Need to provide an internal UID so some permission checks are ignored
+                whenever(callingUid) { Process.ROOT_UID }
+                whenever(callingUserId) { 0 }
+
+                mockPackageSettings {
+                    pkgSettingFunction(it)
+                }
+            })
+        }
 
     private fun mockPkgSetting(
         pkgName: String,
         domainSetId: UUID,
         signature: String,
-        domains: List<String> = listOf(DOMAIN_1, DOMAIN_2)
+        domains: List<String> = listOf(DOMAIN_1, DOMAIN_2),
+        isSystemApp: Boolean = false
     ) = mockThrowOnUnmocked<PackageSetting> {
         val pkg = mockThrowOnUnmocked<AndroidPackage> {
             whenever(packageName) { pkgName }
@@ -528,5 +602,6 @@
         whenever(firstInstallTime) { 0L }
         whenever(readUserState(USER_ID)) { PackageUserState() }
         whenever(signatures) { arrayOf(Signature(signature)) }
+        whenever(isSystem) { isSystemApp }
     }
 }
diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationSettingsMutationTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationSettingsMutationTest.kt
index 26e8d28..6a75795 100644
--- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationSettingsMutationTest.kt
+++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationSettingsMutationTest.kt
@@ -238,6 +238,7 @@
             whenever(readUserState(0)) { PackageUserState() }
             whenever(readUserState(10)) { PackageUserState() }
             whenever(getInstantApp(anyInt())) { false }
+            whenever(isSystem()) { false }
         }
     }
 
diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationUserSelectionOverrideTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationUserSelectionOverrideTest.kt
index 52ae7a5..3e2853c 100644
--- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationUserSelectionOverrideTest.kt
+++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationUserSelectionOverrideTest.kt
@@ -145,6 +145,7 @@
         whenever(firstInstallTime) { 0L }
         whenever(readUserState(0)) { PackageUserState() }
         whenever(readUserState(1)) { PackageUserState() }
+        whenever(isSystem()) { false }
     }
 
     @Test
diff --git a/services/tests/mockingservicestests/AndroidManifest.xml b/services/tests/mockingservicestests/AndroidManifest.xml
index e4b650c..17a5dcc 100644
--- a/services/tests/mockingservicestests/AndroidManifest.xml
+++ b/services/tests/mockingservicestests/AndroidManifest.xml
@@ -28,6 +28,8 @@
     <uses-permission android:name="android.permission.MANAGE_APPOPS"/>
     <uses-permission android:name="android.permission.MONITOR_DEVICE_CONFIG_ACCESS"/>
     <uses-permission android:name="android.permission.WRITE_DEVICE_CONFIG"/>
+    <uses-permission
+        android:name="android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD"/>
 
     <!-- needed by MasterClearReceiverTest to display a system dialog -->
     <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW"/>
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 7654093..d55bbd1 100644
--- a/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java
@@ -468,8 +468,9 @@
                 TEST_CALLING_UID);
     }
 
-    private void setPrioritizedAlarm(int type, long triggerTime, IAlarmListener listener) {
-        mService.setImpl(type, triggerTime, WINDOW_EXACT, 0, null, listener, "test",
+    private void setPrioritizedAlarm(int type, long triggerTime, long windowLength,
+            IAlarmListener listener) {
+        mService.setImpl(type, triggerTime, windowLength, 0, null, listener, "test",
                 FLAG_STANDALONE | FLAG_PRIORITIZE, null, null, TEST_CALLING_UID,
                 TEST_CALLING_PACKAGE, null);
     }
@@ -1685,7 +1686,7 @@
         final int numAlarms = 10;
         for (int i = 0; i < numAlarms; i++) {
             setPrioritizedAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + i,
-                    new IAlarmListener.Stub() {
+                    0, new IAlarmListener.Stub() {
                         @Override
                         public void doAlarm(IAlarmCompleteListener callback)
                                 throws RemoteException {
@@ -1720,7 +1721,7 @@
         final int numAlarms = 10;
         for (int i = 0; i < numAlarms; i++) {
             setPrioritizedAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + i,
-                    new IAlarmListener.Stub() {
+                    0, new IAlarmListener.Stub() {
                         @Override
                         public void doAlarm(IAlarmCompleteListener callback)
                                 throws RemoteException {
@@ -1738,12 +1739,12 @@
         }
         assertEquals(numAlarms, alarmsFired.get());
 
-        setPrioritizedAlarm(ELAPSED_REALTIME_WAKEUP, idleUntil - 3, new IAlarmListener.Stub() {
+        setPrioritizedAlarm(ELAPSED_REALTIME_WAKEUP, idleUntil - 3, 0, new IAlarmListener.Stub() {
             @Override
             public void doAlarm(IAlarmCompleteListener callback) throws RemoteException {
             }
         });
-        setPrioritizedAlarm(ELAPSED_REALTIME_WAKEUP, idleUntil - 2, new IAlarmListener.Stub() {
+        setPrioritizedAlarm(ELAPSED_REALTIME_WAKEUP, idleUntil - 2, 0, new IAlarmListener.Stub() {
             @Override
             public void doAlarm(IAlarmCompleteListener callback) throws RemoteException {
             }
@@ -2263,6 +2264,28 @@
     }
 
     @Test
+    public void minWindowPriorityAlarm() {
+        doReturn(true).when(
+                () -> CompatChanges.isChangeEnabled(
+                        eq(AlarmManager.ENFORCE_MINIMUM_WINDOW_ON_INEXACT_ALARMS),
+                        anyString(), any(UserHandle.class)));
+        final long minWindow = 73;
+        setDeviceConfigLong(KEY_MIN_WINDOW, minWindow);
+
+        // 0 is WINDOW_EXACT and < 0 is WINDOW_HEURISTIC.
+        for (int window = 1; window <= minWindow; window++) {
+            setPrioritizedAlarm(ELAPSED_REALTIME, 0, window, new IAlarmListener.Stub() {
+                @Override
+                public void doAlarm(IAlarmCompleteListener callback) throws RemoteException {
+                }
+            });
+            assertEquals(1, mService.mAlarmStore.size());
+            final Alarm a = mService.mAlarmStore.remove(unused -> true).get(0);
+            assertEquals(window, a.windowLength);
+        }
+    }
+
+    @Test
     public void denyListPackagesAdded() {
         mService.mConstants.EXACT_ALARM_DENY_LIST = new ArraySet<>(new String[]{"p1", "p2", "p3"});
         setDeviceConfigString(KEY_EXACT_ALARM_DENY_LIST, "p2,p4,p5");
diff --git a/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java b/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java
new file mode 100644
index 0000000..a8d8a90
--- /dev/null
+++ b/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java
@@ -0,0 +1,488 @@
+/*
+ * 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.app;
+
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
+import android.Manifest;
+import android.app.GameManager;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.platform.test.annotations.Presubmit;
+import android.provider.DeviceConfig;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoSession;
+import org.mockito.quality.Strictness;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.function.Supplier;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+@Presubmit
+public class GameManagerServiceTests {
+    @Mock MockContext mMockContext;
+    private static final String TAG = "GameServiceTests";
+    private static final String PACKAGE_NAME_INVALID = "com.android.app";
+    private static final int USER_ID_1 = 1001;
+    private static final int USER_ID_2 = 1002;
+
+    private MockitoSession mMockingSession;
+    private String mPackageName;
+    @Mock
+    private PackageManager mMockPackageManager;
+
+    // Stolen from ConnectivityServiceTest.MockContext
+    class MockContext extends ContextWrapper {
+        private static final String TAG = "MockContext";
+
+        // Map of permission name -> PermissionManager.Permission_{GRANTED|DENIED} constant
+        private final HashMap<String, Integer> mMockedPermissions = new HashMap<>();
+
+        MockContext(Context base) {
+            super(base);
+        }
+
+        /**
+         * Mock checks for the specified permission, and have them behave as per {@code granted}.
+         *
+         * <p>Passing null reverts to default behavior, which does a real permission check on the
+         * test package.
+         *
+         * @param granted One of {@link PackageManager#PERMISSION_GRANTED} or
+         *                {@link PackageManager#PERMISSION_DENIED}.
+         */
+        public void setPermission(String permission, Integer granted) {
+            mMockedPermissions.put(permission, granted);
+        }
+
+        private int checkMockedPermission(String permission, Supplier<Integer> ifAbsent) {
+            final Integer granted = mMockedPermissions.get(permission);
+            return granted != null ? granted : ifAbsent.get();
+        }
+
+        @Override
+        public int checkPermission(String permission, int pid, int uid) {
+            return checkMockedPermission(
+                    permission, () -> super.checkPermission(permission, pid, uid));
+        }
+
+        @Override
+        public int checkCallingOrSelfPermission(String permission) {
+            return checkMockedPermission(
+                    permission, () -> super.checkCallingOrSelfPermission(permission));
+        }
+
+        @Override
+        public void enforceCallingOrSelfPermission(String permission, String message) {
+            final Integer granted = mMockedPermissions.get(permission);
+            if (granted == null) {
+                super.enforceCallingOrSelfPermission(permission, message);
+                return;
+            }
+
+            if (!granted.equals(PackageManager.PERMISSION_GRANTED)) {
+                throw new SecurityException("[Test] permission denied: " + permission);
+            }
+        }
+
+        @Override
+        public PackageManager getPackageManager() {
+            return mMockPackageManager;
+        }
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        mMockingSession = mockitoSession()
+                .initMocks(this)
+                .mockStatic(DeviceConfig.class)
+                .strictness(Strictness.WARN)
+                .startMocking();
+        mMockContext = new MockContext(InstrumentationRegistry.getContext());
+        mPackageName = mMockContext.getPackageName();
+        final ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.category = ApplicationInfo.CATEGORY_GAME;
+        final PackageInfo pi = new PackageInfo();
+        pi.packageName = mPackageName;
+        final List<PackageInfo> packages = new ArrayList<>();
+        packages.add(pi);
+        when(mMockPackageManager.getInstalledPackages(anyInt())).thenReturn(packages);
+        when(mMockPackageManager.getApplicationInfoAsUser(anyString(), anyInt(), anyInt()))
+                .thenReturn(applicationInfo);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        if (mMockingSession != null) {
+            mMockingSession.finishMocking();
+        }
+    }
+
+    private void mockModifyGameModeGranted() {
+        mMockContext.setPermission(Manifest.permission.MANAGE_GAME_MODE,
+                PackageManager.PERMISSION_GRANTED);
+    }
+
+    private void mockModifyGameModeDenied() {
+        mMockContext.setPermission(Manifest.permission.MANAGE_GAME_MODE,
+                PackageManager.PERMISSION_DENIED);
+    }
+
+    private void mockDeviceConfigDefault() {
+        DeviceConfig.Properties properties = new DeviceConfig.Properties.Builder(
+                DeviceConfig.NAMESPACE_GAME_OVERLAY).setString(mPackageName, "").build();
+        when(DeviceConfig.getProperties(anyString(), anyString()))
+                .thenReturn(properties);
+    }
+
+    private void mockDeviceConfigNone() {
+        DeviceConfig.Properties properties = new DeviceConfig.Properties.Builder(
+                DeviceConfig.NAMESPACE_GAME_OVERLAY).build();
+        when(DeviceConfig.getProperties(anyString(), anyString()))
+                .thenReturn(properties);
+    }
+
+    private void mockDeviceConfigPerformance() {
+        String configString = "mode=2,downscaleFactor=0.5";
+        DeviceConfig.Properties properties = new DeviceConfig.Properties.Builder(
+                DeviceConfig.NAMESPACE_GAME_OVERLAY).setString(mPackageName, configString).build();
+        when(DeviceConfig.getProperties(anyString(), anyString()))
+                .thenReturn(properties);
+    }
+
+    private void mockDeviceConfigBattery() {
+        String configString = "mode=3,downscaleFactor=0.7";
+        DeviceConfig.Properties properties = new DeviceConfig.Properties.Builder(
+                DeviceConfig.NAMESPACE_GAME_OVERLAY).setString(mPackageName, configString).build();
+        when(DeviceConfig.getProperties(anyString(), anyString()))
+                .thenReturn(properties);
+    }
+
+    private void mockDeviceConfigAll() {
+        String configString = "mode=3,downscaleFactor=0.7:mode=2,downscaleFactor=0.5";
+        DeviceConfig.Properties properties = new DeviceConfig.Properties.Builder(
+                DeviceConfig.NAMESPACE_GAME_OVERLAY).setString(mPackageName, configString).build();
+        when(DeviceConfig.getProperties(anyString(), anyString()))
+                .thenReturn(properties);
+    }
+
+    private void mockDeviceConfigInvalid() {
+        String configString = "mode=2,downscaleFactor=0.55";
+        DeviceConfig.Properties properties = new DeviceConfig.Properties.Builder(
+                DeviceConfig.NAMESPACE_GAME_OVERLAY).setString(mPackageName, configString).build();
+        when(DeviceConfig.getProperties(anyString(), anyString()))
+                .thenReturn(properties);
+    }
+
+    private void mockDeviceConfigMalformed() {
+        String configString = "adsljckv=nin3rn9hn1231245:8795tq=21ewuydg";
+        DeviceConfig.Properties properties = new DeviceConfig.Properties.Builder(
+                DeviceConfig.NAMESPACE_GAME_OVERLAY).setString(mPackageName, configString).build();
+        when(DeviceConfig.getProperties(anyString(), anyString()))
+                .thenReturn(properties);
+    }
+
+    /**
+     * By default game mode is not supported.
+     */
+    @Test
+    public void testGameModeDefaultValue() {
+        GameManagerService gameManagerService = new GameManagerService(mMockContext);
+        gameManagerService.onUserStarting(USER_ID_1);
+
+        mockModifyGameModeGranted();
+
+        assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
+                gameManagerService.getGameMode(mPackageName, USER_ID_1));
+    }
+
+    /**
+     * Test the default behaviour for a nonexistent user.
+     */
+    @Test
+    public void testDefaultValueForNonexistentUser() {
+        GameManagerService gameManagerService = new GameManagerService(mMockContext);
+        gameManagerService.onUserStarting(USER_ID_1);
+
+        mockModifyGameModeGranted();
+
+        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_2);
+        assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
+                gameManagerService.getGameMode(mPackageName, USER_ID_2));
+    }
+
+    /**
+     * Test getter and setter of game modes.
+     */
+    @Test
+    public void testGameMode() {
+        GameManagerService gameManagerService = new GameManagerService(mMockContext);
+        gameManagerService.onUserStarting(USER_ID_1);
+
+        mockModifyGameModeGranted();
+
+        assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
+                gameManagerService.getGameMode(mPackageName, USER_ID_1));
+        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_1);
+        assertEquals(GameManager.GAME_MODE_STANDARD,
+                gameManagerService.getGameMode(mPackageName, USER_ID_1));
+        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE,
+                USER_ID_1);
+        assertEquals(GameManager.GAME_MODE_PERFORMANCE,
+                gameManagerService.getGameMode(mPackageName, USER_ID_1));
+    }
+
+    /**
+     * Test permission.MANAGE_GAME_MODE is checked
+     */
+    @Test
+    public void testGetGameModeInvalidPackageName() {
+        GameManagerService gameManagerService = new GameManagerService(mMockContext);
+        gameManagerService.onUserStarting(USER_ID_1);
+        try {
+            assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
+                    gameManagerService.getGameMode(PACKAGE_NAME_INVALID,
+                            USER_ID_1));
+
+            fail("GameManagerService failed to generate SecurityException when "
+                    + "permission.MANAGE_GAME_MODE is not granted.");
+        } catch (SecurityException ignored) {
+        }
+
+        // The test should throw an exception, so the test is passing if we get here.
+    }
+
+    /**
+     * Test permission.MANAGE_GAME_MODE is checked
+     */
+    @Test
+    public void testSetGameModePermissionDenied() {
+        GameManagerService gameManagerService = new GameManagerService(mMockContext);
+        gameManagerService.onUserStarting(USER_ID_1);
+
+        // Update the game mode so we can read back something valid.
+        mockModifyGameModeGranted();
+        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_1);
+        assertEquals(GameManager.GAME_MODE_STANDARD,
+                gameManagerService.getGameMode(mPackageName, USER_ID_1));
+
+        // Deny permission.MANAGE_GAME_MODE and verify the game mode is not updated.
+        mockModifyGameModeDenied();
+        try {
+            gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE,
+                    USER_ID_1);
+
+            fail("GameManagerService failed to generate SecurityException when "
+                    + "permission.MANAGE_GAME_MODE is denied.");
+        } catch (SecurityException ignored) {
+        }
+
+        // The test should throw an exception, so the test is passing if we get here.
+        mockModifyGameModeGranted();
+        // Verify that the Game Mode value wasn't updated.
+        assertEquals(GameManager.GAME_MODE_STANDARD,
+                gameManagerService.getGameMode(mPackageName, USER_ID_1));
+    }
+
+    /**
+     * Test game modes are user-specific.
+     */
+    @Test
+    public void testGameModeMultipleUsers() {
+        GameManagerService gameManagerService = new GameManagerService(mMockContext);
+        gameManagerService.onUserStarting(USER_ID_1);
+        gameManagerService.onUserStarting(USER_ID_2);
+
+        mockModifyGameModeGranted();
+
+        // Set User 1 to Standard
+        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_1);
+        assertEquals(GameManager.GAME_MODE_STANDARD,
+                gameManagerService.getGameMode(mPackageName, USER_ID_1));
+
+        // Set User 2 to Performance and verify User 1 is still Standard
+        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE,
+                USER_ID_2);
+        assertEquals(GameManager.GAME_MODE_PERFORMANCE,
+                gameManagerService.getGameMode(mPackageName, USER_ID_2));
+        assertEquals(GameManager.GAME_MODE_STANDARD,
+                gameManagerService.getGameMode(mPackageName, USER_ID_1));
+
+        // Set User 1 to Battery and verify User 2 is still Performance
+        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY,
+                USER_ID_1);
+        assertEquals(GameManager.GAME_MODE_BATTERY,
+                gameManagerService.getGameMode(mPackageName, USER_ID_1));
+        assertEquals(GameManager.GAME_MODE_PERFORMANCE,
+                gameManagerService.getGameMode(mPackageName, USER_ID_2));
+    }
+
+    /**
+     * Phonesky device config exists, but is only propagating the default value.
+     */
+    @Test
+    public void testDeviceConfigDefault() {
+        mockDeviceConfigDefault();
+        mockModifyGameModeGranted();
+        GameManagerService gameManagerService = new GameManagerService(mMockContext);
+        gameManagerService.onUserStarting(USER_ID_1);
+        gameManagerService.loadDeviceConfigLocked();
+
+        int[] modes = gameManagerService.getAvailableGameModes(mPackageName);
+        assertEquals(modes.length, 1);
+        assertEquals(modes[0], GameManager.GAME_MODE_UNSUPPORTED);
+    }
+
+    /**
+     * Phonesky device config does not exists.
+     */
+    @Test
+    public void testDeviceConfigNone() {
+        mockDeviceConfigNone();
+        mockModifyGameModeGranted();
+        GameManagerService gameManagerService = new GameManagerService(mMockContext);
+        gameManagerService.onUserStarting(USER_ID_1);
+        gameManagerService.loadDeviceConfigLocked();
+
+        int[] modes = gameManagerService.getAvailableGameModes(mPackageName);
+        assertEquals(modes.length, 1);
+        assertEquals(modes[0], GameManager.GAME_MODE_UNSUPPORTED);
+    }
+
+    /**
+     * Phonesky device config for performance mode exists and is valid.
+     */
+    @Test
+    public void testDeviceConfigPerformance() {
+        mockDeviceConfigPerformance();
+        mockModifyGameModeGranted();
+        GameManagerService gameManagerService = new GameManagerService(mMockContext);
+        gameManagerService.onUserStarting(USER_ID_1);
+        gameManagerService.loadDeviceConfigLocked();
+
+        boolean perfModeExists = false;
+        int[] modes = gameManagerService.getAvailableGameModes(mPackageName);
+        for (int mode : modes) {
+            if (mode == GameManager.GAME_MODE_PERFORMANCE) {
+                perfModeExists = true;
+            }
+        }
+        assertEquals(modes.length, 1);
+        assertTrue(perfModeExists);
+    }
+
+    /**
+     * Phonesky device config for battery mode exists and is valid.
+     */
+    @Test
+    public void testDeviceConfigBattery() {
+        mockDeviceConfigBattery();
+        mockModifyGameModeGranted();
+        GameManagerService gameManagerService = new GameManagerService(mMockContext);
+        gameManagerService.onUserStarting(USER_ID_1);
+        gameManagerService.loadDeviceConfigLocked();
+
+        boolean batteryModeExists = false;
+        int[] modes = gameManagerService.getAvailableGameModes(mPackageName);
+        for (int mode : modes) {
+            if (mode == GameManager.GAME_MODE_BATTERY) {
+                batteryModeExists = true;
+            }
+        }
+        assertEquals(modes.length, 1);
+        assertTrue(batteryModeExists);
+    }
+
+    /**
+     * Phonesky device configs for both battery and performance modes exists and are valid.
+     */
+    @Test
+    public void testDeviceConfigAll() {
+        mockDeviceConfigAll();
+        mockModifyGameModeGranted();
+        GameManagerService gameManagerService = new GameManagerService(mMockContext);
+        gameManagerService.onUserStarting(USER_ID_1);
+        gameManagerService.loadDeviceConfigLocked();
+
+        boolean batteryModeExists = false;
+        boolean perfModeExists = false;
+        int[] modes = gameManagerService.getAvailableGameModes(mPackageName);
+        for (int mode : modes) {
+            if (mode == GameManager.GAME_MODE_BATTERY) {
+                batteryModeExists = true;
+            } else if (mode == GameManager.GAME_MODE_PERFORMANCE) {
+                perfModeExists = true;
+            }
+        }
+        assertTrue(batteryModeExists);
+        assertTrue(perfModeExists);
+    }
+
+    /**
+     * Phonesky device config contains values that parse correctly but are not valid in game mode.
+     */
+    @Test
+    public void testDeviceConfigInvalid() {
+        mockDeviceConfigInvalid();
+        mockModifyGameModeGranted();
+        GameManagerService gameManagerService = new GameManagerService(mMockContext);
+        gameManagerService.onUserStarting(USER_ID_1);
+        gameManagerService.loadDeviceConfigLocked();
+
+        int[] modes = gameManagerService.getAvailableGameModes(mPackageName);
+        assertEquals(modes.length, 1);
+        assertEquals(modes[0], GameManager.GAME_MODE_UNSUPPORTED);
+    }
+
+    /**
+     * Phonesky device config is garbage.
+     */
+    @Test
+    public void testDeviceConfigMalformed() {
+        mockDeviceConfigMalformed();
+        mockModifyGameModeGranted();
+        GameManagerService gameManagerService = new GameManagerService(mMockContext);
+        gameManagerService.onUserStarting(USER_ID_1);
+        gameManagerService.loadDeviceConfigLocked();
+
+        int[] modes = gameManagerService.getAvailableGameModes(mPackageName);
+        assertEquals(modes.length, 1);
+        assertEquals(modes[0], GameManager.GAME_MODE_UNSUPPORTED);
+    }
+}
diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/ConnectivityControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/ConnectivityControllerTest.java
index 0cd470ae..ffbcc45 100644
--- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/ConnectivityControllerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/ConnectivityControllerTest.java
@@ -137,7 +137,7 @@
 
     @Test
     public void testUsable() throws Exception {
-        final Network net = new Network(101);
+        final Network net = mock(Network.class);
         final JobInfo.Builder job = createJob()
                 .setEstimatedNetworkBytes(DataUnit.MEBIBYTES.toBytes(1),
                         DataUnit.MEBIBYTES.toBytes(1))
@@ -148,52 +148,52 @@
 
         // Slow network is too slow
         assertFalse(controller.isSatisfied(createJobStatus(job), net,
-                createCapabilities().setLinkUpstreamBandwidthKbps(1)
-                        .setLinkDownstreamBandwidthKbps(1), mConstants));
+                createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1)
+                        .setLinkDownstreamBandwidthKbps(1).build(), mConstants));
         // Slow downstream
         assertFalse(controller.isSatisfied(createJobStatus(job), net,
-                createCapabilities().setLinkUpstreamBandwidthKbps(1024)
-                        .setLinkDownstreamBandwidthKbps(1), mConstants));
+                createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1024)
+                        .setLinkDownstreamBandwidthKbps(1).build(), mConstants));
         // Slow upstream
         assertFalse(controller.isSatisfied(createJobStatus(job), net,
-                createCapabilities().setLinkUpstreamBandwidthKbps(1)
-                        .setLinkDownstreamBandwidthKbps(1024), mConstants));
+                createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1)
+                        .setLinkDownstreamBandwidthKbps(1024).build(), mConstants));
         // Fast network looks great
         assertTrue(controller.isSatisfied(createJobStatus(job), net,
-                createCapabilities().setLinkUpstreamBandwidthKbps(1024)
-                        .setLinkDownstreamBandwidthKbps(1024), mConstants));
+                createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1024)
+                        .setLinkDownstreamBandwidthKbps(1024).build(), mConstants));
         // Slow network still good given time
         assertTrue(controller.isSatisfied(createJobStatus(job), net,
-                createCapabilities().setLinkUpstreamBandwidthKbps(130)
-                        .setLinkDownstreamBandwidthKbps(130), mConstants));
+                createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(130)
+                        .setLinkDownstreamBandwidthKbps(130).build(), mConstants));
 
         when(mService.getMaxJobExecutionTimeMs(any())).thenReturn(60_000L);
 
         // Slow network is too slow
         assertFalse(controller.isSatisfied(createJobStatus(job), net,
-                createCapabilities().setLinkUpstreamBandwidthKbps(1)
-                        .setLinkDownstreamBandwidthKbps(1), mConstants));
+                createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1)
+                        .setLinkDownstreamBandwidthKbps(1).build(), mConstants));
         // Slow downstream
         assertFalse(controller.isSatisfied(createJobStatus(job), net,
-                createCapabilities().setLinkUpstreamBandwidthKbps(137)
-                        .setLinkDownstreamBandwidthKbps(1), mConstants));
+                createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(137)
+                        .setLinkDownstreamBandwidthKbps(1).build(), mConstants));
         // Slow upstream
         assertFalse(controller.isSatisfied(createJobStatus(job), net,
-                createCapabilities().setLinkUpstreamBandwidthKbps(1)
-                        .setLinkDownstreamBandwidthKbps(137), mConstants));
+                createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1)
+                        .setLinkDownstreamBandwidthKbps(137).build(), mConstants));
         // Network good enough
         assertTrue(controller.isSatisfied(createJobStatus(job), net,
-                createCapabilities().setLinkUpstreamBandwidthKbps(137)
-                        .setLinkDownstreamBandwidthKbps(137), mConstants));
+                createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(137)
+                        .setLinkDownstreamBandwidthKbps(137).build(), mConstants));
         // Network slightly too slow given reduced time
         assertFalse(controller.isSatisfied(createJobStatus(job), net,
-                createCapabilities().setLinkUpstreamBandwidthKbps(130)
-                        .setLinkDownstreamBandwidthKbps(130), mConstants));
+                createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(130)
+                        .setLinkDownstreamBandwidthKbps(130).build(), mConstants));
     }
 
     @Test
     public void testInsane() throws Exception {
-        final Network net = new Network(101);
+        final Network net = mock(Network.class);
         final JobInfo.Builder job = createJob()
                 .setEstimatedNetworkBytes(DataUnit.MEBIBYTES.toBytes(1),
                         DataUnit.MEBIBYTES.toBytes(1))
@@ -205,14 +205,15 @@
 
         // Suspended networks aren't usable.
         assertFalse(controller.isSatisfied(createJobStatus(job), net,
-                createCapabilities().removeCapability(NET_CAPABILITY_NOT_SUSPENDED)
-                        .setLinkUpstreamBandwidthKbps(1024).setLinkDownstreamBandwidthKbps(1024),
+                createCapabilitiesBuilder().removeCapability(NET_CAPABILITY_NOT_SUSPENDED)
+                        .setLinkUpstreamBandwidthKbps(1024).setLinkDownstreamBandwidthKbps(1024)
+                        .build(),
                 mConstants));
 
         // Not suspended networks are usable.
         assertTrue(controller.isSatisfied(createJobStatus(job), net,
-                createCapabilities().setLinkUpstreamBandwidthKbps(1024)
-                        .setLinkDownstreamBandwidthKbps(1024), mConstants));
+                createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1024)
+                        .setLinkDownstreamBandwidthKbps(1024).build(), mConstants));
     }
 
     @Test
@@ -229,17 +230,17 @@
 
         // Uncongested network is whenever
         {
-            final Network net = new Network(101);
-            final NetworkCapabilities caps = createCapabilities()
-                    .addCapability(NET_CAPABILITY_NOT_CONGESTED);
+            final Network net = mock(Network.class);
+            final NetworkCapabilities caps = createCapabilitiesBuilder()
+                    .addCapability(NET_CAPABILITY_NOT_CONGESTED).build();
             assertTrue(controller.isSatisfied(early, net, caps, mConstants));
             assertTrue(controller.isSatisfied(late, net, caps, mConstants));
         }
 
         // Congested network is more selective
         {
-            final Network net = new Network(101);
-            final NetworkCapabilities caps = createCapabilities();
+            final Network net = mock(Network.class);
+            final NetworkCapabilities caps = createCapabilitiesBuilder().build();
             assertFalse(controller.isSatisfied(early, net, caps, mConstants));
             assertTrue(controller.isSatisfied(late, net, caps, mConstants));
         }
@@ -263,10 +264,11 @@
 
         // Unmetered network is whenever
         {
-            final Network net = new Network(101);
-            final NetworkCapabilities caps = createCapabilities()
+            final Network net = mock(Network.class);
+            final NetworkCapabilities caps = createCapabilitiesBuilder()
                     .addCapability(NET_CAPABILITY_NOT_CONGESTED)
-                    .addCapability(NET_CAPABILITY_NOT_METERED);
+                    .addCapability(NET_CAPABILITY_NOT_METERED)
+                    .build();
             assertTrue(controller.isSatisfied(early, net, caps, mConstants));
             assertTrue(controller.isSatisfied(late, net, caps, mConstants));
             assertTrue(controller.isSatisfied(earlyPrefetch, net, caps, mConstants));
@@ -275,9 +277,10 @@
 
         // Metered network is only when prefetching and late
         {
-            final Network net = new Network(101);
-            final NetworkCapabilities caps = createCapabilities()
-                    .addCapability(NET_CAPABILITY_NOT_CONGESTED);
+            final Network net = mock(Network.class);
+            final NetworkCapabilities caps = createCapabilitiesBuilder()
+                    .addCapability(NET_CAPABILITY_NOT_CONGESTED)
+                    .build();
             assertFalse(controller.isSatisfied(early, net, caps, mConstants));
             assertFalse(controller.isSatisfied(late, net, caps, mConstants));
             assertFalse(controller.isSatisfied(earlyPrefetch, net, caps, mConstants));
@@ -301,11 +304,12 @@
 
         final ConnectivityController controller = new ConnectivityController(mService);
 
-        final Network meteredNet = new Network(101);
-        final NetworkCapabilities meteredCaps = createCapabilities();
-        final Network unmeteredNet = new Network(202);
-        final NetworkCapabilities unmeteredCaps = createCapabilities()
-                .addCapability(NET_CAPABILITY_NOT_METERED);
+        final Network meteredNet = mock(Network.class);
+        final NetworkCapabilities meteredCaps = createCapabilitiesBuilder().build();
+        final Network unmeteredNet = mock(Network.class);
+        final NetworkCapabilities unmeteredCaps = createCapabilitiesBuilder()
+                .addCapability(NET_CAPABILITY_NOT_METERED)
+                .build();
 
         final JobStatus red = createJobStatus(createJob()
                 .setEstimatedNetworkBytes(DataUnit.MEBIBYTES.toBytes(1), 0)
@@ -610,9 +614,9 @@
         networked.setStandbyBucket(FREQUENT_INDEX);
         unnetworked.setStandbyBucket(FREQUENT_INDEX);
 
-        final Network cellularNet = new Network(101);
+        final Network cellularNet = mock(Network.class);
         final NetworkCapabilities cellularCaps =
-                createCapabilities().addTransportType(TRANSPORT_CELLULAR);
+                createCapabilitiesBuilder().addTransportType(TRANSPORT_CELLULAR).build();
 
         final ConnectivityController controller = new ConnectivityController(mService);
         controller.maybeStartTrackingJobLocked(networked, null);
@@ -660,8 +664,8 @@
         }
     }
 
-    private static NetworkCapabilities createCapabilities() {
-        return new NetworkCapabilities().addCapability(NET_CAPABILITY_INTERNET)
+    private static NetworkCapabilities.Builder createCapabilitiesBuilder() {
+        return new NetworkCapabilities.Builder().addCapability(NET_CAPABILITY_INTERNET)
                 .addCapability(NET_CAPABILITY_NOT_SUSPENDED)
                 .addCapability(NET_CAPABILITY_NOT_VCN_MANAGED)
                 .addCapability(NET_CAPABILITY_VALIDATED);
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt b/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt
index 411c31c..72bc77e 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt
@@ -24,6 +24,7 @@
 import android.testing.TestableLooper
 import android.testing.TestableLooper.RunWithLooper
 import com.android.server.apphibernation.AppHibernationManagerInternal
+import com.android.server.apphibernation.AppHibernationService
 import com.android.server.extendedtestutils.wheneverStatic
 import com.android.server.testutils.whenever
 import org.junit.Assert.assertFalse
@@ -61,6 +62,7 @@
         MockitoAnnotations.initMocks(this)
         wheneverStatic { DeviceConfig.getBoolean(
             NAMESPACE_APP_HIBERNATION, KEY_APP_HIBERNATION_ENABLED, false) }.thenReturn(true)
+        AppHibernationService.sIsServiceEnabled = true
         rule.system().stageNominalSystemState()
         whenever(rule.mocks().injector.getLocalService(AppHibernationManagerInternal::class.java))
             .thenReturn(appHibernationManager)
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java
index bcc756a..2a5bb18 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java
@@ -157,7 +157,7 @@
                 new Object(),
                 mMockSecurityPolicy,
                 mMockSystemSupport,
-                mA11yms,
+                mA11yms.getTraceManager(),
                 mMockWindowManagerService,
                 mMockSystemActionPerformer,
                 mMockA11yWindowManager,
diff --git a/services/tests/servicestests/src/com/android/server/am/FgsTempAllowListTest.java b/services/tests/servicestests/src/com/android/server/am/FgsTempAllowListTest.java
new file mode 100644
index 0000000..f85f0f8
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/am/FgsTempAllowListTest.java
@@ -0,0 +1,77 @@
+/*
+ * 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.am;
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import android.os.SystemClock;
+import android.platform.test.annotations.Presubmit;
+import android.util.Pair;
+
+import org.junit.Test;
+
+/**
+ * Build/Install/Run:
+ *  atest FrameworksServicesTests:TempAllowListTest
+ */
+@Presubmit
+public class FgsTempAllowListTest {
+
+    /**
+     * This case tests get(), isAllowed(), remove() interfaces.
+     */
+    @Test
+    public void testIsAllowed() {
+        FgsTempAllowList<Integer, String> allowList = new FgsTempAllowList();
+        allowList.add(10001, 2000, "description1");
+        allowList.add(10002, 2000, "description2");
+
+        assertTrue(allowList.isAllowed(10001));
+        Pair<Long, String> entry1 = allowList.get(10001);
+        assertNotNull(entry1);
+        assertEquals(entry1.second, "description1");
+
+        assertTrue(allowList.isAllowed(10002));
+        Pair<Long, String> entry2 = allowList.get(10002);
+        assertNotNull(entry2);
+        assertEquals(entry2.second, "description2");
+
+        allowList.remove(10001);
+        assertFalse(allowList.isAllowed(10001));
+        assertNull(allowList.get(10001));
+    }
+
+    /**
+     * This case tests temp allowlist entry can expire.
+     */
+    @Test
+    public void testExpired() {
+        FgsTempAllowList<Integer, String> allowList = new FgsTempAllowList();
+        // temp allow for 2000ms.
+        allowList.add(10001, 2000, "uid1-2000ms");
+        // sleep for 3000ms.
+        SystemClock.sleep(3000);
+        // entry expired.
+        assertFalse(allowList.isAllowed(10001));
+        assertNull(allowList.get(10001));
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/app/GameManagerServiceTests.java b/services/tests/servicestests/src/com/android/server/app/GameManagerServiceTests.java
deleted file mode 100644
index edc0d46..0000000
--- a/services/tests/servicestests/src/com/android/server/app/GameManagerServiceTests.java
+++ /dev/null
@@ -1,271 +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.app;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import android.Manifest;
-import android.app.GameManager;
-import android.content.Context;
-import android.content.ContextWrapper;
-import android.content.pm.PackageManager;
-import android.platform.test.annotations.Presubmit;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-
-import java.util.HashMap;
-import java.util.function.Supplier;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-@Presubmit
-public class GameManagerServiceTests {
-
-    private static final String TAG = "GameServiceTests";
-    private static final String PACKAGE_NAME_INVALID = "com.android.app";
-    private static final int USER_ID_1 = 1001;
-    private static final int USER_ID_2 = 1002;
-
-    // Stolen from ConnectivityServiceTest.MockContext
-    static class MockContext extends ContextWrapper {
-        private static final String TAG = "MockContext";
-
-        // Map of permission name -> PermissionManager.Permission_{GRANTED|DENIED} constant
-        private final HashMap<String, Integer> mMockedPermissions = new HashMap<>();
-
-        @Mock
-        private final MockPackageManager mMockPackageManager;
-
-        MockContext(Context base) {
-            super(base);
-            mMockPackageManager = new MockPackageManager();
-        }
-
-        /**
-         * Mock checks for the specified permission, and have them behave as per {@code granted}.
-         *
-         * <p>Passing null reverts to default behavior, which does a real permission check on the
-         * test package.
-         *
-         * @param granted One of {@link PackageManager#PERMISSION_GRANTED} or
-         *                {@link PackageManager#PERMISSION_DENIED}.
-         */
-        public void setPermission(String permission, Integer granted) {
-            mMockedPermissions.put(permission, granted);
-        }
-
-        private int checkMockedPermission(String permission, Supplier<Integer> ifAbsent) {
-            final Integer granted = mMockedPermissions.get(permission);
-            return granted != null ? granted : ifAbsent.get();
-        }
-
-        @Override
-        public int checkPermission(String permission, int pid, int uid) {
-            return checkMockedPermission(
-                    permission, () -> super.checkPermission(permission, pid, uid));
-        }
-
-        @Override
-        public int checkCallingOrSelfPermission(String permission) {
-            return checkMockedPermission(
-                    permission, () -> super.checkCallingOrSelfPermission(permission));
-        }
-
-        @Override
-        public void enforceCallingOrSelfPermission(String permission, String message) {
-            final Integer granted = mMockedPermissions.get(permission);
-            if (granted == null) {
-                super.enforceCallingOrSelfPermission(permission, message);
-                return;
-            }
-
-            if (!granted.equals(PackageManager.PERMISSION_GRANTED)) {
-                throw new SecurityException("[Test] permission denied: " + permission);
-            }
-        }
-
-        @Override
-        public PackageManager getPackageManager() {
-            return mMockPackageManager;
-        }
-    }
-
-    @Mock
-    private MockContext mMockContext;
-
-    private String mPackageName;
-
-    @Before
-    public void setUp() throws Exception {
-        mMockContext = new MockContext(InstrumentationRegistry.getContext());
-        mPackageName = mMockContext.getPackageName();
-    }
-
-    private void mockModifyGameModeGranted() {
-        mMockContext.setPermission(Manifest.permission.MANAGE_GAME_MODE,
-                PackageManager.PERMISSION_GRANTED);
-    }
-
-    private void mockModifyGameModeDenied() {
-        mMockContext.setPermission(Manifest.permission.MANAGE_GAME_MODE,
-                PackageManager.PERMISSION_DENIED);
-    }
-
-    /**
-     * By default game mode is not supported.
-     */
-    @Test
-    public void testGameModeDefaultValue() {
-        GameManagerService gameManagerService = new GameManagerService(mMockContext);
-        gameManagerService.onUserStarting(USER_ID_1);
-
-        mockModifyGameModeGranted();
-
-        assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
-                gameManagerService.getGameMode(mPackageName, USER_ID_1));
-    }
-
-    /**
-     * Test the default behaviour for a nonexistent user.
-     */
-    @Test
-    public void testDefaultValueForNonexistentUser() {
-        GameManagerService gameManagerService = new GameManagerService(mMockContext);
-        gameManagerService.onUserStarting(USER_ID_1);
-
-        mockModifyGameModeGranted();
-
-        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_2);
-        assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
-                gameManagerService.getGameMode(mPackageName, USER_ID_2));
-    }
-
-    /**
-     * Test getter and setter of game modes.
-     */
-    @Test
-    public void testGameMode() {
-        GameManagerService gameManagerService = new GameManagerService(mMockContext);
-        gameManagerService.onUserStarting(USER_ID_1);
-
-        mockModifyGameModeGranted();
-
-        assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
-                gameManagerService.getGameMode(mPackageName, USER_ID_1));
-        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_1);
-        assertEquals(GameManager.GAME_MODE_STANDARD,
-                gameManagerService.getGameMode(mPackageName, USER_ID_1));
-        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE,
-                USER_ID_1);
-        assertEquals(GameManager.GAME_MODE_PERFORMANCE,
-                gameManagerService.getGameMode(mPackageName, USER_ID_1));
-    }
-
-    /**
-     * Test permission.MANAGE_GAME_MODE is checked
-     */
-    @Test
-    public void testGetGameModeInvalidPackageName() {
-        GameManagerService gameManagerService = new GameManagerService(mMockContext);
-        gameManagerService.onUserStarting(USER_ID_1);
-
-        try {
-            assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
-                    gameManagerService.getGameMode(PACKAGE_NAME_INVALID,
-                            USER_ID_1));
-
-            fail("GameManagerService failed to generate SecurityException when "
-                    + "permission.MANAGE_GAME_MODE is not granted.");
-        } catch (SecurityException ignored) {
-        }
-
-        // The test should throw an exception, so the test is passing if we get here.
-    }
-
-    /**
-     * Test permission.MANAGE_GAME_MODE is checked
-     */
-    @Test
-    public void testSetGameModePermissionDenied() {
-        GameManagerService gameManagerService = new GameManagerService(mMockContext);
-        gameManagerService.onUserStarting(USER_ID_1);
-
-        // Update the game mode so we can read back something valid.
-        mockModifyGameModeGranted();
-        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_1);
-        assertEquals(GameManager.GAME_MODE_STANDARD,
-                gameManagerService.getGameMode(mPackageName, USER_ID_1));
-
-        // Deny permission.MANAGE_GAME_MODE and verify the game mode is not updated.
-        mockModifyGameModeDenied();
-        try {
-            gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE,
-                    USER_ID_1);
-
-            fail("GameManagerService failed to generate SecurityException when "
-                    + "permission.MANAGE_GAME_MODE is denied.");
-        } catch (SecurityException ignored) {
-        }
-
-        // The test should throw an exception, so the test is passing if we get here.
-        mockModifyGameModeGranted();
-        // Verify that the Game Mode value wasn't updated.
-        assertEquals(GameManager.GAME_MODE_STANDARD,
-                gameManagerService.getGameMode(mPackageName, USER_ID_1));
-    }
-
-    /**
-     * Test game modes are user-specific.
-     */
-    @Test
-    public void testGameModeMultipleUsers() {
-        GameManagerService gameManagerService = new GameManagerService(mMockContext);
-        gameManagerService.onUserStarting(USER_ID_1);
-        gameManagerService.onUserStarting(USER_ID_2);
-
-        mockModifyGameModeGranted();
-
-        // Set User 1 to Standard
-        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_1);
-        assertEquals(GameManager.GAME_MODE_STANDARD,
-                gameManagerService.getGameMode(mPackageName, USER_ID_1));
-
-        // Set User 2 to Performance and verify User 1 is still Standard
-        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE,
-                USER_ID_2);
-        assertEquals(GameManager.GAME_MODE_PERFORMANCE,
-                gameManagerService.getGameMode(mPackageName, USER_ID_2));
-        assertEquals(GameManager.GAME_MODE_STANDARD,
-                gameManagerService.getGameMode(mPackageName, USER_ID_1));
-
-        // Set User 1 to Battery and verify User 2 is still Performance
-        gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY,
-                USER_ID_1);
-        assertEquals(GameManager.GAME_MODE_BATTERY,
-                gameManagerService.getGameMode(mPackageName, USER_ID_1));
-        assertEquals(GameManager.GAME_MODE_PERFORMANCE,
-                gameManagerService.getGameMode(mPackageName, USER_ID_2));
-    }
-}
diff --git a/services/tests/servicestests/src/com/android/server/apphibernation/AppHibernationServiceTest.java b/services/tests/servicestests/src/com/android/server/apphibernation/AppHibernationServiceTest.java
index 9a430e4..f280aea 100644
--- a/services/tests/servicestests/src/com/android/server/apphibernation/AppHibernationServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/apphibernation/AppHibernationServiceTest.java
@@ -123,7 +123,7 @@
         doReturn(true).when(mUserManager).isUserUnlockingOrUnlocked(USER_ID_1);
         mAppHibernationService.onUserUnlocking(new SystemService.TargetUser(userInfo));
 
-        mAppHibernationService.mIsServiceEnabled = true;
+        mAppHibernationService.sIsServiceEnabled = true;
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index 89798ce..1b42dfa 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -3179,6 +3179,16 @@
     }
 
     @Test
+    public void testSetUserProvisioningState_profileFinalized_canTransitionToUserUnmanaged()
+            throws Exception {
+        setupProfileOwner();
+
+        exerciseUserProvisioningTransitions(CALLER_USER_HANDLE,
+                DevicePolicyManager.STATE_USER_PROFILE_FINALIZED,
+                DevicePolicyManager.STATE_USER_UNMANAGED);
+    }
+
+    @Test
     public void testSetUserProvisioningState_illegalTransitionToAnotherInProgressState()
             throws Exception {
         setupProfileOwner();
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java b/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
index 679d690..d62f83c 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
@@ -36,9 +36,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.UserInfo;
 import android.hardware.authsecret.V1_0.IAuthSecret;
-import android.hardware.face.Face;
 import android.hardware.face.FaceManager;
-import android.hardware.fingerprint.Fingerprint;
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.FileUtils;
 import android.os.IProgressListener;
@@ -261,13 +259,12 @@
         doAnswer(new Answer<Void>() {
             @Override
             public Void answer(InvocationOnMock invocation) throws Throwable {
-                Fingerprint fp = (Fingerprint) invocation.getArguments()[0];
                 FingerprintManager.RemovalCallback callback =
-                        (FingerprintManager.RemovalCallback) invocation.getArguments()[2];
-                callback.onRemovalSucceeded(fp, 0);
+                        (FingerprintManager.RemovalCallback) invocation.getArguments()[1];
+                callback.onRemovalSucceeded(null, 0);
                 return null;
             }
-        }).when(mFingerprintManager).remove(any(), eq(userId), any());
+        }).when(mFingerprintManager).removeAll(eq(userId), any());
 
 
         // Hardware must be detected and templates must be enrolled
@@ -277,13 +274,12 @@
         doAnswer(new Answer<Void>() {
             @Override
             public Void answer(InvocationOnMock invocation) throws Throwable {
-                Face face = (Face) invocation.getArguments()[0];
                 FaceManager.RemovalCallback callback =
-                        (FaceManager.RemovalCallback) invocation.getArguments()[2];
-                callback.onRemovalSucceeded(face, 0);
+                        (FaceManager.RemovalCallback) invocation.getArguments()[1];
+                callback.onRemovalSucceeded(null, 0);
                 return null;
             }
-        }).when(mFaceManager).remove(any(), eq(userId), any());
+        }).when(mFaceManager).removeAll(eq(userId), any());
     }
 
     @After
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java
index 4a42940..5d60a89 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java
@@ -208,4 +208,9 @@
             parcel.recycle();
         }
     }
-}
+
+    @Override
+    void setKeystorePassword(byte[] password, int userHandle) {
+
+    }
+}
\ No newline at end of file
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/MockLockSettingsContext.java b/services/tests/servicestests/src/com/android/server/locksettings/MockLockSettingsContext.java
index 2b9a05c..efa1b04 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/MockLockSettingsContext.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/MockLockSettingsContext.java
@@ -20,11 +20,16 @@
 import android.app.NotificationManager;
 import android.app.admin.DevicePolicyManager;
 import android.app.trust.TrustManager;
+import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.ContextWrapper;
+import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.pm.PackageManager;
 import android.hardware.face.FaceManager;
 import android.hardware.fingerprint.FingerprintManager;
+import android.os.Handler;
+import android.os.UserHandle;
 import android.os.UserManager;
 import android.os.storage.StorageManager;
 
@@ -94,4 +99,11 @@
     public int checkCallingOrSelfPermission(String permission) {
         return PackageManager.PERMISSION_GRANTED;
     }
+
+    @Override
+    public Intent registerReceiverAsUser(BroadcastReceiver receiver,
+            UserHandle user, IntentFilter filter, String broadcastPermission,
+            Handler scheduler) {
+        return null;
+    }
 }
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java b/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java
index 49a54ec..aecc794 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java
@@ -112,14 +112,13 @@
     private MockableRebootEscrowInjected mInjected;
     private RebootEscrowManager mService;
     private SecretKey mAesKey;
+    private MockInjector mMockInjector;
 
     public interface MockableRebootEscrowInjected {
         int getBootCount();
 
         long getCurrentTimeMillis();
 
-        boolean forceServerBased();
-
         void reportMetric(boolean success, int errorCode, int serviceType, int attemptCount,
                 int escrowDurationInSeconds, int vbmetaDigestStatus, int durationSinceBootComplete);
     }
@@ -127,11 +126,12 @@
     static class MockInjector extends RebootEscrowManager.Injector {
         private final IRebootEscrow mRebootEscrow;
         private final ResumeOnRebootServiceConnection mServiceConnection;
-        private final RebootEscrowProviderInterface mRebootEscrowProvider;
+        private final RebootEscrowProviderInterface mDefaultRebootEscrowProvider;
         private final UserManager mUserManager;
         private final MockableRebootEscrowInjected mInjected;
         private final RebootEscrowKeyStoreManager mKeyStoreManager;
-        private final boolean mServerBased;
+        private boolean mServerBased;
+        private RebootEscrowProviderInterface mRebootEscrowProviderInUse;
 
         MockInjector(Context context, UserManager userManager,
                 IRebootEscrow rebootEscrow,
@@ -149,7 +149,7 @@
                             return mRebootEscrow;
                         }
                     };
-            mRebootEscrowProvider = new RebootEscrowProviderHalImpl(halInjector);
+            mDefaultRebootEscrowProvider = new RebootEscrowProviderHalImpl(halInjector);
             mUserManager = userManager;
             mKeyStoreManager = keyStoreManager;
             mInjected = injected;
@@ -166,7 +166,8 @@
             mServerBased = true;
             RebootEscrowProviderServerBasedImpl.Injector injector =
                     new RebootEscrowProviderServerBasedImpl.Injector(serviceConnection);
-            mRebootEscrowProvider = new RebootEscrowProviderServerBasedImpl(storage, injector);
+            mDefaultRebootEscrowProvider = new RebootEscrowProviderServerBasedImpl(
+                    storage, injector);
             mUserManager = userManager;
             mKeyStoreManager = keyStoreManager;
             mInjected = injected;
@@ -184,15 +185,23 @@
 
         @Override
         public boolean serverBasedResumeOnReboot() {
-            if (mInjected.forceServerBased()) {
-                return true;
-            }
             return mServerBased;
         }
 
         @Override
+        public RebootEscrowProviderInterface createRebootEscrowProviderIfNeeded() {
+            mRebootEscrowProviderInUse = mDefaultRebootEscrowProvider;
+            return mRebootEscrowProviderInUse;
+        }
+
+        @Override
         public RebootEscrowProviderInterface getRebootEscrowProvider() {
-            return mRebootEscrowProvider;
+            return mRebootEscrowProviderInUse;
+        }
+
+        @Override
+        public void clearRebootEscrowProvider() {
+            mRebootEscrowProviderInUse = null;
         }
 
         @Override
@@ -264,13 +273,15 @@
         when(mCallbacks.isUserSecure(NONSECURE_SECONDARY_USER_ID)).thenReturn(false);
         when(mCallbacks.isUserSecure(SECURE_SECONDARY_USER_ID)).thenReturn(true);
         mInjected = mock(MockableRebootEscrowInjected.class);
-        mService = new RebootEscrowManager(new MockInjector(mContext, mUserManager, mRebootEscrow,
-                mKeyStoreManager, mStorage, mInjected), mCallbacks, mStorage);
+        mMockInjector = new MockInjector(mContext, mUserManager, mRebootEscrow,
+                mKeyStoreManager, mStorage, mInjected);
+        mService = new RebootEscrowManager(mMockInjector, mCallbacks, mStorage);
     }
 
     private void setServerBasedRebootEscrowProvider() throws Exception {
-        mService = new RebootEscrowManager(new MockInjector(mContext, mUserManager,
-                mServiceConnection, mKeyStoreManager, mStorage, mInjected), mCallbacks, mStorage);
+        mMockInjector = new MockInjector(mContext, mUserManager, mServiceConnection,
+                mKeyStoreManager, mStorage, mInjected);
+        mService = new RebootEscrowManager(mMockInjector, mCallbacks, mStorage);
     }
 
     @Test
@@ -317,6 +328,7 @@
         doThrow(ServiceSpecificException.class).when(mRebootEscrow).storeKey(any());
         mService.clearRebootEscrow();
         verify(mRebootEscrow).storeKey(eq(new byte[32]));
+        assertNull(mMockInjector.getRebootEscrowProvider());
     }
 
     @Test
@@ -785,7 +797,7 @@
         assertNull(
                 mStorage.getString(RebootEscrowManager.REBOOT_ESCROW_ARMED_KEY, null, USER_SYSTEM));
         // Change the provider to server based, expect the reboot to fail
-        when(mInjected.forceServerBased()).thenReturn(true);
+        mMockInjector.mServerBased = true;
         assertEquals(ARM_REBOOT_ERROR_PROVIDER_MISMATCH, mService.armRebootEscrowIfNeeded());
         assertNull(
                 mStorage.getString(RebootEscrowManager.REBOOT_ESCROW_ARMED_KEY, null, USER_SYSTEM));
diff --git a/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
index 352832b..da6c30e 100644
--- a/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
@@ -1093,7 +1093,7 @@
         // first, pretend that wifi network comes online. no policy active,
         // which means we shouldn't push limit to interface.
         snapshots = List.of(buildWifi());
-        when(mConnManager.getAllNetworkStateSnapshot()).thenReturn(snapshots);
+        when(mConnManager.getAllNetworkStateSnapshots()).thenReturn(snapshots);
 
         mPolicyListener.expect().onMeteredIfacesChanged(any());
         mServiceContext.sendBroadcast(new Intent(CONNECTIVITY_ACTION));
@@ -1101,7 +1101,7 @@
 
         // now change cycle to be on 15th, and test in early march, to verify we
         // pick cycle day in previous month.
-        when(mConnManager.getAllNetworkStateSnapshot()).thenReturn(snapshots);
+        when(mConnManager.getAllNetworkStateSnapshots()).thenReturn(snapshots);
 
         // pretend that 512 bytes total have happened
         stats = new NetworkStats(getElapsedRealtime(), 1)
@@ -1362,7 +1362,7 @@
                 .insertEntry(TEST_IFACE, 0L, 0L, 0L, 0L);
 
         {
-            when(mConnManager.getAllNetworkStateSnapshot()).thenReturn(snapshots);
+            when(mConnManager.getAllNetworkStateSnapshots()).thenReturn(snapshots);
             when(mStatsService.getNetworkTotalBytes(sTemplateWifi, TIME_FEB_15,
                     currentTimeMillis())).thenReturn(stats.getTotalBytes());
 
@@ -1485,7 +1485,7 @@
     }
 
     private PersistableBundle setupUpdateMobilePolicyCycleTests() throws RemoteException {
-        when(mConnManager.getAllNetworkStateSnapshot())
+        when(mConnManager.getAllNetworkStateSnapshots())
                 .thenReturn(new ArrayList<NetworkStateSnapshot>());
 
         setupTelephonySubscriptionManagers(FAKE_SUB_ID, FAKE_SUBSCRIBER_ID);
@@ -1498,7 +1498,7 @@
 
     @Test
     public void testUpdateMobilePolicyCycleWithNullConfig() throws RemoteException {
-        when(mConnManager.getAllNetworkStateSnapshot())
+        when(mConnManager.getAllNetworkStateSnapshots())
                 .thenReturn(new ArrayList<NetworkStateSnapshot>());
 
         setupTelephonySubscriptionManagers(FAKE_SUB_ID, FAKE_SUBSCRIBER_ID);
@@ -2089,7 +2089,7 @@
                 TEST_NETWORK,
                 buildNetworkCapabilities(TEST_SUB_ID, roaming),
                 buildLinkProperties(TEST_IFACE), TEST_IMSI, TYPE_MOBILE));
-        when(mConnManager.getAllNetworkStateSnapshot()).thenReturn(snapshots);
+        when(mConnManager.getAllNetworkStateSnapshots()).thenReturn(snapshots);
     }
 
     private void expectDefaultCarrierConfig() throws Exception {
diff --git a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java
index 7709edb..6c1e915b 100644
--- a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java
@@ -135,24 +135,41 @@
     private static final String PARENT_NOTIFICATION_CHANNEL_ID = "test";
     private static final long MILLIS_PER_MINUTE = 1000L * 60L;
 
-    @Mock private Context mContext;
-    @Mock private ShortcutServiceInternal mShortcutServiceInternal;
-    @Mock private UsageStatsManagerInternal mUsageStatsManagerInternal;
-    @Mock private PackageManagerInternal mPackageManagerInternal;
-    @Mock private NotificationManagerInternal mNotificationManagerInternal;
-    @Mock private UserManager mUserManager;
-    @Mock private PackageManager mPackageManager;
-    @Mock private TelephonyManager mTelephonyManager;
-    @Mock private TelecomManager mTelecomManager;
-    @Mock private ContentResolver mContentResolver;
-    @Mock private JobScheduler mJobScheduler;
-    @Mock private StatusBarNotification mStatusBarNotification;
-    @Mock private Notification mNotification;
-    @Mock private AlarmManager mAlarmManager;
+    @Mock
+    private Context mContext;
+    @Mock
+    private ShortcutServiceInternal mShortcutServiceInternal;
+    @Mock
+    private UsageStatsManagerInternal mUsageStatsManagerInternal;
+    @Mock
+    private PackageManagerInternal mPackageManagerInternal;
+    @Mock
+    private NotificationManagerInternal mNotificationManagerInternal;
+    @Mock
+    private UserManager mUserManager;
+    @Mock
+    private PackageManager mPackageManager;
+    @Mock
+    private TelephonyManager mTelephonyManager;
+    @Mock
+    private TelecomManager mTelecomManager;
+    @Mock
+    private ContentResolver mContentResolver;
+    @Mock
+    private JobScheduler mJobScheduler;
+    @Mock
+    private StatusBarNotification mStatusBarNotification;
+    @Mock
+    private Notification mNotification;
+    @Mock
+    private AlarmManager mAlarmManager;
 
-    @Captor private ArgumentCaptor<ShortcutChangeCallback> mShortcutChangeCallbackCaptor;
-    @Captor private ArgumentCaptor<BroadcastReceiver> mBroadcastReceiverCaptor;
-    @Captor private ArgumentCaptor<Integer> mQueryFlagsCaptor;
+    @Captor
+    private ArgumentCaptor<ShortcutChangeCallback> mShortcutChangeCallbackCaptor;
+    @Captor
+    private ArgumentCaptor<BroadcastReceiver> mBroadcastReceiverCaptor;
+    @Captor
+    private ArgumentCaptor<Integer> mQueryFlagsCaptor;
 
     private ScheduledExecutorService mExecutorService;
     private NotificationChannel mNotificationChannel;
@@ -556,6 +573,7 @@
                 TEST_SHORTCUT_ID_2,
                 buildPerson());
         mDataManager.addOrUpdateConversationInfo(shortcut2);
+        mLooper.dispatchAll();
         ConversationChannel conversationChannel2 = mDataManager.getConversation(TEST_PKG_NAME,
                 USER_ID_PRIMARY,
                 TEST_SHORTCUT_ID_2);
@@ -583,6 +601,7 @@
         ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID,
                 buildPerson());
         mDataManager.addOrUpdateConversationInfo(shortcut);
+        mLooper.dispatchAll();
         PeopleService.ConversationsListener listener = mock(
                 PeopleService.ConversationsListener.class);
         mDataManager.addConversationsListener(listener);
@@ -631,7 +650,7 @@
     public void testGetConversation() {
         mDataManager.onUserUnlocked(USER_ID_PRIMARY);
         assertThat(mDataManager.getConversation(TEST_PKG_NAME, USER_ID_PRIMARY,
-            TEST_SHORTCUT_ID)).isNull();
+                TEST_SHORTCUT_ID)).isNull();
 
         ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID,
                 buildPerson());
@@ -781,16 +800,25 @@
     @Test
     public void testShortcutAddedOrUpdated() {
         mDataManager.onUserUnlocked(USER_ID_PRIMARY);
+        PeopleService.ConversationsListener listener = mock(
+                PeopleService.ConversationsListener.class);
+        mDataManager.addConversationsListener(listener);
 
         ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID,
                 buildPerson());
         mShortcutChangeCallback.onShortcutsAddedOrUpdated(TEST_PKG_NAME,
                 Collections.singletonList(shortcut), UserHandle.of(USER_ID_PRIMARY));
+        mLooper.dispatchAll();
 
         List<ConversationInfo> conversations = getConversationsInPrimary();
 
         assertEquals(1, conversations.size());
         assertEquals(TEST_SHORTCUT_ID, conversations.get(0).getShortcutId());
+        ArgumentCaptor<List<ConversationChannel>> capturedConversation = ArgumentCaptor.forClass(
+                List.class);
+        verify(listener, times(1)).onConversationsUpdate(capturedConversation.capture());
+        ConversationChannel result = Iterables.getOnlyElement(capturedConversation.getValue());
+        assertEquals(result.getShortcutInfo().getId(), TEST_SHORTCUT_ID);
     }
 
     @Test
@@ -978,8 +1006,13 @@
         mDataManager.addOrUpdateStatus(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID, cs1);
         mDataManager.addOrUpdateStatus(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID, cs2);
         mDataManager.addOrUpdateStatus(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID, cs3);
+        mLooper.dispatchAll();
 
+        PeopleService.ConversationsListener listener = mock(
+                PeopleService.ConversationsListener.class);
+        mDataManager.addConversationsListener(listener);
         mDataManager.pruneDataForUser(USER_ID_PRIMARY, mCancellationSignal);
+        mLooper.dispatchAll();
 
         assertThat(mDataManager.getStatuses(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID))
                 .doesNotContain(cs1);
@@ -987,6 +1020,13 @@
                 .contains(cs2);
         assertThat(mDataManager.getStatuses(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID))
                 .contains(cs3);
+        ArgumentCaptor<List<ConversationChannel>> capturedConversation = ArgumentCaptor.forClass(
+                List.class);
+        verify(listener, times(1)).onConversationsUpdate(capturedConversation.capture());
+        List<ConversationChannel> results = capturedConversation.getValue();
+        ConversationChannel result = Iterables.getOnlyElement(capturedConversation.getValue());
+        // CHeck cs1 has been removed and only cs2 and cs3 remain.
+        assertThat(result.getStatuses()).containsExactly(cs2, cs3);
     }
 
     @Test
@@ -1236,13 +1276,23 @@
         ConversationStatus cs2 = new ConversationStatus.Builder("id2", ACTIVITY_GAME).build();
         mDataManager.addOrUpdateStatus(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID, cs);
         mDataManager.addOrUpdateStatus(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID, cs2);
+        mLooper.dispatchAll();
 
+        PeopleService.ConversationsListener listener = mock(
+                PeopleService.ConversationsListener.class);
+        mDataManager.addConversationsListener(listener);
         mDataManager.clearStatus(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID, cs2.getId());
+        mLooper.dispatchAll();
 
         assertThat(mDataManager.getStatuses(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID))
                 .contains(cs);
         assertThat(mDataManager.getStatuses(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID))
                 .doesNotContain(cs2);
+        ArgumentCaptor<List<ConversationChannel>> capturedConversation = ArgumentCaptor.forClass(
+                List.class);
+        verify(listener, times(1)).onConversationsUpdate(capturedConversation.capture());
+        ConversationChannel result = Iterables.getOnlyElement(capturedConversation.getValue());
+        assertThat(result.getStatuses()).containsExactly(cs);
     }
 
     @Test
@@ -1257,11 +1307,21 @@
         ConversationStatus cs2 = new ConversationStatus.Builder("id2", ACTIVITY_GAME).build();
         mDataManager.addOrUpdateStatus(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID, cs);
         mDataManager.addOrUpdateStatus(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID, cs2);
+        mLooper.dispatchAll();
 
+        PeopleService.ConversationsListener listener = mock(
+                PeopleService.ConversationsListener.class);
+        mDataManager.addConversationsListener(listener);
         mDataManager.clearStatuses(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID);
+        mLooper.dispatchAll();
 
         assertThat(mDataManager.getStatuses(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID))
                 .isEmpty();
+        ArgumentCaptor<List<ConversationChannel>> capturedConversation = ArgumentCaptor.forClass(
+                List.class);
+        verify(listener, times(1)).onConversationsUpdate(capturedConversation.capture());
+        ConversationChannel result = Iterables.getOnlyElement(capturedConversation.getValue());
+        assertThat(result.getStatuses()).isEmpty();
     }
 
     @Test
@@ -1403,7 +1463,7 @@
                 .setLongLived(true)
                 .setIntent(new Intent("TestIntent"));
         if (person != null) {
-            builder.setPersons(new Person[] {person});
+            builder.setPersons(new Person[]{person});
         }
         return builder.build();
     }
diff --git a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
index 198fb4f..b9f70da 100644
--- a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
@@ -125,6 +125,7 @@
 import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
@@ -2598,6 +2599,13 @@
         }).when(mMockPackageManagerInternal).getHomeActivitiesAsUser(any(List.class), eq(userId));
     }
 
+    protected void prepareIntentActivities(ComponentName cn) {
+        when(mMockPackageManagerInternal.queryIntentActivities(
+                anyOrNull(Intent.class), anyStringOrNull(), anyInt(), anyInt(), anyInt()))
+                .thenReturn(Collections.singletonList(
+                        ri(cn.getPackageName(), cn.getClassName(), false, 0)));
+    }
+
     protected static ComponentName cn(String packageName, String name) {
         return new ComponentName(packageName, name);
     }
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest10.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest10.java
index eceb17a..e92c849 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest10.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest10.java
@@ -159,6 +159,7 @@
 
     public void testStartConfigActivity_defaultLauncher() {
         LauncherActivityInfo info = setupMockActivityInfo();
+        prepareIntentActivities(info.getComponentName());
         setDefaultLauncher(USER_0, LAUNCHER_1);
         runWithCaller(LAUNCHER_1, USER_0, () ->
             assertNotNull(mLauncherApps.getShortcutConfigActivityIntent(info))
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
index c11ac3a..6722fff 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
@@ -213,7 +213,7 @@
         mAssistants.loadDefaultsFromConfig();
         assertEquals(new ArraySet<>(Arrays.asList(oldDefaultComponent)),
                 mAssistants.getDefaultComponents());
-        assertNull(mAssistants.getDefaultFromConfig());
+        assertNull(mAssistants.mDefaultFromConfig);
 
         // Test loadDefaultFromConfig(false) only updates the mDefaultFromConfig
         when(mContext.getResources().getString(
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java
index 809b6d5..182848b4 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java
@@ -123,6 +123,7 @@
         for (long i = cal.getTimeInMillis(); i >= 5; i--) {
             File file = mock(File.class);
             when(file.getName()).thenReturn(String.valueOf(i));
+            when(file.getAbsolutePath()).thenReturn(String.valueOf(i));
             AtomicFile af = new AtomicFile(file);
             expectedFiles.add(af);
             mDataBase.mHistoryFiles.addLast(af);
@@ -133,6 +134,7 @@
         for (int i = 5; i >= 0; i--) {
             File file = mock(File.class);
             when(file.getName()).thenReturn(String.valueOf(cal.getTimeInMillis() - i));
+            when(file.getAbsolutePath()).thenReturn(String.valueOf(cal.getTimeInMillis() - i));
             AtomicFile af = new AtomicFile(file);
             mDataBase.mHistoryFiles.addLast(af);
         }
@@ -158,6 +160,7 @@
         for (long i = cal.getTimeInMillis(); i >= 5; i--) {
             File file = mock(File.class);
             when(file.getName()).thenReturn(i + ".bak");
+            when(file.getAbsolutePath()).thenReturn(i + ".bak");
             AtomicFile af = new AtomicFile(file);
             mDataBase.mHistoryFiles.addLast(af);
         }
@@ -415,4 +418,36 @@
         assertThat(mDataBase.mBuffer).isNotEqualTo(nh);
         verify(mAlarmManager, times(1)).setExactAndAllowWhileIdle(anyInt(), anyLong(), any());
     }
+
+    @Test
+    public void testRemoveFilePathFromHistory_hasMatch() throws Exception {
+        for (int i = 0; i < 5; i++) {
+            AtomicFile af = mock(AtomicFile.class);
+            when(af.getBaseFile()).thenReturn(new File(mRootDir, "af" + i));
+            mDataBase.mHistoryFiles.addLast(af);
+        }
+        // Baseline size of history files
+        assertThat(mDataBase.mHistoryFiles.size()).isEqualTo(5);
+
+        // Remove only file number 3
+        String filePathToRemove = new File(mRootDir, "af3").getAbsolutePath();
+        mDataBase.removeFilePathFromHistory(filePathToRemove);
+        assertThat(mDataBase.mHistoryFiles.size()).isEqualTo(4);
+    }
+
+    @Test
+    public void testRemoveFilePathFromHistory_noMatch() throws Exception {
+        for (int i = 0; i < 5; i++) {
+            AtomicFile af = mock(AtomicFile.class);
+            when(af.getBaseFile()).thenReturn(new File(mRootDir, "af" + i));
+            mDataBase.mHistoryFiles.addLast(af);
+        }
+        // Baseline size of history files
+        assertThat(mDataBase.mHistoryFiles.size()).isEqualTo(5);
+
+        // Attempt to remove a filename that doesn't exist, expect nothing to break or change
+        String filePathToRemove = new File(mRootDir, "af.thisfileisfake").getAbsolutePath();
+        mDataBase.removeFilePathFromHistory(filePathToRemove);
+        assertThat(mDataBase.mHistoryFiles.size()).isEqualTo(5);
+    }
 }
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
index 87efaa2..a810acc 100755
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
@@ -5057,7 +5057,8 @@
     }
 
     @Test
-    public void testToastRateLimiterCanPreventShowCallForCustomToast() throws Exception {
+    public void testToastRateLimiterWontPreventShowCallForCustomToastWhenInForeground()
+            throws Exception {
         final String testPackage = "testPackageName";
         assertEquals(0, mService.mToastQueue.size());
         mService.isSystemUid = false;
@@ -5075,30 +5076,7 @@
         INotificationManager nmService = (INotificationManager) mService.mService;
 
         nmService.enqueueToast(testPackage, token, callback, 2000, 0);
-        verify(callback, times(0)).show(any());
-    }
-
-    @Test
-    public void testCustomToastRateLimiterAllowsLimitAvoidanceWithPermission() throws Exception {
-        final String testPackage = "testPackageName";
-        assertEquals(0, mService.mToastQueue.size());
-        mService.isSystemUid = false;
-        setToastRateIsWithinQuota(false); // rate limit reached
-        // Avoids rate limiting.
-        setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, true);
-
-        // package is not suspended
-        when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
-                .thenReturn(false);
-
-        setAppInForegroundForToasts(mUid, true);
-
-        Binder token = new Binder();
-        ITransientNotification callback = mock(ITransientNotification.class);
-        INotificationManager nmService = (INotificationManager) mService.mService;
-
-        nmService.enqueueToast(testPackage, token, callback, 2000, 0);
-        verify(callback).show(any());
+        verify(callback, times(1)).show(any());
     }
 
     @Test
@@ -5206,12 +5184,14 @@
     }
 
     @Test
-    public void testToastRateLimiterCanPreventShowCallForTextToast() throws Exception {
+    public void testToastRateLimiterCanPreventShowCallForTextToast_whenInBackground()
+            throws Exception {
         final String testPackage = "testPackageName";
         assertEquals(0, mService.mToastQueue.size());
         mService.isSystemUid = false;
         setToastRateIsWithinQuota(false); // rate limit reached
         setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
+        setAppInForegroundForToasts(mUid, false);
 
         // package is not suspended
         when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
@@ -5226,12 +5206,35 @@
     }
 
     @Test
+    public void testToastRateLimiterWontPreventShowCallForTextToast_whenInForeground()
+            throws Exception {
+        final String testPackage = "testPackageName";
+        assertEquals(0, mService.mToastQueue.size());
+        mService.isSystemUid = false;
+        setToastRateIsWithinQuota(false); // rate limit reached
+        setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, false);
+        setAppInForegroundForToasts(mUid, true);
+
+        // package is not suspended
+        when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
+                .thenReturn(false);
+
+        Binder token = new Binder();
+        INotificationManager nmService = (INotificationManager) mService.mService;
+
+        nmService.enqueueTextToast(testPackage, token, "Text", 2000, 0, null);
+        verify(mStatusBar, times(1))
+                .showToast(anyInt(), any(), any(), any(), any(), anyInt(), any());
+    }
+
+    @Test
     public void testTextToastRateLimiterAllowsLimitAvoidanceWithPermission() throws Exception {
         final String testPackage = "testPackageName";
         assertEquals(0, mService.mToastQueue.size());
         mService.isSystemUid = false;
         setToastRateIsWithinQuota(false); // rate limit reached
         setIfPackageHasPermissionToAvoidToastRateLimiting(testPackage, true);
+        setAppInForegroundForToasts(mUid, false);
 
         // package is not suspended
         when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
@@ -5750,11 +5753,12 @@
     }
 
     @Test
-    public void testNASSettingUpgrade_userSetNull_showOnBoarding() throws RemoteException {
+    public void testNASSettingUpgrade_userSetNull_noOnBoarding() throws RemoteException {
         ComponentName newDefaultComponent = ComponentName.unflattenFromString("package/Component1");
         TestableNotificationManagerService service = spy(mService);
         int userId = 11;
         setUsers(new int[]{userId});
+        when(mUm.getProfileIds(userId, false)).thenReturn(new int[]{userId});
         setNASMigrationDone(false, userId);
         when(mAssistants.getDefaultFromConfig())
                 .thenReturn(newDefaultComponent);
@@ -5763,29 +5767,29 @@
         when(mAssistants.hasUserSet(userId)).thenReturn(true);
 
         service.migrateDefaultNASShowNotificationIfNecessary();
-        assertFalse(service.isNASMigrationDone(userId));
-        verify(service, times(1)).createNASUpgradeNotification(eq(userId));
-        verify(mAssistants, times(0)).resetDefaultFromConfig();
+        assertTrue(service.isNASMigrationDone(userId));
+        verify(service, times(0)).createNASUpgradeNotification(eq(userId));
+        verify(mAssistants, times(1)).clearDefaults();
+    }
 
-        //Test user clear data before enable/disable from onboarding notification
-        ArrayMap<Boolean, ArrayList<ComponentName>> changedListeners =
-                generateResetComponentValues();
-        when(mListeners.resetComponents(anyString(), anyInt())).thenReturn(changedListeners);
-        ArrayMap<Boolean, ArrayList<ComponentName>> changes = new ArrayMap<>();
-        changes.put(true, new ArrayList(Arrays.asList(newDefaultComponent)));
-        changes.put(false, new ArrayList());
-        when(mAssistants.resetComponents(anyString(), anyInt())).thenReturn(changes);
+    @Test
+    public void testNASSettingUpgrade_userSetSameDefault_noOnBoarding() throws RemoteException {
+        ComponentName defaultComponent = ComponentName.unflattenFromString("package/Component1");
+        TestableNotificationManagerService service = spy(mService);
+        int userId = 11;
+        setUsers(new int[]{userId});
+        when(mUm.getProfileIds(userId, false)).thenReturn(new int[]{userId});
+        setNASMigrationDone(false, userId);
+        when(mAssistants.getDefaultFromConfig())
+                .thenReturn(defaultComponent);
+        when(mAssistants.getAllowedComponents(anyInt()))
+                .thenReturn(new ArrayList(Arrays.asList(defaultComponent)));
+        when(mAssistants.hasUserSet(userId)).thenReturn(true);
 
-        //Clear data
-        service.getBinderService().clearData("package", userId, false);
-        //Test migrate flow again
         service.migrateDefaultNASShowNotificationIfNecessary();
-
-        //The notification should be still there
-        assertFalse(service.isNASMigrationDone(userId));
-        verify(service, times(2)).createNASUpgradeNotification(eq(userId));
-        verify(mAssistants, times(0)).resetDefaultFromConfig();
-        assertEquals(null, service.getApprovedAssistant(userId));
+        assertTrue(service.isNASMigrationDone(userId));
+        verify(service, times(0)).createNASUpgradeNotification(eq(userId));
+        verify(mAssistants, times(1)).resetDefaultFromConfig();
     }
 
     @Test
@@ -5839,6 +5843,9 @@
         int userId1 = 11;
         int userId2 = 12;
         setUsers(new int[]{userId1, userId2});
+        when(mUm.getProfileIds(userId1, false)).thenReturn(new int[]{userId1});
+        when(mUm.getProfileIds(userId2, false)).thenReturn(new int[]{userId2});
+
         setNASMigrationDone(false, userId1);
         setNASMigrationDone(false, userId2);
         when(mAssistants.getDefaultComponents())
@@ -5865,6 +5872,43 @@
     }
 
     @Test
+    public void testNASSettingUpgrade_multiProfile() throws RemoteException {
+        ComponentName oldDefaultComponent = ComponentName.unflattenFromString("package/Component1");
+        ComponentName newDefaultComponent = ComponentName.unflattenFromString("package/Component2");
+        TestableNotificationManagerService service = spy(mService);
+        int userId1 = 11;
+        int userId2 = 12; //work profile
+        setUsers(new int[]{userId1, userId2});
+        when(mUm.isManagedProfile(userId2)).thenReturn(true);
+        when(mUm.getProfileIds(userId1, false)).thenReturn(new int[]{userId1, userId2});
+
+        setNASMigrationDone(false, userId1);
+        setNASMigrationDone(false, userId2);
+        when(mAssistants.getDefaultComponents())
+                .thenReturn(new ArraySet<>(Arrays.asList(oldDefaultComponent)));
+        when(mAssistants.getDefaultFromConfig())
+                .thenReturn(newDefaultComponent);
+        //Both profiles: need onboarding
+        when(mAssistants.getAllowedComponents(userId1))
+                .thenReturn(Arrays.asList(oldDefaultComponent));
+        when(mAssistants.getAllowedComponents(userId2))
+                .thenReturn(Arrays.asList(oldDefaultComponent));
+
+        when(mAssistants.hasUserSet(userId1)).thenReturn(true);
+        when(mAssistants.hasUserSet(userId2)).thenReturn(true);
+
+        service.migrateDefaultNASShowNotificationIfNecessary();
+        assertFalse(service.isNASMigrationDone(userId1));
+        assertFalse(service.isNASMigrationDone(userId2));
+
+        // only user1 get notification
+        verify(service, times(1)).createNASUpgradeNotification(eq(userId1));
+        verify(service, times(0)).createNASUpgradeNotification(eq(userId2));
+    }
+
+
+
+    @Test
     public void testNASSettingUpgrade_clearDataAfterMigrationIsDone() throws RemoteException {
         ComponentName defaultComponent = ComponentName.unflattenFromString("package/Component");
         TestableNotificationManagerService service = spy(mService);
@@ -5895,15 +5939,21 @@
     }
 
     @Test
-    public void testNASUpgradeNotificationDisableBroadcast() {
-        int userId = 11;
-        setUsers(new int[]{userId});
+    public void testNASUpgradeNotificationDisableBroadcast_multiProfile() {
+        int userId1 = 11;
+        int userId2 = 12;
+        setUsers(new int[]{userId1, userId2});
+        when(mUm.isManagedProfile(userId2)).thenReturn(true);
+        when(mUm.getProfileIds(userId1, false)).thenReturn(new int[]{userId1, userId2});
+
         TestableNotificationManagerService service = spy(mService);
-        setNASMigrationDone(false, userId);
+        setNASMigrationDone(false, userId1);
+        setNASMigrationDone(false, userId2);
 
-        simulateNASUpgradeBroadcast(ACTION_DISABLE_NAS, userId);
+        simulateNASUpgradeBroadcast(ACTION_DISABLE_NAS, userId1);
 
-        assertTrue(service.isNASMigrationDone(userId));
+        assertTrue(service.isNASMigrationDone(userId1));
+        assertTrue(service.isNASMigrationDone(userId2));
         // User disabled the NAS from notification, the default stored in xml should be null
         // rather than the new default
         verify(mAssistants, times(1)).clearDefaults();
@@ -5911,7 +5961,7 @@
 
         //No more notification after disabled
         service.migrateDefaultNASShowNotificationIfNecessary();
-        verify(service, times(0)).createNASUpgradeNotification(eq(userId));
+        verify(service, times(0)).createNASUpgradeNotification(anyInt());
     }
 
     @Test
@@ -5919,6 +5969,8 @@
         int userId1 = 11;
         int userId2 = 12;
         setUsers(new int[]{userId1, userId2});
+        when(mUm.getProfileIds(userId1, false)).thenReturn(new int[]{userId1});
+
         TestableNotificationManagerService service = spy(mService);
         setNASMigrationDone(false, userId1);
         setNASMigrationDone(false, userId2);
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 124f6dd..8cede6d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -2358,21 +2358,6 @@
     }
 
     @Test
-    public void testAddRemoveRace() {
-        registerTestStartingWindowOrganizer();
-        // There was once a race condition between adding and removing starting windows
-        final ActivityRecord appToken = new ActivityBuilder(mAtm).setCreateTask(true).build();
-        for (int i = 0; i < 1000; i++) {
-            appToken.addStartingWindow(mPackageName,
-                    android.R.style.Theme, null, "Test", 0, 0, 0, 0, null, true, true, false, true,
-                    false, false);
-            appToken.removeStartingWindow();
-            waitUntilHandlersIdle();
-            assertNoStartingWindow(appToken);
-        }
-    }
-
-    @Test
     public void testTransferStartingWindow() {
         registerTestStartingWindowOrganizer();
         final ActivityRecord activity1 = new ActivityBuilder(mAtm).setCreateTask(true).build();
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java
index 7df17fd..31d4612 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java
@@ -586,10 +586,13 @@
                         .setTaskDisplayAreas(Lists.newArrayList(mTda2)))
                 .build(mWms);
 
-        final WindowToken token = new WindowToken(mWms, mock(IBinder.class),
-                TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
-                true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
-                false /* fromClientToken */, null /* options */);
+        final WindowToken token = new WindowToken.Builder(mWms, mock(IBinder.class),
+                TYPE_STATUS_BAR)
+                .setDisplayContent(mDisplayContent)
+                .setPersistOnEmpty(true)
+                .setOwnerCanManageAppTokens(true)
+                .build();
+
         policy.addWindow(token);
 
         // By default, window are always added to the root.
@@ -600,10 +603,13 @@
         // When the window has options for target root id, attach it to the target root.
         final Bundle options = new Bundle();
         options.putInt(KEY_ROOT_DISPLAY_AREA_ID, mGroupRoot2.mFeatureId);
-        final WindowToken token2 = new WindowToken(mWms, mock(IBinder.class),
-                TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
-                true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
-                false /* fromClientToken */, options);
+        final WindowToken token2 = new WindowToken.Builder(mWms, mock(IBinder.class),
+                TYPE_STATUS_BAR)
+                .setDisplayContent(mDisplayContent)
+                .setPersistOnEmpty(true)
+                .setOwnerCanManageAppTokens(true)
+                .setOptions(options)
+                .build();
         policy.addWindow(token2);
 
         assertThat(token2.isDescendantOf(mGroupRoot2)).isTrue();
@@ -631,14 +637,18 @@
                 })
                 .build(mWms);
 
-        final WindowToken token1 = new WindowToken(mWms, mock(IBinder.class),
-                TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
-                true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
-                false /* fromClientToken */, null /* options */);
-        final WindowToken token2 = new WindowToken(mWms, mock(IBinder.class),
-                TYPE_WALLPAPER, true /* persistOnEmpty */, mDisplayContent,
-                true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
-                false /* fromClientToken */, null /* options */);
+        final WindowToken token1 = new WindowToken.Builder(mWms, mock(IBinder.class),
+                TYPE_STATUS_BAR)
+                .setDisplayContent(mDisplayContent)
+                .setPersistOnEmpty(true)
+                .setOwnerCanManageAppTokens(true)
+                .build();
+        final WindowToken token2 = new WindowToken.Builder(mWms, mock(IBinder.class),
+                TYPE_WALLPAPER)
+                .setDisplayContent(mDisplayContent)
+                .setPersistOnEmpty(true)
+                .setOwnerCanManageAppTokens(true)
+                .build();
         policy.addWindow(token1);
         policy.addWindow(token2);
 
@@ -682,18 +692,26 @@
         options1.putInt("HIERARCHY_ROOT_ID", mGroupRoot1.mFeatureId);
         final Bundle options2 = new Bundle();
         options2.putInt("HIERARCHY_ROOT_ID", mGroupRoot2.mFeatureId);
-        final WindowToken token0 = new WindowToken(mWms, mock(IBinder.class),
-                TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
-                true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
-                false /* fromClientToken */, null /* options */);
-        final WindowToken token1 = new WindowToken(mWms, mock(IBinder.class),
-                TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
-                true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
-                false /* fromClientToken */, options1);
-        final WindowToken token2 = new WindowToken(mWms, mock(IBinder.class),
-                TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
-                true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */,
-                false /* fromClientToken */, options2);
+        final WindowToken token0 = new WindowToken.Builder(mWms, mock(IBinder.class),
+                TYPE_STATUS_BAR)
+                .setDisplayContent(mDisplayContent)
+                .setPersistOnEmpty(true)
+                .setOwnerCanManageAppTokens(true)
+                .build();
+        final WindowToken token1 = new WindowToken.Builder(mWms, mock(IBinder.class),
+                TYPE_STATUS_BAR)
+                .setDisplayContent(mDisplayContent)
+                .setPersistOnEmpty(true)
+                .setOwnerCanManageAppTokens(true)
+                .setOptions(options1)
+                .build();
+        final WindowToken token2 = new WindowToken.Builder(mWms, mock(IBinder.class),
+                TYPE_STATUS_BAR)
+                .setDisplayContent(mDisplayContent)
+                .setPersistOnEmpty(true)
+                .setOwnerCanManageAppTokens(true)
+                .setOptions(options2)
+                .build();
 
         policy.addWindow(token0);
         policy.addWindow(token1);
@@ -787,9 +805,8 @@
     }
 
     private WindowToken tokenOfType(int type) {
-        WindowToken token = new WindowToken(mWms, new Binder(), type, false /* persistOnEmpty */,
-                mDisplayContent, false /* ownerCanManageAppTokens */);
-        return token;
+        return new WindowToken.Builder(mWms, new Binder(), type)
+                .setDisplayContent(mDisplayContent).build();
     }
 
     private static void assertMatchLayerOrder(List<DisplayArea<?>> actualOrder,
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java
index d4c956d..d5628fc 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java
@@ -586,8 +586,6 @@
     }
 
     private WindowToken createWindowToken(int type) {
-        return new WindowToken(mWm, new Binder(),
-                type, false /* persist */, null /* displayContent */,
-                false /* canManageTokens */);
+        return new WindowToken.Builder(mWm, new Binder(), type).build();
     }
 }
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index 0afd39f..2f52352 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -1971,7 +1971,8 @@
 
         // test misc display overrides
         assertEquals(ignoreOrientationRequests, testDisplayContent.mIgnoreOrientationRequest);
-        assertEquals(fixedOrientationLetterboxRatio, mWm.getFixedOrientationLetterboxAspectRatio(),
+        assertEquals(fixedOrientationLetterboxRatio,
+                mWm.mLetterboxConfiguration.getFixedOrientationLetterboxAspectRatio(),
                 0 /* delta */);
     }
 
@@ -2011,7 +2012,8 @@
 
         // test misc display overrides
         assertEquals(ignoreOrientationRequests, testDisplayContent.mIgnoreOrientationRequest);
-        assertEquals(fixedOrientationLetterboxRatio, mWm.getFixedOrientationLetterboxAspectRatio(),
+        assertEquals(fixedOrientationLetterboxRatio,
+                mWm.mLetterboxConfiguration.getFixedOrientationLetterboxAspectRatio(),
                 0 /* delta */);
     }
 
diff --git a/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java
index e9907c1..bdc4b4e 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java
@@ -390,8 +390,8 @@
     }
 
     private WindowToken tokenOfType(int type) {
-        return new WindowToken(mWm, new Binder(), type, false /* persistOnEmpty */,
-                mDisplay, false /* ownerCanManageAppTokens */);
+        return new WindowToken.Builder(mWm, new Binder(), type)
+                .setDisplayContent(mDisplay).build();
     }
 
     /** Display with two {@link DisplayAreaGroup}. Each of them take half of the screen. */
diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
index 5d6a5c0..73404eb 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
@@ -641,7 +641,6 @@
 
     @Test
     public void testVisibleTasks_excludedFromRecents() {
-        mRecentTasks.setOnlyTestVisibleRange();
         mRecentTasks.setParameters(-1 /* min */, 4 /* max */, -1 /* ms */);
 
         Task excludedTask1 = createTaskBuilder(".ExcludedTask1")
@@ -650,15 +649,26 @@
         Task excludedTask2 = createTaskBuilder(".ExcludedTask2")
                 .setFlags(FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
                 .build();
+        Task detachedExcludedTask = createTaskBuilder(".DetachedExcludedTask")
+                .setFlags(FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
+                .build();
 
+        // Move home to front so other task can satisfy the condition in RecentTasks#isTrimmable.
+        mRootWindowContainer.getDefaultTaskDisplayArea().getRootHomeTask().moveToFront("test");
+        // Avoid Task#autoRemoveFromRecents when removing from parent.
+        detachedExcludedTask.setHasBeenVisible(true);
+        detachedExcludedTask.removeImmediately();
+        assertFalse(detachedExcludedTask.isAttached());
+
+        mRecentTasks.add(detachedExcludedTask);
         mRecentTasks.add(excludedTask1);
         mRecentTasks.add(mTasks.get(0));
         mRecentTasks.add(mTasks.get(1));
         mRecentTasks.add(mTasks.get(2));
         mRecentTasks.add(excludedTask2);
 
-        // The last excluded task should be trimmed, while the first-most excluded task should not
-        triggerTrimAndAssertTrimmed(excludedTask1);
+        // Except the first-most excluded task, other excluded tasks should be trimmed.
+        triggerTrimAndAssertTrimmed(excludedTask1, detachedExcludedTask);
     }
 
     @Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java
index 153fd3a..23d57b8 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java
@@ -518,6 +518,7 @@
         verify(mController.mStatusBar).setNavigationBarLumaSamplingEnabled(
                 mDefaultDisplay.mDisplayId, false);
         verify(transaction).reparent(navToken.getSurfaceControl(), activity.getSurfaceControl());
+        verify(transaction).setLayer(navToken.getSurfaceControl(), Integer.MAX_VALUE);
 
         final WindowContainer parent = navToken.getParent();
         final NavBarFadeAnimationController navBarFadeAnimationController =
@@ -526,6 +527,7 @@
         mController.cleanupAnimation(REORDER_MOVE_TO_TOP);
         verify(mController.mStatusBar).setNavigationBarLumaSamplingEnabled(
                 mDefaultDisplay.mDisplayId, true);
+        verify(transaction).setLayer(navToken.getSurfaceControl(), 0);
         verify(transaction).reparent(navToken.getSurfaceControl(), parent.getSurfaceControl());
         verify(navBarFadeAnimationController).fadeWindowToken(true);
     }
@@ -543,6 +545,7 @@
         verify(mController.mStatusBar).setNavigationBarLumaSamplingEnabled(
                 mDefaultDisplay.mDisplayId, false);
         verify(transaction).reparent(navToken.getSurfaceControl(), activity.getSurfaceControl());
+        verify(transaction).setLayer(navToken.getSurfaceControl(), Integer.MAX_VALUE);
 
         final WindowContainer parent = navToken.getParent();
         final NavBarFadeAnimationController navBarFadeAnimationController =
@@ -551,6 +554,7 @@
         mController.cleanupAnimation(REORDER_MOVE_TO_ORIGINAL_POSITION);
         verify(mController.mStatusBar).setNavigationBarLumaSamplingEnabled(
                 mDefaultDisplay.mDisplayId, true);
+        verify(transaction).setLayer(navToken.getSurfaceControl(), 0);
         verify(transaction).reparent(navToken.getSurfaceControl(), parent.getSurfaceControl());
         verify(navBarFadeAnimationController, never()).fadeWindowToken(anyBoolean());
     }
@@ -579,6 +583,7 @@
         verify(mController.mStatusBar).setNavigationBarLumaSamplingEnabled(
                 mDefaultDisplay.mDisplayId, false);
         verify(transaction).reparent(navToken.getSurfaceControl(), activity.getSurfaceControl());
+        verify(transaction).setLayer(navToken.getSurfaceControl(), Integer.MAX_VALUE);
 
         final WindowContainer parent = navToken.getParent();
         final NavBarFadeAnimationController navBarFadeAnimationController =
@@ -591,6 +596,7 @@
         mController.cleanupAnimation(REORDER_MOVE_TO_TOP);
         verify(mController.mStatusBar).setNavigationBarLumaSamplingEnabled(
                 mDefaultDisplay.mDisplayId, true);
+        verify(transaction).setLayer(navToken.getSurfaceControl(), 0);
         verify(mockController).setOnShowRunnable(any());
         verify(transaction, times(0)).reparent(navToken.getSurfaceControl(),
                 parent.getSurfaceControl());
diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
index 7c2cfab..45818a2 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
@@ -60,6 +60,7 @@
 import android.compat.testing.PlatformCompatChangeRule;
 import android.content.ComponentName;
 import android.content.pm.ActivityInfo;
+import android.content.pm.ActivityInfo.ScreenOrientation;
 import android.content.res.Configuration;
 import android.graphics.Rect;
 import android.platform.test.annotations.Presubmit;
@@ -67,6 +68,7 @@
 
 import androidx.test.filters.MediumTest;
 
+import libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges;
 import libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges;
 
 import org.junit.Rule;
@@ -335,11 +337,11 @@
         final WindowState window = createWindow(null, TYPE_BASE_APPLICATION, mActivity, "window");
 
         assertEquals(window, mActivity.findMainWindow());
-        assertTrue(mActivity.isLetterboxed(mActivity.findMainWindow()));
+        assertTrue(mActivity.mLetterboxUiController.isLetterboxed(mActivity.findMainWindow()));
 
         window.mAttrs.flags |= FLAG_SHOW_WALLPAPER;
 
-        assertFalse(mActivity.isLetterboxed(mActivity.findMainWindow()));
+        assertFalse(mActivity.mLetterboxUiController.isLetterboxed(mActivity.findMainWindow()));
     }
 
     @Test
@@ -662,15 +664,8 @@
         mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
 
         // Create an activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setResizeMode(ActivityInfo.RESIZE_MODE_UNRESIZEABLE)
-                .setSupportsSizeChanges(true)
-                .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */true,
+                RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
         assertFalse(activity.shouldCreateCompatDisplayInsets());
     }
 
@@ -682,15 +677,8 @@
         mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
 
         // Create an activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setResizeMode(ActivityInfo.RESIZE_MODE_UNRESIZEABLE)
-                .setSupportsSizeChanges(false)
-                .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+                RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
         assertTrue(activity.shouldCreateCompatDisplayInsets());
     }
 
@@ -702,15 +690,8 @@
         mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
 
         // Create an activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setResizeMode(ActivityInfo.RESIZE_MODE_RESIZEABLE)
-                .setSupportsSizeChanges(false)
-                .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+                RESIZE_MODE_RESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
         assertFalse(activity.shouldCreateCompatDisplayInsets());
     }
 
@@ -723,15 +704,8 @@
         mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
 
         // Create an activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setResizeMode(ActivityInfo.RESIZE_MODE_UNRESIZEABLE)
-                .setSupportsSizeChanges(false)
-                .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+                RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
         assertFalse(activity.shouldCreateCompatDisplayInsets());
     }
 
@@ -744,15 +718,8 @@
         mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
 
         // Create an activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setResizeMode(ActivityInfo.RESIZE_MODE_UNRESIZEABLE)
-                .setSupportsSizeChanges(false)
-                .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+                RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
         assertFalse(activity.shouldCreateCompatDisplayInsets());
     }
 
@@ -765,15 +732,8 @@
         mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
 
         // Create an activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setResizeMode(ActivityInfo.RESIZE_MODE_RESIZEABLE)
-                .setSupportsSizeChanges(true)
-                .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */true,
+                RESIZE_MODE_RESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
         assertTrue(activity.shouldCreateCompatDisplayInsets());
     }
 
@@ -786,19 +746,111 @@
         mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
 
         // Create an activity on the same task.
-        final ActivityRecord activity = new ActivityBuilder(mAtm)
-                .setTask(mTask)
-                .setResizeMode(ActivityInfo.RESIZE_MODE_RESIZEABLE)
-                .setSupportsSizeChanges(true)
-                .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
-                .setComponent(ComponentName.createRelative(mContext,
-                        SizeCompatTests.class.getName()))
-                .setUid(android.os.Process.myUid())
-                .build();
+        final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */true,
+                RESIZE_MODE_RESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
         assertTrue(activity.shouldCreateCompatDisplayInsets());
     }
 
     @Test
+    @EnableCompatChanges({ActivityInfo.NEVER_SANDBOX_DISPLAY_APIS})
+    public void testNeverSandboxDisplayApis_configEnabled_sandboxingNotApplied() {
+        setUpDisplaySizeWithApp(1000, 1200);
+
+        // Make the task root resizable.
+        mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
+
+        // Create an activity with a max aspect ratio on the same task.
+        final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+                RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+        activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
+        prepareUnresizable(activity, /* maxAspect=*/ 1.5f, SCREEN_ORIENTATION_LANDSCAPE);
+
+        // Activity max bounds should not be sandboxed, even though it is letterboxed.
+        assertTrue(activity.isLetterboxedForFixedOrientationAndAspectRatio());
+        assertThat(activity.getConfiguration().windowConfiguration.getMaxBounds())
+                .isEqualTo(activity.getDisplayArea().getBounds());
+    }
+
+    @Test
+    @DisableCompatChanges({ActivityInfo.NEVER_SANDBOX_DISPLAY_APIS})
+    public void testNeverSandboxDisplayApis_configDisabled_sandboxingApplied() {
+        setUpDisplaySizeWithApp(1000, 1200);
+
+        // Make the task root resizable.
+        mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
+
+        // Create an activity with a max aspect ratio on the same task.
+        final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+                RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+        activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
+        prepareUnresizable(activity, /* maxAspect=*/ 1.5f, SCREEN_ORIENTATION_LANDSCAPE);
+
+        // Activity max bounds should be sandboxed due to letterboxed and the config being disabled.
+        assertActivityMaxBoundsSandboxed(activity);
+    }
+
+    @Test
+    @EnableCompatChanges({ActivityInfo.ALWAYS_SANDBOX_DISPLAY_APIS})
+    public void testAlwaysSandboxDisplayApis_configEnabled_sandboxingApplied_unresizable() {
+        setUpDisplaySizeWithApp(1000, 1200);
+
+        // Make the task root resizable.
+        mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
+
+        // Create an activity with a max aspect ratio on the same task.
+        final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+                RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+        activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
+        prepareUnresizable(activity, /* maxAspect=*/ 1.5f, SCREEN_ORIENTATION_LANDSCAPE);
+
+        // Activity max bounds should be sandboxed due to letterboxed and the config being enabled.
+        assertActivityMaxBoundsSandboxed(activity);
+    }
+
+    @Test
+    @DisableCompatChanges({ActivityInfo.ALWAYS_SANDBOX_DISPLAY_APIS})
+    public void testAlwaysSandboxDisplayApis_configDisabled_sandboxingNotApplied() {
+        setUpDisplaySizeWithApp(1000, 1200);
+
+        // Make the task root resizable.
+        mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
+
+        // Create an activity with a max aspect ratio on the same task.
+        final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+                RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+        activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
+        prepareUnresizable(activity, /* maxAspect=*/ 1.5f, SCREEN_ORIENTATION_LANDSCAPE);
+
+        // Activity max bounds be sandboxed due to letterbox and the config being disabled.
+        assertActivityMaxBoundsSandboxed(activity);
+    }
+
+    @Test
+    @EnableCompatChanges({ActivityInfo.ALWAYS_SANDBOX_DISPLAY_APIS})
+    public void testAlwaysSandboxDisplayApis_configEnabled_sandboxingApplied_resizableSplit() {
+        setUpDisplaySizeWithApp(1000, 2800);
+        mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE;
+        final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false,
+                RESIZE_MODE_RESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+        final TestSplitOrganizer organizer =
+                new TestSplitOrganizer(mAtm, activity.getDisplayContent());
+
+        // Activity max bounds should be sandboxed due the config being enabled.
+        assertFalse(activity.inSizeCompatMode());
+        assertActivityMaxBoundsSandboxed(activity);
+
+        // Move activity to split screen which takes half of the screen.
+        mTask.reparent(organizer.mPrimary, POSITION_TOP,
+                false /*moveParents*/, "test");
+        organizer.mPrimary.setBounds(0, 0, 1000, 1400);
+        assertEquals(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, mTask.getWindowingMode());
+        assertEquals(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, activity.getWindowingMode());
+
+        // Resizable activity is sandboxed due to config being enabled.
+        assertActivityMaxBoundsSandboxed(activity);
+    }
+
+    @Test
     @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO,
             ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM})
     public void testOverrideMinAspectRatioMedium() {
@@ -1023,7 +1075,7 @@
 
         // Portrait fixed app with min aspect ratio higher that aspect ratio override for fixed
         // orientation letterbox.
-        mActivity.mWmService.setFixedOrientationLetterboxAspectRatio(1.1f);
+        mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.1f);
         mActivity.info.setMinAspectRatio(3);
         prepareUnresizable(mActivity, /* maxAspect= */ 0, SCREEN_ORIENTATION_PORTRAIT);
 
@@ -1054,7 +1106,7 @@
 
         // Portrait fixed app with max aspect ratio lower that aspect ratio override for fixed
         // orientation letterbox.
-        mActivity.mWmService.setFixedOrientationLetterboxAspectRatio(3);
+        mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(3);
         prepareUnresizable(mActivity, /* maxAspect= */ 2, SCREEN_ORIENTATION_PORTRAIT);
 
         final Rect displayBounds = new Rect(mActivity.mDisplayContent.getBounds());
@@ -1085,7 +1137,7 @@
         // Portrait fixed app with min aspect ratio higher that aspect ratio override for fixed
         // orientation letterbox.
         final float fixedOrientationLetterboxAspectRatio = 1.1f;
-        mActivity.mWmService.setFixedOrientationLetterboxAspectRatio(
+        mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(
                 fixedOrientationLetterboxAspectRatio);
         prepareUnresizable(mActivity, 0, SCREEN_ORIENTATION_PORTRAIT);
 
@@ -1515,6 +1567,129 @@
         assertEquals(primarySplitBounds, letterboxedBounds);
     }
 
+    @Test
+    public void testUpdateResolvedBoundsHorizontalPosition_left() {
+        // Display configured as (2800, 1400).
+        assertHorizontalPositionForDifferentDisplayConfigsForPortraitActivity(
+                /* letterboxHorizontalPositionMultiplier */ 0.0f,
+                // At launch.
+                /* fixedOrientationLetterbox */ new Rect(0, 0, 700, 1400),
+                // After 90 degree rotation.
+                /* sizeCompatUnscaled */ new Rect(0, 0, 700, 1400),
+                // After the display is resized to (700, 1400).
+                /* sizeCompatScaled */ new Rect(0, 0, 350, 700));
+    }
+
+    @Test
+    public void testUpdateResolvedBoundsHorizontalPosition_center() {
+        // Display configured as (2800, 1400).
+        assertHorizontalPositionForDifferentDisplayConfigsForPortraitActivity(
+                /* letterboxHorizontalPositionMultiplier */ 0.5f,
+                // At launch.
+                /* fixedOrientationLetterbox */ new Rect(1050, 0, 1750, 1400),
+                // After 90 degree rotation.
+                /* sizeCompatUnscaled */ new Rect(350, 0, 1050, 1400),
+                // After the display is resized to (700, 1400).
+                /* sizeCompatScaled */ new Rect(525, 0, 875, 700));
+    }
+
+    @Test
+    public void testUpdateResolvedBoundsHorizontalPosition_invalidMultiplier_defaultToCenter() {
+        // Display configured as (2800, 1400).
+
+        // Below 0.0.
+        assertHorizontalPositionForDifferentDisplayConfigsForPortraitActivity(
+                /* letterboxHorizontalPositionMultiplier */ -1.0f,
+                // At launch.
+                /* fixedOrientationLetterbox */ new Rect(1050, 0, 1750, 1400),
+                // After 90 degree rotation.
+                /* sizeCompatUnscaled */ new Rect(350, 0, 1050, 1400),
+                // After the display is resized to (700, 1400).
+                /* sizeCompatScaled */ new Rect(525, 0, 875, 700));
+
+        // Above 1.0
+        assertHorizontalPositionForDifferentDisplayConfigsForPortraitActivity(
+                /* letterboxHorizontalPositionMultiplier */ 2.0f,
+                // At launch.
+                /* fixedOrientationLetterbox */ new Rect(1050, 0, 1750, 1400),
+                // After 90 degree rotation.
+                /* sizeCompatUnscaled */ new Rect(350, 0, 1050, 1400),
+                // After the display is resized to (700, 1400).
+                /* sizeCompatScaled */ new Rect(525, 0, 875, 700));
+    }
+
+    @Test
+    public void testUpdateResolvedBoundsHorizontalPosition_right() {
+        // Display configured as (2800, 1400).
+        assertHorizontalPositionForDifferentDisplayConfigsForPortraitActivity(
+                /* letterboxHorizontalPositionMultiplier */ 1.0f,
+                // At launch.
+                /* fixedOrientationLetterbox */ new Rect(2100, 0, 2800, 1400),
+                // After 90 degree rotation.
+                /* sizeCompatUnscaled */ new Rect(700, 0, 1400, 1400),
+                // After the display is resized to (700, 1400).
+                /* sizeCompatScaled */ new Rect(1050, 0, 1400, 700));
+    }
+
+    private void assertHorizontalPositionForDifferentDisplayConfigsForPortraitActivity(
+            float letterboxHorizontalPositionMultiplier, Rect fixedOrientationLetterbox,
+            Rect sizeCompatUnscaled, Rect sizeCompatScaled) {
+        // Set up a display in landscape and ignoring orientation request.
+        setUpDisplaySizeWithApp(2800, 1400);
+        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
+
+        mActivity.mWmService.mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(
+                letterboxHorizontalPositionMultiplier);
+        prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
+
+        assertEquals(fixedOrientationLetterbox, mActivity.getBounds());
+
+        // Rotate to put activity in size compat mode.
+        rotateDisplay(mActivity.mDisplayContent, ROTATION_90);
+
+        assertTrue(mActivity.inSizeCompatMode());
+        // Activity is in size compat mode but not scaled.
+        assertEquals(sizeCompatUnscaled, mActivity.getBounds());
+
+        // Force activity to scaled down for size compat mode.
+        resizeDisplay(mTask.mDisplayContent, 700, 1400);
+
+        assertTrue(mActivity.inSizeCompatMode());
+        assertScaled();
+        assertEquals(sizeCompatScaled, mActivity.getBounds());
+    }
+
+    @Test
+    public void testUpdateResolvedBoundsHorizontalPosition_activityFillParentWidth() {
+        // When activity width equals parent width, multiplier shouldn't have any effect.
+        assertHorizontalPositionForDifferentDisplayConfigsForLandscapeActivity(
+                /* letterboxHorizontalPositionMultiplier */ 0.0f);
+        assertHorizontalPositionForDifferentDisplayConfigsForLandscapeActivity(
+                /* letterboxHorizontalPositionMultiplier */ 0.5f);
+        assertHorizontalPositionForDifferentDisplayConfigsForLandscapeActivity(
+                /* letterboxHorizontalPositionMultiplier */ 1.0f);
+    }
+
+    private void assertHorizontalPositionForDifferentDisplayConfigsForLandscapeActivity(
+            float letterboxHorizontalPositionMultiplier) {
+        // Set up a display in landscape and ignoring orientation request.
+        setUpDisplaySizeWithApp(2800, 1400);
+        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
+
+        mActivity.mWmService.mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(
+                letterboxHorizontalPositionMultiplier);
+        prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE);
+
+        assertFitted();
+
+        // Rotate to put activity in size compat mode.
+        rotateDisplay(mActivity.mDisplayContent, ROTATION_90);
+
+        assertTrue(mActivity.inSizeCompatMode());
+        // Activity is in size compat mode but not scaled.
+        assertEquals(new Rect(0, 0, 1400, 700), mActivity.getBounds());
+    }
+
     private static WindowState addWindowToActivity(ActivityRecord activity) {
         final WindowManager.LayoutParams params = new WindowManager.LayoutParams();
         params.type = WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
@@ -1552,6 +1727,24 @@
         displayPolicy.layoutWindowLw(statusBar, null, displayContent.mDisplayFrames);
     }
 
+    /**
+     * Returns an ActivityRecord instance with the specified attributes on the same task. By
+     * constructing the ActivityRecord, forces {@link ActivityInfo} to be loaded with the compat
+     * config settings.
+     */
+    private ActivityRecord buildActivityRecord(boolean supportsSizeChanges, int resizeMode,
+            @ScreenOrientation int screenOrientation) {
+        return new ActivityBuilder(mAtm)
+                .setTask(mTask)
+                .setResizeMode(resizeMode)
+                .setSupportsSizeChanges(supportsSizeChanges)
+                .setScreenOrientation(screenOrientation)
+                .setComponent(ComponentName.createRelative(mContext,
+                        SizeCompatTests.class.getName()))
+                .setUid(android.os.Process.myUid())
+                .build();
+    }
+
     static void prepareUnresizable(ActivityRecord activity, int screenOrientation) {
         prepareUnresizable(activity, -1 /* maxAspect */, screenOrientation);
     }
@@ -1620,9 +1813,17 @@
      * bounds are sandboxed.
      */
     private void assertActivityMaxBoundsSandboxed() {
+        assertActivityMaxBoundsSandboxed(mActivity);
+    }
+
+    /**
+     * Asserts activity-level letterbox or size compat mode size compat mode on the specified
+     * activity, so activity max bounds are sandboxed.
+     */
+    private void assertActivityMaxBoundsSandboxed(ActivityRecord activity) {
         // Activity max bounds are sandboxed due to size compat mode.
-        assertThat(mActivity.getConfiguration().windowConfiguration.getMaxBounds())
-                .isEqualTo(mActivity.getWindowConfiguration().getBounds());
+        assertThat(activity.getConfiguration().windowConfiguration.getMaxBounds())
+                .isEqualTo(activity.getWindowConfiguration().getBounds());
     }
 
     static Configuration rotateDisplay(DisplayContent display, int rotation) {
diff --git a/services/tests/wmtests/src/com/android/server/wm/StubTransaction.java b/services/tests/wmtests/src/com/android/server/wm/StubTransaction.java
index f3616da6c..619aee6 100644
--- a/services/tests/wmtests/src/com/android/server/wm/StubTransaction.java
+++ b/services/tests/wmtests/src/com/android/server/wm/StubTransaction.java
@@ -17,6 +17,8 @@
 package com.android.server.wm;
 
 import android.annotation.NonNull;
+import android.graphics.ColorSpace;
+import android.graphics.GraphicBuffer;
 import android.graphics.Matrix;
 import android.graphics.Rect;
 import android.graphics.Region;
@@ -253,4 +255,14 @@
     public SurfaceControl.Transaction unsetFixedTransformHint(@NonNull SurfaceControl sc) {
         return this;
     }
+
+    @Override
+    public SurfaceControl.Transaction setBuffer(SurfaceControl sc, GraphicBuffer buffer) {
+        return this;
+    }
+
+    @Override
+    public SurfaceControl.Transaction setColorSpace(SurfaceControl sc, ColorSpace colorSpace) {
+        return this;
+    }
 }
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 6919c4c..00f3d8b 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
@@ -16,6 +16,7 @@
 
 package com.android.server.wm;
 
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND;
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
@@ -634,6 +635,22 @@
     }
 
     @Test
+    public void testSetOrientation() {
+        final TestWindowContainer root = spy(new TestWindowContainerBuilder(mWm).build());
+        final TestWindowContainer child = spy(root.addChildWindow());
+        doReturn(true).when(root).handlesOrientationChangeFromDescendant();
+        child.getWindowConfiguration().setWindowingMode(WINDOWING_MODE_FULLSCREEN);
+        child.setOrientation(SCREEN_ORIENTATION_PORTRAIT);
+        // The ancestor should decide whether to dispatch the configuration change.
+        verify(child, never()).onConfigurationChanged(any());
+
+        doReturn(false).when(root).handlesOrientationChangeFromDescendant();
+        child.setOrientation(SCREEN_ORIENTATION_LANDSCAPE);
+        // The ancestor doesn't handle the request so the descendant applies the change directly.
+        verify(child).onConfigurationChanged(any());
+    }
+
+    @Test
     public void testCompareTo() {
         final TestWindowContainerBuilder builder = new TestWindowContainerBuilder(mWm);
         final TestWindowContainer root = builder.setLayer(0).build();
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java
index 73b9173..5d0fe17 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java
@@ -17,8 +17,11 @@
 package com.android.server.wm;
 
 import static android.view.Display.DEFAULT_DISPLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY;
 import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -162,6 +165,26 @@
                 false /* callerCanManagerAppTokens */, ANOTHER_UID);
     }
 
+    @Test
+    public void testWindowContextCreatedWindowTokenRemoved_SwitchToListenToDA() {
+        WindowToken windowContextCreatedToken = new WindowToken.Builder(mWm, mClientToken,
+                TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY)
+                .setDisplayContent(mDefaultDisplay)
+                .setFromClientToken(true)
+                .build();
+        final DisplayArea da = windowContextCreatedToken.getDisplayArea();
+
+        mController.registerWindowContainerListener(mClientToken, windowContextCreatedToken,
+                TEST_UID, TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY, null /* options */);
+
+        assertThat(mController.getContainer(mClientToken)).isEqualTo(windowContextCreatedToken);
+
+        // Remove WindowToken
+        windowContextCreatedToken.removeImmediately();
+
+        assertThat(mController.getContainer(mClientToken)).isEqualTo(da);
+    }
+
     private class TestWindowTokenClient extends IWindowToken.Stub {
         private Configuration mConfiguration;
         private int mDisplayId;
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
index 5bafbbd..2d4e4ef 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
@@ -101,6 +101,7 @@
 import com.android.internal.policy.AttributeCache;
 import com.android.internal.util.ArrayUtils;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.runner.Description;
@@ -207,11 +208,26 @@
         // Ensure letterbox aspect ratio is not overridden on any device target.
         // {@link com.android.internal.R.dimen.config_fixedOrientationLetterboxAspectRatio}, is set
         // on some device form factors.
-        mAtm.mWindowManager.setFixedOrientationLetterboxAspectRatio(0);
+        mAtm.mWindowManager.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(0);
+        // Ensure letterbox position multiplier is not overridden on any device target.
+        // {@link com.android.internal.R.dimen.config_letterboxHorizontalPositionMultiplier},
+        // may be set on some device form factors.
+        mAtm.mWindowManager.mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(0.5f);
 
         checkDeviceSpecificOverridesNotApplied();
     }
 
+    @After
+    public void tearDown() throws Exception {
+        // Revert back to device overrides.
+        mAtm.mWindowManager.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(
+                mContext.getResources().getFloat(
+                        com.android.internal.R.dimen.config_fixedOrientationLetterboxAspectRatio));
+        mAtm.mWindowManager.mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(
+                mContext.getResources().getFloat(
+                    com.android.internal.R.dimen.config_letterboxHorizontalPositionMultiplier));
+    }
+
     /**
      * Check that device-specific overrides are not applied. Only need to check once during entire
      * test run for each case: global overrides, default display, and test display.
@@ -219,7 +235,8 @@
     private void checkDeviceSpecificOverridesNotApplied() {
         // Check global overrides
         if (!sGlobalOverridesChecked) {
-            assertEquals(0, mWm.getFixedOrientationLetterboxAspectRatio(), 0 /* delta */);
+            assertEquals(0, mWm.mLetterboxConfiguration.getFixedOrientationLetterboxAspectRatio(),
+                    0 /* delta */);
             sGlobalOverridesChecked = true;
         }
         // Check display-specific overrides
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java
index ed5f1d8..d048f1842 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java
@@ -184,49 +184,28 @@
     }
 
     /**
-     * Test that {@link WindowToken} constructor parameters is set with expectation.
-     */
-    @Test
-    public void testWindowTokenConstructorValidity() {
-        WindowToken token = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class),
-                TYPE_TOAST, true /* persistOnEmpty */, mDisplayContent,
-                true /* ownerCanManageAppTokens */);
-        assertFalse(token.mRoundedCornerOverlay);
-        assertFalse(token.isFromClient());
-
-        token = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class), TYPE_TOAST,
-                true /* persistOnEmpty */, mDisplayContent, true /* ownerCanManageAppTokens */,
-                true /* roundedCornerOverlay */);
-        assertTrue(token.mRoundedCornerOverlay);
-        assertFalse(token.isFromClient());
-
-        token = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class), TYPE_TOAST,
-                true /* persistOnEmpty */, mDisplayContent, true /* ownerCanManageAppTokens */,
-                true /* roundedCornerOverlay */, true /* fromClientToken */, null /* options */);
-        assertTrue(token.mRoundedCornerOverlay);
-        assertTrue(token.isFromClient());
-    }
-
-    /**
      * Test that {@link android.view.SurfaceControl} should not be created for the
      * {@link WindowToken} which was created for {@link WindowContext} initially, the
      * surface should be create after addWindow for this token.
      */
     @Test
     public void testSurfaceCreatedForWindowToken() {
-        final WindowToken fromClientToken = new WindowToken(mDisplayContent.mWmService,
-                mock(IBinder.class), TYPE_APPLICATION_OVERLAY, true /* persistOnEmpty */,
-                mDisplayContent, true /* ownerCanManageAppTokens */,
-                true /* roundedCornerOverlay */, true /* fromClientToken */, null /* options */);
+        final WindowToken fromClientToken = new WindowToken.Builder(mDisplayContent.mWmService,
+                mock(IBinder.class), TYPE_APPLICATION_OVERLAY)
+                .setDisplayContent(mDisplayContent)
+                .setFromClientToken(true)
+                .build();
+
         assertNull(fromClientToken.mSurfaceControl);
 
         createWindow(null, TYPE_APPLICATION_OVERLAY, fromClientToken, "window");
         assertNotNull(fromClientToken.mSurfaceControl);
 
-        final WindowToken nonClientToken = new WindowToken(mDisplayContent.mWmService,
-                mock(IBinder.class), TYPE_TOAST, true /* persistOnEmpty */, mDisplayContent,
-                true /* ownerCanManageAppTokens */, true /* roundedCornerOverlay */,
-                false /* fromClientToken */, null /* options */);
+        final WindowToken nonClientToken = new WindowToken.Builder(mDisplayContent.mWmService,
+                mock(IBinder.class), TYPE_APPLICATION_OVERLAY)
+                .setDisplayContent(mDisplayContent)
+                .setFromClientToken(false)
+                .build();
         assertNotNull(nonClientToken.mSurfaceControl);
     }
 
@@ -237,18 +216,23 @@
                         .mSelectRootForWindowFunc;
         spyOn(selectFunc);
 
-        final WindowToken token1 = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class),
-                TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
-                true /* ownerCanManageAppTokens */, true /* roundedCornerOverlay */,
-                false /* fromClientToken */, null /* options */);
+        final WindowToken token1 = new WindowToken.Builder(mDisplayContent.mWmService,
+                mock(IBinder.class), TYPE_STATUS_BAR)
+                .setDisplayContent(mDisplayContent)
+                .setPersistOnEmpty(true)
+                .setOwnerCanManageAppTokens(true)
+                .build();
 
         verify(selectFunc).apply(token1.windowType, null);
 
         final Bundle options = new Bundle();
-        final WindowToken token2 = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class),
-                TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent,
-                true /* ownerCanManageAppTokens */, true /* roundedCornerOverlay */,
-                false /* fromClientToken */, options /* options */);
+        final WindowToken token2 = new WindowToken.Builder(mDisplayContent.mWmService,
+                mock(IBinder.class), TYPE_STATUS_BAR)
+                .setDisplayContent(mDisplayContent)
+                .setPersistOnEmpty(true)
+                .setOwnerCanManageAppTokens(true)
+                .setOptions(options)
+                .build();
 
         verify(selectFunc).apply(token2.windowType, options);
     }
diff --git a/services/usb/java/com/android/server/usb/UsbDeviceManager.java b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
index 2e692e6..7f24c36 100644
--- a/services/usb/java/com/android/server/usb/UsbDeviceManager.java
+++ b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
@@ -2139,6 +2139,12 @@
                 Slog.d(TAG, "setEnabledFunctions functions=" + functions + ", "
                         + "forceRestart=" + forceRestart);
             }
+            if (mCurrentGadgetHalVersion < UsbManager.GADGET_HAL_V1_2) {
+                if ((functions & UsbManager.FUNCTION_NCM) != 0) {
+                    Slog.e(TAG, "Could not set unsupported function for the GadgetHal");
+                    return;
+                }
+            }
             if (mCurrentFunctions != functions
                     || !mCurrentFunctionsApplied
                     || forceRestart) {
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
index 6f701f7..d6ed98f 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
@@ -24,6 +24,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.ComponentName;
+import android.content.ContentCaptureOptions;
 import android.content.Context;
 import android.content.Intent;
 import android.hardware.soundtrigger.IRecognitionStatusCallback;
@@ -34,10 +35,12 @@
 import android.media.AudioRecord;
 import android.media.MediaRecorder;
 import android.os.Bundle;
+import android.os.IBinder;
 import android.os.IRemoteCallback;
 import android.os.ParcelFileDescriptor;
 import android.os.PersistableBundle;
 import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.os.SharedMemory;
 import android.service.voice.HotwordDetectedResult;
 import android.service.voice.HotwordDetectionService;
@@ -47,6 +50,7 @@
 import android.service.voice.IMicrophoneHotwordDetectionVoiceInteractionCallback;
 import android.util.Pair;
 import android.util.Slog;
+import android.view.contentcapture.IContentCaptureManager;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.app.IHotwordRecognitionStatusCallback;
@@ -135,6 +139,7 @@
             return;
         }
         updateStateWithCallbackLocked(options, sharedMemory, callback);
+        updateContentCaptureManager();
     }
 
     private void updateStateWithCallbackLocked(PersistableBundle options,
@@ -193,6 +198,15 @@
                 });
     }
 
+    private void updateContentCaptureManager() {
+        IBinder b = ServiceManager
+                .getService(Context.CONTENT_CAPTURE_MANAGER_SERVICE);
+        IContentCaptureManager binderService = IContentCaptureManager.Stub.asInterface(b);
+        mRemoteHotwordDetectionService.post(
+                service -> service.updateContentCaptureManager(binderService,
+                        new ContentCaptureOptions(null)));
+    }
+
     private boolean isBound() {
         synchronized (mLock) {
             return mBound;
@@ -270,6 +284,114 @@
         }
     }
 
+    void triggerHardwareRecognitionEventForTestLocked(
+            SoundTrigger.KeyphraseRecognitionEvent event,
+            IHotwordRecognitionStatusCallback callback) {
+        if (DEBUG) {
+            Slog.d(TAG, "triggerHardwareRecognitionEventForTestLocked");
+        }
+        detectFromDspSourceForTest(event, callback);
+    }
+
+    private void detectFromDspSourceForTest(SoundTrigger.KeyphraseRecognitionEvent recognitionEvent,
+            IHotwordRecognitionStatusCallback externalCallback) {
+        if (DEBUG) {
+            Slog.d(TAG, "detectFromDspSourceForTest");
+        }
+
+        AudioRecord record = createFakeAudioRecord();
+        if (record == null) {
+            Slog.d(TAG, "Failed to create fake audio record");
+            return;
+        }
+
+        Pair<ParcelFileDescriptor, ParcelFileDescriptor> clientPipe = createPipe();
+        if (clientPipe == null) {
+            Slog.d(TAG, "Failed to create pipe");
+            return;
+        }
+        ParcelFileDescriptor audioSink = clientPipe.second;
+        ParcelFileDescriptor clientRead = clientPipe.first;
+
+        record.startRecording();
+
+        mAudioCopyExecutor.execute(() -> {
+            try (OutputStream fos =
+                         new ParcelFileDescriptor.AutoCloseOutputStream(audioSink)) {
+
+                int remainToRead = 10240;
+                byte[] buffer = new byte[1024];
+                while (remainToRead > 0) {
+                    int bytesRead = record.read(buffer, 0, 1024);
+                    if (DEBUG) {
+                        Slog.d(TAG, "bytesRead = " + bytesRead);
+                    }
+                    if (bytesRead <= 0) {
+                        break;
+                    }
+                    if (bytesRead > 8) {
+                        System.arraycopy(new byte[] {'h', 'o', 't', 'w', 'o', 'r', 'd', '!'}, 0,
+                                buffer, 0, 8);
+                    }
+
+                    fos.write(buffer, 0, bytesRead);
+                    remainToRead -= bytesRead;
+                }
+            } catch (IOException e) {
+                Slog.w(TAG, "Failed supplying audio data to validator", e);
+            }
+        });
+
+        Runnable cancellingJob = () -> {
+            Slog.d(TAG, "Timeout for getting callback from HotwordDetectionService");
+            record.stop();
+            record.release();
+            bestEffortClose(audioSink);
+            bestEffortClose(clientRead);
+        };
+
+        ScheduledFuture<?> cancelingFuture =
+                mScheduledExecutorService.schedule(
+                        cancellingJob, VALIDATION_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+
+        IDspHotwordDetectionCallback internalCallback = new IDspHotwordDetectionCallback.Stub() {
+            @Override
+            public void onDetected(HotwordDetectedResult result) throws RemoteException {
+                if (DEBUG) {
+                    Slog.d(TAG, "onDetected");
+                }
+                cancelingFuture.cancel(true);
+                record.stop();
+                record.release();
+                bestEffortClose(audioSink);
+                bestEffortClose(clientRead);
+
+                externalCallback.onKeyphraseDetected(recognitionEvent);
+            }
+
+            @Override
+            public void onRejected(HotwordRejectedResult result) throws RemoteException {
+                if (DEBUG) {
+                    Slog.d(TAG, "onRejected");
+                }
+                cancelingFuture.cancel(true);
+                record.stop();
+                record.release();
+                bestEffortClose(audioSink);
+                bestEffortClose(clientRead);
+
+                externalCallback.onRejected(result);
+            }
+        };
+
+        mRemoteHotwordDetectionService.run(
+                service -> service.detectFromDspSource(
+                        clientRead,
+                        recognitionEvent.getCaptureFormat(),
+                        VALIDATION_TIMEOUT_MILLIS,
+                        internalCallback));
+    }
+
     private void detectFromDspSource(SoundTrigger.KeyphraseRecognitionEvent recognitionEvent,
             IHotwordRecognitionStatusCallback externalCallback) {
         if (DEBUG) {
@@ -456,6 +578,37 @@
         }
     }
 
+    @Nullable
+    private AudioRecord createFakeAudioRecord() {
+        if (DEBUG) {
+            Slog.i(TAG, "#createFakeAudioRecord");
+        }
+        try {
+            AudioRecord audioRecord = new AudioRecord.Builder()
+                    .setAudioFormat(new AudioFormat.Builder()
+                            .setSampleRate(32000)
+                            .setEncoding(AudioFormat.ENCODING_PCM_16BIT)
+                            .setChannelMask(AudioFormat.CHANNEL_IN_MONO).build())
+                    .setAudioAttributes(new AudioAttributes.Builder()
+                            .setInternalCapturePreset(MediaRecorder.AudioSource.HOTWORD).build())
+                    .setBufferSizeInBytes(
+                            AudioRecord.getMinBufferSize(32000,
+                                    AudioFormat.CHANNEL_IN_MONO,
+                                    AudioFormat.ENCODING_PCM_16BIT) * 2)
+                    .build();
+
+            if (audioRecord.getState() != AudioRecord.STATE_INITIALIZED) {
+                Slog.w(TAG, "Failed to initialize AudioRecord");
+                audioRecord.release();
+                return null;
+            }
+            return audioRecord;
+        } catch (IllegalArgumentException e) {
+            Slog.e(TAG, "Failed to create AudioRecord", e);
+        }
+        return null;
+    }
+
     /**
      * Returns the number of bytes required to store {@code bufferLengthSeconds} of audio sampled at
      * {@code sampleRate} Hz, using the format returned by DSP audio capture.
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index 9aded89..92cfe49 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -1130,6 +1130,29 @@
             }
         }
 
+        @Override
+        public void triggerHardwareRecognitionEventForTest(
+                SoundTrigger.KeyphraseRecognitionEvent event,
+                IHotwordRecognitionStatusCallback callback)
+                throws RemoteException {
+            enforceCallingPermission(Manifest.permission.RECORD_AUDIO);
+            enforceCallingPermission(Manifest.permission.CAPTURE_AUDIO_HOTWORD);
+            synchronized (this) {
+                enforceIsCurrentVoiceInteractionService();
+
+                if (mImpl == null) {
+                    Slog.w(TAG, "triggerHardwareRecognitionEventForTest without running"
+                            + " voice interaction service");
+                    return;
+                }
+                final long caller = Binder.clearCallingIdentity();
+                try {
+                    mImpl.triggerHardwareRecognitionEventForTestLocked(event, callback);
+                } finally {
+                    Binder.restoreCallingIdentity(caller);
+                }
+            }
+        }
         //----------------- Model management APIs --------------------------------//
 
         @Override
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
index 6922ccc..0552841 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
@@ -40,6 +40,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ServiceInfo;
 import android.hardware.soundtrigger.IRecognitionStatusCallback;
+import android.hardware.soundtrigger.SoundTrigger;
 import android.media.AudioFormat;
 import android.os.Bundle;
 import android.os.Handler;
@@ -493,6 +494,20 @@
         mHotwordDetectionConnection.stopListening();
     }
 
+    public void triggerHardwareRecognitionEventForTestLocked(
+            SoundTrigger.KeyphraseRecognitionEvent event,
+            IHotwordRecognitionStatusCallback callback) {
+        if (DEBUG) {
+            Slog.d(TAG, "triggerHardwareRecognitionEventForTestLocked");
+        }
+        if (mHotwordDetectionConnection == null) {
+            Slog.w(TAG, "triggerHardwareRecognitionEventForTestLocked() called but connection"
+                    + " isn't established");
+            return;
+        }
+        mHotwordDetectionConnection.triggerHardwareRecognitionEventForTestLocked(event, callback);
+    }
+
     public IRecognitionStatusCallback createSoundTriggerCallbackLocked(
             IHotwordRecognitionStatusCallback callback) {
         if (DEBUG) {
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index 4886789..1953af4 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -1011,6 +1011,7 @@
      * Enable READ_PHONE_STATE protection on APIs querying and notifying call state, such as
      * {@code TelecomManager#getCallState}, {@link TelephonyManager#getCallStateForSubscription()},
      * and {@link android.telephony.TelephonyCallback.CallStateListener}.
+     * @hide
      */
     @ChangeId
     @EnabledSince(targetSdkVersion = Build.VERSION_CODES.S)
diff --git a/telephony/common/com/android/internal/telephony/SmsApplication.java b/telephony/common/com/android/internal/telephony/SmsApplication.java
index 32533cb..0d6cd5a 100644
--- a/telephony/common/com/android/internal/telephony/SmsApplication.java
+++ b/telephony/common/com/android/internal/telephony/SmsApplication.java
@@ -760,6 +760,7 @@
     private static void assignExclusiveSmsPermissionsToSystemApp(Context context,
             PackageManager packageManager, AppOpsManager appOps, String packageName,
             boolean sigatureMatch) {
+        if (packageName == null) return;
         // First check package signature matches the caller's package signature.
         // Since this class is only used internally by the system, this check makes sure
         // the package signature matches system signature.
diff --git a/telephony/java/android/telephony/AccessNetworkConstants.java b/telephony/java/android/telephony/AccessNetworkConstants.java
index 96e715e..1d7a476 100644
--- a/telephony/java/android/telephony/AccessNetworkConstants.java
+++ b/telephony/java/android/telephony/AccessNetworkConstants.java
@@ -62,6 +62,7 @@
         switch (transportType) {
             case TRANSPORT_TYPE_WWAN: return "WWAN";
             case TRANSPORT_TYPE_WLAN: return "WLAN";
+            case TRANSPORT_TYPE_INVALID: return "INVALID";
             default: return Integer.toString(transportType);
         }
     }
diff --git a/telephony/java/android/telephony/CarrierBandwidth.aidl b/telephony/java/android/telephony/CarrierBandwidth.aidl
deleted file mode 100644
index d0861b8..0000000
--- a/telephony/java/android/telephony/CarrierBandwidth.aidl
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * 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.
- */
-package android.telephony;
-parcelable CarrierBandwidth;
\ No newline at end of file
diff --git a/telephony/java/android/telephony/CarrierBandwidth.java b/telephony/java/android/telephony/CarrierBandwidth.java
deleted file mode 100644
index 9e1dee0..0000000
--- a/telephony/java/android/telephony/CarrierBandwidth.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.telephony;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.RequiresFeature;
-import android.annotation.SystemApi;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.util.Objects;
-
-/**
- * Defines downlink and uplink capacity of a network in kbps
- * @hide
- */
-@SystemApi
-public final class CarrierBandwidth implements Parcelable {
-    /**
-     * Any field that is not reported shall be set to INVALID
-     */
-    public static final int INVALID = -1;
-
-    /**
-     * Estimated downlink capacity in kbps of the primary carrier.
-     * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
-     * This will be {@link #INVALID} if the network is not connected
-     */
-    private int mPrimaryDownlinkCapacityKbps;
-
-    /**
-     * Estimated uplink capacity in kbps of the primary carrier.
-     * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
-     * This will be {@link #INVALID} if the network is not connected
-     */
-    private int mPrimaryUplinkCapacityKbps;
-
-    /**
-     * Estimated downlink capacity in kbps of the secondary carrier in a dual connected network.
-     * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
-     * This will be {@link #INVALID} if the network is not connected
-     */
-    private int mSecondaryDownlinkCapacityKbps;
-
-    /**
-     * Estimated uplink capacity in kbps of the secondary carrier in a dual connected network.
-     * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
-     * This will be {@link #INVALID} if the network is not connected
-     */
-    private int mSecondaryUplinkCapacityKbps;
-
-    /** @hide **/
-    public CarrierBandwidth(Parcel in) {
-        mPrimaryDownlinkCapacityKbps = in.readInt();
-        mPrimaryUplinkCapacityKbps = in.readInt();
-        mSecondaryDownlinkCapacityKbps = in.readInt();
-        mSecondaryUplinkCapacityKbps = in.readInt();
-    }
-
-    /** @hide **/
-    public CarrierBandwidth() {
-        mPrimaryDownlinkCapacityKbps = INVALID;
-        mPrimaryUplinkCapacityKbps = INVALID;
-        mSecondaryDownlinkCapacityKbps = INVALID;
-        mSecondaryUplinkCapacityKbps = INVALID;
-    }
-
-    /**
-     * Constructor.
-     *
-     * @param primaryDownlinkCapacityKbps Estimated downlink capacity in kbps of
-     *        the primary carrier.
-     * @param primaryUplinkCapacityKbps Estimated uplink capacity in kbps of
-     *        the primary carrier.
-     * @param secondaryDownlinkCapacityKbps Estimated downlink capacity in kbps of
-     *        the secondary carrier
-     * @param secondaryUplinkCapacityKbps Estimated uplink capacity in kbps of
-     *        the secondary carrier
-     */
-    public CarrierBandwidth(int primaryDownlinkCapacityKbps, int primaryUplinkCapacityKbps,
-            int secondaryDownlinkCapacityKbps, int secondaryUplinkCapacityKbps) {
-        mPrimaryDownlinkCapacityKbps = primaryDownlinkCapacityKbps;
-        mPrimaryUplinkCapacityKbps = primaryUplinkCapacityKbps;
-        mSecondaryDownlinkCapacityKbps = secondaryDownlinkCapacityKbps;
-        mSecondaryUplinkCapacityKbps = secondaryUplinkCapacityKbps;
-    }
-
-    /**
-     * Retrieves the upstream bandwidth for the primary network in kbps.  This always only refers to
-     * the estimated first hop transport bandwidth.
-     * This will be {@link #INVALID} if the network is not connected
-     *
-     * @return The estimated first hop upstream (device to network) bandwidth.
-     */
-    public int getPrimaryDownlinkCapacityKbps() {
-        return mPrimaryDownlinkCapacityKbps;
-    }
-
-    /**
-     * Retrieves the downstream bandwidth for the primary network in kbps.  This always only refers
-     * to the estimated first hop transport bandwidth.
-     * This will be {@link #INVALID} if the network is not connected
-     *
-     * @return The estimated first hop downstream (network to device) bandwidth.
-     */
-    public int getPrimaryUplinkCapacityKbps() {
-        return mPrimaryUplinkCapacityKbps;
-    }
-
-    /**
-     * Retrieves the upstream bandwidth for the secondary network in kbps.  This always only refers
-     * to the estimated first hop transport bandwidth.
-     * <p/>
-     * This will be {@link #INVALID} if either are the case:
-     * <ol>
-     *  <li>The network is not connected</li>
-     *  <li>The device does not support
-     * {@link android.telephony.TelephonyManager#CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE}.</li>
-     * </ol>
-     *
-     * @return The estimated first hop upstream (device to network) bandwidth.
-     */
-    @RequiresFeature(
-            enforcement = "android.telephony.TelephonyManager#isRadioInterfaceCapabilitySupported",
-            value = TelephonyManager.CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE)
-    public int getSecondaryDownlinkCapacityKbps() {
-        return mSecondaryDownlinkCapacityKbps;
-    }
-
-    /**
-     * Retrieves the downstream bandwidth for the secondary network in kbps.  This always only
-     * refers to the estimated first hop transport bandwidth.
-     * <p/>
-     * This will be {@link #INVALID} if either are the case:
-     * <ol>
-     *  <li>The network is not connected</li>
-     *  <li>The device does not support
-     * {@link android.telephony.TelephonyManager#CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE}.</li>
-     * </ol>
-     * @return The estimated first hop downstream (network to device) bandwidth.
-     */
-    @RequiresFeature(
-            enforcement = "android.telephony.TelephonyManager#isRadioInterfaceCapabilitySupported",
-            value = TelephonyManager.CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE)
-    public int getSecondaryUplinkCapacityKbps() {
-        return mSecondaryUplinkCapacityKbps;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "CarrierBandwidth: {primaryDownlinkCapacityKbps=" + mPrimaryDownlinkCapacityKbps
-                + " primaryUplinkCapacityKbps=" + mPrimaryUplinkCapacityKbps
-                + " secondaryDownlinkCapacityKbps=" + mSecondaryDownlinkCapacityKbps
-                + " secondaryUplinkCapacityKbps=" + mSecondaryUplinkCapacityKbps
-                + "}";
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(
-                mPrimaryDownlinkCapacityKbps,
-                mPrimaryUplinkCapacityKbps,
-                mSecondaryDownlinkCapacityKbps,
-                mSecondaryUplinkCapacityKbps);
-    }
-
-    @Override
-    public boolean equals(@Nullable Object o) {
-        if (o == null || !(o instanceof CallQuality) || hashCode() != o.hashCode()) {
-            return false;
-        }
-        if (this == o) {
-            return true;
-        }
-        CarrierBandwidth s = (CarrierBandwidth) o;
-        return (mPrimaryDownlinkCapacityKbps == s.mPrimaryDownlinkCapacityKbps
-                && mPrimaryUplinkCapacityKbps == s.mPrimaryUplinkCapacityKbps
-                && mSecondaryDownlinkCapacityKbps == s.mSecondaryDownlinkCapacityKbps
-                && mSecondaryDownlinkCapacityKbps == s.mSecondaryDownlinkCapacityKbps);
-    }
-
-    /**
-     * {@link Parcelable#describeContents}
-     */
-    public int describeContents() {
-        return 0;
-    }
-
-    /**
-     * {@link Parcelable#writeToParcel}
-     * @hide
-     */
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeInt(mPrimaryDownlinkCapacityKbps);
-        dest.writeInt(mPrimaryUplinkCapacityKbps);
-        dest.writeInt(mSecondaryDownlinkCapacityKbps);
-        dest.writeInt(mSecondaryUplinkCapacityKbps);
-    }
-
-    public static final @android.annotation.NonNull Parcelable.Creator<CarrierBandwidth> CREATOR =
-            new Parcelable.Creator() {
-            public CarrierBandwidth createFromParcel(Parcel in) {
-                return new CarrierBandwidth(in);
-            }
-
-            public CarrierBandwidth[] newArray(int size) {
-                return new CarrierBandwidth[size];
-            }
-    };
-}
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index b914972..8b9fc0f 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -4216,7 +4216,6 @@
          * it will override the framework default.
          * @hide
          */
-        @SystemApi
         public static final String KEY_PUBLISH_SERVICE_DESC_FEATURE_TAG_MAP_OVERRIDE_STRING_ARRAY =
                 KEY_PREFIX + "publish_service_desc_feature_tag_map_override_string_array";
 
diff --git a/telephony/java/android/telephony/CellSignalStrengthNr.java b/telephony/java/android/telephony/CellSignalStrengthNr.java
index bde62fb..ac01afa 100644
--- a/telephony/java/android/telephony/CellSignalStrengthNr.java
+++ b/telephony/java/android/telephony/CellSignalStrengthNr.java
@@ -134,7 +134,7 @@
      *
      * Range [0, 15] for each CQI.
      */
-    private List<Integer> mCsiCqiReport;;
+    private List<Integer> mCsiCqiReport;
     private int mSsRsrp;
     private int mSsRsrq;
     private int mSsSinr;
@@ -172,13 +172,13 @@
      * @hide
      */
     public CellSignalStrengthNr(int csiRsrp, int csiRsrq, int csiSinr, int csiCqiTableIndex,
-            List<Integer> csiCqiReport, int ssRsrp, int ssRsrq, int ssSinr) {
+            List<Byte> csiCqiReport, int ssRsrp, int ssRsrq, int ssSinr) {
         mCsiRsrp = inRangeOrUnavailable(csiRsrp, -140, -44);
         mCsiRsrq = inRangeOrUnavailable(csiRsrq, -20, -3);
         mCsiSinr = inRangeOrUnavailable(csiSinr, -23, 23);
         mCsiCqiTableIndex = inRangeOrUnavailable(csiCqiTableIndex, 1, 3);
-        mCsiCqiReport =  csiCqiReport.stream()
-                .map(cqi -> new Integer(inRangeOrUnavailable(cqi.intValue(), 1, 3)))
+        mCsiCqiReport = csiCqiReport.stream()
+                .map(cqi -> new Integer(inRangeOrUnavailable(Byte.toUnsignedInt(cqi), 1, 3)))
                 .collect(Collectors.toList());
         mSsRsrp = inRangeOrUnavailable(ssRsrp, -140, -44);
         mSsRsrq = inRangeOrUnavailable(ssRsrq, -43, 20);
diff --git a/telephony/java/android/telephony/DataFailCause.java b/telephony/java/android/telephony/DataFailCause.java
index c8ed82c..4d5b6ac 100644
--- a/telephony/java/android/telephony/DataFailCause.java
+++ b/telephony/java/android/telephony/DataFailCause.java
@@ -1055,6 +1055,20 @@
      */
     public static final int HANDOVER_FAILED = 0x10006;
 
+    /**
+     * Enterprise setup failure: duplicate CID in DataCallResponse.
+     *
+     * @hide
+     */
+    public static final int DUPLICATE_CID = 0x10007;
+
+    /**
+     * Enterprise setup failure: no default data connection set up yet.
+     *
+     * @hide
+     */
+    public static final int NO_DEFAULT_DATA = 0x10008;
+
     private static final Map<Integer, String> sFailCauseMap;
     static {
         sFailCauseMap = new HashMap<>();
@@ -1426,6 +1440,8 @@
         sFailCauseMap.put(IPV6_PREFIX_UNAVAILABLE, "IPV6_PREFIX_UNAVAILABLE");
         sFailCauseMap.put(HANDOFF_PREFERENCE_CHANGED, "HANDOFF_PREFERENCE_CHANGED");
         sFailCauseMap.put(SLICE_REJECTED, "SLICE_REJECTED");
+        sFailCauseMap.put(MATCH_ALL_RULE_NOT_ALLOWED, "MATCH_ALL_RULE_NOT_ALLOWED");
+        sFailCauseMap.put(ALL_MATCHING_RULES_FAILED, "ALL_MATCHING_RULES_FAILED");
         sFailCauseMap.put(IWLAN_PDN_CONNECTION_REJECTION, "IWLAN_PDN_CONNECTION_REJECTION");
         sFailCauseMap.put(IWLAN_MAX_CONNECTION_REACHED, "IWLAN_MAX_CONNECTION_REACHED");
         sFailCauseMap.put(IWLAN_SEMANTIC_ERROR_IN_THE_TFT_OPERATION,
@@ -1481,6 +1497,9 @@
         sFailCauseMap.put(UNACCEPTABLE_NETWORK_PARAMETER,
                 "UNACCEPTABLE_NETWORK_PARAMETER");
         sFailCauseMap.put(LOST_CONNECTION, "LOST_CONNECTION");
+        sFailCauseMap.put(HANDOVER_FAILED, "HANDOVER_FAILED");
+        sFailCauseMap.put(DUPLICATE_CID, "DUPLICATE_CID");
+        sFailCauseMap.put(NO_DEFAULT_DATA, "NO_DEFAULT_DATA");
     }
 
     private DataFailCause() {
@@ -1580,6 +1599,9 @@
                             add(RADIO_NOT_AVAILABLE);
                             add(UNACCEPTABLE_NETWORK_PARAMETER);
                             add(SIGNAL_LOST);
+                            add(DUPLICATE_CID);
+                            add(MATCH_ALL_RULE_NOT_ALLOWED);
+                            add(ALL_MATCHING_RULES_FAILED);
                         }
                     };
                 }
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index d8ac082..2616ec8 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -2785,7 +2785,8 @@
      * @param subId the subscriber this override applies to.
      * @param overrideUnmetered set if the billing relationship should be
      *            considered unmetered.
-     * @param networkTypes the network types this override applies to.
+     * @param networkTypes the network types this override applies to. If no
+     *            network types are specified, override values will be ignored.
      *            {@see TelephonyManager#getAllNetworkTypes()}
      * @param timeoutMillis the timeout after which the requested override will
      *            be automatically cleared, or {@code 0} to leave in the
@@ -2849,7 +2850,8 @@
      * @param subId the subscriber this override applies to.
      * @param overrideCongested set if the subscription should be considered
      *            congested.
-     * @param networkTypes the network types this override applies to.
+     * @param networkTypes the network types this override applies to. If no
+     *            network types are specified, override values will be ignored.
      *            {@see TelephonyManager#getAllNetworkTypes()}
      * @param timeoutMillis the timeout after which the requested override will
      *            be automatically cleared, or {@code 0} to leave in the
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index f0771be..8475cab 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -64,7 +64,6 @@
 import android.os.ParcelUuid;
 import android.os.Parcelable;
 import android.os.PersistableBundle;
-import android.os.Process;
 import android.os.RemoteException;
 import android.os.ResultReceiver;
 import android.os.SystemProperties;
@@ -90,7 +89,7 @@
 import android.telephony.VisualVoicemailService.VisualVoicemailTask;
 import android.telephony.data.ApnSetting;
 import android.telephony.data.ApnSetting.MvnoType;
-import android.telephony.data.SlicingConfig;
+import android.telephony.data.NetworkSlicingConfig;
 import android.telephony.emergency.EmergencyNumber;
 import android.telephony.emergency.EmergencyNumber.EmergencyServiceCategories;
 import android.telephony.gba.UaSecurityProtocolIdentifier;
@@ -428,10 +427,6 @@
         return null;
     }
 
-    private boolean isSystemProcess() {
-        return Process.myUid() == Process.SYSTEM_UID;
-    }
-
     /**
      * Post a runnable to the BackgroundThread.
      *
@@ -4205,19 +4200,12 @@
         try {
             IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null) {
-                Rlog.e(TAG, "IMSI error: Subscriber Info is null");
-                if (!isSystemProcess()) {
-                    throw new RuntimeException("IMSI error: Subscriber Info is null");
-                }
-                return;
+                throw new RuntimeException("IMSI error: Subscriber Info is null");
             }
             int subId = getSubId(SubscriptionManager.getDefaultDataSubscriptionId());
             info.resetCarrierKeysForImsiEncryption(subId, mContext.getOpPackageName());
         } catch (RemoteException ex) {
-            Rlog.e(TAG, "getCarrierInfoForImsiEncryption RemoteException" + ex);
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
+            Rlog.e(TAG, "Telephony#getCarrierInfoForImsiEncryption RemoteException" + ex);
         }
     }
 
@@ -4885,8 +4873,9 @@
      * Return the set of IMSIs that should be considered "merged together" for data usage
      * purposes. This API merges IMSIs based on subscription grouping: IMSI of those in the same
      * group will all be returned.
-     * Return the current IMSI if there is no subscription group. See
-     * {@link SubscriptionManager#createSubscriptionGroup(List)} for the definition of a group.
+     * Return the current IMSI if there is no subscription group, see
+     * {@link SubscriptionManager#createSubscriptionGroup(List)} for the definition of a group,
+     * otherwise return an empty array if there is a failure.
      *
      * @hide
      */
@@ -5611,17 +5600,11 @@
         try {
             final ITelephony telephony = getITelephony();
             if (telephony == null) {
-                if (!isSystemProcess()) {
-                    throw new RuntimeException("Telephony service unavailable");
-                }
                 return;
             }
             telephony.sendDialerSpecialCode(mContext.getOpPackageName(), inputCode);
         } catch (RemoteException ex) {
-            // This could happen if binder process crashes.
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
+            Rlog.e(TAG, "Telephony#sendDialerSpecialCode RemoteException" + ex);
         }
     }
 
@@ -9940,9 +9923,7 @@
                 throw new IllegalStateException("telephony service is null.");
             }
         } catch (RemoteException ex) {
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
+            Rlog.e(TAG, "Telephony#getMobileProvisioningUrl RemoteException" + ex);
         }
         return null;
     }
@@ -10094,14 +10075,15 @@
 
     /**
      * Sets the roaming mode for CDMA phone to the given mode {@code mode}. If the phone is not
-     * CDMA capable, this method does nothing.
+     * CDMA capable, this method throws an IllegalStateException.
      *
      * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the
      * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultSubscriptionId()}
      *
      * @param mode CDMA roaming mode.
      * @throws SecurityException if the caller does not have the permission.
-     * @throws IllegalStateException if the Telephony process or radio is not currently available.
+     * @throws IllegalStateException if the Telephony process or radio is not currently available,
+     *         the device is not CDMA capable, or the request fails.
      *
      * @see #CDMA_ROAMING_MODE_RADIO_DEFAULT
      * @see #CDMA_ROAMING_MODE_HOME
@@ -10117,7 +10099,9 @@
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
     public void setCdmaRoamingMode(@CdmaRoamingMode int mode) {
-        if (getPhoneType() != PHONE_TYPE_CDMA) return;
+        if (getPhoneType() != PHONE_TYPE_CDMA) {
+            throw new IllegalStateException("Phone does not support CDMA.");
+        }
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null) {
@@ -10199,11 +10183,12 @@
 
     /**
      * Sets the subscription mode for CDMA phone to the given mode {@code mode}. If the phone is not
-     * CDMA capable, this method does nothing.
+     * CDMA capable, this method throws an IllegalStateException.
      *
      * @param mode CDMA subscription mode.
      * @throws SecurityException if the caller does not have the permission.
-     * @throws IllegalStateException if the Telephony process is not currently available.
+     * @throws IllegalStateException if the Telephony process or radio is not currently available,
+     *         the device is not CDMA capable, or the request fails.
      *
      * @see #CDMA_SUBSCRIPTION_UNKNOWN
      * @see #CDMA_SUBSCRIPTION_RUIM_SIM
@@ -10218,7 +10203,9 @@
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
     public void setCdmaSubscriptionMode(@CdmaSubscription int mode) {
-        if (getPhoneType() != PHONE_TYPE_CDMA) return;
+        if (getPhoneType() != PHONE_TYPE_CDMA) {
+            throw new IllegalStateException("Phone does not support CDMA.");
+        }
         try {
             ITelephony telephony = getITelephony();
             if (telephony != null) {
@@ -13926,9 +13913,7 @@
                 return service.isDataEnabledForApn(apnType, getSubId(), pkgForDebug);
             }
         } catch (RemoteException ex) {
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
+            Rlog.e(TAG, "Telephony#isDataEnabledForApn RemoteException" + ex);
         }
         return false;
     }
@@ -13948,9 +13933,7 @@
                 return service.isApnMetered(apnType, getSubId());
             }
         } catch (RemoteException ex) {
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
+            Rlog.e(TAG, "Telephony#isApnMetered RemoteException" + ex);
         }
         return true;
     }
@@ -14010,9 +13993,7 @@
                 service.setSystemSelectionChannels(specifiers, getSubId(), aidlConsumer);
             }
         } catch (RemoteException ex) {
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
+            Rlog.e(TAG, "Telephony#setSystemSelectionChannels RemoteException" + ex);
         }
     }
 
@@ -14040,9 +14021,7 @@
                 throw new IllegalStateException("telephony service is null.");
             }
         } catch (RemoteException ex) {
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
+            Rlog.e(TAG, "Telephony#getSystemSelectionChannels RemoteException" + ex);
         }
         return new ArrayList<>();
     }
@@ -14071,9 +14050,7 @@
                 return service.isMvnoMatched(getSubId(), mvnoType, mvnoMatchData);
             }
         } catch (RemoteException ex) {
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
+            Rlog.e(TAG, "Telephony#matchesCurrentSimOperator RemoteException" + ex);
         }
         return false;
     }
@@ -14474,10 +14451,7 @@
                 service.setMobileDataPolicyEnabled(getSubId(), policy, enabled);
             }
         } catch (RemoteException ex) {
-            // This could happen if binder process crashes.
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
+            Rlog.e(TAG, "Telephony#setMobileDataPolicyEnabled RemoteException" + ex);
         }
     }
 
@@ -14497,10 +14471,7 @@
                 return service.isMobileDataPolicyEnabled(getSubId(), policy);
             }
         } catch (RemoteException ex) {
-            // This could happen if binder process crashes.
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
+            Rlog.e(TAG, "Telephony#isMobileDataPolicyEnabled RemoteException" + ex);
         }
         return false;
     }
@@ -15004,9 +14975,7 @@
                 throw new IllegalStateException("telephony service is null.");
             }
         } catch (RemoteException ex) {
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
+            Rlog.e(TAG, "Telephony#getEquivalentHomePlmns RemoteException" + ex);
         }
 
         return Collections.emptyList();
@@ -15064,13 +15033,20 @@
     public static final String CAPABILITY_SLICING_CONFIG_SUPPORTED =
             "CAPABILITY_SLICING_CONFIG_SUPPORTED";
 
-    /** @hide */
+    /**
+     * A list of the radio interface capability values with public valid constants.
+     *
+     * Here is a related list for the systemapi-only valid constants:
+     *     CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE
+     *     CAPABILITY_ALLOWED_NETWORK_TYPES_USED
+     *     CAPABILITY_NR_DUAL_CONNECTIVITY_CONFIGURATION_AVAILABLE
+     *     CAPABILITY_THERMAL_MITIGATION_DATA_THROTTLING
+     *
+     * @hide
+     * TODO(b/185508047): Doc generation for mixed public/systemapi StringDefs formats badly.
+     */
     @Retention(RetentionPolicy.SOURCE)
     @StringDef(prefix = "CAPABILITY_", value = {
-            CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE,
-            CAPABILITY_ALLOWED_NETWORK_TYPES_USED,
-            CAPABILITY_NR_DUAL_CONNECTIVITY_CONFIGURATION_AVAILABLE,
-            CAPABILITY_THERMAL_MITIGATION_DATA_THROTTLING,
             CAPABILITY_SLICING_CONFIG_SUPPORTED,
     })
     public @interface RadioInterfaceCapability {}
@@ -15082,10 +15058,7 @@
      *
      * @param capability the name of the capability to check for
      * @return the availability of the capability
-     *
-     * @hide
      */
-    @SystemApi
     public boolean isRadioInterfaceCapabilitySupported(
             @NonNull @RadioInterfaceCapability String capability) {
         try {
@@ -15098,9 +15071,7 @@
                 throw new IllegalStateException("telephony service is null.");
             }
         } catch (RemoteException ex) {
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
+            Rlog.e(TAG, "Telephony#isRadioInterfaceCapabilitySupported RemoteException" + ex);
         }
         return false;
     }
@@ -15669,7 +15640,7 @@
      * Exception that may be supplied to the callback in {@link #getNetworkSlicingConfiguration} if
      * something goes awry.
      */
-    public static class SlicingException extends Exception {
+    public static class NetworkSlicingException extends Exception {
         /**
          * Getting the current slicing configuration successfully. Used internally only.
          * @hide
@@ -15678,11 +15649,13 @@
 
         /**
          * The system timed out waiting for a response from the Radio.
+         * @hide
          */
         public static final int ERROR_TIMEOUT = 1;
 
         /**
          * The modem returned a failure.
+         * @hide
          */
         public static final int ERROR_MODEM_ERROR = 2;
 
@@ -15692,20 +15665,44 @@
                 ERROR_MODEM_ERROR,
         })
         @Retention(RetentionPolicy.SOURCE)
-        public @interface SlicingError {}
+        public @interface NetworkSlicingError {}
 
         private final int mErrorCode;
 
-        public SlicingException(@SlicingError int errorCode) {
+        /** @hide */
+        public NetworkSlicingException(@NetworkSlicingError int errorCode) {
             mErrorCode = errorCode;
         }
 
-        /**
-         * Fetches the error code associated with this exception.
-         * @return An error code.
-         */
-        public @SlicingError int getErrorCode() {
-            return mErrorCode;
+        @Override
+        public String toString() {
+            switch (mErrorCode) {
+                case ERROR_TIMEOUT: return "ERROR_TIMEOUT";
+                case ERROR_MODEM_ERROR: return "ERROR_MODEM_ERROR";
+                default: return "UNDEFINED";
+            }
+        }
+    }
+
+    /**
+     * Exception that is supplied to the callback in {@link #getNetworkSlicingConfiguration} if the
+     * system timed out waiting for a response from the Radio.
+     */
+    public class TimeoutException extends NetworkSlicingException {
+        /** @hide */
+        public TimeoutException(int errorCode) {
+            super(errorCode);
+        }
+    }
+
+    /**
+     * Exception that is supplied to the callback in {@link #getNetworkSlicingConfiguration} if the
+     * modem returned a failure.
+     */
+    public class ModemErrorException extends NetworkSlicingException {
+        /** @hide */
+        public ModemErrorException(int errorCode) {
+            super(errorCode);
         }
     }
 
@@ -15736,7 +15733,7 @@
     @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public void getNetworkSlicingConfiguration(
             @NonNull @CallbackExecutor Executor executor,
-            @NonNull OutcomeReceiver<SlicingConfig, SlicingException> callback) {
+            @NonNull OutcomeReceiver<NetworkSlicingConfig, NetworkSlicingException> callback) {
         Objects.requireNonNull(executor);
         Objects.requireNonNull(callback);
 
@@ -15748,12 +15745,17 @@
             telephony.getSlicingConfig(new ResultReceiver(null) {
                     @Override
                     protected void onReceiveResult(int resultCode, Bundle result) {
-                        if (resultCode != SlicingException.SUCCESS) {
+                        if (resultCode == NetworkSlicingException.ERROR_TIMEOUT) {
                             executor.execute(() -> callback.onError(
-                                    new SlicingException(resultCode)));
+                                    new TimeoutException(resultCode)));
+                            return;
+                        } else if (resultCode == NetworkSlicingException.ERROR_MODEM_ERROR) {
+                            executor.execute(() -> callback.onError(
+                                    new ModemErrorException(resultCode)));
                             return;
                         }
-                        SlicingConfig slicingConfig =
+
+                        NetworkSlicingConfig slicingConfig =
                                 result.getParcelable(KEY_SLICING_CONFIG_HANDLE);
                         executor.execute(() -> callback.onResult(slicingConfig));
                     }
diff --git a/telephony/java/android/telephony/data/SlicingConfig.aidl b/telephony/java/android/telephony/data/NetworkSlicingConfig.aidl
similarity index 95%
rename from telephony/java/android/telephony/data/SlicingConfig.aidl
rename to telephony/java/android/telephony/data/NetworkSlicingConfig.aidl
index ad93d8c..cd4a8f1e4 100644
--- a/telephony/java/android/telephony/data/SlicingConfig.aidl
+++ b/telephony/java/android/telephony/data/NetworkSlicingConfig.aidl
@@ -16,4 +16,4 @@
 
 package android.telephony.data;
 
-parcelable SlicingConfig;
+parcelable NetworkSlicingConfig;
diff --git a/telephony/java/android/telephony/data/SlicingConfig.java b/telephony/java/android/telephony/data/NetworkSlicingConfig.java
similarity index 83%
rename from telephony/java/android/telephony/data/SlicingConfig.java
rename to telephony/java/android/telephony/data/NetworkSlicingConfig.java
index 990e4d2..dec787f 100644
--- a/telephony/java/android/telephony/data/SlicingConfig.java
+++ b/telephony/java/android/telephony/data/NetworkSlicingConfig.java
@@ -28,22 +28,22 @@
 /**
  * Represents a slicing configuration
  */
-public final class SlicingConfig implements Parcelable {
+public final class NetworkSlicingConfig implements Parcelable {
     private final List<UrspRule> mUrspRules;
     private final List<NetworkSliceInfo> mSliceInfo;
 
-    public SlicingConfig() {
+    public NetworkSlicingConfig() {
         mUrspRules = new ArrayList<UrspRule>();
         mSliceInfo = new ArrayList<NetworkSliceInfo>();
     }
 
     /** @hide */
-    public SlicingConfig(android.hardware.radio.V1_6.SlicingConfig sc) {
+    public NetworkSlicingConfig(android.hardware.radio.V1_6.SlicingConfig sc) {
         this(sc.urspRules, sc.sliceInfo);
     }
 
     /** @hide */
-    public SlicingConfig(List<android.hardware.radio.V1_6.UrspRule> urspRules,
+    public NetworkSlicingConfig(List<android.hardware.radio.V1_6.UrspRule> urspRules,
             List<android.hardware.radio.V1_6.SliceInfo> sliceInfo) {
         mUrspRules = new ArrayList<UrspRule>();
         for (android.hardware.radio.V1_6.UrspRule ur : urspRules) {
@@ -69,7 +69,7 @@
     }
 
     /** @hide */
-    public SlicingConfig(Parcel p) {
+    public NetworkSlicingConfig(Parcel p) {
         mUrspRules = p.createTypedArrayList(UrspRule.CREATOR);
         mSliceInfo = p.createTypedArrayList(NetworkSliceInfo.CREATOR);
     }
@@ -96,16 +96,16 @@
         dest.writeTypedList(mSliceInfo, flags);
     }
 
-    public static final @NonNull Parcelable.Creator<SlicingConfig> CREATOR =
-            new Parcelable.Creator<SlicingConfig>() {
+    public static final @NonNull Parcelable.Creator<NetworkSlicingConfig> CREATOR =
+            new Parcelable.Creator<NetworkSlicingConfig>() {
                 @Override
-                public SlicingConfig createFromParcel(Parcel source) {
-                    return new SlicingConfig(source);
+                public NetworkSlicingConfig createFromParcel(Parcel source) {
+                    return new NetworkSlicingConfig(source);
                 }
 
                 @Override
-                public SlicingConfig[] newArray(int size) {
-                    return new SlicingConfig[size];
+                public NetworkSlicingConfig[] newArray(int size) {
+                    return new NetworkSlicingConfig[size];
                 }
             };
 
@@ -118,7 +118,7 @@
     public boolean equals(@Nullable Object o) {
         if (this == o) return true;
         if (o == null || getClass() != o.getClass()) return false;
-        SlicingConfig that = (SlicingConfig) o;
+        NetworkSlicingConfig that = (NetworkSlicingConfig) o;
         return mUrspRules.size() == that.mUrspRules.size()
                 && mUrspRules.containsAll(that.mUrspRules)
                 && mSliceInfo.size() == that.mSliceInfo.size()
diff --git a/telephony/java/android/telephony/data/QosBearerFilter.java b/telephony/java/android/telephony/data/QosBearerFilter.java
index 6c1c653..5642549 100644
--- a/telephony/java/android/telephony/data/QosBearerFilter.java
+++ b/telephony/java/android/telephony/data/QosBearerFilter.java
@@ -31,7 +31,6 @@
 import java.util.List;
 import java.util.Objects;
 
-
 /**
  * Class that stores QOS filter parameters as defined in
  * 3gpp 24.008 10.5.6.12 and 3gpp 24.501 9.11.4.13.
diff --git a/telephony/java/android/telephony/data/TrafficDescriptor.java b/telephony/java/android/telephony/data/TrafficDescriptor.java
index d813bc5..f400a5e 100644
--- a/telephony/java/android/telephony/data/TrafficDescriptor.java
+++ b/telephony/java/android/telephony/data/TrafficDescriptor.java
@@ -21,6 +21,7 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import java.util.Arrays;
 import java.util.Objects;
 
 /**
@@ -31,11 +32,11 @@
  */
 public final class TrafficDescriptor implements Parcelable {
     private final String mDnn;
-    private final String mOsAppId;
+    private final byte[] mOsAppId;
 
     private TrafficDescriptor(@NonNull Parcel in) {
         mDnn = in.readString();
-        mOsAppId = in.readString();
+        mOsAppId = in.createByteArray();
     }
 
     /**
@@ -45,14 +46,15 @@
      *
      * @hide
      */
-    public TrafficDescriptor(String dnn, String osAppId) {
+    public TrafficDescriptor(String dnn, byte[] osAppId) {
         mDnn = dnn;
         mOsAppId = osAppId;
     }
 
     /**
      * DNN stands for Data Network Name and represents an APN as defined in 3GPP TS 23.003.
-     * @return the DNN of this traffic descriptor.
+     * @return the DNN of this traffic descriptor if one is included by the network, null
+     * otherwise.
      */
     public @Nullable String getDataNetworkName() {
         return mDnn;
@@ -60,10 +62,11 @@
 
     /**
      * OsAppId is the app id as defined in 3GPP TS 24.526 Section 5.2, and it identifies a traffic
-     * category.
-     * @return the OS App ID of this traffic descriptor.
+     * category. It includes the OS Id component of the field as defined in the specs.
+     * @return the OS App ID of this traffic descriptor if one is included by the network, null
+     * otherwise.
      */
-    public @Nullable String getOsAppId() {
+    public @Nullable byte[] getOsAppId() {
         return mOsAppId;
     }
 
@@ -80,7 +83,7 @@
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
         dest.writeString(mDnn);
-        dest.writeString(mOsAppId);
+        dest.writeByteArray(mOsAppId);
     }
 
     public static final @NonNull Parcelable.Creator<TrafficDescriptor> CREATOR =
@@ -101,7 +104,7 @@
         if (this == o) return true;
         if (o == null || getClass() != o.getClass()) return false;
         TrafficDescriptor that = (TrafficDescriptor) o;
-        return Objects.equals(mDnn, that.mDnn) && Objects.equals(mOsAppId, that.mOsAppId);
+        return Objects.equals(mDnn, that.mDnn) && Arrays.equals(mOsAppId, that.mOsAppId);
     }
 
     @Override
@@ -121,10 +124,12 @@
      *     .setDnn("")
      *     .build();
      * </code></pre>
+     *
+     * @hide
      */
     public static final class Builder {
         private String mDnn = null;
-        private String mOsAppId = null;
+        private byte[] mOsAppId = null;
 
         /**
          * Default constructor for Builder.
@@ -144,12 +149,12 @@
         }
 
         /**
-         * Set the OS App ID.
+         * Set the OS App ID (including OS Id as defind in the specs).
          *
          * @return The same instance of the builder.
          */
         @NonNull
-        public Builder setOsAppId(@NonNull String osAppId) {
+        public Builder setOsAppId(@NonNull byte[] osAppId) {
             this.mOsAppId = osAppId;
             return this;
         }
diff --git a/telephony/java/android/telephony/data/UrspRule.java b/telephony/java/android/telephony/data/UrspRule.java
index e2c47fd..fbe1999 100644
--- a/telephony/java/android/telephony/data/UrspRule.java
+++ b/telephony/java/android/telephony/data/UrspRule.java
@@ -84,8 +84,8 @@
             android.hardware.radio.V1_6.TrafficDescriptor td) {
         String dnn = td.dnn.getDiscriminator() == OptionalDnn.hidl_discriminator.noinit
                 ? null : td.dnn.value();
-        String osAppId = td.osAppId.getDiscriminator() == OptionalOsAppId.hidl_discriminator.noinit
-                ? null : new String(arrayListToPrimitiveArray(td.osAppId.value().osAppId));
+        byte[] osAppId = td.osAppId.getDiscriminator() == OptionalOsAppId.hidl_discriminator.noinit
+                ? null : arrayListToPrimitiveArray(td.osAppId.value().osAppId);
         TrafficDescriptor.Builder builder = new TrafficDescriptor.Builder();
         if (dnn != null) {
             builder.setDataNetworkName(dnn);
diff --git a/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java b/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java
index 8762b6a..0d63f7b 100644
--- a/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java
+++ b/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java
@@ -501,6 +501,10 @@
      * {@link SipMessage} was using the latest configuration during creation and not a stale
      * configuration due to race conditions between the configuration being updated and the RCS
      * application not receiving the updated configuration before generating a new message.
+     * <p>
+     * The version number should be a positive number that starts at 0 and increments sequentially
+     * as new {@link SipDelegateImsConfiguration} instances are created to update the IMS
+     * configuration state.
      *
      * @return the version number associated with this {@link SipDelegateImsConfiguration}.
      */
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt
index 0593615..a540dff 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/CommonAssertions.kt
@@ -23,7 +23,7 @@
 import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper.Companion.STATUS_BAR_LAYER_NAME
 import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper.Companion.STATUS_BAR_WINDOW_NAME
 
-val LAUNCHER_TITLE = arrayOf("Wallpaper", "Launcher", "com.google.android.googlequicksearchbox")
+val HOME_WINDOW_TITLE = arrayOf("Wallpaper", "Launcher")
 
 fun FlickerTestParameter.statusBarWindowIsAlwaysVisible() {
     assertWm {
@@ -41,23 +41,23 @@
     assertWm {
         this.showsAppWindowOnTop(testApp.getPackage())
             .then()
-            .showsAppWindowOnTop(*LAUNCHER_TITLE)
+            .showsAppWindowOnTop(*HOME_WINDOW_TITLE)
     }
 }
 
 fun FlickerTestParameter.launcherWindowBecomesVisible() {
     assertWm {
-        this.hidesBelowAppWindow(*LAUNCHER_TITLE)
+        this.hidesBelowAppWindow(*HOME_WINDOW_TITLE)
             .then()
-            .showsBelowAppWindow(*LAUNCHER_TITLE)
+            .showsBelowAppWindow(*HOME_WINDOW_TITLE)
     }
 }
 
 fun FlickerTestParameter.launcherWindowBecomesInvisible() {
     assertWm {
-        this.showsBelowAppWindow(*LAUNCHER_TITLE)
+        this.showsBelowAppWindow(*HOME_WINDOW_TITLE)
             .then()
-            .hidesBelowAppWindow(*LAUNCHER_TITLE)
+            .hidesBelowAppWindow(*HOME_WINDOW_TITLE)
     }
 }
 
@@ -179,7 +179,7 @@
 
 fun FlickerTestParameter.appLayerReplacesLauncher(appName: String) {
     assertLayers {
-        this.isVisible(*LAUNCHER_TITLE)
+        this.isVisible(*HOME_WINDOW_TITLE)
             .then()
             .isVisible(appName)
     }
@@ -190,7 +190,7 @@
         this.isVisible(testApp.getPackage())
             .then()
             .isInvisible(testApp.getPackage())
-            .isVisible(*LAUNCHER_TITLE)
+            .isVisible(*HOME_WINDOW_TITLE)
     }
 }
 
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/CommonAssertions.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/CommonAssertions.kt
index 6a7309c..01e34d9 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/CommonAssertions.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/CommonAssertions.kt
@@ -18,11 +18,11 @@
 
 import android.platform.helpers.IAppHelper
 import com.android.server.wm.flicker.FlickerTestParameter
-import com.android.server.wm.flicker.LAUNCHER_TITLE
+import com.android.server.wm.flicker.HOME_WINDOW_TITLE
 
 fun FlickerTestParameter.appWindowReplacesLauncherAsTopWindow(testApp: IAppHelper) {
     assertWm {
-        this.showsAppWindowOnTop(*LAUNCHER_TITLE)
+        this.showsAppWindowOnTop(*HOME_WINDOW_TITLE)
             .then()
             .showsAppWindowOnTop("Snapshot", testApp.getPackage())
     }
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java
index f6d9a73..487c856 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java
@@ -56,6 +56,7 @@
         CanvasProperty<Float> mY;
         CanvasProperty<Float> mRadius;
         CanvasProperty<Float> mProgress;
+        CanvasProperty<Float> mNoisePhase;
         CanvasProperty<Paint> mPaint;
         RuntimeShader mRuntimeShader;
 
@@ -99,6 +100,7 @@
             mY = CanvasProperty.createFloat(200.0f);
             mRadius = CanvasProperty.createFloat(150.0f);
             mProgress = CanvasProperty.createFloat(0.0f);
+            mNoisePhase = CanvasProperty.createFloat(0.0f);
 
             Paint p = new Paint();
             p.setAntiAlias(true);
@@ -115,7 +117,8 @@
 
             if (canvas.isHardwareAccelerated()) {
                 RecordingCanvas recordingCanvas = (RecordingCanvas) canvas;
-                recordingCanvas.drawRipple(mX, mY, mRadius, mPaint, mProgress, mRuntimeShader);
+                recordingCanvas.drawRipple(mX, mY, mRadius, mPaint, mProgress, mNoisePhase,
+                        mRuntimeShader);
             }
         }
 
@@ -141,6 +144,9 @@
                     mProgress, mToggle ? 1.0f : 0.0f));
 
             mRunningAnimations.add(new RenderNodeAnimator(
+                    mNoisePhase, DURATION));
+
+            mRunningAnimations.add(new RenderNodeAnimator(
                     mPaint, RenderNodeAnimator.PAINT_ALPHA, 64.0f));
 
             // Will be "chained" to run after the above
diff --git a/tests/net/TEST_MAPPING b/tests/net/TEST_MAPPING
index d659688..502f885 100644
--- a/tests/net/TEST_MAPPING
+++ b/tests/net/TEST_MAPPING
@@ -28,7 +28,7 @@
   ],
   "imports": [
     {
-      "path": "cts/tests/tests/net"
+      "path": "packages/modules/Connectivity"
     }
   ]
 }
\ No newline at end of file
diff --git a/tests/net/common/java/ParseExceptionTest.kt b/tests/net/common/java/ParseExceptionTest.kt
new file mode 100644
index 0000000..b702d61
--- /dev/null
+++ b/tests/net/common/java/ParseExceptionTest.kt
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+
+import android.net.ParseException
+import android.os.Build
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.testutils.DevSdkIgnoreRule
+import junit.framework.Assert.assertEquals
+import junit.framework.Assert.assertNull
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class ParseExceptionTest {
+    @get:Rule
+    val ignoreRule = DevSdkIgnoreRule(ignoreClassUpTo = Build.VERSION_CODES.R)
+
+    @Test
+    fun testConstructor_WithCause() {
+        val testMessage = "Test message"
+        val base = Exception("Test")
+        val exception = ParseException(testMessage, base)
+
+        assertEquals(testMessage, exception.response)
+        assertEquals(base, exception.cause)
+    }
+
+    @Test
+    fun testConstructor_NoCause() {
+        val testMessage = "Test message"
+        val exception = ParseException(testMessage)
+
+        assertEquals(testMessage, exception.response)
+        assertNull(exception.cause)
+    }
+}
\ No newline at end of file
diff --git a/tests/net/common/java/android/net/NetworkCapabilitiesTest.java b/tests/net/common/java/android/net/NetworkCapabilitiesTest.java
index 6d852bf..9b74583 100644
--- a/tests/net/common/java/android/net/NetworkCapabilitiesTest.java
+++ b/tests/net/common/java/android/net/NetworkCapabilitiesTest.java
@@ -312,7 +312,7 @@
             .addCapability(NET_CAPABILITY_EIMS)
             .addCapability(NET_CAPABILITY_NOT_METERED);
         if (isAtLeastS()) {
-            netCap.setSubIds(Set.of(TEST_SUBID1, TEST_SUBID2));
+            netCap.setSubscriptionIds(Set.of(TEST_SUBID1, TEST_SUBID2));
             netCap.setUids(uids);
         }
         if (isAtLeastR()) {
@@ -642,16 +642,16 @@
             assertTrue(nc2.appliesToUid(22));
 
             // Verify the subscription id list can be combined only when they are equal.
-            nc1.setSubIds(Set.of(TEST_SUBID1, TEST_SUBID2));
-            nc2.setSubIds(Set.of(TEST_SUBID2));
+            nc1.setSubscriptionIds(Set.of(TEST_SUBID1, TEST_SUBID2));
+            nc2.setSubscriptionIds(Set.of(TEST_SUBID2));
             assertThrows(IllegalStateException.class, () -> nc2.combineCapabilities(nc1));
 
-            nc2.setSubIds(Set.of());
+            nc2.setSubscriptionIds(Set.of());
             assertThrows(IllegalStateException.class, () -> nc2.combineCapabilities(nc1));
 
-            nc2.setSubIds(Set.of(TEST_SUBID2, TEST_SUBID1));
+            nc2.setSubscriptionIds(Set.of(TEST_SUBID2, TEST_SUBID1));
             nc2.combineCapabilities(nc1);
-            assertEquals(Set.of(TEST_SUBID2, TEST_SUBID1), nc2.getSubIds());
+            assertEquals(Set.of(TEST_SUBID2, TEST_SUBID1), nc2.getSubscriptionIds());
         }
     }
 
@@ -806,20 +806,20 @@
         assertEquals(nc1, nc2);
 
         if (isAtLeastS()) {
-            assertThrows(NullPointerException.class, () -> nc1.setSubIds(null));
-            nc1.setSubIds(Set.of());
+            assertThrows(NullPointerException.class, () -> nc1.setSubscriptionIds(null));
+            nc1.setSubscriptionIds(Set.of());
             nc2.set(nc1);
             assertEquals(nc1, nc2);
 
-            nc1.setSubIds(Set.of(TEST_SUBID1));
+            nc1.setSubscriptionIds(Set.of(TEST_SUBID1));
             nc2.set(nc1);
             assertEquals(nc1, nc2);
 
-            nc2.setSubIds(Set.of(TEST_SUBID2, TEST_SUBID1));
+            nc2.setSubscriptionIds(Set.of(TEST_SUBID2, TEST_SUBID1));
             nc2.set(nc1);
             assertEquals(nc1, nc2);
 
-            nc2.setSubIds(Set.of(TEST_SUBID3, TEST_SUBID2));
+            nc2.setSubscriptionIds(Set.of(TEST_SUBID3, TEST_SUBID2));
             assertNotEquals(nc1, nc2);
         }
     }
@@ -908,8 +908,8 @@
         // satisfy these requests.
         final NetworkCapabilities nc = new NetworkCapabilities.Builder()
                 .addCapability(NET_CAPABILITY_NOT_VCN_MANAGED)
-                .setSubIds(new ArraySet<>(subIds)).build();
-        assertEquals(new ArraySet<>(subIds), nc.getSubIds());
+                .setSubscriptionIds(new ArraySet<>(subIds)).build();
+        assertEquals(new ArraySet<>(subIds), nc.getSubscriptionIds());
         return nc;
     }
 
@@ -921,11 +921,11 @@
         final NetworkCapabilities ncWithoutRequestedIds = capsWithSubIds(TEST_SUBID3);
 
         final NetworkRequest requestWithoutId = new NetworkRequest.Builder().build();
-        assertEmpty(requestWithoutId.networkCapabilities.getSubIds());
+        assertEmpty(requestWithoutId.networkCapabilities.getSubscriptionIds());
         final NetworkRequest requestWithIds = new NetworkRequest.Builder()
-                .setSubIds(Set.of(TEST_SUBID1, TEST_SUBID2)).build();
+                .setSubscriptionIds(Set.of(TEST_SUBID1, TEST_SUBID2)).build();
         assertEquals(Set.of(TEST_SUBID1, TEST_SUBID2),
-                requestWithIds.networkCapabilities.getSubIds());
+                requestWithIds.networkCapabilities.getSubscriptionIds());
 
         assertFalse(requestWithIds.canBeSatisfiedBy(ncWithoutId));
         assertTrue(requestWithIds.canBeSatisfiedBy(ncWithOtherIds));
@@ -1138,8 +1138,8 @@
 
         if (isAtLeastS()) {
             final NetworkCapabilities nc2 = new NetworkCapabilities.Builder()
-                    .setSubIds(Set.of(TEST_SUBID1)).build();
-            assertEquals(Set.of(TEST_SUBID1), nc2.getSubIds());
+                    .setSubscriptionIds(Set.of(TEST_SUBID1)).build();
+            assertEquals(Set.of(TEST_SUBID1), nc2.getSubscriptionIds());
         }
     }
 }
diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java
index 039ce2f..7ebed39 100644
--- a/tests/net/java/com/android/server/ConnectivityServiceTest.java
+++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java
@@ -1791,7 +1791,7 @@
         assertNull(mCm.getActiveNetworkForUid(Process.myUid()));
         // Test getAllNetworks()
         assertEmpty(mCm.getAllNetworks());
-        assertEmpty(mCm.getAllNetworkStateSnapshot());
+        assertEmpty(mCm.getAllNetworkStateSnapshots());
     }
 
     /**
@@ -2668,25 +2668,6 @@
         assertEquals(mCellNetworkAgent.getNetwork(), mCm.getActiveNetwork());
         assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
 
-        // Bring up wifi with a score of 70.
-        // Cell is lingered because it would not satisfy any request, even if it validated.
-        mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
-        mWiFiNetworkAgent.adjustScore(50);
-        mWiFiNetworkAgent.connect(false);   // Score: 70
-        callback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
-        callback.expectCallback(CallbackEntry.LOSING, mCellNetworkAgent);
-        defaultCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
-        assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetwork());
-        assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
-
-        // Tear down wifi.
-        mWiFiNetworkAgent.disconnect();
-        callback.expectCallback(CallbackEntry.LOST, mWiFiNetworkAgent);
-        defaultCallback.expectCallback(CallbackEntry.LOST, mWiFiNetworkAgent);
-        defaultCallback.expectAvailableCallbacksUnvalidated(mCellNetworkAgent);
-        assertEquals(mCellNetworkAgent.getNetwork(), mCm.getActiveNetwork());
-        assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
-
         // Bring up wifi, then validate it. Previous versions would immediately tear down cell, but
         // it's arguably correct to linger it, since it was the default network before it validated.
         mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
@@ -2991,11 +2972,17 @@
         callback.expectCapabilitiesWith(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent);
         assertEquals(mWiFiNetworkAgent.getNetwork(), mCm.getActiveNetwork());
 
-        // BUG: the network will no longer linger, even though it's validated and outscored.
-        // TODO: fix this.
         mEthernetNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_ETHERNET);
         mEthernetNetworkAgent.connect(true);
+        // BUG: with the legacy int-based scoring code, the network will no longer linger, even
+        // though it's validated and outscored.
+        // The new policy-based scoring code fixes this.
+        // TODO: remove the line below and replace with the three commented lines when
+        // the policy-based scoring code is turned on.
         callback.expectAvailableThenValidatedCallbacks(mEthernetNetworkAgent);
+        // callback.expectAvailableCallbacksUnvalidated(mEthernetNetworkAgent);
+        // callback.expectCallback(CallbackEntry.LOSING, mWiFiNetworkAgent);
+        // callback.expectCapabilitiesWith(NET_CAPABILITY_VALIDATED, mEthernetNetworkAgent);
         assertEquals(mEthernetNetworkAgent.getNetwork(), mCm.getActiveNetwork());
         callback.assertNoCallback();
 
@@ -12029,7 +12016,7 @@
     }
 
     @Test
-    public void testGetAllNetworkStateSnapshot() throws Exception {
+    public void testGetAllNetworkStateSnapshots() throws Exception {
         verifyNoNetwork();
 
         // Setup test cellular network with specified LinkProperties and NetworkCapabilities,
@@ -12053,7 +12040,7 @@
         mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR, cellLp, cellNcTemplate);
         mCellNetworkAgent.connect(true);
         cellCb.expectAvailableCallbacksUnvalidated(mCellNetworkAgent);
-        List<NetworkStateSnapshot> snapshots = mCm.getAllNetworkStateSnapshot();
+        List<NetworkStateSnapshot> snapshots = mCm.getAllNetworkStateSnapshots();
         assertLength(1, snapshots);
 
         // Compose the expected cellular snapshot for verification.
@@ -12075,7 +12062,7 @@
                 mWiFiNetworkAgent.getNetwork(), wifiNc, new LinkProperties(), null,
                 ConnectivityManager.TYPE_WIFI);
 
-        snapshots = mCm.getAllNetworkStateSnapshot();
+        snapshots = mCm.getAllNetworkStateSnapshots();
         assertLength(2, snapshots);
         assertContainsAll(snapshots, cellSnapshot, wifiSnapshot);
 
@@ -12084,20 +12071,20 @@
         //  temporary shortage of connectivity of a connected network.
         mCellNetworkAgent.suspend();
         waitForIdle();
-        snapshots = mCm.getAllNetworkStateSnapshot();
+        snapshots = mCm.getAllNetworkStateSnapshots();
         assertLength(1, snapshots);
         assertEquals(wifiSnapshot, snapshots.get(0));
 
         // Disconnect wifi, verify the snapshots contain nothing.
         mWiFiNetworkAgent.disconnect();
         waitForIdle();
-        snapshots = mCm.getAllNetworkStateSnapshot();
+        snapshots = mCm.getAllNetworkStateSnapshots();
         assertEquals(mCellNetworkAgent.getNetwork(), mCm.getActiveNetwork());
         assertLength(0, snapshots);
 
         mCellNetworkAgent.resume();
         waitForIdle();
-        snapshots = mCm.getAllNetworkStateSnapshot();
+        snapshots = mCm.getAllNetworkStateSnapshots();
         assertLength(1, snapshots);
         assertEquals(cellSnapshot, snapshots.get(0));
 
@@ -12602,12 +12589,12 @@
     public void testSubIdsClearedWithoutNetworkFactoryPermission() throws Exception {
         mServiceContext.setPermission(NETWORK_FACTORY, PERMISSION_DENIED);
         final NetworkCapabilities nc = new NetworkCapabilities();
-        nc.setSubIds(Collections.singleton(Process.myUid()));
+        nc.setSubscriptionIds(Collections.singleton(Process.myUid()));
 
         final NetworkCapabilities result =
                 mService.networkCapabilitiesRestrictedForCallerPermissions(
                         nc, Process.myPid(), Process.myUid());
-        assertTrue(result.getSubIds().isEmpty());
+        assertTrue(result.getSubscriptionIds().isEmpty());
     }
 
     @Test
@@ -12616,17 +12603,17 @@
 
         final Set<Integer> subIds = Collections.singleton(Process.myUid());
         final NetworkCapabilities nc = new NetworkCapabilities();
-        nc.setSubIds(subIds);
+        nc.setSubscriptionIds(subIds);
 
         final NetworkCapabilities result =
                 mService.networkCapabilitiesRestrictedForCallerPermissions(
                         nc, Process.myPid(), Process.myUid());
-        assertEquals(subIds, result.getSubIds());
+        assertEquals(subIds, result.getSubscriptionIds());
     }
 
     private NetworkRequest getRequestWithSubIds() {
         return new NetworkRequest.Builder()
-                .setSubIds(Collections.singleton(Process.myUid()))
+                .setSubscriptionIds(Collections.singleton(Process.myUid()))
                 .build();
     }
 
diff --git a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
index eeeb4fb..0ab4d2b 100644
--- a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
+++ b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
@@ -67,6 +67,7 @@
 import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
@@ -88,8 +89,8 @@
 import android.net.NetworkStats;
 import android.net.NetworkStatsHistory;
 import android.net.NetworkTemplate;
-import android.net.UnderlyingNetworkInfo;
 import android.net.TelephonyNetworkSpecifier;
+import android.net.UnderlyingNetworkInfo;
 import android.net.netstats.provider.INetworkStatsProviderCallback;
 import android.os.ConditionVariable;
 import android.os.Handler;
@@ -165,9 +166,9 @@
 
     private long mElapsedRealtime;
 
-    private BroadcastInterceptingContext mServiceContext;
     private File mStatsDir;
-
+    private MockContext mServiceContext;
+    private @Mock TelephonyManager mTelephonyManager;
     private @Mock INetworkManagementService mNetManager;
     private @Mock NetworkStatsFactory mStatsFactory;
     private @Mock NetworkStatsSettings mSettings;
@@ -183,19 +184,32 @@
     private ContentObserver mContentObserver;
     private Handler mHandler;
 
+    private class MockContext extends BroadcastInterceptingContext {
+        private final Context mBaseContext;
+
+        MockContext(Context base) {
+            super(base);
+            mBaseContext = base;
+        }
+
+        @Override
+        public Object getSystemService(String name) {
+            if (Context.TELEPHONY_SERVICE.equals(name)) return mTelephonyManager;
+            return mBaseContext.getSystemService(name);
+        }
+    }
+
     private final Clock mClock = new SimpleClock(ZoneOffset.UTC) {
         @Override
         public long millis() {
             return currentTimeMillis();
         }
     };
-
     @Before
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
         final Context context = InstrumentationRegistry.getContext();
-
-        mServiceContext = new BroadcastInterceptingContext(context);
+        mServiceContext = new MockContext(context);
         mStatsDir = context.getFilesDir();
         if (mStatsDir.exists()) {
             IoUtils.deleteContents(mStatsDir);
@@ -217,7 +231,6 @@
         expectDefaultSettings();
         expectNetworkStatsUidDetail(buildEmptyStats());
         expectSystemReady();
-
         mService.systemReady();
         // Verify that system ready fetches realtime stats
         verify(mStatsFactory).readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL);
@@ -228,6 +241,9 @@
         verify(mNetworkStatsSubscriptionsMonitor).start();
         reset(mNetworkStatsSubscriptionsMonitor);
 
+        doReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS).when(mTelephonyManager)
+                .checkCarrierPrivilegesForPackageAnyPhone(anyString());
+
         mSession = mService.openSession();
         assertNotNull("openSession() failed", mSession);
 
diff --git a/tests/vcn/java/android/net/vcn/VcnControlPlaneIkeConfigTest.java b/tests/vcn/java/android/net/vcn/VcnControlPlaneIkeConfigTest.java
index 2333718..43b80e4 100644
--- a/tests/vcn/java/android/net/vcn/VcnControlPlaneIkeConfigTest.java
+++ b/tests/vcn/java/android/net/vcn/VcnControlPlaneIkeConfigTest.java
@@ -22,12 +22,7 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
 
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.Network;
 import android.net.ipsec.ike.ChildSaProposal;
 import android.net.ipsec.ike.IkeFqdnIdentification;
 import android.net.ipsec.ike.IkeSaProposal;
@@ -56,20 +51,13 @@
                         .addPseudorandomFunction(PSEUDORANDOM_FUNCTION_AES128_XCBC)
                         .build();
 
-        Context mockContext = mock(Context.class);
-        ConnectivityManager mockConnectManager = mock(ConnectivityManager.class);
-        doReturn(mockConnectManager)
-                .when(mockContext)
-                .getSystemService(Context.CONNECTIVITY_SERVICE);
-        doReturn(mock(Network.class)).when(mockConnectManager).getActiveNetwork();
-
         final String serverHostname = "192.0.2.100";
         final String testLocalId = "test.client.com";
         final String testRemoteId = "test.server.com";
         final byte[] psk = "psk".getBytes();
 
         IKE_PARAMS =
-                new IkeSessionParams.Builder(mockContext)
+                new IkeSessionParams.Builder()
                         .setServerHostname(serverHostname)
                         .addSaProposal(ikeProposal)
                         .setLocalIdentification(new IkeFqdnIdentification(testLocalId))
diff --git a/tests/vcn/java/com/android/server/VcnManagementServiceTest.java b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java
index 9a66343..907cb46 100644
--- a/tests/vcn/java/com/android/server/VcnManagementServiceTest.java
+++ b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java
@@ -696,7 +696,7 @@
                         .addCapability(NET_CAPABILITY_NOT_VCN_MANAGED)
                         .addTransportType(transport);
         if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
-            ncBuilder.setSubIds(Collections.singleton(subId));
+            ncBuilder.setSubscriptionIds(Collections.singleton(subId));
         }
 
         return ncBuilder;
diff --git a/tests/vcn/java/com/android/server/vcn/UnderlyingNetworkTrackerTest.java b/tests/vcn/java/com/android/server/vcn/UnderlyingNetworkTrackerTest.java
index 0c7363e..8289e85 100644
--- a/tests/vcn/java/com/android/server/vcn/UnderlyingNetworkTrackerTest.java
+++ b/tests/vcn/java/com/android/server/vcn/UnderlyingNetworkTrackerTest.java
@@ -189,7 +189,7 @@
     private NetworkRequest getWifiRequest(Set<Integer> netCapsSubIds) {
         return getExpectedRequestBase()
                 .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
-                .setSubIds(netCapsSubIds)
+                .setSubscriptionIds(netCapsSubIds)
                 .build();
     }
 
@@ -201,7 +201,7 @@
     }
 
     private NetworkRequest getRouteSelectionRequest(Set<Integer> netCapsSubIds) {
-        return getExpectedRequestBase().setSubIds(netCapsSubIds).build();
+        return getExpectedRequestBase().setSubscriptionIds(netCapsSubIds).build();
     }
 
     private NetworkRequest.Builder getExpectedRequestBase() {
diff --git a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectingStateTest.java b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectingStateTest.java
index bfe8c73..acc8bf9 100644
--- a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectingStateTest.java
+++ b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectingStateTest.java
@@ -58,8 +58,7 @@
                 ArgumentCaptor.forClass(IkeSessionParams.class);
         verify(mDeps).newIkeSession(any(), paramsCaptor.capture(), any(), any(), any());
         assertEquals(
-                TEST_UNDERLYING_NETWORK_RECORD_1.network,
-                paramsCaptor.getValue().getConfiguredNetwork());
+                TEST_UNDERLYING_NETWORK_RECORD_1.network, paramsCaptor.getValue().getNetwork());
     }
 
     @Test
diff --git a/tools/fonts/fontchain_linter.py b/tools/fonts/fontchain_linter.py
index f0b7595..1d308df 100755
--- a/tools/fonts/fontchain_linter.py
+++ b/tools/fonts/fontchain_linter.py
@@ -4,6 +4,7 @@
 import copy
 import glob
 from os import path
+import re
 import sys
 from xml.etree import ElementTree
 
@@ -199,8 +200,9 @@
 
 
 class FontRecord(object):
-    def __init__(self, name, scripts, variant, weight, style, fallback_for, font):
+    def __init__(self, name, psName, scripts, variant, weight, style, fallback_for, font):
         self.name = name
+        self.psName = psName
         self.scripts = scripts
         self.variant = variant
         self.weight = weight
@@ -236,6 +238,7 @@
             assert variant in {None, 'elegant', 'compact'}, (
                 'Unexpected value for variant: %s' % variant)
 
+    trim_re = re.compile(r"^[ \n\r\t]*(.+)[ \n\r\t]*$")
     for family in families:
         name = family.get('name')
         variant = family.get('variant')
@@ -251,6 +254,10 @@
             assert child.tag == 'font', (
                 'Unknown tag <%s>' % child.tag)
             font_file = child.text.rstrip()
+
+            m = trim_re.match(font_file)
+            font_file = m.group(1)
+
             weight = int(child.get('weight'))
             assert weight % 100 == 0, (
                 'Font weight "%d" is not a multiple of 100.' % weight)
@@ -270,11 +277,12 @@
             if index:
                 index = int(index)
 
-            if not path.exists(path.join(_fonts_dir, font_file)):
+            if not path.exists(path.join(_fonts_dir, m.group(1))):
                 continue # Missing font is a valid case. Just ignore the missing font files.
 
             record = FontRecord(
                 name,
+                child.get('postScriptName'),
                 frozenset(scripts),
                 variant,
                 weight,
@@ -664,6 +672,37 @@
                 break
             assert_font_supports_none_of_chars(record.font, cjk_punctuation, name)
 
+def getPostScriptName(font):
+  font_file, index = font
+  font_path = path.join(_fonts_dir, font_file)
+  if index is not None:
+      # Use the first font file in the collection for resolving post script name.
+      ttf = ttLib.TTFont(font_path, fontNumber=0)
+  else:
+      ttf = ttLib.TTFont(font_path)
+
+  nameTable = ttf['name']
+  for name in nameTable.names:
+      if (name.nameID == 6 and name.platformID == 3 and name.platEncID == 1
+          and name.langID == 0x0409):
+          return str(name)
+
+def check_canonical_name():
+    for record in _all_fonts:
+        file_name, index = record.font
+
+        psName = getPostScriptName(record.font)
+        if record.psName:
+            # If fonts element has postScriptName attribute, it should match with the PostScript
+            # name in the name table.
+            assert psName == record.psName, ('postScriptName attribute %s should match with %s' % (
+                record.psName, psName))
+        else:
+            # If fonts element doesn't have postScriptName attribute, the file name should match
+            # with the PostScript name in the name table.
+            assert psName == file_name[:-4], ('file name %s should match with %s' % (
+                file_name, psName))
+
 
 def main():
     global _fonts_dir
@@ -682,6 +721,8 @@
 
     check_cjk_punctuation()
 
+    check_canonical_name()
+
     check_emoji = sys.argv[2]
     if check_emoji == 'true':
         ucd_path = sys.argv[3]
diff --git a/tools/hiddenapi/checksorted_sha.sh b/tools/hiddenapi/checksorted_sha.sh
deleted file mode 100755
index 72fb867..0000000
--- a/tools/hiddenapi/checksorted_sha.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-set -e
-LOCAL_DIR="$( dirname ${BASH_SOURCE} )"
-git show --name-only --pretty=format: $1 | grep "hiddenapi/hiddenapi-.*txt" | while read file; do
-    diff <(git show $1:$file) <(git show $1:$file | $LOCAL_DIR/sort_api.sh )  || {
-      echo -e "\e[1m\e[31m$file $1 is not sorted or contains duplicates. To sort it correctly:\e[0m"
-      echo -e "\e[33m${LOCAL_DIR}/sort_api.sh $PWD/$file\e[0m"
-      exit 1
-    }
-done
diff --git a/tools/hiddenapi/sort_api.sh b/tools/hiddenapi/sort_api.sh
deleted file mode 100755
index 710da40..0000000
--- a/tools/hiddenapi/sort_api.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-set -e
-if [ -z "$1" ]; then
-  source_list=/dev/stdin
-  dest_list=/dev/stdout
-else
-  source_list="$1"
-  dest_list="$1"
-fi
-# Load the file
-readarray A < "$source_list"
-# Sort
-IFS=$'\n'
-# Stash away comments
-C=( $(grep -E '^#' <<< "${A[*]}" || :) )
-A=( $(grep -v -E '^#' <<< "${A[*]}" || :) )
-# Sort entries
-A=( $(LC_COLLATE=C sort -f <<< "${A[*]}") )
-A=( $(uniq <<< "${A[*]}") )
-# Concatenate comments and entries
-A=( ${C[*]} ${A[*]} )
-unset IFS
-# Dump array back into the file
-if [ ${#A[@]} -ne 0 ]; then
-  printf '%s\n' "${A[@]}" > "$dest_list"
-fi
diff --git a/wifi/java/src/android/net/wifi/nl80211/WifiNl80211Manager.java b/wifi/java/src/android/net/wifi/nl80211/WifiNl80211Manager.java
index da0571ba..3b75660 100644
--- a/wifi/java/src/android/net/wifi/nl80211/WifiNl80211Manager.java
+++ b/wifi/java/src/android/net/wifi/nl80211/WifiNl80211Manager.java
@@ -117,13 +117,13 @@
     /**
      * Interface used to listen country code event
      */
-    public interface CountryCodeChangeListener {
+    public interface CountryCodeChangedListener {
         /**
          * Called when country code changed.
          *
-         * @param countryCode A new country code which is 2-Character alphanumeric.
+         * @param countryCode An ISO-3166-alpha2 country code which is 2-Character alphanumeric.
          */
-        void onChanged(@NonNull String countryCode);
+        void onCountryCodeChanged(@NonNull String countryCode);
     }
 
     /**
@@ -163,27 +163,27 @@
     /** @hide */
     @VisibleForTesting
     public class WificondEventHandler extends IWificondEventCallback.Stub {
-        private Map<CountryCodeChangeListener, Executor> mCountryCodeChangeListenerHolder =
+        private Map<CountryCodeChangedListener, Executor> mCountryCodeChangedListenerHolder =
                 new HashMap<>();
 
         /**
-         * Register CountryCodeChangeListener with pid.
+         * Register CountryCodeChangedListener with pid.
          *
          * @param executor The Executor on which to execute the callbacks.
          * @param listener listener for country code changed events.
          */
-        public void registerCountryCodeChangeListener(Executor executor,
-                CountryCodeChangeListener listener) {
-            mCountryCodeChangeListenerHolder.put(listener, executor);
+        public void registerCountryCodeChangedListener(Executor executor,
+                CountryCodeChangedListener listener) {
+            mCountryCodeChangedListenerHolder.put(listener, executor);
         }
 
         /**
-         * Unregister CountryCodeChangeListener with pid.
+         * Unregister CountryCodeChangedListener with pid.
          *
          * @param listener listener which registered country code changed events.
          */
-        public void unregisterCountryCodeChangeListener(CountryCodeChangeListener listener) {
-            mCountryCodeChangeListenerHolder.remove(listener);
+        public void unregisterCountryCodeChangedListener(CountryCodeChangedListener listener) {
+            mCountryCodeChangedListenerHolder.remove(listener);
         }
 
         @Override
@@ -191,8 +191,8 @@
             Log.d(TAG, "OnRegDomainChanged " + countryCode);
             final long token = Binder.clearCallingIdentity();
             try {
-                mCountryCodeChangeListenerHolder.forEach((listener, executor) -> {
-                    executor.execute(() -> listener.onChanged(countryCode));
+                mCountryCodeChangedListenerHolder.forEach((listener, executor) -> {
+                    executor.execute(() -> listener.onCountryCodeChanged(countryCode));
                 });
             } finally {
                 Binder.restoreCallingIdentity(token);
@@ -1240,25 +1240,25 @@
      * @param listener listener for country code changed events.
      * @return true on success, false on failure.
      */
-    public boolean registerCountryCodeChangeListener(@NonNull @CallbackExecutor Executor executor,
-            @NonNull CountryCodeChangeListener listener) {
+    public boolean registerCountryCodeChangedListener(@NonNull @CallbackExecutor Executor executor,
+            @NonNull CountryCodeChangedListener listener) {
         if (!retrieveWificondAndRegisterForDeath()) {
             return false;
         }
         Log.d(TAG, "registerCountryCodeEventListener called");
-        mWificondEventHandler.registerCountryCodeChangeListener(executor, listener);
+        mWificondEventHandler.registerCountryCodeChangedListener(executor, listener);
         return true;
     }
 
 
     /**
-     * Unregister CountryCodeChangeListener with pid.
+     * Unregister CountryCodeChangedListener with pid.
      *
      * @param listener listener which registered country code changed events.
      */
-    public void unregisterCountryCodeChangeListener(@NonNull CountryCodeChangeListener listener) {
+    public void unregisterCountryCodeChangedListener(@NonNull CountryCodeChangedListener listener) {
         Log.d(TAG, "unregisterCountryCodeEventListener called");
-        mWificondEventHandler.unregisterCountryCodeChangeListener(listener);
+        mWificondEventHandler.unregisterCountryCodeChangedListener(listener);
     }
 
     /**
diff --git a/wifi/tests/src/android/net/wifi/nl80211/WifiNl80211ManagerTest.java b/wifi/tests/src/android/net/wifi/nl80211/WifiNl80211ManagerTest.java
index 98a0042..3fb2301 100644
--- a/wifi/tests/src/android/net/wifi/nl80211/WifiNl80211ManagerTest.java
+++ b/wifi/tests/src/android/net/wifi/nl80211/WifiNl80211ManagerTest.java
@@ -98,9 +98,9 @@
     @Mock
     private WifiNl80211Manager.PnoScanRequestCallback mPnoScanRequestCallback;
     @Mock
-    private WifiNl80211Manager.CountryCodeChangeListener mCountryCodeChangeListener;
+    private WifiNl80211Manager.CountryCodeChangedListener mCountryCodeChangedListener;
     @Mock
-    private WifiNl80211Manager.CountryCodeChangeListener mCountryCodeChangeListener2;
+    private WifiNl80211Manager.CountryCodeChangedListener mCountryCodeChangedListener2;
     @Mock
     private Context mContext;
     private TestLooper mLooper;
@@ -768,25 +768,25 @@
     }
 
     /**
-     * Ensures callback works after register CountryCodeChangeListener.
+     * Ensures callback works after register CountryCodeChangedListener.
      */
     @Test
-    public void testCountryCodeChangeListenerInvocation() throws Exception {
-        assertTrue(mWificondControl.registerCountryCodeChangeListener(
-                Runnable::run, mCountryCodeChangeListener));
-        assertTrue(mWificondControl.registerCountryCodeChangeListener(
-                Runnable::run, mCountryCodeChangeListener2));
+    public void testCountryCodeChangedListenerInvocation() throws Exception {
+        assertTrue(mWificondControl.registerCountryCodeChangedListener(
+                Runnable::run, mCountryCodeChangedListener));
+        assertTrue(mWificondControl.registerCountryCodeChangedListener(
+                Runnable::run, mCountryCodeChangedListener2));
 
         mWificondEventHandler.OnRegDomainChanged(TEST_COUNTRY_CODE);
-        verify(mCountryCodeChangeListener).onChanged(TEST_COUNTRY_CODE);
-        verify(mCountryCodeChangeListener2).onChanged(TEST_COUNTRY_CODE);
+        verify(mCountryCodeChangedListener).onCountryCodeChanged(TEST_COUNTRY_CODE);
+        verify(mCountryCodeChangedListener2).onCountryCodeChanged(TEST_COUNTRY_CODE);
 
-        reset(mCountryCodeChangeListener);
-        reset(mCountryCodeChangeListener2);
-        mWificondControl.unregisterCountryCodeChangeListener(mCountryCodeChangeListener2);
+        reset(mCountryCodeChangedListener);
+        reset(mCountryCodeChangedListener2);
+        mWificondControl.unregisterCountryCodeChangedListener(mCountryCodeChangedListener2);
         mWificondEventHandler.OnRegDomainChanged(TEST_COUNTRY_CODE);
-        verify(mCountryCodeChangeListener).onChanged(TEST_COUNTRY_CODE);
-        verify(mCountryCodeChangeListener2, never()).onChanged(TEST_COUNTRY_CODE);
+        verify(mCountryCodeChangedListener).onCountryCodeChanged(TEST_COUNTRY_CODE);
+        verify(mCountryCodeChangedListener2, never()).onCountryCodeChanged(TEST_COUNTRY_CODE);
     }
 
     /**