Merge "Fixes AlertDialog dismiss actions with long text" into androidx-main
diff --git a/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/CreateCall.kt b/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/CreateCall.kt
index 5b1fdc6..a58ae85 100644
--- a/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/CreateCall.kt
+++ b/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/CreateCall.kt
@@ -20,8 +20,8 @@
 import androidx.appactions.builtintypes.experimental.types.Call
 import androidx.appactions.builtintypes.experimental.types.GenericErrorStatus
 import androidx.appactions.builtintypes.experimental.types.SuccessStatus
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.CapabilityFactory
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.EntityConverter
@@ -38,21 +38,31 @@
 
 private const val CAPABILITY_NAME: String = "actions.intent.CREATE_CALL"
 
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(CreateCall.Properties::class.java)
         .setArguments(CreateCall.Arguments::class.java, CreateCall.Arguments::Builder)
         .setOutput(CreateCall.Output::class.java)
         .bindOptionalParameter(
             "call.callFormat",
-            { property -> Optional.ofNullable(property.callFormat) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[CreateCall.PropertyMapStrings.CALL_FORMAT.key]
+                        as Property<Call.CanonicalValue.CallFormat>
+                )
+            },
             CreateCall.Arguments.Builder::setCallFormat,
             TypeConverters.CALL_FORMAT_PARAM_VALUE_CONVERTER,
             TypeConverters.CALL_FORMAT_ENTITY_CONVERTER
         )
         .bindRepeatedParameter(
             "call.participant",
-            { property -> Optional.ofNullable(property.participant) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[CreateCall.PropertyMapStrings.PARTICIPANT.key]
+                        as Property<Participant>
+                )
+            },
             CreateCall.Arguments.Builder::setParticipantList,
             ParticipantValue.PARAM_VALUE_CONVERTER,
             EntityConverter.of(PARTICIPANT_TYPE_SPEC)
@@ -71,57 +81,26 @@
 
 @CapabilityFactory(name = CAPABILITY_NAME)
 class CreateCall private constructor() {
-    class CapabilityBuilder :
-        Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession
-            >(ACTION_SPEC) {
-        override fun build(): Capability {
-            super.setProperty(Properties.Builder().build())
-            // TODO(b/268369632): No-op remove empty property builder after Property is removed.
-            super.setProperty(Properties.Builder().build())
-            return super.build()
-        }
+    internal enum class PropertyMapStrings(val key: String) {
+        CALL_FORMAT("call.callFormat"),
+        PARTICIPANT("call.participant"),
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties
-    internal constructor(
-        val callFormat: Property<Call.CanonicalValue.CallFormat>?,
-        val participant: Property<Participant>?
-    ) {
-        override fun toString(): String {
-            return "Property(callFormat=$callFormat, participant=$participant)"
-        }
+    class CapabilityBuilder :
+        Capability.Builder<
+            CapabilityBuilder, Arguments, Output, Confirmation, ExecutionSession
+            >(ACTION_SPEC) {
 
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass != other?.javaClass) return false
+        private var properties = mutableMapOf<String, Property<*>>()
 
-            other as Properties
+        fun setCallFormat(callFormat: Property<Call.CanonicalValue.CallFormat>): CapabilityBuilder =
+            apply {
+                properties[PropertyMapStrings.CALL_FORMAT.key] = callFormat
+            }
 
-            if (callFormat != other.callFormat) return false
-            if (participant != other.participant) return false
-
-            return true
-        }
-
-        override fun hashCode(): Int {
-            var result = callFormat.hashCode()
-            result = 31 * result + participant.hashCode()
-            return result
-        }
-
-        class Builder {
-            private var callFormat: Property<Call.CanonicalValue.CallFormat>? = null
-
-            private var participant: Property<Participant>? = null
-
-            fun setCallFormat(callFormat: Property<Call.CanonicalValue.CallFormat>): Builder =
-                apply {
-                    this.callFormat = callFormat
-                }
-
-            fun build(): Properties = Properties(callFormat, participant)
+        override fun build(): Capability {
+            super.setProperty(properties)
+            return super.build()
         }
     }
 
diff --git a/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/CreateMessage.kt b/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/CreateMessage.kt
index d2b8b20..806e5ac 100644
--- a/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/CreateMessage.kt
+++ b/appactions/interaction/interaction-capabilities-communication/src/main/java/androidx/appactions/interaction/capabilities/communication/CreateMessage.kt
@@ -18,11 +18,10 @@
 
 import androidx.appactions.builtintypes.experimental.properties.Recipient
 import androidx.appactions.builtintypes.experimental.types.GenericErrorStatus
-import androidx.appactions.builtintypes.experimental.types.SuccessStatus
 import androidx.appactions.builtintypes.experimental.types.Message
-
-import androidx.appactions.interaction.capabilities.core.Capability
+import androidx.appactions.builtintypes.experimental.types.SuccessStatus
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.CapabilityFactory
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.EntityConverter
@@ -31,8 +30,8 @@
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters.MESSAGE_TYPE_SPEC
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters.RECIPIENT_TYPE_SPEC
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
-import androidx.appactions.interaction.capabilities.core.properties.StringValue
 import androidx.appactions.interaction.capabilities.core.properties.Property
+import androidx.appactions.interaction.capabilities.core.properties.StringValue
 import androidx.appactions.interaction.proto.ParamValue
 import androidx.appactions.interaction.protobuf.Struct
 import androidx.appactions.interaction.protobuf.Value
@@ -40,21 +39,31 @@
 
 private const val CAPABILITY_NAME: String = "actions.intent.CREATE_MESSAGE"
 
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(CreateMessage.Properties::class.java)
         .setArguments(CreateMessage.Arguments::class.java, CreateMessage.Arguments::Builder)
         .setOutput(CreateMessage.Output::class.java)
         .bindRepeatedParameter(
             "message.recipient",
-            { property -> Optional.ofNullable(property.recipient) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[CreateMessage.PropertyMapStrings.RECIPIENT.key]
+                        as Property<Recipient>
+                )
+            },
             CreateMessage.Arguments.Builder::setRecipientList,
             RecipientValue.PARAM_VALUE_CONVERTER,
             EntityConverter.of(RECIPIENT_TYPE_SPEC)
         )
         .bindOptionalParameter(
             "message.text",
-            { property -> Optional.ofNullable(property.messageText) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[CreateMessage.PropertyMapStrings.MESSAGE_TEXT.key]
+                        as Property<StringValue>
+                )
+            },
             CreateMessage.Arguments.Builder::setMessageText,
             TypeConverters.STRING_PARAM_VALUE_CONVERTER,
             TypeConverters.STRING_VALUE_ENTITY_CONVERTER
@@ -73,59 +82,29 @@
 
 @CapabilityFactory(name = CAPABILITY_NAME)
 class CreateMessage private constructor() {
-    class CapabilityBuilder :
-        Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession
-            >(ACTION_SPEC) {
-        override fun build(): Capability {
-            super.setProperty(Properties.Builder().build())
-            // TODO(b/268369632): No-op remove empty property builder after Property is removed.
-            super.setProperty(Properties.Builder().build())
-            return super.build()
-        }
+    internal enum class PropertyMapStrings(val key: String) {
+        MESSAGE_TEXT("message.text"),
+        RECIPIENT("message.recipient"),
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties
-    internal constructor(
-        val recipient: Property<Recipient>?,
-        val messageText: Property<StringValue>?
-    ) {
-        override fun toString(): String {
-            return "Property(recipient=$recipient, messageText=$messageText)"
+    class CapabilityBuilder :
+        Capability.Builder<
+            CapabilityBuilder, Arguments, Output, Confirmation, ExecutionSession
+            >(ACTION_SPEC) {
+
+        private var properties = mutableMapOf<String, Property<*>>()
+
+        fun setMessageText(messageText: Property<StringValue>): CapabilityBuilder = apply {
+            properties[PropertyMapStrings.MESSAGE_TEXT.key] = messageText
         }
 
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass != other?.javaClass) return false
-
-            other as Properties
-
-            if (recipient != other.recipient) return false
-            if (messageText != other.messageText) return false
-
-            return true
+        fun setRecipient(recipient: Property<Recipient>): CapabilityBuilder = apply {
+            properties[PropertyMapStrings.RECIPIENT.key] = recipient
         }
 
-        override fun hashCode(): Int {
-            var result = recipient.hashCode()
-            result = 31 * result + messageText.hashCode()
-            return result
-        }
-
-        class Builder {
-            private var recipient: Property<Recipient>? = null
-            private var messageText: Property<StringValue>? = null
-
-            fun setRecipient(recipient: Property<Recipient>): Builder = apply {
-                this.recipient = recipient
-            }
-
-            fun setMessageText(messageText: Property<StringValue>): Builder = apply {
-                this.messageText = messageText
-            }
-
-            fun build(): Properties = Properties(recipient, messageText)
+        override fun build(): Capability {
+            super.setProperty(properties)
+            return super.build()
         }
     }
 
diff --git a/appactions/interaction/interaction-capabilities-core/api/current.txt b/appactions/interaction/interaction-capabilities-core/api/current.txt
index 7622cc1..b2e08cf 100644
--- a/appactions/interaction/interaction-capabilities-core/api/current.txt
+++ b/appactions/interaction/interaction-capabilities-core/api/current.txt
@@ -13,7 +13,7 @@
     property public String id;
   }
 
-  public abstract static class Capability.Builder<BuilderT extends androidx.appactions.interaction.capabilities.core.Capability.Builder<BuilderT, PropertyT, ArgumentsT, OutputT, ConfirmationT, ExecutionSessionT>, PropertyT, ArgumentsT, OutputT, ConfirmationT, ExecutionSessionT extends androidx.appactions.interaction.capabilities.core.BaseExecutionSession<ArgumentsT, OutputT>> {
+  public abstract static class Capability.Builder<BuilderT extends androidx.appactions.interaction.capabilities.core.Capability.Builder<BuilderT, ArgumentsT, OutputT, ConfirmationT, ExecutionSessionT>, ArgumentsT, OutputT, ConfirmationT, ExecutionSessionT extends androidx.appactions.interaction.capabilities.core.BaseExecutionSession<ArgumentsT, OutputT>> {
     method public final BuilderT asBuilder();
     method public androidx.appactions.interaction.capabilities.core.Capability build();
     method public final BuilderT setExecutionCallback(androidx.appactions.interaction.capabilities.core.ExecutionCallback<ArgumentsT,OutputT> executionCallback);
diff --git a/appactions/interaction/interaction-capabilities-core/api/public_plus_experimental_current.txt b/appactions/interaction/interaction-capabilities-core/api/public_plus_experimental_current.txt
index 7622cc1..b2e08cf 100644
--- a/appactions/interaction/interaction-capabilities-core/api/public_plus_experimental_current.txt
+++ b/appactions/interaction/interaction-capabilities-core/api/public_plus_experimental_current.txt
@@ -13,7 +13,7 @@
     property public String id;
   }
 
-  public abstract static class Capability.Builder<BuilderT extends androidx.appactions.interaction.capabilities.core.Capability.Builder<BuilderT, PropertyT, ArgumentsT, OutputT, ConfirmationT, ExecutionSessionT>, PropertyT, ArgumentsT, OutputT, ConfirmationT, ExecutionSessionT extends androidx.appactions.interaction.capabilities.core.BaseExecutionSession<ArgumentsT, OutputT>> {
+  public abstract static class Capability.Builder<BuilderT extends androidx.appactions.interaction.capabilities.core.Capability.Builder<BuilderT, ArgumentsT, OutputT, ConfirmationT, ExecutionSessionT>, ArgumentsT, OutputT, ConfirmationT, ExecutionSessionT extends androidx.appactions.interaction.capabilities.core.BaseExecutionSession<ArgumentsT, OutputT>> {
     method public final BuilderT asBuilder();
     method public androidx.appactions.interaction.capabilities.core.Capability build();
     method public final BuilderT setExecutionCallback(androidx.appactions.interaction.capabilities.core.ExecutionCallback<ArgumentsT,OutputT> executionCallback);
diff --git a/appactions/interaction/interaction-capabilities-core/api/restricted_current.txt b/appactions/interaction/interaction-capabilities-core/api/restricted_current.txt
index 7622cc1..b2e08cf 100644
--- a/appactions/interaction/interaction-capabilities-core/api/restricted_current.txt
+++ b/appactions/interaction/interaction-capabilities-core/api/restricted_current.txt
@@ -13,7 +13,7 @@
     property public String id;
   }
 
-  public abstract static class Capability.Builder<BuilderT extends androidx.appactions.interaction.capabilities.core.Capability.Builder<BuilderT, PropertyT, ArgumentsT, OutputT, ConfirmationT, ExecutionSessionT>, PropertyT, ArgumentsT, OutputT, ConfirmationT, ExecutionSessionT extends androidx.appactions.interaction.capabilities.core.BaseExecutionSession<ArgumentsT, OutputT>> {
+  public abstract static class Capability.Builder<BuilderT extends androidx.appactions.interaction.capabilities.core.Capability.Builder<BuilderT, ArgumentsT, OutputT, ConfirmationT, ExecutionSessionT>, ArgumentsT, OutputT, ConfirmationT, ExecutionSessionT extends androidx.appactions.interaction.capabilities.core.BaseExecutionSession<ArgumentsT, OutputT>> {
     method public final BuilderT asBuilder();
     method public androidx.appactions.interaction.capabilities.core.Capability build();
     method public final BuilderT setExecutionCallback(androidx.appactions.interaction.capabilities.core.ExecutionCallback<ArgumentsT,OutputT> executionCallback);
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/Capability.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/Capability.kt
index a043cd2..6fc55f2 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/Capability.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/Capability.kt
@@ -20,9 +20,10 @@
 import androidx.appactions.interaction.capabilities.core.impl.CapabilitySession
 import androidx.appactions.interaction.capabilities.core.impl.SingleTurnCapabilityImpl
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpec
+import androidx.appactions.interaction.capabilities.core.impl.task.EmptyTaskUpdater
 import androidx.appactions.interaction.capabilities.core.impl.task.SessionBridge
 import androidx.appactions.interaction.capabilities.core.impl.task.TaskCapabilityImpl
-import androidx.appactions.interaction.capabilities.core.impl.task.EmptyTaskUpdater
+import androidx.appactions.interaction.capabilities.core.properties.Property
 import androidx.appactions.interaction.proto.AppActionsContext.AppAction
 
 /**
@@ -61,27 +62,25 @@
         BuilderT :
         Builder<
             BuilderT,
-            PropertyT,
             ArgumentsT,
             OutputT,
             ConfirmationT,
             ExecutionSessionT
             >,
-        PropertyT,
         ArgumentsT,
         OutputT,
         ConfirmationT,
         ExecutionSessionT : BaseExecutionSession<ArgumentsT, OutputT>
         > private constructor() {
         private var id: String? = null
-        private var property: PropertyT? = null
+        private var property: Map<String, Property<*>>? = null
         private var executionCallback: ExecutionCallback<ArgumentsT, OutputT>? = null
         private var sessionFactory:
-                    (hostProperties: HostProperties?) -> ExecutionSessionT? = { _ -> null }
-        private var actionSpec: ActionSpec<PropertyT, ArgumentsT, OutputT>? = null
+                (hostProperties: HostProperties?) -> ExecutionSessionT? = { _ -> null }
+        private var actionSpec: ActionSpec<ArgumentsT, OutputT>? = null
 
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-        constructor(actionSpec: ActionSpec<PropertyT, ArgumentsT, OutputT>) : this() {
+        constructor(actionSpec: ActionSpec<ArgumentsT, OutputT>) : this() {
             this.actionSpec = actionSpec
         }
 
@@ -111,7 +110,7 @@
          * Sets the Property instance for this capability.
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-        fun setProperty(property: PropertyT) = asBuilder().apply {
+        fun setProperty(property: Map<String, Property<*>>) = asBuilder().apply {
             this.property = property
         }
 
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/ErrorStatusInternal.java b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/ErrorStatusInternal.java
index 17b9eeb..d983859 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/ErrorStatusInternal.java
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/ErrorStatusInternal.java
@@ -23,13 +23,16 @@
 public enum ErrorStatusInternal {
     CANCELLED(0),
     TIMEOUT(1),
-    INVALID_REQUEST_TYPE(2),
+    INVALID_REQUEST(2),
     UNCHANGED_DISAMBIG_STATE(3),
     INVALID_RESOLVER(4),
     STRUCT_CONVERSION_FAILURE(5),
+    // TODO(b/276354491): remove SYNC / CONFIRM / TOUCH_EVENT failure codes
     SYNC_REQUEST_FAILURE(6),
     CONFIRMATION_REQUEST_FAILURE(7),
-    TOUCH_EVENT_REQUEST_FAILURE(8);
+    TOUCH_EVENT_REQUEST_FAILURE(8),
+    EXTERNAL_EXCEPTION(9),
+    SESSION_ALREADY_DESTROYED(10);
 
     private final int mCode;
 
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilityImpl.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilityImpl.kt
index 050d370..2a9393e 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilityImpl.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilityImpl.kt
@@ -17,10 +17,11 @@
 package androidx.appactions.interaction.capabilities.core.impl
 
 import androidx.annotation.RestrictTo
-import androidx.appactions.interaction.capabilities.core.ExecutionCallback
 import androidx.appactions.interaction.capabilities.core.Capability
+import androidx.appactions.interaction.capabilities.core.ExecutionCallback
 import androidx.appactions.interaction.capabilities.core.HostProperties
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpec
+import androidx.appactions.interaction.capabilities.core.properties.Property
 import androidx.appactions.interaction.proto.AppActionsContext.AppAction
 import androidx.appactions.interaction.proto.TaskInfo
 import kotlinx.coroutines.sync.Mutex
@@ -28,13 +29,12 @@
 /** @suppress */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 internal class SingleTurnCapabilityImpl<
-    PropertyT,
     ArgumentsT,
     OutputT,
     > constructor(
     id: String,
-    val actionSpec: ActionSpec<PropertyT, ArgumentsT, OutputT>,
-    val property: PropertyT,
+    val actionSpec: ActionSpec<ArgumentsT, OutputT>,
+    val property: Map<String, Property<*>>,
     val executionCallback: ExecutionCallback<ArgumentsT, OutputT>,
 ) : Capability(id) {
     private val mutex = Mutex()
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilitySession.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilitySession.kt
index 0f1bccb..32f3753 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilitySession.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilitySession.kt
@@ -21,6 +21,9 @@
 import androidx.appactions.interaction.capabilities.core.ExecutionResult
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpec
 import androidx.appactions.interaction.capabilities.core.impl.utils.invokeExternalSuspendBlock
+import androidx.appactions.interaction.capabilities.core.impl.utils.isCausedBy
+import androidx.appactions.interaction.capabilities.core.impl.utils.toErrorStatusInternal
+import androidx.appactions.interaction.capabilities.core.impl.exceptions.InvalidRequestException
 import androidx.appactions.interaction.proto.AppActionsContext.AppDialogState
 import androidx.appactions.interaction.proto.FulfillmentResponse
 import androidx.appactions.interaction.proto.ParamValue
@@ -42,7 +45,7 @@
     OutputT,
     >(
     override val sessionId: String,
-    private val actionSpec: ActionSpec<*, ArgumentsT, OutputT>,
+    private val actionSpec: ActionSpec<ArgumentsT, OutputT>,
     private val executionCallback: ExecutionCallback<ArgumentsT, OutputT>,
     private val mutex: Mutex,
     private val scope: CoroutineScope = CoroutineScope(Dispatchers.Default),
@@ -81,8 +84,11 @@
                 }
                 callback.onSuccess(convertToFulfillmentResponse(output))
             } catch (t: Throwable) {
-                // TODO(b/276354491) add fine-grained error handling
-                callback.onError(ErrorStatusInternal.CANCELLED)
+                callback.onError(t.toErrorStatusInternal())
+                // if the exception is caused by a bad request, do not crash the app
+                if (!t.isCausedBy(InvalidRequestException::class)) {
+                    throw t
+                }
             } finally {
                 UiHandleRegistry.unregisterUiHandle(uiHandle)
                 mutex.unlock(owner = this@SingleTurnCapabilitySession)
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/exceptions/StructConversionException.java b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/exceptions/InvalidRequestException.kt
similarity index 61%
copy from appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/exceptions/StructConversionException.java
copy to appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/exceptions/InvalidRequestException.kt
index be13634..b060fc8 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/exceptions/StructConversionException.java
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/exceptions/InvalidRequestException.kt
@@ -14,17 +14,10 @@
  * limitations under the License.
  */
 
-package androidx.appactions.interaction.capabilities.core.impl.exceptions;
+package androidx.appactions.interaction.capabilities.core.impl.exceptions
 
-import androidx.annotation.Nullable;
-
-/** Represents exceptions that happen during object conversion to/from Struct proto. */
-public class StructConversionException extends Exception {
-    public StructConversionException(@Nullable String message) {
-        super(message);
-    }
-
-    public StructConversionException(@Nullable String message, @Nullable Throwable cause) {
-        super(message, cause);
-    }
+/** Represents exceptions that happen as a result of some incoming request that is invalid. */
+sealed class InvalidRequestException : Exception {
+    constructor(message: String?) : super(message)
+    constructor(message: String?, cause: Throwable?) : super(message, cause)
 }
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/exceptions/StructConversionException.java b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/exceptions/StructConversionException.kt
similarity index 69%
rename from appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/exceptions/StructConversionException.java
rename to appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/exceptions/StructConversionException.kt
index be13634..450c533 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/exceptions/StructConversionException.java
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/exceptions/StructConversionException.kt
@@ -14,17 +14,10 @@
  * limitations under the License.
  */
 
-package androidx.appactions.interaction.capabilities.core.impl.exceptions;
-
-import androidx.annotation.Nullable;
+package androidx.appactions.interaction.capabilities.core.impl.exceptions
 
 /** Represents exceptions that happen during object conversion to/from Struct proto. */
-public class StructConversionException extends Exception {
-    public StructConversionException(@Nullable String message) {
-        super(message);
-    }
-
-    public StructConversionException(@Nullable String message, @Nullable Throwable cause) {
-        super(message, cause);
-    }
+class StructConversionException : InvalidRequestException {
+    constructor(message: String?) : super(message)
+    constructor(message: String?, cause: Throwable?) : super(message, cause)
 }
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpec.java b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpec.java
index e17f14c..eb8d0ad 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpec.java
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpec.java
@@ -18,6 +18,7 @@
 
 import androidx.annotation.NonNull;
 import androidx.appactions.interaction.capabilities.core.impl.exceptions.StructConversionException;
+import androidx.appactions.interaction.capabilities.core.properties.Property;
 import androidx.appactions.interaction.proto.AppActionsContext.AppAction;
 import androidx.appactions.interaction.proto.FulfillmentResponse.StructuredOutput;
 import androidx.appactions.interaction.proto.ParamValue;
@@ -28,15 +29,15 @@
 /**
  * A specification for an action, describing it from the app's point of view.
  *
- * @param <PropertyT> typed description of action's characteristics.
  * @param <ArgumentsT> typed representation of action's arguments.
- * @param <OutputT>   typed action's execution output.
+ * @param <OutputT>    typed action's execution output.
  */
-public interface ActionSpec<PropertyT, ArgumentsT, OutputT> {
+public interface ActionSpec<ArgumentsT, OutputT> {
 
     /** Converts the property to the {@code AppAction} proto. */
     @NonNull
-    AppAction convertPropertyToProto(PropertyT property);
+    AppAction convertPropertyToProto(@NonNull Map<String,
+            Property<?>> property);
 
     /** Builds this action's arguments from an ArgumentsWrapper instance. */
     @NonNull
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpecBuilder.java b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpecBuilder.java
index e95f904..df268de 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpecBuilder.java
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpecBuilder.java
@@ -40,18 +40,13 @@
 
 /**
  * A builder for the {@code ActionSpec}.
- *
- * @param <PropertyT>
- * @param <ArgumentsT>
- * @param <ArgumentsBuilderT>
- * @param <OutputT>
  */
-public final class ActionSpecBuilder<
-        PropertyT, ArgumentsT, ArgumentsBuilderT extends BuilderOf<ArgumentsT>, OutputT> {
+public final class ActionSpecBuilder<ArgumentsT, ArgumentsBuilderT extends BuilderOf<ArgumentsT>,
+        OutputT> {
 
     private final String mCapabilityName;
     private final Supplier<ArgumentsBuilderT> mArgumentBuilderSupplier;
-    private final ArrayList<ParamBinding<PropertyT, ArgumentsT, ArgumentsBuilderT>>
+    private final ArrayList<ParamBinding<ArgumentsT, ArgumentsBuilderT>>
             mParamBindingList = new ArrayList<>();
     private final Map<String, Function<OutputT, List<ParamValue>>> mOutputBindings =
             new HashMap<>();
@@ -67,49 +62,44 @@
      * to Object as a placeholder, which must be replaced by calling setArgument.
      */
     @NonNull
-    public static ActionSpecBuilder<Void, Object, BuilderOf<Object>, Void> ofCapabilityNamed(
+    public static ActionSpecBuilder<Object, BuilderOf<Object>, Void> ofCapabilityNamed(
             @NonNull String capabilityName) {
         return new ActionSpecBuilder<>(capabilityName, () -> Object::new);
     }
 
     /** Sets the property type and returns a new {@code ActionSpecBuilder}. */
-    @NonNull
-    public <NewPropertyT>
-            ActionSpecBuilder<NewPropertyT, ArgumentsT, ArgumentsBuilderT, OutputT> setDescriptor(
-                    @NonNull Class<NewPropertyT> unused) {
-        return new ActionSpecBuilder<>(this.mCapabilityName, this.mArgumentBuilderSupplier);
-    }
 
     /** Sets the argument type and its builder and returns a new {@code ActionSpecBuilder}. */
     @NonNull
     public <NewArgumentsT, NewArgumentsBuilderT extends BuilderOf<NewArgumentsT>>
-            ActionSpecBuilder<PropertyT, NewArgumentsT, NewArgumentsBuilderT, OutputT> setArguments(
-                    @NonNull Class<NewArgumentsT> unused,
-                    @NonNull Supplier<NewArgumentsBuilderT> argumentBuilderSupplier) {
+    ActionSpecBuilder<NewArgumentsT, NewArgumentsBuilderT, OutputT> setArguments(
+            @NonNull Class<NewArgumentsT> unused,
+            @NonNull Supplier<NewArgumentsBuilderT> argumentBuilderSupplier) {
         return new ActionSpecBuilder<>(this.mCapabilityName, argumentBuilderSupplier);
     }
 
     @NonNull
     public <NewOutputT>
-            ActionSpecBuilder<PropertyT, ArgumentsT, ArgumentsBuilderT, NewOutputT> setOutput(
-                    @NonNull Class<NewOutputT> unused) {
+    ActionSpecBuilder<ArgumentsT, ArgumentsBuilderT, NewOutputT> setOutput(
+            @NonNull Class<NewOutputT> unused) {
         return new ActionSpecBuilder<>(this.mCapabilityName, this.mArgumentBuilderSupplier);
     }
 
     /**
      * Binds the parameter name, getter and setter.
      *
-     * @param paramName the name of this action' parameter.
-     * @param paramGetter a getter of the param-specific info from the property.
+     * @param paramName      the name of this action' parameter.
+     * @param paramGetter    a getter of the param-specific info from the property.
      * @param argumentSetter a setter to the argument with the input from {@code ParamValue}.
      * @return the builder itself.
      */
     @NonNull
-    private ActionSpecBuilder<PropertyT, ArgumentsT, ArgumentsBuilderT, OutputT>
-            bindParameterInternal(
-                    @NonNull String paramName,
-                    @NonNull Function<? super PropertyT, Optional<IntentParameter>> paramGetter,
-                    @NonNull ArgumentSetter<ArgumentsBuilderT> argumentSetter) {
+    private ActionSpecBuilder<ArgumentsT, ArgumentsBuilderT, OutputT>
+    bindParameterInternal(
+            @NonNull String paramName,
+            @NonNull Function<Map<String, Property<?>>,
+                    Optional<IntentParameter>> paramGetter,
+            @NonNull ArgumentSetter<ArgumentsBuilderT> argumentSetter) {
         mParamBindingList.add(ParamBinding.create(paramName, paramGetter, argumentSetter));
         return this;
     }
@@ -129,14 +119,15 @@
      */
     @NonNull
     public <T, PossibleValueT>
-            ActionSpecBuilder<PropertyT, ArgumentsT, ArgumentsBuilderT, OutputT> bindParameter(
-                    @NonNull String paramName,
-                    @NonNull
-                            Function<? super PropertyT, Property<PossibleValueT>>
-                                    propertyGetter,
-                    @NonNull BiConsumer<? super ArgumentsBuilderT, T> paramConsumer,
-                    @NonNull ParamValueConverter<T> paramValueConverter,
-                    @NonNull EntityConverter<PossibleValueT> entityConverter) {
+    ActionSpecBuilder<ArgumentsT, ArgumentsBuilderT, OutputT> bindParameter(
+            @NonNull String paramName,
+            @NonNull
+            Function<Map<String, Property<?>>,
+                    Property<PossibleValueT>>
+                    propertyGetter,
+            @NonNull BiConsumer<? super ArgumentsBuilderT, T> paramConsumer,
+            @NonNull ParamValueConverter<T> paramValueConverter,
+            @NonNull EntityConverter<PossibleValueT> entityConverter) {
         return bindOptionalParameter(
                 paramName,
                 property -> Optional.of(propertyGetter.apply(property)),
@@ -163,17 +154,17 @@
      */
     @NonNull
     public <T, PossibleValueT>
-            ActionSpecBuilder<PropertyT, ArgumentsT, ArgumentsBuilderT, OutputT>
-                    bindOptionalParameter(
-                            @NonNull String paramName,
-                            @NonNull
-                                    Function<
-                                                    ? super PropertyT,
-                                                    Optional<Property<PossibleValueT>>>
-                                            optionalPropertyGetter,
-                            @NonNull BiConsumer<? super ArgumentsBuilderT, T> paramConsumer,
-                            @NonNull ParamValueConverter<T> paramValueConverter,
-                            @NonNull EntityConverter<PossibleValueT> entityConverter) {
+    ActionSpecBuilder<ArgumentsT, ArgumentsBuilderT, OutputT>
+    bindOptionalParameter(
+            @NonNull String paramName,
+            @NonNull
+            Function<
+                    Map<String, Property<?>>,
+                    Optional<Property<PossibleValueT>>>
+                    optionalPropertyGetter,
+            @NonNull BiConsumer<? super ArgumentsBuilderT, T> paramConsumer,
+            @NonNull ParamValueConverter<T> paramValueConverter,
+            @NonNull EntityConverter<PossibleValueT> entityConverter) {
         return bindParameterInternal(
                 paramName,
                 property ->
@@ -200,17 +191,17 @@
      */
     @NonNull
     public <T, PossibleValueT>
-            ActionSpecBuilder<PropertyT, ArgumentsT, ArgumentsBuilderT, OutputT>
-                    bindRepeatedParameter(
-                            @NonNull String paramName,
-                            @NonNull
-                                    Function<
-                                                    ? super PropertyT,
-                                                    Optional<Property<PossibleValueT>>>
-                                            optionalPropertyGetter,
-                            @NonNull BiConsumer<? super ArgumentsBuilderT, List<T>> paramConsumer,
-                            @NonNull ParamValueConverter<T> paramValueConverter,
-                            @NonNull EntityConverter<PossibleValueT> entityConverter) {
+    ActionSpecBuilder<ArgumentsT, ArgumentsBuilderT, OutputT>
+    bindRepeatedParameter(
+            @NonNull String paramName,
+            @NonNull
+            Function<
+                    Map<String, Property<?>>,
+                    Optional<Property<PossibleValueT>>>
+                    optionalPropertyGetter,
+            @NonNull BiConsumer<? super ArgumentsBuilderT, List<T>> paramConsumer,
+            @NonNull ParamValueConverter<T> paramValueConverter,
+            @NonNull EntityConverter<PossibleValueT> entityConverter) {
         return bindParameterInternal(
                 paramName,
                 property ->
@@ -227,17 +218,17 @@
     /**
      * Binds an optional output.
      *
-     * @param name the BII output slot name of this parameter.
+     * @param name         the BII output slot name of this parameter.
      * @param outputGetter a getter of the output from the {@code OutputT} instance.
-     * @param converter a converter from an output object to a ParamValue.
+     * @param converter    a converter from an output object to a ParamValue.
      */
     @NonNull
     @SuppressWarnings("JdkCollectors")
     public <T>
-            ActionSpecBuilder<PropertyT, ArgumentsT, ArgumentsBuilderT, OutputT> bindOptionalOutput(
-                    @NonNull String name,
-                    @NonNull Function<OutputT, Optional<T>> outputGetter,
-                    @NonNull Function<T, ParamValue> converter) {
+    ActionSpecBuilder<ArgumentsT, ArgumentsBuilderT, OutputT> bindOptionalOutput(
+            @NonNull String name,
+            @NonNull Function<OutputT, Optional<T>> outputGetter,
+            @NonNull Function<T, ParamValue> converter) {
         mOutputBindings.put(
                 name,
                 output -> {
@@ -254,17 +245,17 @@
     /**
      * Binds a repeated output.
      *
-     * @param name the BII output slot name of this parameter.
+     * @param name         the BII output slot name of this parameter.
      * @param outputGetter a getter of the output from the {@code OutputT} instance.
-     * @param converter a converter from an output object to a ParamValue.
+     * @param converter    a converter from an output object to a ParamValue.
      */
     @NonNull
     @SuppressWarnings("JdkCollectors")
     public <T>
-            ActionSpecBuilder<PropertyT, ArgumentsT, ArgumentsBuilderT, OutputT> bindRepeatedOutput(
-                    @NonNull String name,
-                    @NonNull Function<OutputT, List<T>> outputGetter,
-                    @NonNull Function<T, ParamValue> converter) {
+    ActionSpecBuilder<ArgumentsT, ArgumentsBuilderT, OutputT> bindRepeatedOutput(
+            @NonNull String name,
+            @NonNull Function<OutputT, List<T>> outputGetter,
+            @NonNull Function<T, ParamValue> converter) {
         mOutputBindings.put(
                 name,
                 output ->
@@ -276,7 +267,7 @@
 
     /** Builds an {@code ActionSpec} from this builder. */
     @NonNull
-    public ActionSpec<PropertyT, ArgumentsT, OutputT> build() {
+    public ActionSpec<ArgumentsT, OutputT> build() {
         return new ActionSpecImpl<>(
                 mCapabilityName,
                 mArgumentBuilderSupplier,
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpecImpl.java b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpecImpl.java
index 47f0a1a..8dfdb19 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpecImpl.java
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpecImpl.java
@@ -21,6 +21,7 @@
 import androidx.annotation.NonNull;
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf;
 import androidx.appactions.interaction.capabilities.core.impl.exceptions.StructConversionException;
+import androidx.appactions.interaction.capabilities.core.properties.Property;
 import androidx.appactions.interaction.proto.AppActionsContext.AppAction;
 import androidx.appactions.interaction.proto.FulfillmentResponse.StructuredOutput;
 import androidx.appactions.interaction.proto.ParamValue;
@@ -33,18 +34,18 @@
 
 /** The implementation of {@code ActionSpec} interface. */
 final class ActionSpecImpl<
-                PropertyT, ArgumentsT, ArgumentsBuilderT extends BuilderOf<ArgumentsT>, OutputT>
-        implements ActionSpec<PropertyT, ArgumentsT, OutputT> {
+        ArgumentsT, ArgumentsBuilderT extends BuilderOf<ArgumentsT>, OutputT>
+        implements ActionSpec<ArgumentsT, OutputT> {
 
     private final String mCapabilityName;
     private final Supplier<ArgumentsBuilderT> mArgumentBuilderSupplier;
-    private final List<ParamBinding<PropertyT, ArgumentsT, ArgumentsBuilderT>> mParamBindingList;
+    private final List<ParamBinding<ArgumentsT, ArgumentsBuilderT>> mParamBindingList;
     private final Map<String, Function<OutputT, List<ParamValue>>> mOutputBindings;
 
     ActionSpecImpl(
             String capabilityName,
             Supplier<ArgumentsBuilderT> argumentBuilderSupplier,
-            List<ParamBinding<PropertyT, ArgumentsT, ArgumentsBuilderT>> paramBindingList,
+            List<ParamBinding<ArgumentsT, ArgumentsBuilderT>> paramBindingList,
             Map<String, Function<OutputT, List<ParamValue>>> outputBindings) {
         this.mCapabilityName = capabilityName;
         this.mArgumentBuilderSupplier = argumentBuilderSupplier;
@@ -54,7 +55,7 @@
 
     @NonNull
     @Override
-    public AppAction convertPropertyToProto(PropertyT property) {
+    public AppAction convertPropertyToProto(@NonNull Map<String, Property<?>> property) {
         return AppAction.newBuilder()
                 .setName(mCapabilityName)
                 .addAllParams(
@@ -71,7 +72,7 @@
     public ArgumentsT buildArguments(@NonNull Map<String, List<ParamValue>> args)
             throws StructConversionException {
         ArgumentsBuilderT argumentBuilder = mArgumentBuilderSupplier.get();
-        for (ParamBinding<PropertyT, ArgumentsT, ArgumentsBuilderT> binding : mParamBindingList) {
+        for (ParamBinding<ArgumentsT, ArgumentsBuilderT> binding : mParamBindingList) {
             List<ParamValue> paramValues = args.get(binding.name());
             if (paramValues == null) {
                 continue;
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ParamBinding.java b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ParamBinding.java
index f21f6f2..87ce323 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ParamBinding.java
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/spec/ParamBinding.java
@@ -19,31 +19,30 @@
 import androidx.annotation.NonNull;
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf;
 import androidx.appactions.interaction.capabilities.core.impl.exceptions.StructConversionException;
+import androidx.appactions.interaction.capabilities.core.properties.Property;
 import androidx.appactions.interaction.proto.AppActionsContext.IntentParameter;
 import androidx.appactions.interaction.proto.ParamValue;
 
 import com.google.auto.value.AutoValue;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.function.Function;
 
 /**
  * A binding between a parameter and its Property converter / Argument setter.
- *
- * @param <PropertyT>
- * @param <ArgumentsT>
- * @param <ArgumentsBuilderT>
  */
 @AutoValue
 public abstract class ParamBinding<
-        PropertyT, ArgumentsT, ArgumentsBuilderT extends BuilderOf<ArgumentsT>> {
+        ArgumentsT, ArgumentsBuilderT extends BuilderOf<ArgumentsT>> {
 
-    static <PropertyT, ArgumentsT, ArgumentsBuilderT extends BuilderOf<ArgumentsT>>
-            ParamBinding<PropertyT, ArgumentsT, ArgumentsBuilderT> create(
-                    String name,
-                    Function<? super PropertyT, Optional<IntentParameter>> paramGetter,
-                    ArgumentSetter<ArgumentsBuilderT> argumentSetter) {
+    static <ArgumentsT, ArgumentsBuilderT extends BuilderOf<ArgumentsT>>
+    ParamBinding<ArgumentsT, ArgumentsBuilderT> create(
+            String name,
+            Function<Map<String, Property<?>>,
+                    Optional<IntentParameter>> paramGetter,
+            ArgumentSetter<ArgumentsBuilderT> argumentSetter) {
         return new AutoValue_ParamBinding<>(name, paramGetter, argumentSetter);
     }
 
@@ -52,11 +51,13 @@
     public abstract String name();
 
     /**
-     * Converts a {@code PropertyT} to an {@code IntentParameter} proto. The resulting proto is the
+     * Converts a {@code Property Map} to an {@code IntentParameter} proto. The resulting proto is
+     * the
      * format which we send the current params to Assistant (via. app actions context).
      */
     @NonNull
-    public abstract Function<? super PropertyT, Optional<IntentParameter>> paramGetter();
+    public abstract Function<Map<String, Property<?>>,
+            Optional<IntentParameter>> paramGetter();
 
     /**
      * Populates the {@code ArgumentsBuilderT} for this param with the {@code ParamValue} sent from
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskCapabilityImpl.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskCapabilityImpl.kt
index 3f90e23..fc9eeaf 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskCapabilityImpl.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskCapabilityImpl.kt
@@ -21,6 +21,7 @@
 import androidx.appactions.interaction.capabilities.core.HostProperties
 import androidx.appactions.interaction.capabilities.core.impl.CapabilitySession
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpec
+import androidx.appactions.interaction.capabilities.core.properties.Property
 import androidx.appactions.interaction.proto.AppActionsContext.AppAction
 import androidx.appactions.interaction.proto.TaskInfo
 import java.util.function.Supplier
@@ -34,7 +35,6 @@
  * @param sessionUpdaterSupplier a Supplier of SessionUpdaterT instances
  */
 internal class TaskCapabilityImpl<
-    PropertyT,
     ArgumentsT,
     OutputT,
     ExecutionSessionT : BaseExecutionSession<ArgumentsT, OutputT>,
@@ -43,8 +43,8 @@
     >
 constructor(
     id: String,
-    private val actionSpec: ActionSpec<PropertyT, ArgumentsT, OutputT>,
-    private val property: PropertyT,
+    private val actionSpec: ActionSpec<ArgumentsT, OutputT>,
+    private val property: Map<String, Property<*>>,
     private val sessionFactory: (hostProperties: HostProperties?) -> ExecutionSessionT?,
     private val sessionBridge: SessionBridge<ExecutionSessionT, ConfirmationT>,
     private val sessionUpdaterSupplier: Supplier<SessionUpdaterT>
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskCapabilitySession.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskCapabilitySession.kt
index 168ab619..1f577f5 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskCapabilitySession.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskCapabilitySession.kt
@@ -39,7 +39,7 @@
     ConfirmationT,
 >(
     override val sessionId: String,
-    actionSpec: ActionSpec<*, ArgumentsT, OutputT>,
+    actionSpec: ActionSpec<ArgumentsT, OutputT>,
     appAction: AppAction,
     taskHandler: TaskHandler<ConfirmationT>,
     externalSession: BaseExecutionSession<ArgumentsT, OutputT>,
@@ -51,7 +51,6 @@
     // single-turn capability does not have status
     override val isActive: Boolean
         get() = when (sessionOrchestrator.status) {
-            TaskOrchestrator.Status.COMPLETED,
             TaskOrchestrator.Status.DESTROYED -> false
             else -> true
         }
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskOrchestrator.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskOrchestrator.kt
index 5e3aaf5..5b51ac3 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskOrchestrator.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/task/TaskOrchestrator.kt
@@ -58,7 +58,7 @@
  */
 internal class TaskOrchestrator<ArgumentsT, OutputT, ConfirmationT>(
     private val sessionId: String,
-    private val actionSpec: ActionSpec<*, ArgumentsT, OutputT>,
+    private val actionSpec: ActionSpec<ArgumentsT, OutputT>,
     private val appAction: AppActionsContext.AppAction,
     private val taskHandler: TaskHandler<ConfirmationT>,
     private val externalSession: BaseExecutionSession<ArgumentsT, OutputT>,
@@ -68,7 +68,6 @@
     internal enum class Status {
         UNINITIATED,
         IN_PROGRESS,
-        COMPLETED,
         DESTROYED,
     }
     /**
@@ -147,7 +146,14 @@
             inProgress = true
         }
         try {
-            if (updateRequest.assistantRequest != null) {
+            if (status == Status.DESTROYED) {
+                if (updateRequest.assistantRequest != null) {
+                    FulfillmentResult(ErrorStatusInternal.SESSION_ALREADY_DESTROYED)
+                        .applyToCallback(updateRequest.assistantRequest.callbackInternal)
+                } else if (updateRequest.touchEventRequest != null && touchEventCallback != null) {
+                    touchEventCallback!!.onError(ErrorStatusInternal.SESSION_ALREADY_DESTROYED)
+                }
+            } else if (updateRequest.assistantRequest != null) {
                 processAssistantUpdateRequest(updateRequest.assistantRequest)
             } else if (updateRequest.touchEventRequest != null) {
                 processTouchEventUpdateRequest(updateRequest.touchEventRequest)
@@ -177,22 +183,22 @@
         val callback = assistantUpdateRequest.callbackInternal
         val fulfillmentResult: FulfillmentResult
         if (argumentsWrapper.requestMetadata == null) {
-            fulfillmentResult = FulfillmentResult(ErrorStatusInternal.INVALID_REQUEST_TYPE)
+            fulfillmentResult = FulfillmentResult(ErrorStatusInternal.INVALID_REQUEST)
         } else {
             fulfillmentResult = when (argumentsWrapper.requestMetadata.requestType()) {
                 FulfillmentRequest.Fulfillment.Type.UNRECOGNIZED,
                 FulfillmentRequest.Fulfillment.Type.UNKNOWN_TYPE,
                 ->
-                    FulfillmentResult(ErrorStatusInternal.INVALID_REQUEST_TYPE)
+                    FulfillmentResult(ErrorStatusInternal.INVALID_REQUEST)
 
                 FulfillmentRequest.Fulfillment.Type.SYNC -> handleSync(argumentsWrapper)
                 FulfillmentRequest.Fulfillment.Type.CONFIRM -> handleConfirm()
-                FulfillmentRequest.Fulfillment.Type.CANCEL,
-                FulfillmentRequest.Fulfillment.Type.TERMINATE,
+                FulfillmentRequest.Fulfillment.Type.CANCEL
                 -> {
                     terminate()
                     FulfillmentResult(FulfillmentResponse.getDefaultInstance())
                 }
+                else -> FulfillmentResult(ErrorStatusInternal.INVALID_REQUEST)
             }
         }
         fulfillmentResult.applyToCallback(callback)
@@ -254,7 +260,6 @@
         }
     }
 
-    // TODO: add cleanup logic if any
     internal fun terminate() {
         externalSession.onDestroy()
         status = Status.DESTROYED
@@ -471,7 +476,7 @@
         val result = invokeExternalSuspendBlock("onExecute") {
             externalSession.onExecute(actionSpec.buildArguments(finalArguments))
         }
-        status = Status.COMPLETED
+        terminate()
         val fulfillmentResponse =
             FulfillmentResponse.newBuilder().setStartDictation(result.shouldStartDictation)
         convertToExecutionOutput(result)?.let { fulfillmentResponse.executionOutput = it }
diff --git a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/utils/CallbackUtils.kt b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/utils/CallbackUtils.kt
index 8cc223d..1811abd 100644
--- a/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/utils/CallbackUtils.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/main/java/androidx/appactions/interaction/capabilities/core/impl/utils/CallbackUtils.kt
@@ -16,11 +16,15 @@
 
 package androidx.appactions.interaction.capabilities.core.impl.utils
 
+import androidx.appactions.interaction.capabilities.core.impl.ErrorStatusInternal
 import androidx.appactions.interaction.capabilities.core.impl.exceptions.ExternalException
+import androidx.appactions.interaction.capabilities.core.impl.exceptions.StructConversionException
+import androidx.appactions.interaction.capabilities.core.impl.exceptions.InvalidRequestException
+import kotlin.reflect.KClass
 
 /** invoke an externally implemented method, wrapping any exceptions with ExternalException.
  */
-fun <T> invokeExternalBlock(description: String, block: () -> T): T {
+internal fun <T> invokeExternalBlock(description: String, block: () -> T): T {
     try {
         return block()
     } catch (t: Throwable) {
@@ -31,10 +35,36 @@
 /** invoke an externally implemented suspend method, wrapping any exceptions with
  * ExternalException.
  */
-suspend fun <T> invokeExternalSuspendBlock(description: String, block: suspend () -> T): T {
+internal suspend fun <T> invokeExternalSuspendBlock(
+    description: String,
+    block: suspend () -> T
+): T {
     try {
         return block()
     } catch (t: Throwable) {
         throw ExternalException("exception occurred during '$description'", t)
     }
+}
+
+/** Determines whether or not this exception is caused by some type, directly or indirectly. */
+internal fun <T : Throwable> Throwable.isCausedBy(clazz: KClass<T>): Boolean {
+    if (clazz.isInstance(this)) {
+        return true
+    }
+    return this.cause?.isCausedBy(clazz) == true
+}
+
+internal fun Throwable.toErrorStatusInternal(): ErrorStatusInternal {
+    return when {
+        this.isCausedBy(
+            ExternalException::class
+        ) -> ErrorStatusInternal.EXTERNAL_EXCEPTION
+        this.isCausedBy(
+            StructConversionException::class
+        ) -> ErrorStatusInternal.STRUCT_CONVERSION_FAILURE
+        this.isCausedBy(
+            InvalidRequestException::class
+        ) -> ErrorStatusInternal.INVALID_REQUEST
+        else -> ErrorStatusInternal.CANCELLED
+    }
 }
\ No newline at end of file
diff --git a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilityTest.kt b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilityTest.kt
index 108565d..a1513d9 100644
--- a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilityTest.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/SingleTurnCapabilityTest.kt
@@ -19,7 +19,6 @@
 import android.util.SizeF
 import androidx.appactions.interaction.capabilities.core.ExecutionCallback
 import androidx.appactions.interaction.capabilities.core.ExecutionCallbackAsync
-import androidx.appactions.interaction.capabilities.core.toExecutionCallback
 import androidx.appactions.interaction.capabilities.core.ExecutionResult
 import androidx.appactions.interaction.capabilities.core.HostProperties
 import androidx.appactions.interaction.capabilities.core.impl.concurrent.Futures
@@ -28,13 +27,13 @@
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
 import androidx.appactions.interaction.capabilities.core.properties.Property
 import androidx.appactions.interaction.capabilities.core.properties.StringValue
-import androidx.appactions.interaction.capabilities.testing.internal.ArgumentUtils
-import androidx.appactions.interaction.capabilities.testing.internal.FakeCallbackInternal
-import androidx.appactions.interaction.capabilities.testing.internal.TestingUtils.CB_TIMEOUT
-import androidx.appactions.interaction.capabilities.testing.internal.TestingUtils.BLOCKING_TIMEOUT
 import androidx.appactions.interaction.capabilities.core.testing.spec.Arguments
 import androidx.appactions.interaction.capabilities.core.testing.spec.Output
-import androidx.appactions.interaction.capabilities.core.testing.spec.Properties
+import androidx.appactions.interaction.capabilities.core.toExecutionCallback
+import androidx.appactions.interaction.capabilities.testing.internal.ArgumentUtils
+import androidx.appactions.interaction.capabilities.testing.internal.FakeCallbackInternal
+import androidx.appactions.interaction.capabilities.testing.internal.TestingUtils.BLOCKING_TIMEOUT
+import androidx.appactions.interaction.capabilities.testing.internal.TestingUtils.CB_TIMEOUT
 import androidx.appactions.interaction.proto.AppActionsContext.AppAction
 import androidx.appactions.interaction.proto.AppActionsContext.IntentParameter
 import androidx.appactions.interaction.proto.FulfillmentResponse
@@ -43,6 +42,7 @@
 import androidx.appactions.interaction.proto.ParamValue
 import androidx.appactions.interaction.proto.TaskInfo
 import com.google.common.truth.Truth.assertThat
+import java.util.Optional
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.withTimeoutOrNull
@@ -51,6 +51,7 @@
 import org.junit.runners.JUnit4
 
 @RunWith(JUnit4::class)
+@Suppress("UNCHECKED_CAST")
 class SingleTurnCapabilityTest {
     private val hostProperties =
         HostProperties.Builder().setMaxHostSizeDp(SizeF(300f, 500f)).build()
@@ -62,13 +63,13 @@
         val capability = SingleTurnCapabilityImpl(
             id = "capabilityId",
             actionSpec = ACTION_SPEC,
-            property = Properties.newBuilder()
-                .setRequiredStringField(
-                    Property.Builder<StringValue>().setPossibleValueSupplier(
+            property = mutableMapOf(
+                "requiredEntity" to Property
+                    .Builder<StringValue>()
+                    .setPossibleValueSupplier(
                         mutableEntityList::toList
                     ).build()
-                )
-                .build(),
+            ),
             executionCallback = ExecutionCallback<Arguments, Output> {
                 ExecutionResult.Builder<Output>().build()
             }
@@ -126,17 +127,17 @@
                     )
                     .build()
             }
+        val property = mutableMapOf<String, Property<*>>()
+        property.put(
+            "requiredString",
+            Property.Builder<StringValue>().build()
+        )
+        property.put("optionalString", Property.prohibited<StringValue>())
         val capability =
             SingleTurnCapabilityImpl(
                 id = "capabilityId",
                 actionSpec = ACTION_SPEC,
-                property =
-                Properties.newBuilder()
-                    .setRequiredStringField(
-                        Property.Builder<StringValue>().build()
-                    )
-                    .setOptionalStringField(Property.prohibited())
-                    .build(),
+                property = property,
                 executionCallback = executionCallback
             )
 
@@ -181,20 +182,20 @@
     }
 
     @Test
-    fun oneShotCapability_failure() {
+    fun oneShotCapability_exceptionInExecutionCallback() {
         val executionCallback =
             ExecutionCallback<Arguments, Output> { throw IllegalStateException("") }
+        val property = mutableMapOf<String, Property<*>>()
+        property.put(
+            "requiredString",
+            Property.Builder<StringValue>().build()
+        )
+        property.put("optionalString", Property.prohibited<StringValue>())
         val capability =
             SingleTurnCapabilityImpl(
                 id = "capabilityId",
                 actionSpec = ACTION_SPEC,
-                property =
-                Properties.newBuilder()
-                    .setRequiredStringField(
-                        Property.Builder<StringValue>().build()
-                    )
-                    .setOptionalStringField(Property.prohibited())
-                    .build(),
+                property = property,
                 executionCallback = executionCallback
             )
 
@@ -212,23 +213,23 @@
 
         val response = callbackInternal.receiveResponse()
         assertThat(response.errorStatus).isNotNull()
-        assertThat(response.errorStatus).isEqualTo(ErrorStatusInternal.CANCELLED)
+        assertThat(response.errorStatus).isEqualTo(ErrorStatusInternal.EXTERNAL_EXCEPTION)
     }
 
     @Test
     fun oneShotSession_uiHandle_withExecutionCallback() {
         val executionCallback =
             ExecutionCallback<Arguments, Output> { ExecutionResult.Builder<Output>().build() }
+        val property = mutableMapOf<String, Property<*>>()
+        property.put(
+            "requiredString",
+            Property.Builder<StringValue>().build()
+        )
         val capability =
             SingleTurnCapabilityImpl(
                 id = "capabilityId",
                 actionSpec = ACTION_SPEC,
-                property =
-                Properties.newBuilder()
-                    .setRequiredStringField(
-                        Property.Builder<StringValue>().build()
-                    )
-                    .build(),
+                property = property,
                 executionCallback = executionCallback
             )
         val session = capability.createSession(fakeSessionId, hostProperties)
@@ -241,16 +242,16 @@
             ExecutionCallbackAsync<Arguments, Output> {
                 Futures.immediateFuture(ExecutionResult.Builder<Output>().build())
             }
+        val property = mutableMapOf<String, Property<*>>()
+        property.put(
+            "requiredString",
+            Property.Builder<StringValue>().build()
+        )
         val capability =
             SingleTurnCapabilityImpl(
                 id = "capabilityId",
                 actionSpec = ACTION_SPEC,
-                property =
-                Properties.newBuilder()
-                    .setRequiredStringField(
-                        Property.Builder<StringValue>().build()
-                    )
-                    .build(),
+                property = property,
                 executionCallback = executionCallbackAsync.toExecutionCallback()
             )
         val session = capability.createSession(fakeSessionId, hostProperties)
@@ -266,12 +267,15 @@
             argumentChannel.send(it)
             executionResultChannel.receive()
         }
+        val property = mutableMapOf<String, Property<*>>()
+        property.put(
+            "requiredString",
+            Property.Builder<StringValue>().build()
+        )
         val capability = SingleTurnCapabilityImpl(
             id = "capabilityId",
             actionSpec = ACTION_SPEC,
-            property = Properties.newBuilder().setRequiredStringField(
-                Property.Builder<StringValue>().build()
-            ).build(),
+            property = property,
             executionCallback = executionCallback
         )
         val session1 = capability.createSession("session1", hostProperties)
@@ -322,23 +326,27 @@
     }
 
     companion object {
-        val ACTION_SPEC: ActionSpec<Properties, Arguments, Output> =
+        val ACTION_SPEC: ActionSpec<Arguments, Output> =
             ActionSpecBuilder.ofCapabilityNamed(
                 "actions.intent.TEST"
             )
-                .setDescriptor(Properties::class.java)
                 .setArguments(Arguments::class.java, Arguments::newBuilder)
                 .setOutput(Output::class.java)
                 .bindParameter(
                     "requiredString",
-                    Properties::requiredStringField,
+                    { properties -> properties["requiredEntity"] as Property<StringValue>? },
                     Arguments.Builder::setRequiredStringField,
                     TypeConverters.STRING_PARAM_VALUE_CONVERTER,
                     TypeConverters.STRING_VALUE_ENTITY_CONVERTER
                 )
                 .bindOptionalParameter(
                     "optionalString",
-                    Properties::optionalStringField,
+                    { properties ->
+                        properties["optionalString"]
+                            ?.let { it as Property<StringValue> }
+                            ?.let { Optional.of(it) }
+                            ?: Optional.ofNullable(null)
+                    },
                     Arguments.Builder::setOptionalStringField,
                     TypeConverters.STRING_PARAM_VALUE_CONVERTER,
                     TypeConverters.STRING_VALUE_ENTITY_CONVERTER
diff --git a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpecTest.java b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpecTest.java
index 364bb86..6b7243a 100644
--- a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpecTest.java
+++ b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/impl/spec/ActionSpecTest.java
@@ -38,32 +38,46 @@
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 
-@RunWith(JUnit4.class)
-public final class ActionSpecTest {
 
-    private static final ActionSpec<Properties, Arguments, Output> ACTION_SPEC =
+@RunWith(JUnit4.class)
+@SuppressWarnings("unchecked")
+public final class ActionSpecTest {
+    private static final ActionSpec<Arguments, Output> ACTION_SPEC =
             ActionSpecBuilder.ofCapabilityNamed("actions.intent.TEST")
-                    .setDescriptor(Properties.class)
                     .setArguments(Arguments.class, Arguments::newBuilder)
                     .setOutput(Output.class)
                     .bindParameter(
                             "requiredString",
-                            Properties::requiredStringField,
+                            properties ->
+                            {
+                                return (Property<StringValue>) (properties.get(
+                                        "requiredString"));
+                            },
                             Arguments.Builder::setRequiredStringField,
                             TypeConverters.STRING_PARAM_VALUE_CONVERTER,
                             TypeConverters.STRING_VALUE_ENTITY_CONVERTER)
                     .bindOptionalParameter(
                             "optionalString",
-                            Properties::optionalStringField,
+                            properties ->
+                            {
+                                return Optional.ofNullable((Property<StringValue>) (properties.get(
+                                        "optionalString")));
+                            },
                             Arguments.Builder::setOptionalStringField,
                             TypeConverters.STRING_PARAM_VALUE_CONVERTER,
                             TypeConverters.STRING_VALUE_ENTITY_CONVERTER)
                     .bindRepeatedParameter(
                             "repeatedString",
-                            Properties::repeatedStringField,
+                            properties ->
+                            {
+                                return Optional.ofNullable((Property<StringValue>) (properties.get(
+                                        "repeatedString")));
+                            },
                             Arguments.Builder::setRepeatedStringField,
                             TypeConverters.STRING_PARAM_VALUE_CONVERTER,
                             TypeConverters.STRING_VALUE_ENTITY_CONVERTER)
@@ -96,49 +110,61 @@
                             .setName(theString)
                             .build();
 
-    private static final ActionSpec<GenericEntityProperty, GenericEntityArguments, Output>
+    private static final ActionSpec<GenericEntityArguments, Output>
             GENERIC_TYPES_ACTION_SPEC =
-                    ActionSpecBuilder.ofCapabilityNamed("actions.intent.TEST")
-                            .setDescriptor(GenericEntityProperty.class)
-                            .setArguments(GenericEntityArguments.class,
-                                    GenericEntityArguments::newBuilder)
-                            .setOutput(Output.class)
-                            .bindParameter(
-                                    "requiredEntity",
-                                    GenericEntityProperty::singularField,
-                                    GenericEntityArguments.Builder::setSingularField,
-                                    STRING_PARAM_VALUE_CONVERTER,
-                                    STRING_ENTITY_CONVERTER)
-                            .bindOptionalParameter("optionalEntity",
-                                    GenericEntityProperty::optionalField,
-                                    GenericEntityArguments.Builder::setOptionalField,
-                                    STRING_PARAM_VALUE_CONVERTER,
-                                    STRING_ENTITY_CONVERTER)
-                            .bindRepeatedParameter("repeatedEntities",
-                                    GenericEntityProperty::repeatedField,
-                                    GenericEntityArguments.Builder::setRepeatedField,
-                                    STRING_PARAM_VALUE_CONVERTER,
-                                    STRING_ENTITY_CONVERTER)
-                            .build();
+            ActionSpecBuilder.ofCapabilityNamed("actions.intent.TEST")
+                    .setArguments(GenericEntityArguments.class,
+                            GenericEntityArguments::newBuilder)
+                    .setOutput(Output.class)
+                    .bindParameter(
+                            "requiredEntity",
+                            properties ->
+                            {
+                                return (Property<String>) (properties.get(
+                                        "requiredEntity"));
+                            },
+                            GenericEntityArguments.Builder::setSingularField,
+                            STRING_PARAM_VALUE_CONVERTER,
+                            STRING_ENTITY_CONVERTER)
+                    .bindOptionalParameter("optionalEntity",
+                            properties ->
+                            {
+                                return Optional.of((Property<String>) (properties.get(
+                                        "optionalEntity")));
+                            },
+                            GenericEntityArguments.Builder::setOptionalField,
+                            STRING_PARAM_VALUE_CONVERTER,
+                            STRING_ENTITY_CONVERTER)
+                    .bindRepeatedParameter("repeatedEntities",
+                            properties ->
+                            {
+                                return Optional.of((Property<String>) (properties.get(
+                                        "repeatedEntities")));
+                            },
+                            GenericEntityArguments.Builder::setRepeatedField,
+                            STRING_PARAM_VALUE_CONVERTER,
+                            STRING_ENTITY_CONVERTER)
+                    .build();
 
     @Test
     public void getAppAction_genericParameters() {
-        GenericEntityProperty property =
-                GenericEntityProperty.create(
-                        new Property.Builder<String>()
-                                .setRequired(true)
-                                .setPossibleValues("one")
-                                .build(),
-                        Optional.of(
-                                new Property.Builder<String>()
-                                        .setRequired(true)
-                                        .setPossibleValues("two")
-                                        .build()),
-                        Optional.of(
-                                new Property.Builder<String>()
-                                        .setRequired(true)
-                                        .setPossibleValues("three")
-                                        .build()));
+        Map<String, Property<?>> property = new HashMap<>();
+        property.put("requiredEntity",
+                new Property.Builder<String>()
+                        .setRequired(true)
+                        .setPossibleValues("one")
+                        .build());
+        property.put("optionalEntity",
+                new Property.Builder<String>()
+                        .setRequired(true)
+                        .setPossibleValues("two")
+                        .build()
+        );
+        property.put("repeatedEntities",
+                new Property.Builder<String>()
+                        .setRequired(true)
+                        .setPossibleValues("three")
+                        .build());
 
         assertThat(GENERIC_TYPES_ACTION_SPEC.convertPropertyToProto(property))
                 .isEqualTo(
@@ -176,12 +202,12 @@
 
     @Test
     public void getAppAction_onlyRequiredProperty() {
-        Properties property =
-                Properties.create(
-                        new Property.Builder<StringValue>()
-                                .setPossibleValues(StringValue.of("Donald"))
-                                .setValueMatchRequired(true)
-                                .build());
+        Map<String, Property<?>> property = new HashMap<>();
+        property.put("requiredString",
+                new Property.Builder<StringValue>()
+                        .setPossibleValues(StringValue.of("Donald"))
+                        .setValueMatchRequired(true)
+                        .build());
 
         assertThat(ACTION_SPEC.convertPropertyToProto(property))
                 .isEqualTo(
@@ -201,21 +227,16 @@
 
     @Test
     public void getAppAction_allProperties() {
-        Properties property =
-                Properties.create(
-                        Optional.of(
-                                new Property.Builder<TestEnum>()
-                                        .setPossibleValues(TestEnum.VALUE_1)
-                                        .setRequired(true)
-                                        .build()),
-                        new Property.Builder<StringValue>().build(),
-                        Optional.of(
-                                new Property.Builder<StringValue>()
-                                        .setPossibleValues(StringValue.of("value1"))
-                                        .setValueMatchRequired(true)
-                                        .setRequired(true)
-                                        .build()),
-                        Optional.of(Property.prohibited()));
+        Map<String, Property<?>> property = new HashMap<>();
+        property.put("requiredString",
+                new Property.Builder<StringValue>().build());
+        property.put("optionalString",
+                new Property.Builder<StringValue>()
+                        .setPossibleValues(StringValue.of("value1"))
+                        .setValueMatchRequired(true)
+                        .setRequired(true)
+                        .build());
+        property.put("repeatedString", Property.prohibited());
 
         assertThat(ACTION_SPEC.convertPropertyToProto(property))
                 .isEqualTo(
diff --git a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/task/impl/TaskCapabilityImplTest.kt b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/task/impl/TaskCapabilityImplTest.kt
index 899825b..1c97879 100644
--- a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/task/impl/TaskCapabilityImplTest.kt
+++ b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/task/impl/TaskCapabilityImplTest.kt
@@ -19,9 +19,11 @@
 import androidx.appactions.builtintypes.experimental.types.ListItem
 import androidx.appactions.interaction.capabilities.core.AppEntityListener
 import androidx.appactions.interaction.capabilities.core.Capability
+import androidx.appactions.interaction.capabilities.core.ConfirmationOutput
 import androidx.appactions.interaction.capabilities.core.EntitySearchResult
 import androidx.appactions.interaction.capabilities.core.ExecutionResult
 import androidx.appactions.interaction.capabilities.core.HostProperties
+import androidx.appactions.interaction.capabilities.core.SearchAction
 import androidx.appactions.interaction.capabilities.core.SessionConfig
 import androidx.appactions.interaction.capabilities.core.ValidationResult
 import androidx.appactions.interaction.capabilities.core.ValueListener
@@ -33,10 +35,11 @@
 import androidx.appactions.interaction.capabilities.core.impl.converters.SearchActionConverter
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters.LIST_ITEM_TYPE_SPEC
+import androidx.appactions.interaction.capabilities.core.impl.converters.TypeSpec
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpec
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
-import androidx.appactions.interaction.capabilities.core.properties.StringValue
 import androidx.appactions.interaction.capabilities.core.properties.Property
+import androidx.appactions.interaction.capabilities.core.properties.StringValue
 import androidx.appactions.interaction.capabilities.core.testing.spec.Arguments
 import androidx.appactions.interaction.capabilities.core.testing.spec.CapabilityStructFill
 import androidx.appactions.interaction.capabilities.core.testing.spec.CapabilityTwoStrings
@@ -44,9 +47,6 @@
 import androidx.appactions.interaction.capabilities.core.testing.spec.ExecutionSession
 import androidx.appactions.interaction.capabilities.core.testing.spec.Output
 import androidx.appactions.interaction.capabilities.core.testing.spec.TestEnum
-import androidx.appactions.interaction.capabilities.core.testing.spec.Properties
-import androidx.appactions.interaction.capabilities.core.SearchAction
-import androidx.appactions.interaction.capabilities.core.impl.converters.TypeSpec
 import androidx.appactions.interaction.capabilities.testing.internal.ArgumentUtils.buildRequestArgs
 import androidx.appactions.interaction.capabilities.testing.internal.ArgumentUtils.buildSearchActionParamValue
 import androidx.appactions.interaction.capabilities.testing.internal.FakeCallbackInternal
@@ -59,6 +59,7 @@
 import androidx.appactions.interaction.proto.DisambiguationData
 import androidx.appactions.interaction.proto.Entity
 import androidx.appactions.interaction.proto.FulfillmentRequest.Fulfillment.Type.CANCEL
+import androidx.appactions.interaction.proto.FulfillmentRequest.Fulfillment.Type
 import androidx.appactions.interaction.proto.FulfillmentRequest.Fulfillment.Type.SYNC
 import androidx.appactions.interaction.proto.FulfillmentRequest.Fulfillment.Type.UNKNOWN_TYPE
 import androidx.appactions.interaction.proto.FulfillmentResponse.StructuredOutput
@@ -69,16 +70,18 @@
 import androidx.concurrent.futures.CallbackToFutureAdapter.Completer
 import com.google.common.truth.Truth.assertThat
 import com.google.common.util.concurrent.ListenableFuture
+import java.util.Optional
+import java.util.concurrent.atomic.AtomicInteger
+import java.util.concurrent.atomic.AtomicReference
+import java.util.function.Supplier
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-import java.util.concurrent.atomic.AtomicInteger
-import java.util.concurrent.atomic.AtomicReference
-import java.util.function.Supplier
 
 @RunWith(JUnit4::class)
+@Suppress("UNCHECKED_CAST")
 class TaskCapabilityImplTest {
     private val capability: Capability =
         createCapability<EmptyTaskUpdater>(
@@ -122,13 +125,13 @@
     fun appAction_computedProperty() {
         val mutableEntityList = mutableListOf<StringValue>()
         val capability = createCapability<EmptyTaskUpdater>(
-            Properties.newBuilder()
-                .setRequiredStringField(
-                    Property.Builder<StringValue>()
-                        .setPossibleValueSupplier(mutableEntityList::toList)
-                        .build()
-                )
-                .build(),
+            mutableMapOf(
+                "required" to Property
+                    .Builder<StringValue>()
+                    .setPossibleValueSupplier(
+                        mutableEntityList::toList
+                    ).build()
+            ),
             sessionFactory =
             {
                 object : ExecutionSession {
@@ -346,26 +349,21 @@
         val callback = FakeCallbackInternal()
         session.execute(buildRequestArgs(UNKNOWN_TYPE), callback)
         assertThat(callback.receiveResponse().errorStatus)
-            .isEqualTo(ErrorStatusInternal.INVALID_REQUEST_TYPE)
+            .isEqualTo(ErrorStatusInternal.INVALID_REQUEST)
     }
 
     @Test
     fun slotFilling_isActive_smokeTest() {
-        val property: CapabilityTwoStrings.Properties =
-            CapabilityTwoStrings.Properties.newBuilder()
-                .setStringSlotA(
-                    Property.Builder<StringValue>()
-                        .setRequired(true)
-                        .build()
-                )
-                .setStringSlotB(
-                    Property.Builder<StringValue>()
-                        .setRequired(true)
-                        .build()
-                )
-                .build()
+        val property = mapOf(
+            "stringSlotA" to Property.Builder<StringValue>()
+                .setRequired(true)
+                .build(),
+            "stringSlotB" to Property.Builder<StringValue>()
+                .setRequired(true)
+                .build(),
+        )
         val sessionFactory:
-            (hostProperties: HostProperties?) -> CapabilityTwoStrings.ExecutionSession =
+                (hostProperties: HostProperties?) -> CapabilityTwoStrings.ExecutionSession =
             { _ ->
                 object : CapabilityTwoStrings.ExecutionSession {
                     override suspend fun onExecute(
@@ -435,7 +433,6 @@
             buildRequestArgs(CANCEL),
             callback3
         )
-        assertThat(callback3.receiveResponse().fulfillmentResponse).isNotNull()
         assertThat(session.isActive).isFalse()
     }
 
@@ -443,25 +440,16 @@
     @kotlin.Throws(Exception::class)
     fun slotFilling_optionalButRejectedParam_onFinishNotInvoked() {
         val onExecuteInvocationCount = AtomicInteger(0)
-        val property: CapabilityTwoStrings.Properties =
-            CapabilityTwoStrings.Properties.newBuilder()
-                .setStringSlotA(
-                    Property.Builder<
-                        StringValue
-                        >()
-                        .setRequired(true)
-                        .build()
-                )
-                .setStringSlotB(
-                    Property.Builder<
-                        StringValue
-                        >()
-                        .setRequired(false)
-                        .build()
-                )
-                .build()
+        val property = mapOf(
+            "stringSlotA" to Property.Builder<StringValue>()
+                .setRequired(true)
+                .build(),
+            "stringSlotB" to Property.Builder<StringValue>()
+                .setRequired(false)
+                .build(),
+        )
         val sessionFactory:
-            (hostProperties: HostProperties?) -> CapabilityTwoStrings.ExecutionSession =
+                (hostProperties: HostProperties?) -> CapabilityTwoStrings.ExecutionSession =
             { _ ->
                 object : CapabilityTwoStrings.ExecutionSession {
                     override suspend fun onExecute(
@@ -535,22 +523,16 @@
     @Test
     @kotlin.Throws(Exception::class)
     fun slotFilling_assistantRemovedParam_clearInSdkState() {
-        val property: Properties =
-            Properties.newBuilder()
-                .setRequiredStringField(
-                    Property.Builder<
-                        StringValue
-                        >()
-                        .setRequired(true)
-                        .build()
-                )
-                .setEnumField(
-                    Property.Builder<TestEnum>()
-                        .setPossibleValues(TestEnum.VALUE_1, TestEnum.VALUE_2)
-                        .setRequired(true)
-                        .build()
-                )
-                .build()
+        val property = mapOf(
+            "required" to
+                Property.Builder<StringValue>()
+                    .setRequired(true)
+                    .build(),
+            "optionalEnum" to Property.Builder<TestEnum>()
+                .setPossibleValues(TestEnum.VALUE_1, TestEnum.VALUE_2)
+                .setRequired(true)
+                .build(),
+        )
         val capability: Capability =
             createCapability(
                 property,
@@ -736,11 +718,16 @@
     @kotlin.Throws(Exception::class)
     @Suppress("DEPRECATION") // TODO(b/269638788) migrate session state to AppDialogState message
     fun identifierOnly_refillsStruct() = runBlocking<Unit> {
-        val property: CapabilityStructFill.Properties =
-            CapabilityStructFill.Properties.newBuilder()
-                .setListItem(Property.Builder<ListItem>().setRequired(true).build())
-                .setAnyString(Property.Builder<StringValue>().setRequired(true).build())
-                .build()
+        val property = mapOf(
+            "listItem" to Property.Builder<
+                ListItem,
+                >()
+                .setRequired(true)
+                .build(),
+            "anyString" to Property.Builder<StringValue>()
+                .setRequired(true)
+                .build(),
+        )
         val item1: ListItem = ListItem.Builder().setName("red apple").setIdentifier("item1").build()
         val item2: ListItem =
             ListItem.Builder().setName("green apple").setIdentifier("item2").build()
@@ -749,7 +736,7 @@
         val onExecuteStringDeferred = CompletableDeferred<String>()
 
         val sessionFactory:
-            (hostProperties: HostProperties?) -> CapabilityStructFill.ExecutionSession =
+                (hostProperties: HostProperties?) -> CapabilityStructFill.ExecutionSession =
             { _ ->
                 object : CapabilityStructFill.ExecutionSession {
                     override suspend fun onExecute(
@@ -788,7 +775,7 @@
                 TaskHandler.Builder<Void>()
                     .registerAppEntityTaskParam(
                         "listItem",
-                        session.getListItemListener(),
+                        session.listItemListener,
                         ParamValueConverter.of(LIST_ITEM_TYPE_SPEC),
                         EntityConverter.of(LIST_ITEM_TYPE_SPEC)::convert,
                         getTrivialSearchActionConverter()
@@ -938,10 +925,10 @@
         assertThat(
             callback.receiveResponse()
                 .fulfillmentResponse!!
-                .getExecutionOutput()
-                .getOutputValuesList()
+                .executionOutput
+                .outputValuesList
         )
-            .containsExactlyElementsIn(expectedOutput.getOutputValuesList())
+            .containsExactlyElementsIn(expectedOutput.outputValuesList)
     }
 
     @Test
@@ -973,6 +960,174 @@
         assertThat(callback.receiveResponse().fulfillmentResponse!!.startDictation).isTrue()
     }
 
+    @Test
+    @kotlin.Throws(Exception::class)
+    fun fulfillmentType_finalSync_stateCleared() {
+        val sessionFactory: (hostProperties: HostProperties?) -> ExecutionSession =
+            { _ ->
+                object : ExecutionSession {
+                    override suspend fun onExecute(arguments: Arguments) =
+                        ExecutionResult.Builder<Output>().build()
+                }
+            }
+        val property: Properties =
+            Properties.newBuilder()
+                .setRequiredStringField(
+                    Property.Builder<StringValue>()
+                        .setRequired(true)
+                        .build(),
+                )
+                .build()
+        val capability: Capability =
+            createCapability(
+                property,
+                sessionFactory = sessionFactory,
+                sessionBridge = SessionBridge { TaskHandler.Builder<Confirmation>().build() },
+                sessionUpdaterSupplier = ::EmptyTaskUpdater,
+            )
+        val session = capability.createSession(fakeSessionId, hostProperties)
+
+        // TURN 1. Not providing all the required slots in the SYNC Request
+        val callback = FakeCallbackInternal()
+        session.execute(
+            buildRequestArgs(SYNC),
+            callback,
+        )
+        assertThat(callback.receiveResponse()).isNotNull()
+        assertThat(getCurrentValues("required", session.state!!)).isEmpty()
+        assertThat(session.isActive).isEqualTo(true)
+
+        // TURN 2. Providing the required slots so that the task completes and the state gets cleared
+        val callback2 = FakeCallbackInternal()
+        session.execute(
+            buildRequestArgs(SYNC,
+                "required",
+                ParamValue.newBuilder().setIdentifier("foo").setStringValue("foo").build()
+            ),
+            callback2,
+        )
+        assertThat(callback2.receiveResponse().fulfillmentResponse).isNotNull()
+        assertThat(session.isActive).isEqualTo(false)
+    }
+
+    @Test
+    @kotlin.Throws(Exception::class)
+    @Suppress("DEPRECATION") // TODO(b/279830425) implement tryExecute (INTENT_CONFIRMED can be used instead)
+    fun fulfillmentType_syncWithConfirmation_stateClearedAfterConfirmation() {
+        val sessionFactory: (hostProperties: HostProperties?) -> ExecutionSession =
+            { _ ->
+                object : ExecutionSession {
+                    override suspend fun onExecute(arguments: Arguments) =
+                        ExecutionResult.Builder<Output>().build()
+                }
+            }
+        var onReadyToConfirm =
+             object : OnReadyToConfirmListenerInternal<Confirmation> {
+                override suspend fun onReadyToConfirm(args: Map<String, List<ParamValue>>):
+                    ConfirmationOutput<Confirmation> {
+                    return ConfirmationOutput.Builder<Confirmation>()
+                            .setConfirmation(Confirmation.builder().setOptionalStringField("bar")
+                                .build())
+                            .build()
+                }
+            }
+
+        val property: Properties =
+            Properties.newBuilder()
+                .setRequiredStringField(
+                    Property.Builder<StringValue>()
+                        .setRequired(true)
+                        .build(),
+                )
+                .build()
+        val capability: Capability =
+            createCapability(
+                property,
+                sessionFactory = sessionFactory,
+                sessionBridge = SessionBridge {
+                                    TaskHandler.Builder<Confirmation>()
+                                        .setOnReadyToConfirmListenerInternal(onReadyToConfirm)
+                                        .build() },
+                sessionUpdaterSupplier = ::EmptyTaskUpdater,
+            )
+        val session = capability.createSession(fakeSessionId, hostProperties)
+
+        // TURN 1. Providing all the required slots in the SYNC Request
+        val callback = FakeCallbackInternal()
+        session.execute(
+            buildRequestArgs(SYNC,
+                "required",
+                ParamValue.newBuilder().setIdentifier("foo").setStringValue("foo").build()
+            ),
+            callback,
+        )
+        assertThat(callback.receiveResponse()).isNotNull()
+        assertThat(session.isActive).isEqualTo(true)
+
+        // Sending the confirmation request. After the confirm request, the session should not be
+        // active
+        val callback2 = FakeCallbackInternal()
+        session.execute(
+            buildRequestArgs(Type.CONFIRM),
+            callback2
+        )
+
+        assertThat(callback2.receiveResponse().fulfillmentResponse).isNotNull()
+        assertThat(session.isActive).isEqualTo(false)
+    }
+
+    @Test
+    fun fulfillmentRequest_whenStatusDestroyed_errorReported() {
+        val sessionFactory: (hostProperties: HostProperties?) -> ExecutionSession =
+            { _ ->
+                object : ExecutionSession {
+                    override suspend fun onExecute(arguments: Arguments) =
+                        ExecutionResult.Builder<Output>().build()
+                }
+            }
+        val property: Properties =
+            Properties.newBuilder()
+                .setRequiredStringField(
+                    Property.Builder<StringValue>()
+                        .setRequired(true)
+                        .build(),
+                )
+                .build()
+        val capability: Capability =
+            createCapability(
+                property,
+                sessionFactory = sessionFactory,
+                sessionBridge = SessionBridge { TaskHandler.Builder<Confirmation>().build() },
+                sessionUpdaterSupplier = ::EmptyTaskUpdater,
+            )
+        val session = capability.createSession(fakeSessionId, hostProperties)
+
+        // TURN 1. Providing the required slots so that the task completes and the state gets cleared
+        val callback = FakeCallbackInternal()
+        session.execute(
+            buildRequestArgs(SYNC,
+                "required",
+                ParamValue.newBuilder().setIdentifier("foo").setStringValue("foo").build()
+            ),
+            callback,
+        )
+        assertThat(callback.receiveResponse().fulfillmentResponse).isNotNull()
+        assertThat(session.isActive).isEqualTo(false)
+
+        // TURN 2. Trying to sync after the session is destroyed
+        val callback2 = FakeCallbackInternal()
+        session.execute(
+            buildRequestArgs(SYNC,
+                "required",
+                ParamValue.newBuilder().setIdentifier("foo").setStringValue("foo").build()
+            ),
+            callback2,
+        )
+        assertThat(session.isActive).isEqualTo(false)
+        assertThat(callback2.receiveResponse().errorStatus)
+            .isEqualTo(ErrorStatusInternal.SESSION_ALREADY_DESTROYED)
+    }
+
     /**
      * an implementation of Capability.Builder using Argument. Output, etc. defined under
      * testing/spec
@@ -980,7 +1135,6 @@
     class CapabilityBuilder :
         Capability.Builder<
             CapabilityBuilder,
-            Properties,
             Arguments,
             Output,
             Confirmation,
@@ -994,10 +1148,6 @@
         override val sessionBridge: SessionBridge<ExecutionSession, Confirmation> = SessionBridge {
             TaskHandler.Builder<Confirmation>().build()
         }
-
-        public override fun setExecutionSessionFactory(
-            sessionFactory: (hostProperties: HostProperties?) -> ExecutionSession,
-        ): CapabilityBuilder = super.setExecutionSessionFactory(sessionFactory)
     }
 
     companion object {
@@ -1054,37 +1204,55 @@
                     return ParamValue.newBuilder().build()
                 }
             }
-        private val ACTION_SPEC: ActionSpec<Properties, Arguments, Output> =
+        private val ACTION_SPEC: ActionSpec<Arguments, Output> =
             ActionSpecBuilder.ofCapabilityNamed(
                 CAPABILITY_NAME
             )
-                .setDescriptor(Properties::class.java)
                 .setArguments(Arguments::class.java, Arguments::newBuilder)
                 .setOutput(Output::class.java)
                 .bindParameter(
                     "required",
-                    Properties::requiredStringField,
+                    { properties ->
+                        properties["required"]
+                            as
+                            Property<StringValue>?
+                    },
                     Arguments.Builder::setRequiredStringField,
                     TypeConverters.STRING_PARAM_VALUE_CONVERTER,
                     TypeConverters.STRING_VALUE_ENTITY_CONVERTER
                 )
                 .bindOptionalParameter(
                     "optional",
-                    Properties::optionalStringField,
+                    { properties ->
+                        properties["optional"]
+                            ?.let { it as Property<StringValue> }
+                            ?.let { Optional.of(it) }
+                            ?: Optional.ofNullable(null)
+                    },
                     Arguments.Builder::setOptionalStringField,
                     TypeConverters.STRING_PARAM_VALUE_CONVERTER,
                     TypeConverters.STRING_VALUE_ENTITY_CONVERTER
                 )
                 .bindOptionalParameter(
                     "optionalEnum",
-                    Properties::enumField,
+                    { properties ->
+                        properties["optionalEnum"]
+                            ?.let { it as Property<TestEnum> }
+                            ?.let { Optional.of(it) }
+                            ?: Optional.ofNullable(null)
+                    },
                     Arguments.Builder::setEnumField,
                     ENUM_CONVERTER,
                     { Entity.newBuilder().setIdentifier(it.toString()).build() }
                 )
                 .bindRepeatedParameter(
                     "repeated",
-                    Properties::repeatedStringField,
+                    { properties ->
+                        properties["repeated"]
+                            ?.let { it as Property<StringValue> }
+                            ?.let { Optional.of(it) }
+                            ?: Optional.ofNullable(null)
+                    },
                     Arguments.Builder::setRepeatedStringField,
                     TypeConverters.STRING_PARAM_VALUE_CONVERTER,
                     TypeConverters.STRING_VALUE_ENTITY_CONVERTER
@@ -1101,26 +1269,23 @@
                 )
                 .build()
 
-        private val SINGLE_REQUIRED_FIELD_PROPERTY: Properties =
-            Properties.newBuilder()
-                .setRequiredStringField(
-                    Property.Builder<StringValue>()
-                        .setRequired(true)
-                        .build()
-                )
+        private val SINGLE_REQUIRED_FIELD_PROPERTY = mapOf(
+            "required" to Property.Builder<StringValue>()
+                .setRequired(true)
                 .build()
+        )
 
         private fun getCurrentValues(
             argName: String,
             appDialogState: AppDialogState
         ): List<CurrentValue> {
             return appDialogState
-                .getParamsList()
+                .paramsList
                 .stream()
-                .filter { dialogParam -> dialogParam.getName().equals(argName) }
+                .filter { dialogParam -> dialogParam.name.equals(argName) }
                 .findFirst()
                 .orElse(DialogParameter.getDefaultInstance())
-                .getCurrentValueList()
+                .currentValueList
         }
 
         /**
@@ -1128,12 +1293,11 @@
          * etc., defined under ../../testing/spec
          */
         private fun <SessionUpdaterT : AbstractTaskUpdater> createCapability(
-            property: Properties,
+            property: Map<String, Property<*>>,
             sessionFactory: (hostProperties: HostProperties?) -> ExecutionSession,
             sessionBridge: SessionBridge<ExecutionSession, Confirmation>,
             sessionUpdaterSupplier: Supplier<SessionUpdaterT>
         ): TaskCapabilityImpl<
-            Properties,
             Arguments,
             Output,
             ExecutionSession,
diff --git a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/testing/spec/CapabilityStructFill.java b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/testing/spec/CapabilityStructFill.java
index a2317c7..586145d 100644
--- a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/testing/spec/CapabilityStructFill.java
+++ b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/testing/spec/CapabilityStructFill.java
@@ -36,22 +36,30 @@
 import java.util.Optional;
 
 /** Used to test the filling behavior of structured entities (e.g. ListItem) */
+@SuppressWarnings("unchecked")
 public final class CapabilityStructFill {
 
     private static final String CAPABILITY_NAME = "actions.intent.TEST";
-    public static final ActionSpec<Properties, Arguments, Void> ACTION_SPEC =
+    public static final ActionSpec<Arguments, Void> ACTION_SPEC =
             ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-                    .setDescriptor(Properties.class)
                     .setArguments(Arguments.class, Arguments::newBuilder)
                     .bindOptionalParameter(
                             "listItem",
-                            Properties::listItem,
+                            properties ->
+                            {
+                                return Optional.ofNullable((Property<ListItem>) (properties.get(
+                                        "listItem")));
+                            },
                             Arguments.Builder::setListItem,
                             ParamValueConverter.Companion.of(LIST_ITEM_TYPE_SPEC),
                             EntityConverter.Companion.of(LIST_ITEM_TYPE_SPEC)::convert)
                     .bindOptionalParameter(
                             "string",
-                            Properties::anyString,
+                            properties ->
+                            {
+                                return Optional.ofNullable((Property<StringValue>) (properties.get(
+                                        "anyString")));
+                            },
                             Arguments.Builder::setAnyString,
                             TypeConverters.STRING_PARAM_VALUE_CONVERTER,
                             TypeConverters.STRING_VALUE_ENTITY_CONVERTER)
diff --git a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/testing/spec/CapabilityTwoStrings.java b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/testing/spec/CapabilityTwoStrings.java
index 9595d9c..76cf08d 100644
--- a/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/testing/spec/CapabilityTwoStrings.java
+++ b/appactions/interaction/interaction-capabilities-core/src/test/java/androidx/appactions/interaction/capabilities/core/testing/spec/CapabilityTwoStrings.java
@@ -29,22 +29,29 @@
 
 import java.util.Optional;
 
+@SuppressWarnings("unchecked")
 public final class CapabilityTwoStrings {
-
     private static final String CAPABILITY_NAME = "actions.intent.TEST";
-    public static final ActionSpec<Properties, Arguments, Void> ACTION_SPEC =
+    public static final ActionSpec<Arguments, Void> ACTION_SPEC =
             ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-                    .setDescriptor(Properties.class)
                     .setArguments(Arguments.class, Arguments::newBuilder)
                     .bindOptionalParameter(
                             "stringSlotA",
-                            Properties::stringSlotA,
+                            properties -> {
+                                return Optional.ofNullable(
+                                        (Property<StringValue>) properties.get("stringSlotA")
+                                );
+                            },
                             Arguments.Builder::setStringSlotA,
                             TypeConverters.STRING_PARAM_VALUE_CONVERTER,
                             TypeConverters.STRING_VALUE_ENTITY_CONVERTER)
                     .bindOptionalParameter(
                             "stringSlotB",
-                            Properties::stringSlotB,
+                            properties -> {
+                                return Optional.ofNullable(
+                                        (Property<StringValue>) properties.get("stringSlotB")
+                                );
+                            },
                             Arguments.Builder::setStringSlotB,
                             TypeConverters.STRING_PARAM_VALUE_CONVERTER,
                             TypeConverters.STRING_VALUE_ENTITY_CONVERTER)
diff --git a/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/GetExerciseObservation.kt b/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/GetExerciseObservation.kt
index 66f19fa..d530c21 100644
--- a/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/GetExerciseObservation.kt
+++ b/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/GetExerciseObservation.kt
@@ -16,8 +16,8 @@
 
 package androidx.appactions.interaction.capabilities.fitness.fitness
 
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.CapabilityFactory
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
@@ -30,24 +30,34 @@
 private const val CAPABILITY_NAME = "actions.intent.START_EXERCISE"
 
 // TODO(b/273602015): Update to use Name property from builtintype library.
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(GetExerciseObservation.Properties::class.java)
         .setArguments(
             GetExerciseObservation.Arguments::class.java,
             GetExerciseObservation.Arguments::Builder
         )
         .setOutput(GetExerciseObservation.Output::class.java)
         .bindOptionalParameter(
-            "healthObservation.startTime",
-            { property -> Optional.ofNullable(property.startTime) },
+            "exerciseObservation.startTime",
+            { properties ->
+                Optional.ofNullable(
+                    properties[GetExerciseObservation.PropertyMapStrings.START_TIME.key]
+                        as Property<LocalTime>
+                )
+            },
             GetExerciseObservation.Arguments.Builder::setStartTime,
             TypeConverters.LOCAL_TIME_PARAM_VALUE_CONVERTER,
             TypeConverters.LOCAL_TIME_ENTITY_CONVERTER
         )
         .bindOptionalParameter(
-            "healthObservation.endTime",
-            { property -> Optional.ofNullable(property.endTime) },
+            "exerciseObservation.endTime",
+            { properties ->
+                Optional.ofNullable(
+                    properties[GetExerciseObservation.PropertyMapStrings.END_TIME.key]
+                        as Property<LocalTime>
+                )
+            },
             GetExerciseObservation.Arguments.Builder::setEndTime,
             TypeConverters.LOCAL_TIME_PARAM_VALUE_CONVERTER,
             TypeConverters.LOCAL_TIME_ENTITY_CONVERTER
@@ -56,64 +66,26 @@
 
 @CapabilityFactory(name = CAPABILITY_NAME)
 class GetExerciseObservation private constructor() {
-    class CapabilityBuilder :
-        Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession
-            >(ACTION_SPEC) {
-        private var propertyBuilder: Properties.Builder = Properties.Builder()
-        fun setStartTimeProperty(startTime: Property<LocalTime>): CapabilityBuilder = apply {
-            propertyBuilder.setEndTime(startTime)
-        }
-
-        fun setEndTimeProperty(endTime: Property<LocalTime>): CapabilityBuilder = apply {
-            propertyBuilder.setEndTime(endTime)
-        }
-
-        override fun build(): Capability {
-            // TODO(b/268369632): Clean this up after Property is removed
-            super.setProperty(propertyBuilder.build())
-            return super.build()
-        }
+    internal enum class PropertyMapStrings(val key: String) {
+        START_TIME("exerciseObservation.startTime"),
+        END_TIME("exerciseObservation.endTime"),
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties internal constructor(
-        val startTime: Property<LocalTime>?,
-        val endTime: Property<LocalTime>?
-    ) {
-        override fun toString(): String {
-            return "Property(startTime=$startTime, endTime=$endTime)"
-        }
+    class CapabilityBuilder :
+        Capability.Builder<
+            CapabilityBuilder, Arguments, Output, Confirmation, ExecutionSession
+            >(ACTION_SPEC) {
+        private var properties = mutableMapOf<String, Property<*>>()
 
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass !== other?.javaClass) return false
+        fun setStartTime(startTime: Property<LocalTime>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.START_TIME.key] = startTime }
 
-            other as Properties
+        fun setEndTime(endTime: Property<LocalTime>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.END_TIME.key] = endTime }
 
-            if (startTime != other.startTime) return false
-            if (endTime != other.endTime) return false
-
-            return true
-        }
-
-        override fun hashCode(): Int {
-            var result = startTime.hashCode()
-            result += 31 * endTime.hashCode()
-            return result
-        }
-
-        class Builder {
-            private var startTime: Property<LocalTime>? = null
-            private var endTime: Property<LocalTime>? = null
-
-            fun setStartTime(startTime: Property<LocalTime>): Builder =
-                apply { this.startTime = startTime }
-
-            fun setEndTime(endTime: Property<LocalTime>): Builder =
-                apply { this.endTime = endTime }
-
-            fun build(): Properties = Properties(startTime, endTime)
+        override fun build(): Capability {
+            super.setProperty(properties)
+            return super.build()
         }
     }
 
diff --git a/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/GetHealthObservation.kt b/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/GetHealthObservation.kt
index df9e344..c7482e1 100644
--- a/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/GetHealthObservation.kt
+++ b/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/GetHealthObservation.kt
@@ -16,8 +16,8 @@
 
 package androidx.appactions.interaction.capabilities.fitness.fitness
 
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.CapabilityFactory
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
@@ -30,24 +30,34 @@
 private const val CAPABILITY_NAME = "actions.intent.START_EXERCISE"
 
 // TODO(b/273602015): Update to use Name property from builtintype library.
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(GetHealthObservation.Properties::class.java)
         .setArguments(
             GetHealthObservation.Arguments::class.java,
             GetHealthObservation.Arguments::Builder
         )
         .setOutput(GetHealthObservation.Output::class.java)
         .bindOptionalParameter(
-            "exerciseObservation.startTime",
-            { property -> Optional.ofNullable(property.startTime) },
+            "healthObservation.startTime",
+            { properties ->
+                Optional.ofNullable(
+                    properties[GetHealthObservation.PropertyMapStrings.START_TIME.key]
+                        as Property<LocalTime>
+                )
+            },
             GetHealthObservation.Arguments.Builder::setStartTime,
             TypeConverters.LOCAL_TIME_PARAM_VALUE_CONVERTER,
             TypeConverters.LOCAL_TIME_ENTITY_CONVERTER
         )
         .bindOptionalParameter(
-            "exerciseObservation.endTime",
-            { property -> Optional.ofNullable(property.endTime) },
+            "healthObservation.endTime",
+            { properties ->
+                Optional.ofNullable(
+                    properties[GetHealthObservation.PropertyMapStrings.END_TIME.key]
+                        as Property<LocalTime>
+                )
+            },
             GetHealthObservation.Arguments.Builder::setEndTime,
             TypeConverters.LOCAL_TIME_PARAM_VALUE_CONVERTER,
             TypeConverters.LOCAL_TIME_ENTITY_CONVERTER
@@ -56,64 +66,30 @@
 
 @CapabilityFactory(name = CAPABILITY_NAME)
 class GetHealthObservation private constructor() {
-    class CapabilityBuilder :
-        Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession
-            >(ACTION_SPEC) {
-        private var propertyBuilder: Properties.Builder = Properties.Builder()
-        fun setStartTimeProperty(startTime: Property<LocalTime>): CapabilityBuilder = apply {
-            propertyBuilder.setEndTime(startTime)
-        }
-
-        fun setEndTimeProperty(endTime: Property<LocalTime>): CapabilityBuilder = apply {
-            propertyBuilder.setEndTime(endTime)
-        }
-
-        override fun build(): Capability {
-            // TODO(b/268369632): Clean this up after Property is removed
-            super.setProperty(propertyBuilder.build())
-            return super.build()
-        }
+    internal enum class PropertyMapStrings(val key: String) {
+        START_TIME("healthObservation.startTime"),
+        END_TIME("healthObservation.endTime"),
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties internal constructor(
-        val startTime: Property<LocalTime>?,
-        val endTime: Property<LocalTime>?
-    ) {
-        override fun toString(): String {
-            return "Property(startTime=$startTime, endTime=$endTime)"
-        }
+    class CapabilityBuilder :
+        Capability.Builder<
+            CapabilityBuilder,
+            Arguments,
+            Output,
+            Confirmation,
+            ExecutionSession
+            >(ACTION_SPEC) {
+        private var properties = mutableMapOf<String, Property<*>>()
 
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass !== other?.javaClass) return false
+        fun setStartTime(startTime: Property<LocalTime>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.START_TIME.key] = startTime }
 
-            other as Properties
+        fun setEndTime(endTime: Property<LocalTime>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.END_TIME.key] = endTime }
 
-            if (startTime != other.startTime) return false
-            if (endTime != other.endTime) return false
-
-            return true
-        }
-
-        override fun hashCode(): Int {
-            var result = startTime.hashCode()
-            result += 31 * endTime.hashCode()
-            return result
-        }
-
-        class Builder {
-            private var startTime: Property<LocalTime>? = null
-            private var endTime: Property<LocalTime>? = null
-
-            fun setStartTime(startTime: Property<LocalTime>): Builder =
-                apply { this.startTime = startTime }
-
-            fun setEndTime(endTime: Property<LocalTime>): Builder =
-                apply { this.endTime = endTime }
-
-            fun build(): Properties = Properties(startTime, endTime)
+        override fun build(): Capability {
+            super.setProperty(properties)
+            return super.build()
         }
     }
 
diff --git a/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/PauseExercise.kt b/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/PauseExercise.kt
index 332207f..f04ceee 100644
--- a/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/PauseExercise.kt
+++ b/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/PauseExercise.kt
@@ -16,28 +16,33 @@
 
 package androidx.appactions.interaction.capabilities.fitness.fitness
 
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.CapabilityFactory
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
-import androidx.appactions.interaction.capabilities.core.properties.StringValue
 import androidx.appactions.interaction.capabilities.core.properties.Property
+import androidx.appactions.interaction.capabilities.core.properties.StringValue
 import java.util.Optional
 
 /** PauseExercise.kt in interaction-capabilities-fitness */
 private const val CAPABILITY_NAME = "actions.intent.PAUSE_EXERCISE"
 
 // TODO(b/273602015): Update to use Name property from builtintype library.
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(PauseExercise.Properties::class.java)
         .setArguments(PauseExercise.Arguments::class.java, PauseExercise.Arguments::Builder)
         .setOutput(PauseExercise.Output::class.java)
         .bindOptionalParameter(
             "exercise.name",
-            { property -> Optional.ofNullable(property.name) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[PauseExercise.PropertyMapStrings.NAME.key]
+                        as Property<StringValue>
+                )
+            },
             PauseExercise.Arguments.Builder::setName,
             TypeConverters.STRING_PARAM_VALUE_CONVERTER,
             TypeConverters.STRING_VALUE_ENTITY_CONVERTER
@@ -46,53 +51,25 @@
 
 @CapabilityFactory(name = CAPABILITY_NAME)
 class PauseExercise private constructor() {
-    class CapabilityBuilder :
-        Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession
-            >(ACTION_SPEC) {
-        private var propertyBuilder: Properties.Builder = Properties.Builder()
-        fun setNameProperty(name: Property<StringValue>): CapabilityBuilder =
-            apply {
-                propertyBuilder.setName(name)
-            }
-
-        override fun build(): Capability {
-            // TODO(b/268369632): Clean this up after Property is removed
-            super.setProperty(propertyBuilder.build())
-            return super.build()
-        }
+    internal enum class PropertyMapStrings(val key: String) {
+        NAME("exercise.name"),
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties internal constructor(
-        val name: Property<StringValue>?,
-    ) {
-        override fun toString(): String {
-            return "Property(name=$name)"
-        }
+    class CapabilityBuilder :
+        Capability.Builder<
+            CapabilityBuilder,
+            Arguments,
+            Output,
+            Confirmation,
+            ExecutionSession
+            >(ACTION_SPEC) {
+        private var properties = mutableMapOf<String, Property<*>>()
+        fun setName(name: Property<StringValue>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.NAME.key] = name }
 
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass !== other?.javaClass) return false
-
-            other as Properties
-
-            if (name != other.name) return false
-
-            return true
-        }
-
-        override fun hashCode(): Int {
-            return name.hashCode()
-        }
-
-        class Builder {
-            private var name: Property<StringValue>? = null
-
-            fun setName(name: Property<StringValue>): Builder =
-                apply { this.name = name }
-
-            fun build(): Properties = Properties(name)
+        override fun build(): Capability {
+            super.setProperty(properties)
+            return super.build()
         }
     }
 
diff --git a/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/ResumeExercise.kt b/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/ResumeExercise.kt
index 491e804..1881a7c 100644
--- a/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/ResumeExercise.kt
+++ b/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/ResumeExercise.kt
@@ -16,28 +16,33 @@
 
 package androidx.appactions.interaction.capabilities.fitness.fitness
 
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.CapabilityFactory
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
-import androidx.appactions.interaction.capabilities.core.properties.StringValue
 import androidx.appactions.interaction.capabilities.core.properties.Property
+import androidx.appactions.interaction.capabilities.core.properties.StringValue
 import java.util.Optional
 
 /** ResumeExercise.kt in interaction-capabilities-fitness */
 private const val CAPABILITY_NAME = "actions.intent.RESUME_EXERCISE"
 
 // TODO(b/273602015): Update to use Name property from builtintype library.
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(ResumeExercise.Properties::class.java)
         .setArguments(ResumeExercise.Arguments::class.java, ResumeExercise.Arguments::Builder)
         .setOutput(ResumeExercise.Output::class.java)
         .bindOptionalParameter(
             "exercise.name",
-            { property -> Optional.ofNullable(property.name) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[ResumeExercise.PropertyMapStrings.NAME.key]
+                        as Property<StringValue>
+                )
+            },
             ResumeExercise.Arguments.Builder::setName,
             TypeConverters.STRING_PARAM_VALUE_CONVERTER,
             TypeConverters.STRING_VALUE_ENTITY_CONVERTER
@@ -46,53 +51,25 @@
 
 @CapabilityFactory(name = CAPABILITY_NAME)
 class ResumeExercise private constructor() {
-    class CapabilityBuilder :
-        Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession
-            >(ACTION_SPEC) {
-        private var propertyBuilder: Properties.Builder = Properties.Builder()
-        fun setNameProperty(name: Property<StringValue>): CapabilityBuilder =
-            apply {
-                propertyBuilder.setName(name)
-            }
-
-        override fun build(): Capability {
-            // TODO(b/268369632): Clean this up after Property is removed
-            super.setProperty(propertyBuilder.build())
-            return super.build()
-        }
+    internal enum class PropertyMapStrings(val key: String) {
+        NAME("exercise.name"),
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties internal constructor(
-        val name: Property<StringValue>?,
-    ) {
-        override fun toString(): String {
-            return "Property(name=$name)"
-        }
+    class CapabilityBuilder :
+        Capability.Builder<
+            CapabilityBuilder,
+            Arguments,
+            Output,
+            Confirmation,
+            ExecutionSession
+            >(ACTION_SPEC) {
+        private var properties = mutableMapOf<String, Property<*>>()
+        fun setName(name: Property<StringValue>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.NAME.key] = name }
 
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass !== other?.javaClass) return false
-
-            other as Properties
-
-            if (name != other.name) return false
-
-            return true
-        }
-
-        override fun hashCode(): Int {
-            return name.hashCode()
-        }
-
-        class Builder {
-            private var name: Property<StringValue>? = null
-
-            fun setName(name: Property<StringValue>): Builder =
-                apply { this.name = name }
-
-            fun build(): Properties = Properties(name)
+        override fun build(): Capability {
+            super.setProperty(properties)
+            return super.build()
         }
     }
 
diff --git a/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/StartExercise.kt b/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/StartExercise.kt
index 04524b4..0847d33 100644
--- a/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/StartExercise.kt
+++ b/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/StartExercise.kt
@@ -16,14 +16,14 @@
 
 package androidx.appactions.interaction.capabilities.fitness.fitness
 
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.CapabilityFactory
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
-import androidx.appactions.interaction.capabilities.core.properties.StringValue
 import androidx.appactions.interaction.capabilities.core.properties.Property
+import androidx.appactions.interaction.capabilities.core.properties.StringValue
 import java.time.Duration
 import java.util.Optional
 
@@ -31,21 +31,31 @@
 private const val CAPABILITY_NAME = "actions.intent.START_EXERCISE"
 
 // TODO(b/273602015): Update to use Name property from builtintype library.
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(StartExercise.Properties::class.java)
         .setArguments(StartExercise.Arguments::class.java, StartExercise.Arguments::Builder)
         .setOutput(StartExercise.Output::class.java)
         .bindOptionalParameter(
             "exercise.duration",
-            { property -> Optional.ofNullable(property.duration) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[StartExercise.PropertyMapStrings.DURATION.key]
+                        as Property<Duration>
+                )
+            },
             StartExercise.Arguments.Builder::setDuration,
             TypeConverters.DURATION_PARAM_VALUE_CONVERTER,
             TypeConverters.DURATION_ENTITY_CONVERTER
         )
         .bindOptionalParameter(
             "exercise.name",
-            { property -> Optional.ofNullable(property.name) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[StartExercise.PropertyMapStrings.NAME.key]
+                        as Property<StringValue>
+                )
+            },
             StartExercise.Arguments.Builder::setName,
             TypeConverters.STRING_PARAM_VALUE_CONVERTER,
             TypeConverters.STRING_VALUE_ENTITY_CONVERTER
@@ -54,65 +64,30 @@
 
 @CapabilityFactory(name = CAPABILITY_NAME)
 class StartExercise private constructor() {
-    class CapabilityBuilder :
-        Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession
-            >(ACTION_SPEC) {
-        fun setDurationProperty(duration: Property<Duration>): CapabilityBuilder =
-            apply {
-                Properties.Builder().setDuration(duration).build()
-            }
-
-        fun setNameProperty(name: Property<StringValue>): CapabilityBuilder =
-            apply {
-                Properties.Builder().setName(name).build()
-            }
-
-        override fun build(): Capability {
-            // TODO(b/268369632): No-op remove empty property builder after Property od removed
-            super.setProperty(Properties.Builder().build())
-            return super.build()
-        }
+    internal enum class PropertyMapStrings(val key: String) {
+        NAME("exercise.name"),
+        DURATION("exercise.duration"),
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties internal constructor(
-        val duration: Property<Duration>?,
-        val name: Property<StringValue>?
-    ) {
-        override fun toString(): String {
-            return "Property(duration=$duration, name=$name)"
-        }
+    class CapabilityBuilder :
+        Capability.Builder<
+            CapabilityBuilder,
+            Arguments,
+            Output,
+            Confirmation,
+            ExecutionSession
+            >(ACTION_SPEC) {
+        private var properties = mutableMapOf<String, Property<*>>()
 
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass !== other?.javaClass) return false
+        fun setName(name: Property<StringValue>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.NAME.key] = name }
 
-            other as Properties
+        fun setDuration(duration: Property<Duration>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.DURATION.key] = duration }
 
-            if (duration != other.duration) return false
-            if (name != other.name) return false
-
-            return true
-        }
-
-        override fun hashCode(): Int {
-            var result = duration.hashCode()
-            result += 31 * name.hashCode()
-            return result
-        }
-
-        class Builder {
-            private var duration: Property<Duration>? = null
-            private var name: Property<StringValue>? = null
-
-            fun setDuration(duration: Property<Duration>): Builder =
-                apply { this.duration = duration }
-
-            fun setName(name: Property<StringValue>): Builder =
-                apply { this.name = name }
-
-            fun build(): Properties = Properties(duration, name)
+        override fun build(): Capability {
+            super.setProperty(properties)
+            return super.build()
         }
     }
 
diff --git a/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/StopExercise.kt b/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/StopExercise.kt
index 09690c52..18efde0 100644
--- a/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/StopExercise.kt
+++ b/appactions/interaction/interaction-capabilities-fitness/src/main/java/androidx/appactions/interaction/capabilities/fitness/fitness/StopExercise.kt
@@ -16,8 +16,8 @@
 
 package androidx.appactions.interaction.capabilities.fitness.fitness
 
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.CapabilityFactory
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
@@ -30,14 +30,19 @@
 private const val CAPABILITY_NAME = "actions.intent.PAUSE_EXERCISE"
 
 // TODO(b/273602015): Update to use Name property from builtintype library.
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(StopExercise.Properties::class.java)
         .setArguments(StopExercise.Arguments::class.java, StopExercise.Arguments::Builder)
         .setOutput(StopExercise.Output::class.java)
         .bindOptionalParameter(
             "exercise.name",
-            { property -> Optional.ofNullable(property.name) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[StopExercise.PropertyMapStrings.NAME.key]
+                        as Property<StringValue>
+                )
+            },
             StopExercise.Arguments.Builder::setName,
             TypeConverters.STRING_PARAM_VALUE_CONVERTER,
             TypeConverters.STRING_VALUE_ENTITY_CONVERTER
@@ -46,53 +51,26 @@
 
 @CapabilityFactory(name = CAPABILITY_NAME)
 class StopExercise private constructor() {
-    class CapabilityBuilder :
-        Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession
-            >(ACTION_SPEC) {
-        private var propertyBuilder: Properties.Builder = Properties.Builder()
-        fun setNameProperty(name: Property<StringValue>): CapabilityBuilder =
-            apply {
-                propertyBuilder.setName(name)
-            }
-
-        override fun build(): Capability {
-            // TODO(b/268369632): Clean this up after Property is removed
-            super.setProperty(propertyBuilder.build())
-            return super.build()
-        }
+    internal enum class PropertyMapStrings(val key: String) {
+        NAME("exercise.name"),
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties internal constructor(
-        val name: Property<StringValue>?,
-    ) {
-        override fun toString(): String {
-            return "Property(name=$name)"
-        }
+    class CapabilityBuilder :
+        Capability.Builder<
+            CapabilityBuilder,
+            Arguments,
+            Output,
+            Confirmation,
+            ExecutionSession
+            >(ACTION_SPEC) {
+        private var properties = mutableMapOf<String, Property<*>>()
 
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass !== other?.javaClass) return false
+        fun setName(name: Property<StringValue>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.NAME.key] = name }
 
-            other as Properties
-
-            if (name != other.name) return false
-
-            return true
-        }
-
-        override fun hashCode(): Int {
-            return name.hashCode()
-        }
-
-        class Builder {
-            private var name: Property<StringValue>? = null
-
-            fun setName(name: Property<StringValue>): Builder =
-                apply { this.name = name }
-
-            fun build(): Properties = Properties(name)
+        override fun build(): Capability {
+            super.setProperty(properties)
+            return super.build()
         }
     }
 
diff --git a/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/PauseTimer.kt b/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/PauseTimer.kt
index 14c0fed..528a497 100644
--- a/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/PauseTimer.kt
+++ b/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/PauseTimer.kt
@@ -18,8 +18,8 @@
 
 import androidx.appactions.builtintypes.experimental.types.GenericErrorStatus
 import androidx.appactions.builtintypes.experimental.types.SuccessStatus
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
@@ -32,14 +32,19 @@
 /** PauseTimer.kt in interaction-capabilities-productivity */
 private const val CAPABILITY_NAME = "actions.intent.PAUSE_TIMER"
 
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(PauseTimer.Properties::class.java)
         .setArguments(PauseTimer.Arguments::class.java, PauseTimer.Arguments::Builder)
         .setOutput(PauseTimer.Output::class.java)
         .bindRepeatedParameter(
             "timer",
-            { property -> Optional.ofNullable(property.timerList) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[PauseTimer.PropertyMapStrings.TIMER_LIST.key]
+                        as Property<TimerValue>
+                )
+            },
             PauseTimer.Arguments.Builder::setTimerList,
             TimerValue.PARAM_VALUE_CONVERTER,
             TimerValue.ENTITY_CONVERTER
@@ -53,57 +58,29 @@
 
 // TODO(b/267806701): Add capability factory annotation once the testing library is fully migrated.
 class PauseTimer private constructor() {
+    internal enum class PropertyMapStrings(val key: String) {
+        TIMER_LIST("timer.timerList"),
+    }
 
     class CapabilityBuilder :
         Capability.Builder<
             CapabilityBuilder,
-            Properties,
             Arguments,
             Output,
             Confirmation,
-            ExecutionSession,
-        >(ACTION_SPEC) {
+            ExecutionSession
+            >(ACTION_SPEC) {
+        private var properties = mutableMapOf<String, Property<*>>()
+
+        fun setTimerList(timerList: Property<TimerValue>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.TIMER_LIST.key] = timerList }
+
         override fun build(): Capability {
-            super.setProperty(Properties.Builder().build())
+            super.setProperty(properties)
             return super.build()
         }
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties
-    internal constructor(
-        val timerList: Property<TimerValue>?,
-    ) {
-        override fun toString(): String {
-            return "Property(timerList=$timerList}"
-        }
-
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass != other?.javaClass) return false
-
-            other as Properties
-
-            if (timerList != other.timerList) return false
-
-            return true
-        }
-
-        override fun hashCode(): Int {
-            return timerList.hashCode()
-        }
-
-        class Builder {
-            private var timerList: Property<TimerValue>? = null
-
-            fun setTimerList(timerList: Property<TimerValue>): Builder = apply {
-                this.timerList = timerList
-            }
-
-            fun build(): Properties = Properties(timerList)
-        }
-    }
-
     class Arguments
     internal constructor(
         val timerList: List<TimerValue>?,
diff --git a/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/ResetTimer.kt b/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/ResetTimer.kt
index d05acf9..94d203b 100644
--- a/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/ResetTimer.kt
+++ b/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/ResetTimer.kt
@@ -18,8 +18,8 @@
 
 import androidx.appactions.builtintypes.experimental.types.GenericErrorStatus
 import androidx.appactions.builtintypes.experimental.types.SuccessStatus
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
@@ -32,14 +32,19 @@
 /** ResetTimer.kt in interaction-capabilities-productivity */
 private const val CAPABILITY_NAME = "actions.intent.RESET_TIMER"
 
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(ResetTimer.Properties::class.java)
         .setArguments(ResetTimer.Arguments::class.java, ResetTimer.Arguments::Builder)
         .setOutput(ResetTimer.Output::class.java)
         .bindRepeatedParameter(
             "timer",
-            { property -> Optional.ofNullable(property.timerList) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[ResetTimer.PropertyMapStrings.TIMER_LIST.key]
+                        as Property<TimerValue>
+                )
+            },
             ResetTimer.Arguments.Builder::setTimerList,
             TimerValue.PARAM_VALUE_CONVERTER,
             TimerValue.ENTITY_CONVERTER
@@ -53,49 +58,29 @@
 
 // TODO(b/267806701): Add capability factory annotation once the testing library is fully migrated.
 class ResetTimer private constructor() {
+    internal enum class PropertyMapStrings(val key: String) {
+        TIMER_LIST("timer.timerList"),
+    }
 
     class CapabilityBuilder :
         Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession
-        >(ACTION_SPEC) {
+            CapabilityBuilder,
+            Arguments,
+            Output,
+            Confirmation,
+            ExecutionSession
+            >(ACTION_SPEC) {
+        private var properties = mutableMapOf<String, Property<*>>()
+
+        fun setTimerList(timerList: Property<TimerValue>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.TIMER_LIST.key] = timerList }
+
         override fun build(): Capability {
-            super.setProperty(Properties.Builder().build())
+            super.setProperty(properties)
             return super.build()
         }
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties internal constructor(val timerList: Property<TimerValue>?) {
-        override fun toString(): String {
-            return "Property(timerList=$timerList}"
-        }
-
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass != other?.javaClass) return false
-
-            other as Properties
-
-            if (timerList != other.timerList) return false
-
-            return true
-        }
-
-        override fun hashCode(): Int {
-            return timerList.hashCode()
-        }
-
-        class Builder {
-            private var timerList: Property<TimerValue>? = null
-
-            fun setTimerList(timerList: Property<TimerValue>): Builder = apply {
-                this.timerList = timerList
-            }
-
-            fun build(): Properties = Properties(timerList)
-        }
-    }
-
     class Arguments internal constructor(val timerList: List<TimerValue>?) {
         override fun toString(): String {
             return "Arguments(timerList=$timerList)"
diff --git a/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/ResumeTimer.kt b/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/ResumeTimer.kt
index accb730..d967e45 100644
--- a/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/ResumeTimer.kt
+++ b/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/ResumeTimer.kt
@@ -18,8 +18,8 @@
 
 import androidx.appactions.builtintypes.experimental.types.GenericErrorStatus
 import androidx.appactions.builtintypes.experimental.types.SuccessStatus
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
@@ -32,14 +32,19 @@
 /** ResumeTimer.kt in interaction-capabilities-productivity */
 private const val CAPABILITY_NAME = "actions.intent.RESUME_TIMER"
 
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(ResumeTimer.Properties::class.java)
         .setArguments(ResumeTimer.Arguments::class.java, ResumeTimer.Arguments::Builder)
         .setOutput(ResumeTimer.Output::class.java)
         .bindRepeatedParameter(
             "timer",
-            { property -> Optional.ofNullable(property.timerList) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[ResumeTimer.PropertyMapStrings.TIMER_LIST.key]
+                        as Property<TimerValue>
+                )
+            },
             ResumeTimer.Arguments.Builder::setTimerList,
             TimerValue.PARAM_VALUE_CONVERTER,
             TimerValue.ENTITY_CONVERTER
@@ -53,49 +58,29 @@
 
 // TODO(b/267806701): Add capability factory annotation once the testing library is fully migrated.
 class ResumeTimer private constructor() {
+    internal enum class PropertyMapStrings(val key: String) {
+        TIMER_LIST("timer.timerList"),
+    }
 
     class CapabilityBuilder :
         Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession
-        >(ACTION_SPEC) {
+            CapabilityBuilder,
+            Arguments,
+            Output,
+            Confirmation,
+            ExecutionSession
+            >(ACTION_SPEC) {
+        private var properties = mutableMapOf<String, Property<*>>()
+
+        fun setTimerList(timerList: Property<TimerValue>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.TIMER_LIST.key] = timerList }
+
         override fun build(): Capability {
-            super.setProperty(Properties.Builder().build())
+            super.setProperty(properties)
             return super.build()
         }
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties internal constructor(val timerList: Property<TimerValue>?) {
-        override fun toString(): String {
-            return "Property(timerList=$timerList}"
-        }
-
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass != other?.javaClass) return false
-
-            other as Properties
-
-            if (timerList != other.timerList) return false
-
-            return true
-        }
-
-        override fun hashCode(): Int {
-            return timerList.hashCode()
-        }
-
-        class Builder {
-            private var timerList: Property<TimerValue>? = null
-
-            fun setTimerList(timerList: Property<TimerValue>): Builder = apply {
-                this.timerList = timerList
-            }
-
-            fun build(): Properties = Properties(timerList)
-        }
-    }
-
     class Arguments internal constructor(val timerList: List<TimerValue>?) {
         override fun toString(): String {
             return "Arguments(timerList=$timerList)"
diff --git a/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/StartTimer.kt b/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/StartTimer.kt
index 25ca3cc..fcd211c 100644
--- a/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/StartTimer.kt
+++ b/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/StartTimer.kt
@@ -18,17 +18,17 @@
 
 import androidx.appactions.builtintypes.experimental.types.GenericErrorStatus
 import androidx.appactions.builtintypes.experimental.types.SuccessStatus
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.HostProperties
 import androidx.appactions.interaction.capabilities.core.ValueListener
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
-import androidx.appactions.interaction.capabilities.core.properties.StringValue
-import androidx.appactions.interaction.capabilities.core.properties.Property
 import androidx.appactions.interaction.capabilities.core.impl.task.SessionBridge
 import androidx.appactions.interaction.capabilities.core.impl.task.TaskHandler
+import androidx.appactions.interaction.capabilities.core.properties.Property
+import androidx.appactions.interaction.capabilities.core.properties.StringValue
 import androidx.appactions.interaction.proto.ParamValue
 import androidx.appactions.interaction.protobuf.Struct
 import androidx.appactions.interaction.protobuf.Value
@@ -38,28 +38,43 @@
 /** StartTimer.kt in interaction-capabilities-productivity */
 private const val CAPABILITY_NAME = "actions.intent.START_TIMER"
 
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(StartTimer.Properties::class.java)
         .setArguments(StartTimer.Arguments::class.java, StartTimer.Arguments::Builder)
         .setOutput(StartTimer.Output::class.java)
         .bindOptionalParameter(
             "timer.identifier",
-            { property -> Optional.ofNullable(property.identifier) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[StartTimer.PropertyMapStrings.IDENTIFIER.key]
+                        as Property<StringValue>
+                )
+            },
             StartTimer.Arguments.Builder::setIdentifier,
             TypeConverters.STRING_PARAM_VALUE_CONVERTER,
             TypeConverters.STRING_VALUE_ENTITY_CONVERTER,
         )
         .bindOptionalParameter(
             "timer.name",
-            { property -> Optional.ofNullable(property.name) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[StartTimer.PropertyMapStrings.NAME.key]
+                        as Property<StringValue>
+                )
+            },
             StartTimer.Arguments.Builder::setName,
             TypeConverters.STRING_PARAM_VALUE_CONVERTER,
             TypeConverters.STRING_VALUE_ENTITY_CONVERTER,
         )
         .bindOptionalParameter(
             "timer.duration",
-            { property -> Optional.ofNullable(property.duration) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[StartTimer.PropertyMapStrings.DURATION.key]
+                        as Property<Duration>
+                )
+            },
             StartTimer.Arguments.Builder::setDuration,
             TypeConverters.DURATION_PARAM_VALUE_CONVERTER,
             TypeConverters.DURATION_ENTITY_CONVERTER,
@@ -93,20 +108,47 @@
 
 // TODO(b/267806701): Add capability factory annotation once the testing library is fully migrated.
 class StartTimer private constructor() {
+    internal enum class PropertyMapStrings(val key: String) {
+        TIMER_LIST("timer.timerList"),
+        IDENTIFIER("timer.identifier"),
+        NAME("timer.name"),
+        DURATION("timer.duration"),
+    }
 
     class CapabilityBuilder :
         Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession,
+            CapabilityBuilder,
+            Arguments,
+            Output,
+            Confirmation,
+            ExecutionSession
             >(ACTION_SPEC) {
+        private var properties = mutableMapOf<String, Property<*>>()
 
         override val sessionBridge: SessionBridge<ExecutionSession, Confirmation> = SESSION_BRIDGE
 
-        public override fun setExecutionSessionFactory(
+        override fun setExecutionSessionFactory(
             sessionFactory: (hostProperties: HostProperties?) -> ExecutionSession,
         ): CapabilityBuilder = super.setExecutionSessionFactory(sessionFactory)
 
+        fun setTimerList(timerList: Property<TimerValue>): CapabilityBuilder = apply {
+            properties[PropertyMapStrings.TIMER_LIST.key] = timerList
+        }
+
+        fun setIdentifier(identifier: Property<StringValue>): CapabilityBuilder = apply {
+            properties[PropertyMapStrings.IDENTIFIER.key] = identifier
+        }
+
+        fun setName(name: Property<StringValue>): CapabilityBuilder = apply {
+            properties[PropertyMapStrings.NAME.key] = name
+        }
+
+        fun setDuration(duration: Property<Duration>): CapabilityBuilder = apply {
+            properties[PropertyMapStrings.DURATION.key] = duration
+        }
+
         override fun build(): Capability {
-            super.setProperty(Properties.Builder().build())
+            super.setProperty(properties)
             return super.build()
         }
     }
@@ -118,56 +160,6 @@
             get() = null
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties
-    internal constructor(
-        val identifier: Property<StringValue>?,
-        val name: Property<StringValue>?,
-        val duration: Property<Duration>?,
-    ) {
-        override fun toString(): String {
-            return "Property(identifier=$identifier,name=$name,duration=$duration}"
-        }
-
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass != other?.javaClass) return false
-
-            other as Properties
-
-            if (identifier != other.identifier) return false
-            if (name != other.name) return false
-            if (duration != other.duration) return false
-
-            return true
-        }
-
-        override fun hashCode(): Int {
-            var result = identifier.hashCode()
-            result += 31 * name.hashCode()
-            result += 31 * duration.hashCode()
-            return result
-        }
-
-        class Builder {
-            private var identifier: Property<StringValue>? = null
-            private var name: Property<StringValue>? = null
-            private var duration: Property<Duration>? = null
-
-            fun setIdentifier(identifier: Property<StringValue>): Builder = apply {
-                this.identifier = identifier
-            }
-
-            fun setName(name: Property<StringValue>): Builder = apply { this.name = name }
-
-            fun setDuration(duration: Property<Duration>): Builder = apply {
-                this.duration = duration
-            }
-
-            fun build(): Properties = Properties(identifier, name, duration)
-        }
-    }
-
     class Arguments internal constructor(
         val identifier: String?,
         val name: String?,
diff --git a/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/StopTimer.kt b/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/StopTimer.kt
index fa589e7..93f5b75 100644
--- a/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/StopTimer.kt
+++ b/appactions/interaction/interaction-capabilities-productivity/src/main/java/androidx/appactions/interaction/capabilities/productivity/StopTimer.kt
@@ -18,8 +18,8 @@
 
 import androidx.appactions.builtintypes.experimental.types.GenericErrorStatus
 import androidx.appactions.builtintypes.experimental.types.SuccessStatus
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
@@ -32,14 +32,19 @@
 /** StopTimer.kt in interaction-capabilities-productivity */
 private const val CAPABILITY_NAME = "actions.intent.STOP_TIMER"
 
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(StopTimer.Properties::class.java)
         .setArguments(StopTimer.Arguments::class.java, StopTimer.Arguments::Builder)
         .setOutput(StopTimer.Output::class.java)
         .bindRepeatedParameter(
             "timer",
-            { property -> Optional.ofNullable(property.timerList) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[StopTimer.PropertyMapStrings.TIMER_LIST.key]
+                        as Property<TimerValue>
+                )
+            },
             StopTimer.Arguments.Builder::setTimerList,
             TimerValue.PARAM_VALUE_CONVERTER,
             TimerValue.ENTITY_CONVERTER
@@ -53,49 +58,29 @@
 
 // TODO(b/267806701): Add capability factory annotation once the testing library is fully migrated.
 class StopTimer private constructor() {
+    internal enum class PropertyMapStrings(val key: String) {
+        TIMER_LIST("timer.timerList"),
+    }
 
     class CapabilityBuilder :
         Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession
+            CapabilityBuilder,
+            Arguments,
+            Output,
+            Confirmation,
+            ExecutionSession
             >(ACTION_SPEC) {
+        private var properties = mutableMapOf<String, Property<*>>()
+
+        fun setTimerList(timerList: Property<TimerValue>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.TIMER_LIST.key] = timerList }
+
         override fun build(): Capability {
-            super.setProperty(Properties.Builder().build())
+            super.setProperty(properties)
             return super.build()
         }
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties internal constructor(val timerList: Property<TimerValue>?) {
-        override fun toString(): String {
-            return "Property(timerList=$timerList}"
-        }
-
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass != other?.javaClass) return false
-
-            other as Properties
-
-            if (timerList != other.timerList) return false
-
-            return true
-        }
-
-        override fun hashCode(): Int {
-            return timerList.hashCode()
-        }
-
-        class Builder {
-            private var timerList: Property<TimerValue>? = null
-
-            fun setTimerList(timerList: Property<TimerValue>): Builder = apply {
-                this.timerList = timerList
-            }
-
-            fun build(): Properties = Properties(timerList)
-        }
-    }
-
     class Arguments internal constructor(val timerList: List<TimerValue>?) {
         override fun toString(): String {
             return "Arguments(timerList=$timerList)"
diff --git a/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StartEmergencySharing.kt b/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StartEmergencySharing.kt
index a0829de..11e0682 100644
--- a/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StartEmergencySharing.kt
+++ b/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StartEmergencySharing.kt
@@ -17,13 +17,14 @@
 package androidx.appactions.interaction.capabilities.safety
 
 import androidx.appactions.builtintypes.experimental.types.GenericErrorStatus
-import androidx.appactions.builtintypes.experimental.types.SuccessStatus
 import androidx.appactions.builtintypes.experimental.types.NoInternetConnection
-import androidx.appactions.interaction.capabilities.core.Capability
+import androidx.appactions.builtintypes.experimental.types.SuccessStatus
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
+import androidx.appactions.interaction.capabilities.core.properties.Property
 import androidx.appactions.interaction.capabilities.safety.executionstatus.EmergencySharingInProgress
 import androidx.appactions.interaction.capabilities.safety.executionstatus.SafetyAccountNotLoggedIn
 import androidx.appactions.interaction.capabilities.safety.executionstatus.SafetyFeatureNotOnboarded
@@ -37,7 +38,6 @@
 
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(StartEmergencySharing.Properties::class.java)
         .setArguments(
             StartEmergencySharing.Arguments::class.java,
             StartEmergencySharing.Arguments::Builder
@@ -55,17 +55,16 @@
     // TODO(b/267805819): Update to include the SessionFactory once Session API is ready.
     class CapabilityBuilder :
         Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession,
+            CapabilityBuilder, Arguments, Output, Confirmation, ExecutionSession,
             >(ACTION_SPEC) {
+
+        private var properties = mutableMapOf<String, Property<*>>()
         override fun build(): Capability {
-            super.setProperty(Properties())
+            super.setProperty(properties)
             return super.build()
         }
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties internal constructor()
-
     class Arguments internal constructor() {
         class Builder : BuilderOf<Arguments> {
             override fun build(): Arguments = Arguments()
diff --git a/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StartSafetyCheck.kt b/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StartSafetyCheck.kt
index cd5b319..9bb6f01 100644
--- a/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StartSafetyCheck.kt
+++ b/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StartSafetyCheck.kt
@@ -21,8 +21,8 @@
 import androidx.appactions.builtintypes.experimental.types.NoInternetConnection
 import androidx.appactions.builtintypes.experimental.types.SafetyCheck
 import androidx.appactions.builtintypes.experimental.types.SuccessStatus
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.ParamValueConverter
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
@@ -42,21 +42,31 @@
 /** StartSafetyCheck.kt in interaction-capabilities-safety */
 private const val CAPABILITY_NAME = "actions.intent.START_SAFETY_CHECK"
 
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(StartSafetyCheck.Properties::class.java)
         .setArguments(StartSafetyCheck.Arguments::class.java, StartSafetyCheck.Arguments::Builder)
         .setOutput(StartSafetyCheck.Output::class.java)
         .bindOptionalParameter(
             "safetyCheck.duration",
-            { property -> Optional.ofNullable(property.duration) },
+            { properties ->
+                Optional.ofNullable(
+                    properties[StartSafetyCheck.PropertyMapStrings.DURATION.key]
+                        as Property<Duration>
+                )
+            },
             StartSafetyCheck.Arguments.Builder::setDuration,
             TypeConverters.DURATION_PARAM_VALUE_CONVERTER,
             TypeConverters.DURATION_ENTITY_CONVERTER
         )
         .bindOptionalParameter(
             "safetyCheck.checkInTime",
-            { property -> Optional.ofNullable(property.checkInTime) },
+            { property ->
+                Optional.ofNullable(
+                    property[StartSafetyCheck.PropertyMapStrings.CHECK_IN_TIME.key]
+                        as Property<ZonedDateTime>
+                )
+            },
             StartSafetyCheck.Arguments.Builder::setCheckInTime,
             TypeConverters.ZONED_DATETIME_PARAM_VALUE_CONVERTER,
             TypeConverters.ZONED_DATETIME_ENTITY_CONVERTER
@@ -75,60 +85,30 @@
 
 // TODO(b/267806701): Add capability factory annotation once the testing library is fully migrated.
 class StartSafetyCheck private constructor() {
+    internal enum class PropertyMapStrings(val key: String) {
+        DURATION("safetycheck.duration"),
+        CHECK_IN_TIME("safetycheck.checkInTime"),
+    }
+
     // TODO(b/267805819): Update to include the SessionFactory once Session API is ready.
     class CapabilityBuilder :
         Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession
+            CapabilityBuilder, Arguments, Output, Confirmation, ExecutionSession
             >(ACTION_SPEC) {
+        private var properties = mutableMapOf<String, Property<*>>()
+
+        fun setDuration(duration: Property<Duration>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.DURATION.key] = duration }
+
+        fun setCheckInTime(checkInTime: Property<ZonedDateTime>): CapabilityBuilder =
+            apply { properties[PropertyMapStrings.CHECK_IN_TIME.key] = checkInTime }
+
         override fun build(): Capability {
-            // TODO(b/268369632): No-op remove empty property builder after Property od removed
-            super.setProperty(Properties.Builder().build())
+            super.setProperty(properties)
             return super.build()
         }
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties internal constructor(
-        val duration: Property<Duration>?,
-        val checkInTime: Property<ZonedDateTime>?
-    ) {
-        override fun toString(): String {
-            return "Property(duration=$duration, checkInTime=$checkInTime)"
-        }
-
-        override fun equals(other: Any?): Boolean {
-            if (this === other) return true
-            if (javaClass != other?.javaClass) return false
-
-            other as Properties
-
-            if (duration != other.duration) return false
-            if (checkInTime != other.checkInTime) return false
-
-            return true
-        }
-
-        override fun hashCode(): Int {
-            var result = duration.hashCode()
-            result = 31 * result + checkInTime.hashCode()
-            return result
-        }
-
-        class Builder {
-            private var duration: Property<Duration>? = null
-
-            private var checkInTime: Property<ZonedDateTime>? = null
-
-            fun setDuration(duration: Property<Duration>): Builder =
-                apply { this.duration = duration }
-
-            fun setCheckInTime(checkInTime: Property<ZonedDateTime>): Builder =
-                apply { this.checkInTime = checkInTime }
-
-            fun build(): Properties = Properties(duration, checkInTime)
-        }
-    }
-
     class Arguments internal constructor(
         val duration: Duration?,
         val checkInTime: ZonedDateTime?
diff --git a/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StopEmergencySharing.kt b/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StopEmergencySharing.kt
index afc9f18..731aff5 100644
--- a/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StopEmergencySharing.kt
+++ b/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StopEmergencySharing.kt
@@ -20,11 +20,12 @@
 import androidx.appactions.builtintypes.experimental.types.GenericErrorStatus
 import androidx.appactions.builtintypes.experimental.types.NoInternetConnection
 import androidx.appactions.builtintypes.experimental.types.SuccessStatus
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
+import androidx.appactions.interaction.capabilities.core.properties.Property
 import androidx.appactions.interaction.capabilities.safety.executionstatus.SafetyAccountNotLoggedIn
 import androidx.appactions.interaction.capabilities.safety.executionstatus.SafetyFeatureNotOnboarded
 import androidx.appactions.interaction.proto.ParamValue
@@ -37,7 +38,6 @@
 
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(StopEmergencySharing.Properties::class.java)
         .setArguments(
             StopEmergencySharing.Arguments::class.java,
             StopEmergencySharing.Arguments::Builder
@@ -55,17 +55,17 @@
     // TODO(b/267805819): Update to include the SessionFactory once Session API is ready.
     class CapabilityBuilder :
         Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession,
+            CapabilityBuilder, Arguments, Output, Confirmation, ExecutionSession,
             >(ACTION_SPEC) {
+
+        private var properties = mutableMapOf<String, Property<*>>()
+
         override fun build(): Capability {
-            super.setProperty(Properties())
+            super.setProperty(properties)
             return super.build()
         }
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties internal constructor()
-
     class Arguments internal constructor() {
         class Builder : BuilderOf<Arguments> {
             override fun build(): Arguments = Arguments()
diff --git a/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StopSafetyCheck.kt b/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StopSafetyCheck.kt
index 3e5156b..3d3ffed 100644
--- a/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StopSafetyCheck.kt
+++ b/appactions/interaction/interaction-capabilities-safety/src/main/java/androidx/appactions/interaction/capabilities/safety/StopSafetyCheck.kt
@@ -20,11 +20,12 @@
 import androidx.appactions.builtintypes.experimental.types.GenericErrorStatus
 import androidx.appactions.builtintypes.experimental.types.NoInternetConnection
 import androidx.appactions.builtintypes.experimental.types.SuccessStatus
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
+import androidx.appactions.interaction.capabilities.core.properties.Property
 import androidx.appactions.interaction.capabilities.safety.executionstatus.SafetyAccountNotLoggedIn
 import androidx.appactions.interaction.capabilities.safety.executionstatus.SafetyFeatureNotOnboarded
 import androidx.appactions.interaction.proto.ParamValue
@@ -37,7 +38,6 @@
 
 private val ACTION_SPEC =
     ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-        .setDescriptor(StopSafetyCheck.Properties::class.java)
         .setArguments(StopSafetyCheck.Arguments::class.java, StopSafetyCheck.Arguments::Builder)
         .setOutput(StopSafetyCheck.Output::class.java)
         .bindOptionalOutput(
@@ -52,17 +52,16 @@
     // TODO(b/267805819): Update to include the SessionFactory once Session API is ready.
     class CapabilityBuilder :
         Capability.Builder<
-            CapabilityBuilder, Properties, Arguments, Output, Confirmation, ExecutionSession
+            CapabilityBuilder, Arguments, Output, Confirmation, ExecutionSession
             >(ACTION_SPEC) {
+
+        private var properties = mutableMapOf<String, Property<*>>()
         override fun build(): Capability {
-            super.setProperty(Properties())
+            super.setProperty(properties)
             return super.build()
         }
     }
 
-    // TODO(b/268369632): Remove Property from public capability APIs.
-    class Properties internal constructor()
-
     class Arguments internal constructor() {
         class Builder : BuilderOf<Arguments> {
             override fun build(): Arguments = Arguments()
diff --git a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/testing/internal/FakeCapability.kt b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/testing/internal/FakeCapability.kt
index 3d03fc9..9708c4a 100644
--- a/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/testing/internal/FakeCapability.kt
+++ b/appactions/interaction/interaction-service/src/test/java/androidx/appactions/interaction/service/testing/internal/FakeCapability.kt
@@ -16,26 +16,25 @@
 
 package androidx.appactions.interaction.service.testing.internal
 
-import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.BaseExecutionSession
-import androidx.appactions.interaction.capabilities.core.HostProperties
+import androidx.appactions.interaction.capabilities.core.Capability
 import androidx.appactions.interaction.capabilities.core.ValueListener
 import androidx.appactions.interaction.capabilities.core.impl.BuilderOf
 import androidx.appactions.interaction.capabilities.core.impl.converters.TypeConverters
 import androidx.appactions.interaction.capabilities.core.impl.spec.ActionSpecBuilder
-import androidx.appactions.interaction.capabilities.core.properties.StringValue
-import androidx.appactions.interaction.capabilities.core.properties.Property
 import androidx.appactions.interaction.capabilities.core.impl.task.SessionBridge
 import androidx.appactions.interaction.capabilities.core.impl.task.TaskHandler
+import androidx.appactions.interaction.capabilities.core.properties.Property
+import androidx.appactions.interaction.capabilities.core.properties.StringValue
 import java.util.Optional
 
 private const val CAPABILITY_NAME = "actions.intent.FAKE_CAPABILITY"
+@Suppress("UNCHECKED_CAST")
 private val ACTION_SPEC = ActionSpecBuilder.ofCapabilityNamed(CAPABILITY_NAME)
-    .setDescriptor(FakeCapability.Properties::class.java)
     .setArguments(FakeCapability.Arguments::class.java, FakeCapability.Arguments::Builder)
     .setOutput(FakeCapability.Output::class.java).bindOptionalParameter(
         "fieldOne",
-        { property -> Optional.ofNullable(property.fieldOne) },
+        { property -> Optional.ofNullable(property["fieldOne"] as Property<StringValue>) },
         FakeCapability.Arguments.Builder::setFieldOne,
         TypeConverters.STRING_PARAM_VALUE_CONVERTER,
         TypeConverters.STRING_VALUE_ENTITY_CONVERTER,
@@ -69,7 +68,6 @@
 
     class CapabilityBuilder : Capability.Builder<
         CapabilityBuilder,
-        Properties,
         Arguments,
         Output,
         Confirmation,
@@ -94,12 +92,14 @@
             this.fieldOne = fieldOne
         }
 
-        public override fun setExecutionSessionFactory(
-            sessionFactory: (hostProperties: HostProperties?) -> ExecutionSession,
-        ) = super.setExecutionSessionFactory(sessionFactory)
-
         override fun build(): Capability {
-            super.setProperty(Properties(fieldOne))
+            super.setProperty(
+                mutableMapOf(
+                    "fieldOne" to (
+                        fieldOne ?: Property.Builder<StringValue>().build()
+                        )
+                )
+            )
             return super.build()
         }
     }
diff --git a/benchmark/benchmark-common/src/main/java/androidx/benchmark/Outputs.kt b/benchmark/benchmark-common/src/main/java/androidx/benchmark/Outputs.kt
index ace3165..959758d 100644
--- a/benchmark/benchmark-common/src/main/java/androidx/benchmark/Outputs.kt
+++ b/benchmark/benchmark-common/src/main/java/androidx/benchmark/Outputs.kt
@@ -30,14 +30,14 @@
  * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
-public object Outputs {
+object Outputs {
 
     private val formatter: SimpleDateFormat = SimpleDateFormat("yyyy-MM-dd-HH-mm-ss")
 
     /**
      * The intended output directory that respects the `additionalTestOutputDir`.
      */
-    public val outputDirectory: File
+    val outputDirectory: File
 
     /**
      * The usable output directory, given permission issues with `adb shell` on Android R.
@@ -46,7 +46,7 @@
      * This dir can be read/written by app
      * This dir can be read by shell (see [forceFilesForShellAccessible] for API 21/22!)
      */
-    public val dirUsableByAppAndShell: File
+    val dirUsableByAppAndShell: File
 
     /**
      * Any file created by this process for the shell to use must be explicitly made filesystem
@@ -69,10 +69,12 @@
                 // Media directory. (b/216588251)
                 context.getFirstMountedMediaDir()
             }
+
             Build.VERSION.SDK_INT <= 22 -> {
                 // prior to API 23, shell didn't have access to externalCacheDir
                 context.cacheDir
             }
+
             else -> context.externalCacheDir
         } ?: throw IllegalStateException(
             "Unable to select a directory for writing files, " +
@@ -94,6 +96,9 @@
 
         Log.d(BenchmarkState.TAG, "Output Directory: $outputDirectory")
         outputDirectory.mkdirs()
+
+        // Clear all the existing files in the output directories
+        deleteFiles { true }
     }
 
     /**
@@ -104,7 +109,7 @@
      *
      * @return The absolute path of the output [File].
      */
-    public fun writeFile(
+    fun writeFile(
         fileName: String,
         reportKey: String,
         reportOnRunEndOnly: Boolean = false,
@@ -134,22 +139,22 @@
         return destination.absolutePath
     }
 
-    public fun sanitizeFilename(filename: String): String {
+    fun sanitizeFilename(filename: String): String {
         return filename
             .replace(" ", "")
             .replace("(", "[")
             .replace(")", "]")
     }
 
-    public fun testOutputFile(filename: String): File {
+    fun testOutputFile(filename: String): File {
         return File(outputDirectory, filename)
     }
 
-    public fun dateToFileName(date: Date = Date()): String {
+    fun dateToFileName(date: Date = Date()): String {
         return formatter.format(date)
     }
 
-    public fun relativePathFor(path: String): String {
+    fun relativePathFor(path: String): String {
         val hasOutputDirectoryPrefix = path.startsWith(outputDirectory.absolutePath)
         val relativePath = when {
             hasOutputDirectoryPrefix -> path.removePrefix("${outputDirectory.absolutePath}/")
@@ -160,4 +165,10 @@
         }
         return relativePath
     }
+
+    fun deleteFiles(filterBlock: (File) -> (Boolean)) {
+        listOf(outputDirectory, dirUsableByAppAndShell)
+            .flatMap { it.listFiles(filterBlock)?.asList() ?: emptyList() }
+            .forEach { it.delete() }
+    }
 }
diff --git a/benchmark/benchmark-macro-junit4/api/current.txt b/benchmark/benchmark-macro-junit4/api/current.txt
index 0bcc71e..94459b9 100644
--- a/benchmark/benchmark-macro-junit4/api/current.txt
+++ b/benchmark/benchmark-macro-junit4/api/current.txt
@@ -4,7 +4,7 @@
   @RequiresApi(28) public final class BaselineProfileRule implements org.junit.rules.TestRule {
     ctor public BaselineProfileRule();
     method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
-    method public void collectBaselineProfile(String packageName, optional int iterations, optional String? outputFilePrefix, optional boolean includeInStartupProfile, optional kotlin.jvm.functions.Function1<? super java.lang.String,java.lang.Boolean>? filterPredicate, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
+    method public void collectBaselineProfile(String packageName, optional int iterations, optional String? outputFilePrefix, optional boolean includeInStartupProfile, optional kotlin.jvm.functions.Function1<? super java.lang.String,java.lang.Boolean> filterPredicate, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
     method public void collectBaselineProfile(String packageName, optional int iterations, optional String? outputFilePrefix, optional boolean includeInStartupProfile, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
     method public void collectBaselineProfile(String packageName, optional int iterations, optional String? outputFilePrefix, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
     method public void collectBaselineProfile(String packageName, optional int iterations, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
diff --git a/benchmark/benchmark-macro-junit4/api/public_plus_experimental_current.txt b/benchmark/benchmark-macro-junit4/api/public_plus_experimental_current.txt
index bd292b7..f2b4517 100644
--- a/benchmark/benchmark-macro-junit4/api/public_plus_experimental_current.txt
+++ b/benchmark/benchmark-macro-junit4/api/public_plus_experimental_current.txt
@@ -4,12 +4,12 @@
   @RequiresApi(28) public final class BaselineProfileRule implements org.junit.rules.TestRule {
     ctor public BaselineProfileRule();
     method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
-    method public void collectBaselineProfile(String packageName, optional int iterations, optional String? outputFilePrefix, optional boolean includeInStartupProfile, optional kotlin.jvm.functions.Function1<? super java.lang.String,java.lang.Boolean>? filterPredicate, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
+    method public void collectBaselineProfile(String packageName, optional int iterations, optional String? outputFilePrefix, optional boolean includeInStartupProfile, optional kotlin.jvm.functions.Function1<? super java.lang.String,java.lang.Boolean> filterPredicate, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
     method public void collectBaselineProfile(String packageName, optional int iterations, optional String? outputFilePrefix, optional boolean includeInStartupProfile, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
     method public void collectBaselineProfile(String packageName, optional int iterations, optional String? outputFilePrefix, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
     method public void collectBaselineProfile(String packageName, optional int iterations, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
     method public void collectBaselineProfile(String packageName, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
-    method @androidx.benchmark.macro.ExperimentalStableBaselineProfilesApi public void collectStableBaselineProfile(String packageName, int maxIterations, optional int stableIterations, optional String? outputFilePrefix, optional boolean includeInStartupProfile, optional boolean strictStability, optional kotlin.jvm.functions.Function1<? super java.lang.String,java.lang.Boolean>? filterPredicate, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
+    method @androidx.benchmark.macro.ExperimentalStableBaselineProfilesApi public void collectStableBaselineProfile(String packageName, int maxIterations, optional int stableIterations, optional String? outputFilePrefix, optional boolean includeInStartupProfile, optional boolean strictStability, optional kotlin.jvm.functions.Function1<? super java.lang.String,java.lang.Boolean> filterPredicate, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
     method @androidx.benchmark.macro.ExperimentalStableBaselineProfilesApi public void collectStableBaselineProfile(String packageName, int maxIterations, optional int stableIterations, optional String? outputFilePrefix, optional boolean includeInStartupProfile, optional boolean strictStability, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
     method @androidx.benchmark.macro.ExperimentalStableBaselineProfilesApi public void collectStableBaselineProfile(String packageName, int maxIterations, optional int stableIterations, optional String? outputFilePrefix, optional boolean includeInStartupProfile, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
     method @androidx.benchmark.macro.ExperimentalStableBaselineProfilesApi public void collectStableBaselineProfile(String packageName, int maxIterations, optional int stableIterations, optional String? outputFilePrefix, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
diff --git a/benchmark/benchmark-macro-junit4/api/restricted_current.txt b/benchmark/benchmark-macro-junit4/api/restricted_current.txt
index 0bcc71e..94459b9 100644
--- a/benchmark/benchmark-macro-junit4/api/restricted_current.txt
+++ b/benchmark/benchmark-macro-junit4/api/restricted_current.txt
@@ -4,7 +4,7 @@
   @RequiresApi(28) public final class BaselineProfileRule implements org.junit.rules.TestRule {
     ctor public BaselineProfileRule();
     method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
-    method public void collectBaselineProfile(String packageName, optional int iterations, optional String? outputFilePrefix, optional boolean includeInStartupProfile, optional kotlin.jvm.functions.Function1<? super java.lang.String,java.lang.Boolean>? filterPredicate, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
+    method public void collectBaselineProfile(String packageName, optional int iterations, optional String? outputFilePrefix, optional boolean includeInStartupProfile, optional kotlin.jvm.functions.Function1<? super java.lang.String,java.lang.Boolean> filterPredicate, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
     method public void collectBaselineProfile(String packageName, optional int iterations, optional String? outputFilePrefix, optional boolean includeInStartupProfile, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
     method public void collectBaselineProfile(String packageName, optional int iterations, optional String? outputFilePrefix, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
     method public void collectBaselineProfile(String packageName, optional int iterations, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
diff --git a/benchmark/benchmark-macro-junit4/src/main/java/androidx/benchmark/macro/junit4/BaselineProfileRule.kt b/benchmark/benchmark-macro-junit4/src/main/java/androidx/benchmark/macro/junit4/BaselineProfileRule.kt
index 12dca06..8a0d906 100644
--- a/benchmark/benchmark-macro-junit4/src/main/java/androidx/benchmark/macro/junit4/BaselineProfileRule.kt
+++ b/benchmark/benchmark-macro-junit4/src/main/java/androidx/benchmark/macro/junit4/BaselineProfileRule.kt
@@ -125,7 +125,7 @@
         iterations: Int = 3,
         outputFilePrefix: String? = null,
         includeInStartupProfile: Boolean = false,
-        filterPredicate: ((String) -> Boolean)? = null,
+        filterPredicate: ((String) -> Boolean) = { true },
         profileBlock: MacrobenchmarkScope.() -> Unit
     ) {
         collectBaselineProfile(
@@ -170,7 +170,7 @@
         outputFilePrefix: String? = null,
         includeInStartupProfile: Boolean = false,
         strictStability: Boolean = false,
-        filterPredicate: ((String) -> Boolean)? = null,
+        filterPredicate: ((String) -> Boolean) = { true },
         profileBlock: MacrobenchmarkScope.() -> Unit
     ) {
         collectStableBaselineProfile(
diff --git a/benchmark/benchmark-macro/api/restricted_current.ignore b/benchmark/benchmark-macro/api/restricted_current.ignore
index 870da85..0e7f13d 100644
--- a/benchmark/benchmark-macro/api/restricted_current.ignore
+++ b/benchmark/benchmark-macro/api/restricted_current.ignore
@@ -1,6 +1,8 @@
 // Baseline format: 1.0
 RemovedClass: androidx.benchmark.macro.Api29Kt:
     Removed class androidx.benchmark.macro.Api29Kt
+RemovedClass: androidx.benchmark.macro.BaselineProfilesKt:
+    Removed class androidx.benchmark.macro.BaselineProfilesKt
 RemovedClass: androidx.benchmark.macro.FrameTimingGfxInfoMetric:
     Removed class androidx.benchmark.macro.FrameTimingGfxInfoMetric
 RemovedClass: androidx.benchmark.macro.IdeSummaryStringKt:
@@ -17,9 +19,5 @@
     Removed class androidx.benchmark.macro.TagKt
 
 
-RemovedMethod: androidx.benchmark.macro.BaselineProfilesKt#collectBaselineProfile(String, String, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit>):
-    Removed method androidx.benchmark.macro.BaselineProfilesKt.collectBaselineProfile(String,String,kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit>)
-
-
 RemovedPackage: androidx.benchmark.macro.perfetto:
     Removed package androidx.benchmark.macro.perfetto
diff --git a/benchmark/benchmark-macro/api/restricted_current.txt b/benchmark/benchmark-macro/api/restricted_current.txt
index a5eae3b..3954702 100644
--- a/benchmark/benchmark-macro/api/restricted_current.txt
+++ b/benchmark/benchmark-macro/api/restricted_current.txt
@@ -9,11 +9,6 @@
     enum_constant public static final androidx.benchmark.macro.BaselineProfileMode UseIfAvailable;
   }
 
-  public final class BaselineProfilesKt {
-    method @RequiresApi(28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void collectStableBaselineProfile(String uniqueName, String packageName, int stableIterations, int maxIterations, optional boolean strictStability, boolean includeInStartupProfile, kotlin.jvm.functions.Function1<? super java.lang.String,java.lang.Boolean>? filterPredicate, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
-    method @RequiresApi(28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void collectStableBaselineProfile(String uniqueName, String packageName, int stableIterations, int maxIterations, boolean includeInStartupProfile, kotlin.jvm.functions.Function1<? super java.lang.String,java.lang.Boolean>? filterPredicate, kotlin.jvm.functions.Function1<? super androidx.benchmark.macro.MacrobenchmarkScope,kotlin.Unit> profileBlock);
-  }
-
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class BatteryCharge {
     method public boolean hasMinimumCharge(optional boolean throwOnMissingMetrics);
     field public static final androidx.benchmark.macro.BatteryCharge INSTANCE;
diff --git a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/BaselineProfilesTest.kt b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/BaselineProfilesTest.kt
index 2c4eb75..8c5199a 100644
--- a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/BaselineProfilesTest.kt
+++ b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/BaselineProfilesTest.kt
@@ -36,21 +36,19 @@
             HSPLjava/io/DataOutputStream;->writeByte(I)V+]Ljava/io/OutputStream;missing_types
         """.trimIndent()
 
-        val filtered = filterProfileRulesToTargetP(profile, sortRules = false)
+        val filtered = filterProfileRulesToTargetP(profile, sortRules = false) { true }
         assertEquals(filtered.lines().size, 1)
         assertEquals("Landroidx/Foo/Bar;", filtered)
     }
 
     @Test
     fun filterBaselineRulesWithSorting() {
-        // https://youtrack.jetbrains.com/issue/KT-2425
-        val dollar = "$"
         val profile = """
             HPLandroidx/lifecycle/Lifecycle${dollar}Event;->downFrom(Landroidx/lifecycle/Lifecycle${dollar}State;)Landroidx/lifecycle/Lifecycle${dollar}Event;
             HSPLandroidx/lifecycle/ClassesInfoCache${dollar}CallbackInfo;-><init>(Ljava/util/Map;)V
             HSPLandroidx/lifecycle/ClassesInfoCache${dollar}CallbackInfo;->invokeCallbacks(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle${dollar}Event;Ljava/lang/Object;)V
         """.trimIndent()
-        val sorted = filterProfileRulesToTargetP(profile, sortRules = true)
+        val sorted = filterProfileRulesToTargetP(profile, sortRules = true) { true }
         assertEquals(sorted.lines().size, 3)
         val expected = """
             HSPLandroidx/lifecycle/ClassesInfoCache${dollar}CallbackInfo;-><init>(Ljava/util/Map;)V
@@ -61,6 +59,24 @@
     }
 
     @Test
+    fun filterBaselineRulesWithSortingAndCustomFilter() {
+        val profile = """
+            HPLandroidx/lifecycle/Lifecycle${dollar}Event;->downFrom(Landroidx/lifecycle/Lifecycle${dollar}State;)Landroidx/lifecycle/Lifecycle${dollar}Event;
+            HSPLandroidx/lifecycle/ClassesInfoCache${dollar}CallbackInfo;->invokeCallbacks(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle${dollar}Event;Ljava/lang/Object;)V
+            HSPLandroidx/lifecycle/ClassesInfoCache${dollar}CallbackInfo;-><init>(Ljava/util/Map;)V
+        """.trimIndent()
+        val sorted = filterProfileRulesToTargetP(profile, sortRules = true) {
+            it.startsWith("HSPL")
+        }
+        assertEquals(sorted.lines().size, 2)
+        val expected = """
+            HSPLandroidx/lifecycle/ClassesInfoCache${dollar}CallbackInfo;-><init>(Ljava/util/Map;)V
+            HSPLandroidx/lifecycle/ClassesInfoCache${dollar}CallbackInfo;->invokeCallbacks(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle${dollar}Event;Ljava/lang/Object;)V
+        """.trimIndent()
+        assertEquals(expected, sorted)
+    }
+
+    @Test
     fun deviceSpecifier() {
         if (DeviceInfo.isEmulator) {
             assertEquals(deviceSpecifier, "-e ")
@@ -70,4 +86,8 @@
             assertNotEquals(deviceSpecifier, "-s  ")
         }
     }
+    companion object {
+        // https://youtrack.jetbrains.com/issue/KT-2425
+        const val dollar = "$"
+    }
 }
diff --git a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/BaselineProfiles.kt b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/BaselineProfiles.kt
index d19339e..7ce8f71 100644
--- a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/BaselineProfiles.kt
+++ b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/BaselineProfiles.kt
@@ -16,6 +16,7 @@
 
 package androidx.benchmark.macro
 
+import android.annotation.SuppressLint
 import android.os.Build
 import android.util.Log
 import androidx.annotation.RequiresApi
@@ -37,13 +38,12 @@
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @RequiresApi(28)
-@JvmOverloads
 fun collectBaselineProfile(
     uniqueName: String,
     packageName: String,
     iterations: Int = 3,
     includeInStartupProfile: Boolean,
-    filterPredicate: ((String) -> Boolean)?,
+    filterPredicate: ((String) -> Boolean),
     profileBlock: MacrobenchmarkScope.() -> Unit,
 ) {
     val scope = buildMacrobenchmarkScope(packageName)
@@ -83,12 +83,13 @@
                 runs a non-trivial amount of code.
             """.trimIndent()
         }
-        // Filter
-        val profile = filterProfileRulesToTargetP(unfilteredProfile, sortRules = true)
-        // Report
+        val profile = filterProfileRulesToTargetP(
+            profile = unfilteredProfile,
+            sortRules = true,
+            filterPredicate = filterPredicate
+        )
         reportResults(
             profile = profile,
-            filterPredicate = filterPredicate,
             uniqueFilePrefix = uniqueName,
             startTime = startTime,
             includeInStartupProfile = includeInStartupProfile
@@ -103,9 +104,8 @@
  * waiting until they are stable.
  * @suppress
  */
-@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
+@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @RequiresApi(28)
-@JvmOverloads
 fun collectStableBaselineProfile(
     uniqueName: String,
     packageName: String,
@@ -113,7 +113,7 @@
     maxIterations: Int,
     strictStability: Boolean = false,
     includeInStartupProfile: Boolean,
-    filterPredicate: ((String) -> Boolean)?,
+    filterPredicate: ((String) -> Boolean),
     profileBlock: MacrobenchmarkScope.() -> Unit
 ) {
     val scope = buildMacrobenchmarkScope(packageName)
@@ -198,10 +198,13 @@
                 " invokes the target app, and runs a non-trivial amount of code"
         }
 
-        val profile = filterProfileRulesToTargetP(lastProfile, sortRules = true)
+        val profile = filterProfileRulesToTargetP(
+            profile = lastProfile,
+            sortRules = true,
+            filterPredicate = filterPredicate
+        )
         reportResults(
             profile = profile,
-            filterPredicate = filterPredicate,
             uniqueFilePrefix = uniqueName,
             startTime = startTime,
             includeInStartupProfile = includeInStartupProfile
@@ -230,6 +233,7 @@
 /**
  * Builds a function that can kill the target process using the provided [MacrobenchmarkScope].
  */
+@SuppressLint("BanThreadSleep")
 private fun MacrobenchmarkScope.killProcessBlock(): () -> Unit {
     val killProcessBlock = {
         // When generating baseline profiles we want to default to using
@@ -246,14 +250,10 @@
  */
 private fun reportResults(
     profile: String,
-    filterPredicate: ((String) -> Boolean)?,
     uniqueFilePrefix: String,
     startTime: Long,
     includeInStartupProfile: Boolean
 ) {
-    // Filter profile if necessary based on filters
-    val filteredProfile = applyPackageFilters(profile, filterPredicate)
-
     // Write a file with a timestamp to be able to disambiguate between runs with the same
     // unique name.
 
@@ -272,10 +272,10 @@
             )
         }
 
-    val absolutePath = Outputs.writeFile(fileName, reportKey) { it.writeText(filteredProfile) }
+    val absolutePath = Outputs.writeFile(fileName, reportKey) { it.writeText(profile) }
     val tsAbsolutePath = Outputs.writeFile(tsFileName, "baseline-profile-ts") {
         Log.d(TAG, "Pull Baseline Profile with: `adb pull \"${it.absolutePath}\" .`")
-        it.writeText(filteredProfile)
+        it.writeText(profile)
     }
 
     val totalRunTime = System.nanoTime() - startTime
@@ -382,7 +382,11 @@
 }
 
 @VisibleForTesting
-internal fun filterProfileRulesToTargetP(profile: String, sortRules: Boolean = true): String {
+internal fun filterProfileRulesToTargetP(
+    profile: String,
+    sortRules: Boolean = true,
+    filterPredicate: ((String) -> Boolean)
+): String {
     val rules = profile.lines()
     var filteredRules = rules.filterNot { rule ->
         // We want to filter out rules that are not supported on P. (b/216508418)
@@ -390,7 +394,8 @@
         if (rule.startsWith("[")) { // Array qualifier
             true
         } else rule.contains("+") // Inline cache specifier
-    }
+    }.filter(filterPredicate)
+
     if (sortRules) {
         filteredRules = filteredRules.mapNotNull { ProfileRule.parse(it) }
             .sortedWith(ProfileRule.comparator)
@@ -399,14 +404,6 @@
     return filteredRules.joinToString(separator = "\n")
 }
 
-private fun applyPackageFilters(profile: String, filterPredicate: ((String) -> Boolean)?): String {
-    return filterPredicate?.run {
-        profile
-            .lines()
-            .filter(filterPredicate).joinToString(System.lineSeparator())
-    } ?: profile
-}
-
 private fun summaryRecord(record: Summary): String {
     val summary = StringBuilder()
 
diff --git a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/scanner/ScannerFragment.kt b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/scanner/ScannerFragment.kt
index 76d6330..dc9536e 100644
--- a/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/scanner/ScannerFragment.kt
+++ b/bluetooth/integration-tests/testapp/src/main/java/androidx/bluetooth/integration/testapp/ui/scanner/ScannerFragment.kt
@@ -16,6 +16,10 @@
 
 package androidx.bluetooth.integration.testapp.ui.scanner
 
+// TODO(ofy) Migrate from androidx.bluetooth.integration.testapp.experimental.BluetoothLe to
+// androidx.bluetooth.BluetoothDevice once in place
+// TODO(ofy) Migrate from androidx.bluetooth.integration.testapp.experimental.BluetoothLe to
+// androidx.bluetooth.BluetoothLe once scan API is in place
 import android.bluetooth.le.ScanResult
 import android.bluetooth.le.ScanSettings
 import android.os.Bundle
@@ -28,8 +32,6 @@
 import androidx.bluetooth.integration.testapp.R
 import androidx.bluetooth.integration.testapp.databinding.FragmentScannerBinding
 import android.annotation.SuppressLint
-// TODO(ofy) Migrate to androidx.bluetooth.BluetoothDevice once in place
-// TODO(ofy) Migrate to androidx.bluetooth.BluetoothLe once scan API is in place
 import androidx.bluetooth.integration.testapp.experimental.BluetoothLe
 import androidx.bluetooth.integration.testapp.ui.common.getColor
 import androidx.core.view.isVisible
diff --git a/buildSrc-tests/src/test/kotlin/androidx/build/KmpPlatformsTest.kt b/buildSrc-tests/src/test/kotlin/androidx/build/KmpPlatformsTest.kt
index c7e2ad8..c81ae66 100644
--- a/buildSrc-tests/src/test/kotlin/androidx/build/KmpPlatformsTest.kt
+++ b/buildSrc-tests/src/test/kotlin/androidx/build/KmpPlatformsTest.kt
@@ -23,63 +23,69 @@
 
     @Test
     fun withAnEmptyFlag_itReturnsTheDefaultValue() {
-        assertThat(KmpFlagParser.parse("")).isEqualTo(setOf(KmpPlatform.JVM))
+        assertThat(KmpFlagParser.parse("")).isEqualTo(
+            setOf(KmpPlatform.JVM, KmpPlatform.DESKTOP)
+        )
     }
 
     @Test
     fun withANullFlag_itReturnsTheDefaultValue() {
-        assertThat(KmpFlagParser.parse(null)).isEqualTo(setOf(KmpPlatform.JVM))
+        assertThat(KmpFlagParser.parse(null)).isEqualTo(
+            setOf(KmpPlatform.JVM, KmpPlatform.DESKTOP)
+        )
     }
 
     @Test
     fun withASingleDefaultPlatform_itParsesTheFlagCorrectly() {
-        assertThat(KmpFlagParser.parse("+jvm")).isEqualTo(setOf(KmpPlatform.JVM))
+        assertThat(KmpFlagParser.parse("+jvm")).isEqualTo(
+            setOf(KmpPlatform.JVM, KmpPlatform.DESKTOP)
+        )
     }
 
     @Test
     fun withNoPlatforms_itParsesTheFlagCorrectly() {
-        assertThat(KmpFlagParser.parse("-jvm")).isEqualTo(emptySet<KmpPlatform>())
+        assertThat(KmpFlagParser.parse("-jvm,-desktop")).isEqualTo(emptySet<KmpPlatform>())
     }
 
     @Test
     fun withASingleNonDefaultPlatform_itParsesTheFlagCorrectly() {
         assertThat(KmpFlagParser.parse("+js")).isEqualTo(
-            setOf(KmpPlatform.JVM, KmpPlatform.JS)
+            setOf(KmpPlatform.JVM, KmpPlatform.JS, KmpPlatform.DESKTOP)
         )
     }
 
     @Test
     fun withAMultiplePlatforms_itParsesTheFlagCorrectly() {
         assertThat(KmpFlagParser.parse("+js,+mac")).isEqualTo(
-            setOf(KmpPlatform.JVM, KmpPlatform.JS, KmpPlatform.MAC)
+            setOf(KmpPlatform.JVM, KmpPlatform.JS, KmpPlatform.MAC, KmpPlatform.DESKTOP)
         )
     }
 
     @Test
     fun withNegativeFlags_itParsesTheFlagCorrectly() {
         assertThat(KmpFlagParser.parse("-jvm,+mac")).isEqualTo(
-            setOf(KmpPlatform.MAC)
+            setOf(KmpPlatform.MAC, KmpPlatform.DESKTOP)
         )
     }
 
     @Test
     fun withTheNativeFlag_itParsesTheFlagCorrectly() {
         assertThat(KmpFlagParser.parse("+native")).isEqualTo(
-            setOf(KmpPlatform.JVM, KmpPlatform.MAC, KmpPlatform.LINUX)
+            setOf(KmpPlatform.JVM, KmpPlatform.MAC, KmpPlatform.LINUX, KmpPlatform.DESKTOP)
         )
     }
 
     @Test
     fun withMultipleFlagsIncludingTheNativeFlag_itParsesTheFlagCorrectly() {
         assertThat(KmpFlagParser.parse("-jvm,+native,+js")).isEqualTo(
-            setOf(KmpPlatform.JS, KmpPlatform.MAC, KmpPlatform.LINUX)
+            setOf(KmpPlatform.JS, KmpPlatform.MAC, KmpPlatform.LINUX, KmpPlatform.DESKTOP)
         )
     }
 
     @Test
     fun withRedundentFlags_itParsesTheFlagCorrectly() {
         assertThat(KmpFlagParser.parse("-jvm,+native,+linux,+mac,+linux")).isEqualTo(
-            setOf(KmpPlatform.MAC, KmpPlatform.LINUX)
+            setOf(KmpPlatform.MAC, KmpPlatform.LINUX, KmpPlatform.DESKTOP)
         )
     }
 }
\ No newline at end of file
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXMultiplatformExtension.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXMultiplatformExtension.kt
index 6c1b432..f6c6252 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXMultiplatformExtension.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXMultiplatformExtension.kt
@@ -86,6 +86,17 @@
         } else { null }
     }
 
+    @JvmOverloads
+    fun desktop(
+        block: Action<KotlinJvmTarget>? = null
+    ): KotlinJvmTarget? {
+        return if (project.enableJvm()) {
+            kotlinExtension.jvm("desktop") {
+                block?.execute(this)
+            }
+        } else { null }
+    }
+
     /**
      * Configures all mac targets supported by AndroidX.
      */
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/VerifyDependencyVersionsTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/VerifyDependencyVersionsTask.kt
index e16b300..3cb172a 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/VerifyDependencyVersionsTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/VerifyDependencyVersionsTask.kt
@@ -206,6 +206,11 @@
 
     // Don't check Hilt compile-only configurations
     if (name.startsWith("hiltCompileOnly")) return false
+
+    // Don't check Desktop configurations since we don't publish them anyway
+    if (name.startsWith("desktop")) return false
+    if (name.startsWith("skiko")) return false
+
     return true
 }
 
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/docs/AndroidXKmpDocsImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/docs/AndroidXKmpDocsImplPlugin.kt
index b3be53b..d6a11f1 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/docs/AndroidXKmpDocsImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/docs/AndroidXKmpDocsImplPlugin.kt
@@ -23,6 +23,7 @@
 import org.gradle.api.Plugin
 import org.gradle.api.Project
 import org.gradle.api.artifacts.Configuration
+import org.gradle.api.attributes.Category
 import org.gradle.api.attributes.LibraryElements
 import org.gradle.api.model.ObjectFactory
 import org.gradle.api.tasks.bundling.Zip
@@ -94,6 +95,10 @@
                     LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE,
                     objectFactory.named(ATTRIBUTE_NAME)
                 )
+                it.attribute(
+                    Category.CATEGORY_ATTRIBUTE,
+                    objectFactory.named(Category.DOCUMENTATION)
+                )
             }
         }
     }
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/transform/ConfigureAarAsJar.kt b/buildSrc/private/src/main/kotlin/androidx/build/transform/ConfigureAarAsJar.kt
index 590be01..1b04cf7 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/transform/ConfigureAarAsJar.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/transform/ConfigureAarAsJar.kt
@@ -20,6 +20,7 @@
 import org.gradle.api.Project
 import org.gradle.api.attributes.Attribute
 import org.gradle.api.attributes.Usage
+import org.gradle.api.attributes.java.TargetJvmEnvironment
 
 /**
  * Creates `testAarAsJar` configuration that can be used for JVM tests that need to Android library
@@ -56,4 +57,11 @@
     project.configurations.getByName(configurationName).dependencies.add(
         project.dependencies.create(aarAsJar)
     )
+
+    // Added to allow the :external:paparazzi:paparazzi build to select the correct jar (not get
+    // confused by the mpp jars) when the mpp builds are enabled
+    project.configurations.getByName(testAarsAsJars.name).attributes.attribute(
+        TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE,
+        project.objects.named(TargetJvmEnvironment::class.java, TargetJvmEnvironment.ANDROID)
+    )
 }
\ No newline at end of file
diff --git a/buildSrc/public/src/main/kotlin/androidx/build/KmpPlatforms.kt b/buildSrc/public/src/main/kotlin/androidx/build/KmpPlatforms.kt
index 802d8ef..7961e09 100644
--- a/buildSrc/public/src/main/kotlin/androidx/build/KmpPlatforms.kt
+++ b/buildSrc/public/src/main/kotlin/androidx/build/KmpPlatforms.kt
@@ -31,10 +31,11 @@
     // https://blog.jetbrains.com/kotlin/2021/10/important-ua-parser-js-exploit-and-kotlin-js/
     JS,
     MAC,
-    LINUX;
+    LINUX,
+    DESKTOP;
     companion object {
         val native = listOf(MAC, LINUX)
-        val enabledByDefault = listOf(JVM)
+        val enabledByDefault = listOf(JVM, DESKTOP)
         private const val JVM_PLATFORM = "jvm"
         private const val JS_PLATFORM = "js"
         private const val MAC_ARM_64 = "macosarm64"
@@ -43,6 +44,7 @@
         private const val IOS_SIMULATOR_ARM_64 = "iossimulatorarm64"
         private const val IOS_X_64 = "iosx64"
         private const val IOS_ARM_64 = "iosarm64"
+        private const val DESKTOP_PLATFORM = "desktop"
         val macPlatforms = listOf(MAC_ARM_64, MAC_OSX_64)
         val linuxPlatforms = listOf(LINUX_64)
         val iosPlatforms = listOf(IOS_SIMULATOR_ARM_64, IOS_ARM_64, IOS_X_64)
@@ -88,4 +90,5 @@
 fun Project.enableLinux(): Boolean =
     enabledKmpPlatforms().contains(KmpPlatform.LINUX) || Multiplatform.isKotlinNativeEnabled(this)
 fun Project.enableJvm(): Boolean = enabledKmpPlatforms().contains(KmpPlatform.JVM)
+fun Project.enableDesktop(): Boolean = enabledKmpPlatforms().contains(KmpPlatform.DESKTOP)
 fun Project.enableNative(): Boolean = enableMac() && enableLinux()
\ No newline at end of file
diff --git a/buildSrc/public/src/main/kotlin/androidx/build/Multiplatform.kt b/buildSrc/public/src/main/kotlin/androidx/build/Multiplatform.kt
index 326c96f..554c2fdf 100644
--- a/buildSrc/public/src/main/kotlin/androidx/build/Multiplatform.kt
+++ b/buildSrc/public/src/main/kotlin/androidx/build/Multiplatform.kt
@@ -40,6 +40,7 @@
         @JvmStatic
         fun isKotlinNativeEnabled(project: Project): Boolean {
             return "KMP".equals(System.getenv()["ANDROIDX_PROJECTS"], ignoreCase = true) ||
+                "INFRAROGUE".equals(System.getenv()["ANDROIDX_PROJECTS"], ignoreCase = true) ||
                 ProjectLayoutType.isPlayground(project) ||
                 project.providers.gradleProperty("androidx.kmp.native.enabled")
                     .orNull?.toBoolean() == true
diff --git a/busytown/androidx.sh b/busytown/androidx.sh
index 621ff22..ef344d5 100755
--- a/busytown/androidx.sh
+++ b/busytown/androidx.sh
@@ -22,6 +22,8 @@
       -Pandroidx.enableComposeCompilerMetrics=true \
       -Pandroidx.enableComposeCompilerReports=true \
       -Pandroidx.constraints=true \
+      # If/when we enable desktop, enable VerifyDependencyVersionsTask.kt/shouldVerifyConfiguration
+      -Pandroidx.enabled.kmp.target.platforms=-desktop \
       --no-daemon \
       --profile "$@"; then
     EXIT_VALUE=1
diff --git a/busytown/androidx_compose_multiplatform.sh b/busytown/androidx_compose_multiplatform.sh
index 5f39449..dd31e36 100755
--- a/busytown/androidx_compose_multiplatform.sh
+++ b/busytown/androidx_compose_multiplatform.sh
@@ -9,10 +9,15 @@
 
 
 # b/235340662 don't verify dependency versions because we cannot pin to multiplatform deps
-./androidx.sh \
-  -Pandroidx.compose.multiplatformEnabled=true \
-  compileDebugAndroidTestSources \
-  compileDebugSources \
-  desktopTestClasses \
-  -x verifyDependencyVersions  \
-  -Pandroidx.enableAffectedModuleDetection=false "$@"
+impl/build.sh buildOnServer createAllArchives checkExternalLicenses listTaskOutputs \
+      -Pandroidx.compose.multiplatformEnabled=true \
+      -Pandroidx.enableComposeCompilerMetrics=true \
+      -Pandroidx.enableComposeCompilerReports=true \
+      -Pandroidx.constraints=true \
+      --no-daemon \
+      --profile \
+      compileDebugAndroidTestSources \
+      compileDebugSources \
+      desktopTestClasses \
+      -x verifyDependencyVersions \
+      -Pandroidx.enableAffectedModuleDetection=false "$@"
diff --git a/busytown/androidx_multiplatform_linux.sh b/busytown/androidx_multiplatform_linux.sh
index 3f9d518..34e9b84 100755
--- a/busytown/androidx_multiplatform_linux.sh
+++ b/busytown/androidx_multiplatform_linux.sh
@@ -3,12 +3,12 @@
 cd "$(dirname $0)"
 
 # Builds all projects that support KMP except for Compose-specific projects which are already
-# covered by androidx_compose_multiplatform.sh
+# covered by androidx_compose_multiplatform.sh.
 
 # Must be run on Linux
 
-# build just KMP projects. This will also enable native targets.
-export ANDROIDX_PROJECTS=KMP
+# build just INFRAROGUE projects. This will also enable native targets.
+export ANDROIDX_PROJECTS=INFRAROGUE   # TODO: Switch from `INFRAROGUE` to `KMP`
 
 # disable cache, NS does not allow it yet: b/235227707
 export USE_ANDROIDX_REMOTE_BUILD_CACHE=false
diff --git a/busytown/androidx_multiplatform_mac.sh b/busytown/androidx_multiplatform_mac.sh
index 9f2dfbd..3373b9d 100755
--- a/busytown/androidx_multiplatform_mac.sh
+++ b/busytown/androidx_multiplatform_mac.sh
@@ -7,7 +7,7 @@
 
 # Must be run on Mac
 
-export ANDROIDX_PROJECTS=KMP
+export ANDROIDX_PROJECTS=INFRAROGUE   # TODO: Switch from `INFRAROGUE` to `KMP`
 
 # disable GCP cache, these machines don't have credentials.
 export USE_ANDROIDX_REMOTE_BUILD_CACHE=false
diff --git a/busytown/androidx_multiplatform_mac_host_tests.sh b/busytown/androidx_multiplatform_mac_host_tests.sh
index 8da2ed5..77eb725 100755
--- a/busytown/androidx_multiplatform_mac_host_tests.sh
+++ b/busytown/androidx_multiplatform_mac_host_tests.sh
@@ -6,7 +6,7 @@
 
 # Must be run on Mac
 
-export ANDROIDX_PROJECTS=KMP
+export ANDROIDX_PROJECTS=INFRAROGUE   # TODO: Switch from `INFRAROGUE` to `KMP`
 
 # disable GCP cache, these machines don't have credentials.
 export USE_ANDROIDX_REMOTE_BUILD_CACHE=false
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/adapter/CameraUseCaseAdapter.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/adapter/CameraUseCaseAdapter.kt
index bc9620f..0cf7c6c 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/adapter/CameraUseCaseAdapter.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/adapter/CameraUseCaseAdapter.kt
@@ -88,7 +88,8 @@
                 CameraDevice.TEMPLATE_PREVIEW
             )
 
-            CaptureType.VIDEO_CAPTURE -> sessionBuilder.setTemplateType(
+            CaptureType.VIDEO_CAPTURE,
+            CaptureType.STREAM_SHARING -> sessionBuilder.setTemplateType(
                 CameraDevice.TEMPLATE_RECORD
             )
         }
@@ -103,7 +104,8 @@
 
             CaptureType.PREVIEW,
             CaptureType.IMAGE_ANALYSIS,
-            CaptureType.VIDEO_CAPTURE ->
+            CaptureType.VIDEO_CAPTURE,
+            CaptureType.STREAM_SHARING ->
                 captureBuilder.templateType = CameraDevice.TEMPLATE_RECORD
         }
         mutableConfig.insertOption(
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/MeteringRepeating.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/MeteringRepeating.kt
index ddba7d3..5d79889 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/MeteringRepeating.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/MeteringRepeating.kt
@@ -229,6 +229,7 @@
         override fun setZslDisabled(disabled: Boolean) = this
 
         override fun setHighResolutionDisabled(disabled: Boolean) = this
+        override fun setCaptureType(captureType: UseCaseConfigFactory.CaptureType) = this
 
         override fun build(): MeteringRepeating {
             return MeteringRepeating(cameraProperties, useCaseConfig, displayInfoManager)
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java
index 1f1834bf..505da1e 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java
@@ -64,6 +64,7 @@
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Looper;
+import android.util.Range;
 import android.view.Surface;
 
 import androidx.annotation.NonNull;
@@ -232,8 +233,6 @@
     @Before
     public void setup() throws CameraAccessException, InterruptedException,
             AssumptionViolatedException, TimeoutException, ExecutionException {
-        mTestParameters0 = new CaptureSessionTestParameters("mTestParameters0");
-        mTestParameters1 = new CaptureSessionTestParameters("mTestParameters1");
         mHandler = new Handler(sHandlerThread.getLooper());
 
         mExecutor = CameraXExecutors.newHandlerExecutor(mHandler);
@@ -254,6 +253,10 @@
         } catch (CameraAccessExceptionCompat e) {
             throw new AssumptionViolatedException("Could not retrieve camera characteristics", e);
         }
+        mTestParameters0 = new CaptureSessionTestParameters("mTestParameters0",
+                mCameraCharacteristics);
+        mTestParameters1 = new CaptureSessionTestParameters("mTestParameters1",
+                mCameraCharacteristics);
 
         mDynamicRangesCompat =
                 DynamicRangesCompat.fromCameraCharacteristics(mCameraCharacteristics);
@@ -684,8 +687,9 @@
         // From CameraEventCallbacks option
         assertThat(captureResult.getRequest().get(CaptureRequest.CONTROL_AF_MODE)).isEqualTo(
                 CaptureRequest.CONTROL_AF_MODE_MACRO);
-        assertThat(captureResult.getRequest().get(CaptureRequest.FLASH_MODE)).isEqualTo(
-                CaptureRequest.FLASH_MODE_TORCH);
+        assertThat(captureResult.getRequest().get(
+                CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION)).isEqualTo(
+                mTestParameters0.mEvRange.getLower());
 
         // From SessionConfig option
         assertThat(captureResult.getRequest().get(CaptureRequest.CONTROL_AE_MODE)).isEqualTo(
@@ -856,8 +860,9 @@
                 CaptureRequest.CONTROL_AF_MODE_OFF);
 
         // From CameraEventCallbacks option
-        assertThat(captureResult.getRequest().get(CaptureRequest.FLASH_MODE)).isEqualTo(
-                CaptureRequest.FLASH_MODE_TORCH);
+        assertThat(captureResult.getRequest().get(
+                CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION)).isEqualTo(
+                mTestParameters0.mEvRange.getLower());
 
         // From SessionConfig option
         assertThat(captureResult.getRequest().get(CaptureRequest.CONTROL_AE_MODE)).isEqualTo(
@@ -1032,7 +1037,8 @@
         assertThat(result1).isInstanceOf(Camera2CameraCaptureResult.class);
         CaptureResult captureResult1 = ((Camera2CameraCaptureResult) result1).getCaptureResult();
         assertThat(captureResult1.getRequest().get(
-                CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION)).isEqualTo(0);
+                CaptureRequest.CONTROL_SCENE_MODE)).isEqualTo(
+                mTestParameters0.mTestCameraEventCallback.mAvailableSceneMode);
         // The onDisableSession should not been invoked.
         verify(mTestParameters0.mTestCameraEventCallback.mDisableCallback,
                 never()).onCaptureCompleted(any(CameraCaptureResult.class));
@@ -1051,7 +1057,8 @@
         assertThat(result2).isInstanceOf(Camera2CameraCaptureResult.class);
         CaptureResult captureResult2 = ((Camera2CameraCaptureResult) result2).getCaptureResult();
         assertThat(captureResult2.getRequest().get(
-                CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION)).isEqualTo(0);
+                CaptureRequest.CONTROL_SCENE_MODE)).isEqualTo(
+                mTestParameters0.mTestCameraEventCallback.mAvailableSceneMode);
         // The onEnableSession should not been invoked in close().
         verify(mTestParameters0.mTestCameraEventCallback.mEnableCallback,
                 never()).onCaptureCompleted(any(CameraCaptureResult.class));
@@ -1673,31 +1680,47 @@
      */
     private static class TestCameraEventCallback extends CameraEventCallback {
 
+        TestCameraEventCallback(CameraCharacteristicsCompat characteristics) {
+            if (characteristics != null) {
+                int[] availableSceneModes =
+                        characteristics.get(CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES);
+                if (availableSceneModes != null && availableSceneModes.length > 0) {
+                    mAvailableSceneMode = availableSceneModes[0];
+                } else {
+                    mAvailableSceneMode = CameraCharacteristics.CONTROL_SCENE_MODE_DISABLED;
+                }
+            } else {
+                mAvailableSceneMode = CameraCharacteristics.CONTROL_SCENE_MODE_DISABLED;
+            }
+        }
+
         private final CameraCaptureCallback mEnableCallback = Mockito.mock(
                 CameraCaptureCallback.class);
         private final CameraCaptureCallback mDisableCallback = Mockito.mock(
                 CameraCaptureCallback.class);
 
+        private final int mAvailableSceneMode;
+
         @Override
         public CaptureConfig onInitSession() {
-            return getCaptureConfig(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, 0, null);
+            return getCaptureConfig(CaptureRequest.CONTROL_SCENE_MODE, mAvailableSceneMode, null);
         }
 
         @Override
         public CaptureConfig onEnableSession() {
-            return getCaptureConfig(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, 0,
+            return getCaptureConfig(CaptureRequest.CONTROL_SCENE_MODE, mAvailableSceneMode,
                     mEnableCallback);
         }
 
         @Override
         public CaptureConfig onRepeating() {
-            return getCaptureConfig(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, 0, null);
+            return getCaptureConfig(CaptureRequest.CONTROL_SCENE_MODE, mAvailableSceneMode, null);
         }
 
         @Override
         public CaptureConfig onDisableSession() {
-            return getCaptureConfig(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION,
-                    0, mDisableCallback);
+            return getCaptureConfig(CaptureRequest.CONTROL_SCENE_MODE, mAvailableSceneMode,
+                    mDisableCallback);
         }
     }
 
@@ -1795,8 +1818,7 @@
         private final SessionConfig mSessionConfig;
         private final CaptureConfig mCaptureConfig;
 
-        private final TestCameraEventCallback mTestCameraEventCallback =
-                new TestCameraEventCallback();
+        private final TestCameraEventCallback mTestCameraEventCallback;
         private final CameraEventCallback mMockCameraEventCallback = Mockito.mock(
                 CameraEventCallback.class);
 
@@ -1810,6 +1832,7 @@
                 Mockito.mock(CameraCaptureSession.CaptureCallback.class);
 
         private final DeferrableSurface mDeferrableSurface;
+        private final Range<Integer> mEvRange;
         /**
          * A composite capture callback that dispatches callbacks to both mock and real callbacks.
          * The mock callback is used to verify the callback result. The real callback is used to
@@ -1825,7 +1848,7 @@
                             }
                         });
 
-        CaptureSessionTestParameters(String name) {
+        CaptureSessionTestParameters(String name, CameraCharacteristicsCompat characteristics) {
             mHandlerThread = new HandlerThread(name);
             mHandlerThread.start();
             mHandler = HandlerCompat.createAsync(mHandlerThread.getLooper());
@@ -1843,6 +1866,7 @@
             builder.addRepeatingCameraCaptureCallback(
                     CaptureCallbackContainer.create(mCamera2CaptureCallback));
 
+            mTestCameraEventCallback = new TestCameraEventCallback(characteristics);
             MutableOptionsBundle testCallbackConfig = MutableOptionsBundle.create();
             testCallbackConfig.insertOption(Camera2ImplConfig.CAMERA_EVENT_CALLBACK_OPTION,
                     new CameraEventCallbacks(mTestCameraEventCallback));
@@ -1856,15 +1880,19 @@
 
             // Set capture request options
             // ==================================================================================
-            // Priority | Component        | AF_MODE       | FLASH_MODE         | AE_MODE
+            // Priority | Component        | AF_MODE       | EV MODE            | AE_MODE
             // ----------------------------------------------------------------------------------
             // P1 | CaptureConfig          | AF_MODE_OFF  |                     |
             // ----------------------------------------------------------------------------------
-            // P2 | CameraEventCallbacks   | AF_MODE_MACRO | FLASH_MODE_TORCH   |
+            // P2 | CameraEventCallbacks   | AF_MODE_MACRO | Min EV             |
             // ----------------------------------------------------------------------------------
-            // P3 | SessionConfig          | AF_MODE_AUTO  | FLASH_MODE_SINGLE  | AE_MODE_ON
+            // P3 | SessionConfig          | AF_MODE_AUTO  | Max EV             | AE_MODE_ON
             // ==================================================================================
 
+            mEvRange = characteristics != null
+                    ? characteristics.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE)
+                    : new Range<>(0, 0);
+
             Camera2ImplConfig.Builder camera2ConfigBuilder = new Camera2ImplConfig.Builder();
 
             // Add capture request options for CameraEventCallbacks
@@ -1878,8 +1906,8 @@
                                             CaptureRequest.CONTROL_AF_MODE,
                                             CaptureRequest.CONTROL_AF_MODE_MACRO)
                                     .setCaptureRequestOption(
-                                            CaptureRequest.FLASH_MODE,
-                                            CaptureRequest.FLASH_MODE_TORCH)
+                                            CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION,
+                                            mEvRange.getLower())
                                     .build());
                     return builder.build();
                 }
@@ -1893,7 +1921,7 @@
                     .setCaptureRequestOption(
                             CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_AUTO)
                     .setCaptureRequestOption(
-                            CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_SINGLE)
+                            CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, mEvRange.getUpper())
                     .setCaptureRequestOption(
                             CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
 
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2UseCaseConfigFactory.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2UseCaseConfigFactory.java
index da4070a..5481b76 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2UseCaseConfigFactory.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2UseCaseConfigFactory.java
@@ -78,6 +78,7 @@
                 sessionBuilder.setTemplateType(CameraDevice.TEMPLATE_PREVIEW);
                 break;
             case VIDEO_CAPTURE:
+            case STREAM_SHARING:
                 sessionBuilder.setTemplateType(CameraDevice.TEMPLATE_RECORD);
                 break;
         }
@@ -101,6 +102,7 @@
                 captureBuilder.setTemplateType(CameraDevice.TEMPLATE_PREVIEW);
                 break;
             case VIDEO_CAPTURE:
+            case STREAM_SHARING:
                 captureBuilder.setTemplateType(CameraDevice.TEMPLATE_RECORD);
                 break;
         }
@@ -125,7 +127,7 @@
         int targetRotation = mDisplayInfoManager.getMaxSizeDisplay().getRotation();
         mutableConfig.insertOption(OPTION_TARGET_ROTATION, targetRotation);
 
-        if (captureType == CaptureType.VIDEO_CAPTURE) {
+        if (captureType == CaptureType.VIDEO_CAPTURE || captureType == CaptureType.STREAM_SHARING) {
             mutableConfig.insertOption(OPTION_ZSL_DISABLED, true);
         }
 
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.kt b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.kt
index 8e0b364..b11b2a5a 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.kt
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.kt
@@ -2127,6 +2127,8 @@
             ImageFormat.PRIVATE,
             PREVIEW_SIZE,
             SDR,
+            listOf(CaptureType.PREVIEW),
+            useCase.currentConfig,
             /*targetFrameRate=*/null
         )
         val attachedAnalysis = AttachedSurfaceInfo.create(
@@ -2137,6 +2139,8 @@
             ImageFormat.YUV_420_888,
             RECORD_SIZE,
             SDR,
+            listOf(CaptureType.IMAGE_ANALYSIS),
+            useCase.currentConfig,
             /*targetFrameRate=*/null
         )
 
@@ -2172,6 +2176,8 @@
             ImageFormat.PRIVATE,
             PREVIEW_SIZE,
             DynamicRange(FORMAT_HDR10, BIT_DEPTH_10_BIT),
+            listOf(CaptureType.PREVIEW),
+            useCase.currentConfig,
             /*targetFrameRate=*/null
         )
         val attachedPriv2 = AttachedSurfaceInfo.create(
@@ -2182,6 +2188,8 @@
             ImageFormat.YUV_420_888,
             RECORD_SIZE,
             DynamicRange(FORMAT_HDR10_PLUS, BIT_DEPTH_10_BIT),
+            listOf(CaptureType.VIDEO_CAPTURE),
+            useCase.currentConfig,
             /*targetFrameRate=*/null
         )
 
@@ -2226,6 +2234,8 @@
             ImageFormat.PRIVATE,
             PREVIEW_SIZE,
             SDR,
+            listOf(CaptureType.PREVIEW),
+            useCase.currentConfig,
             /*targetFrameRate=*/null
         )
         val attachedPriv2 = AttachedSurfaceInfo.create(
@@ -2236,6 +2246,8 @@
             ImageFormat.YUV_420_888,
             RECORD_SIZE,
             SDR,
+            listOf(CaptureType.IMAGE_ANALYSIS),
+            useCase.currentConfig,
             /*targetFrameRate=*/null
         )
 
@@ -2465,6 +2477,8 @@
             ImageFormat.JPEG,
             Size(1280, 720),
             SDR,
+            listOf(CaptureType.PREVIEW),
+            useCase.currentConfig,
             Range(40, 50)
         )
         getSuggestedSpecsAndVerify(
@@ -2492,6 +2506,8 @@
             ImageFormat.JPEG,
             Size(1280, 720),
             SDR,
+            listOf(CaptureType.PREVIEW),
+            useCase.currentConfig,
             Range(40, 50)
         )
         getSuggestedSpecsAndVerify(
@@ -2519,6 +2535,8 @@
             ImageFormat.JPEG,
             Size(1280, 720),
             SDR,
+            listOf(CaptureType.PREVIEW),
+            useCase.currentConfig,
             Range(40, 50)
         )
         getSuggestedSpecsAndVerify(
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/FakeOtherUseCaseConfig.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/FakeOtherUseCaseConfig.java
index 722a214..0369ec0 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/FakeOtherUseCaseConfig.java
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/FakeOtherUseCaseConfig.java
@@ -27,6 +27,7 @@
 import androidx.camera.core.impl.OptionsBundle;
 import androidx.camera.core.impl.SessionConfig;
 import androidx.camera.core.impl.UseCaseConfig;
+import androidx.camera.core.impl.UseCaseConfigFactory;
 
 import java.util.UUID;
 
@@ -56,6 +57,12 @@
         return retrieveOption(OPTION_SURFACE_OCCUPANCY_PRIORITY);
     }
 
+    @NonNull
+    @Override
+    public UseCaseConfigFactory.CaptureType getCaptureType() {
+        return UseCaseConfigFactory.CaptureType.PREVIEW;
+    }
+
     @Override
     public int getInputFormat() {
         return ImageFormatConstants.INTERNAL_DEFINED_IMAGE_FORMAT_PRIVATE;
@@ -190,5 +197,12 @@
             getMutableConfig().insertOption(OPTION_HIGH_RESOLUTION_DISABLED, disabled);
             return this;
         }
+
+        @NonNull
+        @Override
+        public Builder setCaptureType(@NonNull UseCaseConfigFactory.CaptureType captureType) {
+            getMutableConfig().insertOption(OPTION_CAPTURE_TYPE, captureType);
+            return this;
+        }
     }
 }
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/ImageCaptureTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/ImageCaptureTest.java
index 32462ac..d39f3e1 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/ImageCaptureTest.java
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/ImageCaptureTest.java
@@ -33,6 +33,7 @@
 import android.graphics.ImageFormat;
 import android.graphics.Matrix;
 import android.graphics.Rect;
+import android.os.Build;
 import android.provider.MediaStore;
 import android.util.Rational;
 import android.util.Size;
@@ -100,6 +101,9 @@
 
     @Before
     public void setup() {
+        assumeFalse("See b/152082918, Wembley Api30 has a libjpeg issue which causes"
+                        + " the test failure.",
+                Build.MODEL.equalsIgnoreCase("wembley") && Build.VERSION.SDK_INT <= 30);
         FakeCamera fakeCamera = new FakeCamera("fakeCameraId");
 
         FakeCameraDeviceSurfaceManager fakeCameraDeviceSurfaceManager =
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/processing/DefaultSurfaceProcessorTest.kt b/camera/camera-core/src/androidTest/java/androidx/camera/core/processing/DefaultSurfaceProcessorTest.kt
index 51b1536..daa23c4 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/processing/DefaultSurfaceProcessorTest.kt
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/processing/DefaultSurfaceProcessorTest.kt
@@ -21,10 +21,8 @@
 import android.graphics.Rect
 import android.graphics.SurfaceTexture
 import android.hardware.camera2.CameraDevice.TEMPLATE_PREVIEW
-import android.os.Build
 import android.util.Size
 import android.view.Surface
-import androidx.annotation.RequiresApi
 import androidx.camera.core.CameraEffect
 import androidx.camera.core.ImageProxy
 import androidx.camera.core.ImageReaderProxys
@@ -138,7 +136,6 @@
         }
     }
 
-    @RequiresApi(Build.VERSION_CODES.M)
     @Test
     fun snapshotAndRelease_futureReceivesException(): Unit = runBlocking {
         // Arrange: create DefaultSurfaceProcessor and setup input/output Surface.
@@ -160,7 +157,7 @@
         }
     }
 
-    @RequiresApi(Build.VERSION_CODES.M)
+    @SdkSuppress(minSdkVersion = 23)
     @Test
     fun snapshot_JpegWrittenToSurface(): Unit = runBlocking {
         // Arrange: create DefaultSurfaceProcessor and setup input/output Surface.
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/ImageAnalysis.java b/camera/camera-core/src/main/java/androidx/camera/core/ImageAnalysis.java
index c3c0d6e..b7268b0 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/ImageAnalysis.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/ImageAnalysis.java
@@ -32,6 +32,7 @@
 import static androidx.camera.core.impl.ImageOutputConfig.OPTION_TARGET_ROTATION;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_CAMERA_SELECTOR;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_CAPTURE_CONFIG_UNPACKER;
+import static androidx.camera.core.impl.UseCaseConfig.OPTION_CAPTURE_TYPE;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_DEFAULT_CAPTURE_CONFIG;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_DEFAULT_SESSION_CONFIG;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_HIGH_RESOLUTION_DISABLED;
@@ -771,7 +772,7 @@
     public UseCaseConfig<?> getDefaultConfig(boolean applyDefaultConfig,
             @NonNull UseCaseConfigFactory factory) {
         Config captureConfig = factory.getConfig(
-                UseCaseConfigFactory.CaptureType.IMAGE_ANALYSIS,
+                DEFAULT_CONFIG.getConfig().getCaptureType(),
                 ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY);
 
         if (applyDefaultConfig) {
@@ -1022,7 +1023,8 @@
                     .setDefaultResolution(DEFAULT_TARGET_RESOLUTION)
                     .setSurfaceOccupancyPriority(DEFAULT_SURFACE_OCCUPANCY_PRIORITY)
                     .setTargetAspectRatio(DEFAULT_ASPECT_RATIO)
-                    .setResolutionSelector(DEFAULT_RESOLUTION_SELECTOR);
+                    .setResolutionSelector(DEFAULT_RESOLUTION_SELECTOR)
+                    .setCaptureType(UseCaseConfigFactory.CaptureType.IMAGE_ANALYSIS);
 
             DEFAULT_CONFIG = builder.getUseCaseConfig();
         }
@@ -1600,5 +1602,13 @@
             getMutableConfig().insertOption(OPTION_HIGH_RESOLUTION_DISABLED, disabled);
             return this;
         }
+
+        @RestrictTo(Scope.LIBRARY_GROUP)
+        @NonNull
+        @Override
+        public Builder setCaptureType(@NonNull UseCaseConfigFactory.CaptureType captureType) {
+            getMutableConfig().insertOption(OPTION_CAPTURE_TYPE, captureType);
+            return this;
+        }
     }
 }
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java b/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
index 4eb88f5..b547104 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
@@ -42,6 +42,7 @@
 import static androidx.camera.core.impl.ImageOutputConfig.OPTION_CUSTOM_ORDERED_RESOLUTIONS;
 import static androidx.camera.core.impl.ImageOutputConfig.OPTION_RESOLUTION_SELECTOR;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_CAMERA_SELECTOR;
+import static androidx.camera.core.impl.UseCaseConfig.OPTION_CAPTURE_TYPE;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_HIGH_RESOLUTION_DISABLED;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_ZSL_DISABLED;
 import static androidx.camera.core.impl.utils.Threads.checkMainThread;
@@ -513,7 +514,7 @@
     public UseCaseConfig<?> getDefaultConfig(boolean applyDefaultConfig,
             @NonNull UseCaseConfigFactory factory) {
         Config captureConfig = factory.getConfig(
-                UseCaseConfigFactory.CaptureType.IMAGE_CAPTURE,
+                DEFAULT_CONFIG.getConfig().getCaptureType(),
                 getCaptureMode());
 
         if (applyDefaultConfig) {
@@ -2024,7 +2025,8 @@
             Builder builder = new Builder()
                     .setSurfaceOccupancyPriority(DEFAULT_SURFACE_OCCUPANCY_PRIORITY)
                     .setTargetAspectRatio(DEFAULT_ASPECT_RATIO)
-                    .setResolutionSelector(DEFAULT_RESOLUTION_SELECTOR);
+                    .setResolutionSelector(DEFAULT_RESOLUTION_SELECTOR)
+                    .setCaptureType(UseCaseConfigFactory.CaptureType.IMAGE_CAPTURE);
 
             DEFAULT_CONFIG = builder.getUseCaseConfig();
         }
@@ -3077,5 +3079,16 @@
             getMutableConfig().insertOption(OPTION_HIGH_RESOLUTION_DISABLED, disabled);
             return this;
         }
+
+        /**
+         * {@inheritDoc}
+         */
+        @RestrictTo(Scope.LIBRARY_GROUP)
+        @NonNull
+        @Override
+        public Builder setCaptureType(@NonNull UseCaseConfigFactory.CaptureType captureType) {
+            getMutableConfig().insertOption(OPTION_CAPTURE_TYPE, captureType);
+            return this;
+        }
     }
 }
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/Preview.java b/camera/camera-core/src/main/java/androidx/camera/core/Preview.java
index 02d7366..153f731 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/Preview.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/Preview.java
@@ -39,6 +39,7 @@
 import static androidx.camera.core.impl.PreviewConfig.OPTION_TARGET_ROTATION;
 import static androidx.camera.core.impl.PreviewConfig.OPTION_USE_CASE_EVENT_CALLBACK;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_CAMERA_SELECTOR;
+import static androidx.camera.core.impl.UseCaseConfig.OPTION_CAPTURE_TYPE;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_HIGH_RESOLUTION_DISABLED;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_TARGET_FRAME_RATE;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_ZSL_DISABLED;
@@ -582,7 +583,7 @@
     public UseCaseConfig<?> getDefaultConfig(boolean applyDefaultConfig,
             @NonNull UseCaseConfigFactory factory) {
         Config captureConfig = factory.getConfig(
-                UseCaseConfigFactory.CaptureType.PREVIEW,
+                DEFAULT_CONFIG.getConfig().getCaptureType(),
                 ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY);
 
         if (applyDefaultConfig) {
@@ -780,7 +781,8 @@
             Builder builder = new Builder()
                     .setSurfaceOccupancyPriority(DEFAULT_SURFACE_OCCUPANCY_PRIORITY)
                     .setTargetAspectRatio(DEFAULT_ASPECT_RATIO)
-                    .setResolutionSelector(DEFAULT_RESOLUTION_SELECTOR);
+                    .setResolutionSelector(DEFAULT_RESOLUTION_SELECTOR)
+                    .setCaptureType(UseCaseConfigFactory.CaptureType.PREVIEW);
             DEFAULT_CONFIG = builder.getUseCaseConfig();
         }
 
@@ -1245,5 +1247,13 @@
             getMutableConfig().insertOption(OPTION_HIGH_RESOLUTION_DISABLED, disabled);
             return this;
         }
+
+        @RestrictTo(Scope.LIBRARY_GROUP)
+        @NonNull
+        @Override
+        public Builder setCaptureType(@NonNull UseCaseConfigFactory.CaptureType captureType) {
+            getMutableConfig().insertOption(OPTION_CAPTURE_TYPE, captureType);
+            return this;
+        }
     }
 }
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/impl/AttachedSurfaceInfo.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/AttachedSurfaceInfo.java
index cdde2a1..8fe27de 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/impl/AttachedSurfaceInfo.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/AttachedSurfaceInfo.java
@@ -25,6 +25,9 @@
 import androidx.camera.core.DynamicRange;
 
 import com.google.auto.value.AutoValue;
+
+import java.util.List;
+
 /**
  * Container object for holding {@link SurfaceConfig} and its attributed ImageFormat,
  * {@link Size}, and target Frame Rate {@link Range}
@@ -45,9 +48,11 @@
             int imageFormat,
             @NonNull Size size,
             @NonNull DynamicRange dynamicRange,
+            @NonNull List<UseCaseConfigFactory.CaptureType> captureTypes,
+            @Nullable Config implementationOptions,
             @Nullable Range<Integer> targetFrameRate) {
         return new AutoValue_AttachedSurfaceInfo(surfaceConfig, imageFormat, size,
-                dynamicRange, targetFrameRate);
+                dynamicRange, captureTypes, implementationOptions, targetFrameRate);
     }
 
     /** Returns the SurfaceConfig. */
@@ -65,6 +70,16 @@
     @NonNull
     public abstract DynamicRange getDynamicRange();
 
+    /** Returns the capture types of this surface. Multiple capture types represent a
+     *  {@link androidx.camera.core.streamsharing.StreamSharing} and its children.*/
+    @SuppressWarnings("AutoValueImmutableFields")
+    @NonNull
+    public abstract List<UseCaseConfigFactory.CaptureType> getCaptureTypes();
+
+    /** Returns the implementations of this surface. */
+    @Nullable
+    public abstract Config getImplementationOptions();
+
     /** Returns the configuration target frame rate. */
     @Nullable
     public abstract Range<Integer> getTargetFrameRate();
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseConfig.java
index 43d3f9e..7e13965 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseConfig.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseConfig.java
@@ -94,6 +94,12 @@
     Option<Boolean> OPTION_HIGH_RESOLUTION_DISABLED =
             Option.create("camerax.core.useCase.highResolutionDisabled", boolean.class);
 
+    /**
+     * Option: camerax.core.useCase.highResolutionDisabled
+     */
+    Option<UseCaseConfigFactory.CaptureType> OPTION_CAPTURE_TYPE = Option.create(
+            "camerax.core.useCase.captureType", UseCaseConfigFactory.CaptureType.class);
+
 
     // *********************************************************************************************
 
@@ -314,6 +320,14 @@
     }
 
     /**
+     * @return The {@link UseCaseConfigFactory.CaptureType} of this UseCaseConfig.
+     */
+    @NonNull
+    default UseCaseConfigFactory.CaptureType getCaptureType() {
+        return retrieveOption(OPTION_CAPTURE_TYPE);
+    }
+
+    /**
      * Builder for a {@link UseCase}.
      *
      * @param <T> The type of the object which will be built by {@link #build()}.
@@ -420,6 +434,14 @@
         B setHighResolutionDisabled(boolean disabled);
 
         /**
+         * Sets the capture type for this configuration.
+         *
+         * @param captureType The capture type for this use case.
+         */
+        @NonNull
+        B setCaptureType(@NonNull UseCaseConfigFactory.CaptureType captureType);
+
+        /**
          * Retrieves the configuration used by this builder.
          *
          * @return the configuration used by this builder.
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseConfigFactory.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseConfigFactory.java
index 209a9aa..480eb29 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseConfigFactory.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseConfigFactory.java
@@ -50,7 +50,12 @@
         /**
          * Capture type for video capture. A use case of this type is consuming a stream of frames.
          */
-        VIDEO_CAPTURE
+        VIDEO_CAPTURE,
+
+        /**
+         * Capture type for stream sharing. A use case of this type is consuming a stream of frames.
+         */
+        STREAM_SHARING
     }
 
     /**
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/internal/CameraUseCaseAdapter.java b/camera/camera-core/src/main/java/androidx/camera/core/internal/CameraUseCaseAdapter.java
index 4e74b5e..2350fbc 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/internal/CameraUseCaseAdapter.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/internal/CameraUseCaseAdapter.java
@@ -609,6 +609,8 @@
             existingSurfaces.add(AttachedSurfaceInfo.create(surfaceConfig,
                     useCase.getImageFormat(), useCase.getAttachedSurfaceResolution(),
                     Preconditions.checkNotNull(useCase.getAttachedStreamSpec()).getDynamicRange(),
+                    getCaptureTypes(useCase),
+                    useCase.getAttachedStreamSpec().getImplementationOptions(),
                     useCase.getCurrentConfig().getTargetFrameRate(null)));
             suggestedStreamSpecs.put(useCase, useCase.getAttachedStreamSpec());
         }
@@ -672,6 +674,19 @@
         }
     }
 
+    @NonNull
+    private static List<UseCaseConfigFactory.CaptureType> getCaptureTypes(UseCase useCase) {
+        List<UseCaseConfigFactory.CaptureType> result = new ArrayList<>();
+        if (isStreamSharing(useCase)) {
+            for (UseCase child : ((StreamSharing) useCase).getChildren()) {
+                result.add(child.getCurrentConfig().getCaptureType());
+            }
+        } else {
+            result.add(useCase.getCurrentConfig().getCaptureType());
+        }
+        return result;
+    }
+
     /**
      * Sets effects on the given {@link UseCase} list and returns unused effects.
      */
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/streamsharing/StreamSharing.java b/camera/camera-core/src/main/java/androidx/camera/core/streamsharing/StreamSharing.java
index 630d3cf..93cd629 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/streamsharing/StreamSharing.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/streamsharing/StreamSharing.java
@@ -20,6 +20,7 @@
 import static androidx.camera.core.CameraEffect.VIDEO_CAPTURE;
 import static androidx.camera.core.impl.ImageFormatConstants.INTERNAL_DEFINED_IMAGE_FORMAT_PRIVATE;
 import static androidx.camera.core.impl.ImageInputConfig.OPTION_INPUT_FORMAT;
+import static androidx.camera.core.impl.UseCaseConfig.OPTION_CAPTURE_TYPE;
 import static androidx.camera.core.impl.utils.Threads.checkMainThread;
 import static androidx.core.util.Preconditions.checkNotNull;
 
@@ -67,7 +68,6 @@
  */
 @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
 public class StreamSharing extends UseCase {
-
     @NonNull
     private static final StreamSharingConfig DEFAULT_CONFIG;
 
@@ -90,6 +90,8 @@
         MutableConfig mutableConfig = new StreamSharingBuilder().getMutableConfig();
         mutableConfig.insertOption(OPTION_INPUT_FORMAT,
                 ImageFormatConstants.INTERNAL_DEFINED_IMAGE_FORMAT_PRIVATE);
+        mutableConfig.insertOption(OPTION_CAPTURE_TYPE,
+                UseCaseConfigFactory.CaptureType.STREAM_SHARING);
         DEFAULT_CONFIG = new StreamSharingConfig(OptionsBundle.from(mutableConfig));
     }
 
@@ -121,7 +123,7 @@
             @NonNull UseCaseConfigFactory factory) {
         // The shared stream optimizes for VideoCapture.
         Config captureConfig = factory.getConfig(
-                UseCaseConfigFactory.CaptureType.VIDEO_CAPTURE,
+                DEFAULT_CONFIG.getCaptureType(),
                 ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY);
 
         if (applyDefaultConfig) {
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/streamsharing/StreamSharingBuilder.java b/camera/camera-core/src/main/java/androidx/camera/core/streamsharing/StreamSharingBuilder.java
index 0ae8daa..d701527 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/streamsharing/StreamSharingBuilder.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/streamsharing/StreamSharingBuilder.java
@@ -16,6 +16,7 @@
 
 package androidx.camera.core.streamsharing;
 
+import static androidx.camera.core.impl.UseCaseConfig.OPTION_CAPTURE_TYPE;
 import static androidx.camera.core.internal.TargetConfig.OPTION_TARGET_CLASS;
 import static androidx.camera.core.internal.TargetConfig.OPTION_TARGET_NAME;
 
@@ -23,6 +24,7 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
+import androidx.annotation.RestrictTo;
 import androidx.camera.core.CameraSelector;
 import androidx.camera.core.UseCase;
 import androidx.camera.core.impl.CaptureConfig;
@@ -31,6 +33,7 @@
 import androidx.camera.core.impl.OptionsBundle;
 import androidx.camera.core.impl.SessionConfig;
 import androidx.camera.core.impl.UseCaseConfig;
+import androidx.camera.core.impl.UseCaseConfigFactory;
 import androidx.camera.core.internal.TargetConfig;
 
 import java.util.UUID;
@@ -162,4 +165,13 @@
             @NonNull UseCase.EventCallback eventCallback) {
         throw new UnsupportedOperationException(UNSUPPORTED_MESSAGE);
     }
+
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+    @NonNull
+    @Override
+    public StreamSharingBuilder setCaptureType(
+            @NonNull UseCaseConfigFactory.CaptureType captureType) {
+        getMutableConfig().insertOption(OPTION_CAPTURE_TYPE, captureType);
+        return this;
+    }
 }
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/impl/AttachedSurfaceInfoTest.kt b/camera/camera-core/src/test/java/androidx/camera/core/impl/AttachedSurfaceInfoTest.kt
index eab2744..8a3d600 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/impl/AttachedSurfaceInfoTest.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/impl/AttachedSurfaceInfoTest.kt
@@ -20,6 +20,8 @@
 import android.util.Range
 import android.util.Size
 import androidx.camera.core.DynamicRange
+import androidx.camera.core.impl.UseCaseConfigFactory.CaptureType
+import androidx.camera.testing.fakes.FakeUseCaseConfig
 import com.google.common.truth.Truth
 import org.junit.Before
 import org.junit.Test
@@ -40,11 +42,23 @@
     private val imageFormat = ImageFormat.JPEG
     private val size = Size(1920, 1080)
     private val dynamicRange = DynamicRange.SDR
+    private val captureTypes = listOf(CaptureType.PREVIEW)
+    private val inputFormat = ImageFormat.PRIVATE
     private val targetFramerate = Range(10, 20)
+    private val config = FakeUseCaseConfig.Builder(
+        CaptureType.PREVIEW,
+        inputFormat
+    ).useCaseConfig.config
+
     @Before
     fun setup() {
         attachedSurfaceInfo = AttachedSurfaceInfo.create(
-            surfaceConfig, imageFormat, size, dynamicRange,
+            surfaceConfig,
+            imageFormat,
+            size,
+            dynamicRange,
+            captureTypes,
+            config,
             targetFramerate
         )
     }
@@ -74,6 +88,28 @@
     }
 
     @Test
+    fun canGetCaptureTypes() {
+        Truth.assertThat(attachedSurfaceInfo!!.captureTypes.size).isEqualTo(captureTypes.size)
+        for ((index, value) in captureTypes.withIndex()) {
+            Truth.assertThat(attachedSurfaceInfo!!.captureTypes[index]).isEqualTo(value)
+        }
+    }
+
+    @Test
+    fun canGetImplementationOption() {
+        Truth.assertThat(
+            attachedSurfaceInfo!!.implementationOptions!!
+                .containsOption(ImageInputConfig.OPTION_INPUT_FORMAT)
+        )
+            .isTrue()
+        Truth.assertThat(
+            attachedSurfaceInfo!!.implementationOptions!!
+                .retrieveOption(ImageInputConfig.OPTION_INPUT_FORMAT)
+        )
+            .isEqualTo(inputFormat)
+    }
+
+    @Test
     fun canGetTargetFrameRate() {
         Truth.assertThat(attachedSurfaceInfo!!.targetFrameRate).isEqualTo(targetFramerate)
     }
@@ -85,6 +121,8 @@
             imageFormat,
             size,
             dynamicRange,
+            listOf(CaptureType.PREVIEW),
+            config,
             null
         )
         Truth.assertThat(attachedSurfaceInfo2.targetFrameRate).isNull()
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/streamsharing/StreamSharingTest.kt b/camera/camera-core/src/test/java/androidx/camera/core/streamsharing/StreamSharingTest.kt
index 0ba6e394..969f695 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/streamsharing/StreamSharingTest.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/streamsharing/StreamSharingTest.kt
@@ -301,7 +301,7 @@
         val config = streamSharing.getDefaultConfig(true, useCaseConfigFactory)!!
 
         assertThat(useCaseConfigFactory.lastRequestedCaptureType)
-            .isEqualTo(UseCaseConfigFactory.CaptureType.VIDEO_CAPTURE)
+            .isEqualTo(UseCaseConfigFactory.CaptureType.STREAM_SHARING)
         assertThat(
             config.retrieveOption(
                 OPTION_TARGET_CLASS,
diff --git a/camera/camera-testing/build.gradle b/camera/camera-testing/build.gradle
index b0774f2..177e3db 100644
--- a/camera/camera-testing/build.gradle
+++ b/camera/camera-testing/build.gradle
@@ -14,9 +14,8 @@
  * limitations under the License.
  */
 
-
-import androidx.build.LibraryType
 import androidx.build.Publish
+import androidx.build.RunApiTasks
 
 plugins {
     id("AndroidXPlugin")
@@ -93,8 +92,8 @@
 
 androidx {
     name = "Jetpack Camera Testing Library"
-    type = LibraryType.INTERNAL_TEST_LIBRARY
-    publish = Publish.SNAPSHOT_ONLY
+    publish = Publish.SNAPSHOT_AND_RELEASE
+    runApiTasks = new RunApiTasks.No("Internal testing library without any release plan yet.")
     inceptionYear = "2019"
     description = "Testing components for the Jetpack Camera Library, a library providing a " +
             "consistent and reliable camera foundation that enables great camera driven " +"" +
diff --git a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeUseCase.java b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeUseCase.java
index 6b5abe0..2e1ec2f 100644
--- a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeUseCase.java
+++ b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeUseCase.java
@@ -85,6 +85,7 @@
     @Override
     public UseCaseConfig.Builder<?, ?, ?> getUseCaseConfigBuilder(@NonNull Config config) {
         return new FakeUseCaseConfig.Builder(config)
+                .setCaptureType(mCaptureType)
                 .setSessionOptionUnpacker((resolution, useCaseConfig, sessionConfigBuilder) -> {
                 });
     }
diff --git a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeUseCaseConfig.java b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeUseCaseConfig.java
index 88ae896..12a104a 100644
--- a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeUseCaseConfig.java
+++ b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeUseCaseConfig.java
@@ -274,5 +274,12 @@
             getMutableConfig().insertOption(OPTION_HIGH_RESOLUTION_DISABLED, disabled);
             return this;
         }
+
+        @NonNull
+        @Override
+        public Builder setCaptureType(@NonNull CaptureType captureType) {
+            getMutableConfig().insertOption(OPTION_CAPTURE_TYPE, captureType);
+            return this;
+        }
     }
 }
diff --git a/camera/camera-testing/src/test/java/androidx/camera/testing/fakes/FakeCameraDeviceSurfaceManagerTest.java b/camera/camera-testing/src/test/java/androidx/camera/testing/fakes/FakeCameraDeviceSurfaceManagerTest.java
index aafc3572..b5ba2a4 100644
--- a/camera/camera-testing/src/test/java/androidx/camera/testing/fakes/FakeCameraDeviceSurfaceManagerTest.java
+++ b/camera/camera-testing/src/test/java/androidx/camera/testing/fakes/FakeCameraDeviceSurfaceManagerTest.java
@@ -38,6 +38,7 @@
 import androidx.camera.core.impl.StreamSpec;
 import androidx.camera.core.impl.SurfaceConfig;
 import androidx.camera.core.impl.UseCaseConfig;
+import androidx.camera.core.impl.UseCaseConfigFactory;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -105,6 +106,8 @@
                         YUV_420_888,
                         new Size(1, 1),
                         DynamicRange.SDR,
+                        singletonList(UseCaseConfigFactory.CaptureType.IMAGE_ANALYSIS),
+                        preview,
                         new Range<>(30, 30));
         mFakeCameraDeviceSurfaceManager.getSuggestedStreamSpecs(
                 CameraMode.DEFAULT,
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/RecorderVideoCapabilities.java b/camera/camera-video/src/main/java/androidx/camera/video/RecorderVideoCapabilities.java
index 0c30441..ef2fd4c 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/RecorderVideoCapabilities.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/RecorderVideoCapabilities.java
@@ -16,11 +16,12 @@
 
 package androidx.camera.video;
 
+import static androidx.camera.core.DynamicRange.BIT_DEPTH_UNSPECIFIED;
+import static androidx.camera.core.DynamicRange.FORMAT_HDR_UNSPECIFIED;
 import static androidx.camera.core.DynamicRange.FORMAT_HLG;
-import static androidx.camera.core.DynamicRange.HDR_UNSPECIFIED_10_BIT;
-import static androidx.camera.core.DynamicRange.SDR;
+import static androidx.camera.core.DynamicRange.FORMAT_SDR;
+import static androidx.camera.core.DynamicRange.FORMAT_UNSPECIFIED;
 import static androidx.camera.video.internal.BackupHdrProfileEncoderProfilesProvider.DEFAULT_VALIDATOR;
-import static androidx.camera.video.internal.utils.DynamicRangeUtil.VP_TO_DR_FORMAT_MAP;
 
 import android.util.Size;
 
@@ -51,7 +52,6 @@
 import java.util.ArrayList;
 import java.util.Deque;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -74,7 +74,17 @@
 
     private static final String TAG = "RecorderVideoCapabilities";
 
-    private final Map<DynamicRange, CapabilitiesByQuality> mCapabilitiesMap = new HashMap<>();
+    private final EncoderProfilesProvider mProfilesProvider;
+
+    // Mappings of DynamicRange to recording capability information. The mappings are divided
+    // into two collections based on the key's (DynamicRange) category, one for specified
+    // DynamicRange and one for others. Specified DynamicRange means that its bit depth and
+    // format are specified values, not some wildcards, such as: FORMAT_UNSPECIFIED,
+    // FORMAT_HDR_UNSPECIFIED or BIT_DEPTH_UNSPECIFIED.
+    private final Map<DynamicRange, CapabilitiesByQuality>
+            mCapabilitiesMapForFullySpecifiedDynamicRange = new HashMap<>();
+    private final Map<DynamicRange, CapabilitiesByQuality>
+            mCapabilitiesMapForNonFullySpecifiedDynamicRange = new HashMap<>();
 
     /**
      * Creates a RecorderVideoCapabilities.
@@ -106,23 +116,18 @@
         Quirks deviceQuirks = DeviceQuirks.getAll();
         encoderProfilesProvider = new QualityValidatedEncoderProfilesProvider(
                 encoderProfilesProvider, cameraInfoInternal, deviceQuirks);
+        mProfilesProvider = encoderProfilesProvider;
 
         // Group by dynamic range.
-        for (DynamicRange dynamicRange : getCandidateDynamicRanges(encoderProfilesProvider)) {
-            if (!isDynamicRangeSupported(dynamicRange, cameraInfoInternal)) {
-                continue;
-            }
-
+        for (DynamicRange dynamicRange : cameraInfoInternal.getSupportedDynamicRanges()) {
             // Filter video profiles to include only the profiles match with the target dynamic
             // range.
             EncoderProfilesProvider constrainedProvider =
-                    new DynamicRangeMatchedEncoderProfilesProvider(encoderProfilesProvider,
-                            dynamicRange);
-            CapabilitiesByQuality capabilitiesByQuality =
-                    new CapabilitiesByQuality(constrainedProvider);
+                    new DynamicRangeMatchedEncoderProfilesProvider(mProfilesProvider, dynamicRange);
+            CapabilitiesByQuality capabilities = new CapabilitiesByQuality(constrainedProvider);
 
-            if (!capabilitiesByQuality.getSupportedQualities().isEmpty()) {
-                mCapabilitiesMap.put(dynamicRange, capabilitiesByQuality);
+            if (!capabilities.getSupportedQualities().isEmpty()) {
+                mCapabilitiesMapForFullySpecifiedDynamicRange.put(dynamicRange, capabilities);
             }
         }
     }
@@ -144,25 +149,20 @@
     @NonNull
     @Override
     public Set<DynamicRange> getSupportedDynamicRanges() {
-        Set<DynamicRange> dynamicRanges = mCapabilitiesMap.keySet();
-
-        // Remove HDR_UNSPECIFIED_10_BIT from output, since it does not have explicit content.
-        dynamicRanges.remove(HDR_UNSPECIFIED_10_BIT);
-
-        return dynamicRanges;
+        return mCapabilitiesMapForFullySpecifiedDynamicRange.keySet();
     }
 
     @NonNull
     @Override
     public List<Quality> getSupportedQualities(@NonNull DynamicRange dynamicRange) {
-        CapabilitiesByQuality capabilities = mCapabilitiesMap.get(dynamicRange);
+        CapabilitiesByQuality capabilities = getCapabilities(dynamicRange);
         return capabilities == null ? new ArrayList<>() : capabilities.getSupportedQualities();
     }
 
     @Override
     public boolean isQualitySupported(@NonNull Quality quality,
             @NonNull DynamicRange dynamicRange) {
-        CapabilitiesByQuality capabilities = mCapabilitiesMap.get(dynamicRange);
+        CapabilitiesByQuality capabilities = getCapabilities(dynamicRange);
         return capabilities != null && capabilities.isQualitySupported(quality);
     }
 
@@ -170,7 +170,7 @@
     @Override
     public VideoValidatedEncoderProfilesProxy getProfiles(@NonNull Quality quality,
             @NonNull DynamicRange dynamicRange) {
-        CapabilitiesByQuality capabilities = mCapabilitiesMap.get(dynamicRange);
+        CapabilitiesByQuality capabilities = getCapabilities(dynamicRange);
         return capabilities == null ? null : capabilities.getProfiles(quality);
     }
 
@@ -178,7 +178,7 @@
     @Override
     public VideoValidatedEncoderProfilesProxy findHighestSupportedEncoderProfilesFor(
             @NonNull Size size, @NonNull DynamicRange dynamicRange) {
-        CapabilitiesByQuality capabilities = mCapabilitiesMap.get(dynamicRange);
+        CapabilitiesByQuality capabilities = getCapabilities(dynamicRange);
         return capabilities == null ? null : capabilities.findHighestSupportedEncoderProfilesFor(
                 size);
     }
@@ -187,57 +187,28 @@
     @Override
     public Quality findHighestSupportedQualityFor(@NonNull Size size,
             @NonNull DynamicRange dynamicRange) {
-        CapabilitiesByQuality capabilities = mCapabilitiesMap.get(dynamicRange);
+        CapabilitiesByQuality capabilities = getCapabilities(dynamicRange);
         return capabilities == null ? Quality.NONE : capabilities.findHighestSupportedQualityFor(
                 size);
     }
 
-    @NonNull
-    private static Set<DynamicRange> getCandidateDynamicRanges(
-            @NonNull EncoderProfilesProvider provider) {
-        Set<DynamicRange> dynamicRanges = new HashSet<>();
-        for (Quality quality : Quality.getSortedQualities()) {
-            int qualityValue = ((Quality.ConstantQuality) quality).getValue();
-            EncoderProfilesProxy encoderProfiles = provider.getAll(qualityValue);
-
-            if (encoderProfiles != null) {
-                for (VideoProfileProxy videoProfile : encoderProfiles.getVideoProfiles()) {
-                    Integer format = VP_TO_DR_FORMAT_MAP.get(videoProfile.getHdrFormat());
-                    if (format != null) {
-                        dynamicRanges.add(new DynamicRange(format, videoProfile.getBitDepth()));
-                    }
-                }
-            }
+    @Nullable
+    private CapabilitiesByQuality getCapabilities(@NonNull DynamicRange dynamicRange) {
+        if (isFullySpecified(dynamicRange)) {
+            return mCapabilitiesMapForFullySpecifiedDynamicRange.get(dynamicRange);
         }
 
-        dynamicRanges.add(SDR);
-        dynamicRanges.add(HDR_UNSPECIFIED_10_BIT);
-
-        return dynamicRanges;
-    }
-
-    private static boolean isDynamicRangeSupported(@NonNull DynamicRange dynamicRange,
-            @NonNull CameraInfoInternal cameraInfoInternal) {
-        Set<DynamicRange> supportedDynamicRanges = cameraInfoInternal.getSupportedDynamicRanges();
-        if (supportedDynamicRanges.contains(dynamicRange)) {
-            return true;
+        // Handle dynamic range that is not fully specified.
+        if (mCapabilitiesMapForNonFullySpecifiedDynamicRange.containsKey(dynamicRange)) {
+            return mCapabilitiesMapForNonFullySpecifiedDynamicRange.get(dynamicRange);
         } else {
-            return dynamicRange.equals(HDR_UNSPECIFIED_10_BIT) && contains10BitHdrDynamicRange(
-                    supportedDynamicRanges);
+            CapabilitiesByQuality capabilities =
+                    generateCapabilitiesForNonFullySpecifiedDynamicRange(dynamicRange);
+            mCapabilitiesMapForNonFullySpecifiedDynamicRange.put(dynamicRange, capabilities);
+            return capabilities;
         }
     }
 
-    private static boolean contains10BitHdrDynamicRange(@NonNull Set<DynamicRange> dynamicRanges) {
-        for (DynamicRange dynamicRange : dynamicRanges) {
-            if (dynamicRange.getFormat() != DynamicRange.FORMAT_SDR
-                    && dynamicRange.getBitDepth() == DynamicRange.BIT_DEPTH_10_BIT) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
     private static boolean isHlg10SupportedByCamera(
             @NonNull CameraInfoInternal cameraInfoInternal) {
         Set<DynamicRange> dynamicRanges = cameraInfoInternal.getSupportedDynamicRanges();
@@ -252,6 +223,78 @@
         return false;
     }
 
+    @Nullable
+    private CapabilitiesByQuality generateCapabilitiesForNonFullySpecifiedDynamicRange(
+            @NonNull DynamicRange dynamicRange) {
+        if (!canResolve(dynamicRange, getSupportedDynamicRanges())) {
+            return null;
+        }
+
+        // Filter video profiles to include only the profiles match with the target dynamic
+        // range.
+        EncoderProfilesProvider constrainedProvider =
+                new DynamicRangeMatchedEncoderProfilesProvider(mProfilesProvider, dynamicRange);
+        return new CapabilitiesByQuality(constrainedProvider);
+    }
+
+    /**
+     * Returns {@code true} if the test dynamic range can resolve to the fully specified dynamic
+     * range set.
+     *
+     * <p>A range can resolve if test fields are unspecified and appropriately match the fields
+     * of the fully specified dynamic range, or the test fields exactly match the fields of
+     * the fully specified dynamic range.
+     */
+    private static boolean canResolve(@NonNull DynamicRange dynamicRangeToTest,
+            @NonNull Set<DynamicRange> fullySpecifiedDynamicRanges) {
+        if (isFullySpecified(dynamicRangeToTest)) {
+            return fullySpecifiedDynamicRanges.contains(dynamicRangeToTest);
+        } else {
+            for (DynamicRange fullySpecifiedDynamicRange : fullySpecifiedDynamicRanges) {
+                if (canMatchBitDepth(dynamicRangeToTest, fullySpecifiedDynamicRange)
+                        && canMatchFormat(dynamicRangeToTest, fullySpecifiedDynamicRange)) {
+                    return true;
+                }
+            }
+
+            return false;
+        }
+    }
+
+    private static boolean canMatchBitDepth(@NonNull DynamicRange dynamicRangeToTest,
+            @NonNull DynamicRange fullySpecifiedDynamicRange) {
+        Preconditions.checkState(isFullySpecified(fullySpecifiedDynamicRange), "Fully specified "
+                + "range is not actually fully specified.");
+        if (dynamicRangeToTest.getBitDepth() == BIT_DEPTH_UNSPECIFIED) {
+            return true;
+        }
+
+        return dynamicRangeToTest.getBitDepth() == fullySpecifiedDynamicRange.getBitDepth();
+    }
+
+    private static boolean canMatchFormat(@NonNull DynamicRange dynamicRangeToTest,
+            @NonNull DynamicRange fullySpecifiedDynamicRange) {
+        Preconditions.checkState(isFullySpecified(fullySpecifiedDynamicRange), "Fully specified "
+                + "range is not actually fully specified.");
+        int formatToTest = dynamicRangeToTest.getFormat();
+        if (formatToTest == FORMAT_UNSPECIFIED) {
+            return true;
+        }
+
+        int fullySpecifiedFormat = fullySpecifiedDynamicRange.getFormat();
+        if (formatToTest == FORMAT_HDR_UNSPECIFIED && fullySpecifiedFormat != FORMAT_SDR) {
+            return true;
+        }
+
+        return formatToTest == fullySpecifiedFormat;
+    }
+
+    private static boolean isFullySpecified(@NonNull DynamicRange dynamicRange) {
+        return dynamicRange.getFormat() != FORMAT_UNSPECIFIED
+                && dynamicRange.getFormat() != FORMAT_HDR_UNSPECIFIED
+                && dynamicRange.getBitDepth() != BIT_DEPTH_UNSPECIFIED;
+    }
+
     /**
      * This class implements the video capabilities query logic related to quality and resolution.
      */
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/VideoCapture.java b/camera/camera-video/src/main/java/androidx/camera/video/VideoCapture.java
index 2ba09397e..8d75923 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/VideoCapture.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/VideoCapture.java
@@ -28,6 +28,7 @@
 import static androidx.camera.core.impl.ImageOutputConfig.OPTION_TARGET_ROTATION;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_CAMERA_SELECTOR;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_CAPTURE_CONFIG_UNPACKER;
+import static androidx.camera.core.impl.UseCaseConfig.OPTION_CAPTURE_TYPE;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_DEFAULT_CAPTURE_CONFIG;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_DEFAULT_SESSION_CONFIG;
 import static androidx.camera.core.impl.UseCaseConfig.OPTION_HIGH_RESOLUTION_DISABLED;
@@ -219,7 +220,8 @@
      */
     @NonNull
     public static <T extends VideoOutput> VideoCapture<T> withOutput(@NonNull T videoOutput) {
-        return new VideoCapture.Builder<>(Preconditions.checkNotNull(videoOutput)).build();
+        return new VideoCapture.Builder<>(Preconditions.checkNotNull(videoOutput)).setCaptureType(
+                UseCaseConfigFactory.CaptureType.VIDEO_CAPTURE).build();
     }
 
     /**
@@ -522,7 +524,7 @@
     public UseCaseConfig<?> getDefaultConfig(boolean applyDefaultConfig,
             @NonNull UseCaseConfigFactory factory) {
         Config captureConfig = factory.getConfig(
-                UseCaseConfigFactory.CaptureType.VIDEO_CAPTURE,
+                DEFAULT_CONFIG.getConfig().getCaptureType(),
                 ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY);
 
         if (applyDefaultConfig) {
@@ -805,7 +807,8 @@
             Builder<?> builder = new Builder<>(DEFAULT_VIDEO_OUTPUT)
                     .setSurfaceOccupancyPriority(DEFAULT_SURFACE_OCCUPANCY_PRIORITY)
                     .setVideoEncoderInfoFinder(DEFAULT_VIDEO_ENCODER_INFO_FINDER)
-                    .setDynamicRange(DEFAULT_DYNAMIC_RANGE);
+                    .setDynamicRange(DEFAULT_DYNAMIC_RANGE)
+                    .setCaptureType(UseCaseConfigFactory.CaptureType.VIDEO_CAPTURE);
 
             DEFAULT_CONFIG = builder.getUseCaseConfig();
         }
@@ -1772,5 +1775,13 @@
             getMutableConfig().insertOption(OPTION_TARGET_FRAME_RATE, targetFrameRate);
             return this;
         }
+
+        @RestrictTo(Scope.LIBRARY_GROUP)
+        @NonNull
+        @Override
+        public Builder<T> setCaptureType(@NonNull UseCaseConfigFactory.CaptureType captureType) {
+            getMutableConfig().insertOption(OPTION_CAPTURE_TYPE, captureType);
+            return this;
+        }
     }
 }
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/internal/utils/DynamicRangeUtil.java b/camera/camera-video/src/main/java/androidx/camera/video/internal/utils/DynamicRangeUtil.java
index 8057fdf..e079aba 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/internal/utils/DynamicRangeUtil.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/internal/utils/DynamicRangeUtil.java
@@ -31,6 +31,7 @@
 import static androidx.camera.core.DynamicRange.FORMAT_HDR_UNSPECIFIED;
 import static androidx.camera.core.DynamicRange.FORMAT_HLG;
 import static androidx.camera.core.DynamicRange.FORMAT_SDR;
+import static androidx.camera.core.DynamicRange.FORMAT_UNSPECIFIED;
 import static androidx.camera.core.impl.EncoderProfilesProxy.VideoProfileProxy.BIT_DEPTH_10;
 import static androidx.camera.core.impl.EncoderProfilesProxy.VideoProfileProxy.BIT_DEPTH_8;
 
@@ -65,6 +66,8 @@
                 new HashSet<>(asList(BIT_DEPTH_8, BIT_DEPTH_10)));
 
         // DynamicRange format to VideoProfile HDR format.
+        DR_TO_VP_FORMAT_MAP.put(FORMAT_UNSPECIFIED, new HashSet<>(asList(HDR_NONE, HDR_HLG,
+                HDR_HDR10, HDR_HDR10PLUS, HDR_DOLBY_VISION)));
         DR_TO_VP_FORMAT_MAP.put(FORMAT_SDR, new HashSet<>(singletonList(HDR_NONE)));
         DR_TO_VP_FORMAT_MAP.put(FORMAT_HDR_UNSPECIFIED,
                 new HashSet<>(asList(HDR_HLG, HDR_HDR10, HDR_HDR10PLUS, HDR_DOLBY_VISION)));
diff --git a/camera/camera-video/src/test/java/androidx/camera/video/RecorderVideoCapabilitiesTest.kt b/camera/camera-video/src/test/java/androidx/camera/video/RecorderVideoCapabilitiesTest.kt
index fb598f9..f917aca 100644
--- a/camera/camera-video/src/test/java/androidx/camera/video/RecorderVideoCapabilitiesTest.kt
+++ b/camera/camera-video/src/test/java/androidx/camera/video/RecorderVideoCapabilitiesTest.kt
@@ -21,9 +21,16 @@
 import android.util.Size
 import androidx.camera.core.DynamicRange
 import androidx.camera.core.DynamicRange.BIT_DEPTH_10_BIT
+import androidx.camera.core.DynamicRange.BIT_DEPTH_8_BIT
+import androidx.camera.core.DynamicRange.BIT_DEPTH_UNSPECIFIED
+import androidx.camera.core.DynamicRange.FORMAT_DOLBY_VISION
+import androidx.camera.core.DynamicRange.FORMAT_HDR10
+import androidx.camera.core.DynamicRange.FORMAT_HDR_UNSPECIFIED
 import androidx.camera.core.DynamicRange.FORMAT_HLG
+import androidx.camera.core.DynamicRange.FORMAT_UNSPECIFIED
 import androidx.camera.core.DynamicRange.HDR_UNSPECIFIED_10_BIT
 import androidx.camera.core.DynamicRange.SDR
+import androidx.camera.core.DynamicRange.UNSPECIFIED
 import androidx.camera.core.impl.EncoderProfilesProxy.VideoProfileProxy
 import androidx.camera.testing.EncoderProfilesUtil.PROFILES_2160P
 import androidx.camera.testing.EncoderProfilesUtil.PROFILES_720P
@@ -48,6 +55,11 @@
 import org.robolectric.annotation.internal.DoNotInstrument
 
 private val HLG10 = DynamicRange(FORMAT_HLG, BIT_DEPTH_10_BIT)
+private val HDR10 = DynamicRange(FORMAT_HDR10, BIT_DEPTH_10_BIT)
+private val UNSPECIFIED_8_BIT = DynamicRange(FORMAT_UNSPECIFIED, BIT_DEPTH_8_BIT)
+private val UNSPECIFIED_10_BIT = DynamicRange(FORMAT_UNSPECIFIED, BIT_DEPTH_10_BIT)
+private val HDR_UNSPECIFIED = DynamicRange(FORMAT_HDR_UNSPECIFIED, BIT_DEPTH_UNSPECIFIED)
+private val DOLBY_VISION_UNSPECIFIED = DynamicRange(FORMAT_DOLBY_VISION, BIT_DEPTH_UNSPECIFIED)
 
 @RunWith(RobolectricTestRunner::class)
 @DoNotInstrument
@@ -80,6 +92,55 @@
     }
 
     @Test
+    fun hasSupportedQualities_sdr() {
+        assertThat(videoCapabilities.getSupportedQualities(SDR)).containsExactly(HD, UHD)
+    }
+
+    @Test
+    fun hasSupportedQualities_hlg10() {
+        assertThat(videoCapabilities.getSupportedQualities(HLG10)).containsExactly(HD, UHD)
+    }
+
+    @Test
+    fun hasSupportedQualities_hdr10() {
+        assertThat(videoCapabilities.getSupportedQualities(HDR10)).isEmpty()
+    }
+
+    @Test
+    fun hasSupportedQualities_unspecified() {
+        assertThat(videoCapabilities.getSupportedQualities(UNSPECIFIED)).containsExactly(HD, UHD)
+    }
+
+    @Test
+    fun hasSupportedQualities_hdrUnspecified() {
+        assertThat(videoCapabilities.getSupportedQualities(HDR_UNSPECIFIED))
+            .containsExactly(HD, UHD)
+    }
+
+    @Test
+    fun hasSupportedQualities_hdrUnspecified10Bit() {
+        assertThat(videoCapabilities.getSupportedQualities(HDR_UNSPECIFIED_10_BIT))
+            .containsExactly(HD, UHD)
+    }
+
+    @Test
+    fun hasSupportedQualities_unspecified8Bit() {
+        assertThat(videoCapabilities.getSupportedQualities(UNSPECIFIED_8_BIT))
+            .containsExactly(HD, UHD)
+    }
+
+    @Test
+    fun hasSupportedQualities_unspecified10Bit() {
+        assertThat(videoCapabilities.getSupportedQualities(UNSPECIFIED_10_BIT))
+            .containsExactly(HD, UHD)
+    }
+
+    @Test
+    fun hasSupportedQualities_dolbyVisionUnspecified() {
+        assertThat(videoCapabilities.getSupportedQualities(DOLBY_VISION_UNSPECIFIED)).isEmpty()
+    }
+
+    @Test
     fun isQualitySupported_sdr() {
         assertThat(videoCapabilities.isQualitySupported(HIGHEST, SDR)).isTrue()
         assertThat(videoCapabilities.isQualitySupported(LOWEST, SDR)).isTrue()
@@ -90,6 +151,16 @@
     }
 
     @Test
+    fun isQualitySupported_unspecified() {
+        assertThat(videoCapabilities.isQualitySupported(HIGHEST, UNSPECIFIED)).isTrue()
+        assertThat(videoCapabilities.isQualitySupported(LOWEST, UNSPECIFIED)).isTrue()
+        assertThat(videoCapabilities.isQualitySupported(UHD, UNSPECIFIED)).isTrue()
+        assertThat(videoCapabilities.isQualitySupported(FHD, UNSPECIFIED)).isFalse()
+        assertThat(videoCapabilities.isQualitySupported(HD, UNSPECIFIED)).isTrue()
+        assertThat(videoCapabilities.isQualitySupported(SD, UNSPECIFIED)).isFalse()
+    }
+
+    @Test
     fun isQualitySupported_hlg10WithBackupProfile() {
         assertThat(videoCapabilities.isQualitySupported(HIGHEST, HLG10)).isTrue()
         assertThat(videoCapabilities.isQualitySupported(LOWEST, HLG10)).isTrue()
@@ -100,7 +171,7 @@
     }
 
     @Test
-    fun isQualitySupported_hdrUnspecifiedWithBackupProfile() {
+    fun isQualitySupported_hdrUnspecified10BitWithBackupProfile() {
         assertThat(videoCapabilities.isQualitySupported(HIGHEST, HDR_UNSPECIFIED_10_BIT)).isTrue()
         assertThat(videoCapabilities.isQualitySupported(LOWEST, HDR_UNSPECIFIED_10_BIT)).isTrue()
         assertThat(videoCapabilities.isQualitySupported(UHD, HDR_UNSPECIFIED_10_BIT)).isTrue()
diff --git a/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/ExistingActivityLifecycleTest.kt b/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/ExistingActivityLifecycleTest.kt
index 0c9a82a..912d748 100644
--- a/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/ExistingActivityLifecycleTest.kt
+++ b/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/ExistingActivityLifecycleTest.kt
@@ -100,6 +100,9 @@
             "Ignore Cuttlefish",
             Build.MODEL.contains("Cuttlefish")
         )
+        Assume.assumeFalse("See b/152082918, Wembley Api30 has a libjpeg issue which causes" +
+            " the test failure.",
+            Build.MODEL.equals("wembley", ignoreCase = true) && Build.VERSION.SDK_INT <= 30)
         Assume.assumeTrue(CameraUtil.deviceHasCamera())
         CoreAppTestUtil.assumeCompatibleDevice()
         // Clear the device UI and check if there is no dialog or lock screen on the top of the
diff --git a/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/ImageCaptureTest.kt b/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/ImageCaptureTest.kt
index e6dbf12..5402bfe 100644
--- a/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/ImageCaptureTest.kt
+++ b/camera/integration-tests/coretestapp/src/androidTest/java/androidx/camera/integration/core/ImageCaptureTest.kt
@@ -150,6 +150,9 @@
 
     @Before
     fun setUp(): Unit = runBlocking {
+        assumeFalse("See b/152082918, Wembley Api30 has a libjpeg issue which causes" +
+            " the test failure.",
+            Build.MODEL.equals("wembley", ignoreCase = true) && Build.VERSION.SDK_INT <= 30)
         assumeTrue(CameraUtil.hasCameraWithLensFacing(BACK_LENS_FACING))
         createDefaultPictureFolderIfNotExist()
         ProcessCameraProvider.configureInstance(cameraXConfig)
diff --git a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureOrientationConfigChangesTest.kt b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureOrientationConfigChangesTest.kt
index ffc5c97..1ff8e45 100644
--- a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureOrientationConfigChangesTest.kt
+++ b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureOrientationConfigChangesTest.kt
@@ -76,6 +76,10 @@
                 "redmi note 8"
             ).contains(Build.MODEL.lowercase(Locale.US)) && rotation == Surface.ROTATION_180
         )
+        Assume.assumeFalse("See b/152082918, Wembley Api30 has a libjpeg issue which causes" +
+            " the test failure.",
+            Build.MODEL.equals("wembley", ignoreCase = true) && Build.VERSION.SDK_INT <= 30)
+
         setUp(lensFacing)
     }
 
diff --git a/camera/integration-tests/viewtestapp/src/androidTest/java/androidx/camera/integration/view/CameraControllerFragmentTest.kt b/camera/integration-tests/viewtestapp/src/androidTest/java/androidx/camera/integration/view/CameraControllerFragmentTest.kt
index ab39956..b7d5960 100644
--- a/camera/integration-tests/viewtestapp/src/androidTest/java/androidx/camera/integration/view/CameraControllerFragmentTest.kt
+++ b/camera/integration-tests/viewtestapp/src/androidTest/java/androidx/camera/integration/view/CameraControllerFragmentTest.kt
@@ -115,6 +115,9 @@
 
     @Before
     fun setup() {
+        assumeFalse("See b/152082918, Wembley Api30 has a libjpeg issue which causes" +
+            " the test failure.",
+            Build.MODEL.equals("wembley", ignoreCase = true) && Build.VERSION.SDK_INT <= 30)
         // Clear the device UI and check if there is no dialog or lock screen on the top of the
         // window before start the test.
         CoreAppTestUtil.prepareDeviceUI(instrumentation)
diff --git a/car/app/app-automotive/api/aidlRelease/current/androidx/car/app/activity/renderer/IProxyInputConnection.aidl b/car/app/app-automotive/api/aidlRelease/current/androidx/car/app/activity/renderer/IProxyInputConnection.aidl
index a0e60d4..d33caaa 100644
--- a/car/app/app-automotive/api/aidlRelease/current/androidx/car/app/activity/renderer/IProxyInputConnection.aidl
+++ b/car/app/app-automotive/api/aidlRelease/current/androidx/car/app/activity/renderer/IProxyInputConnection.aidl
@@ -58,4 +58,5 @@
   android.view.inputmethod.ExtractedText getExtractedText(in android.view.inputmethod.ExtractedTextRequest request, int flags) = 22;
   void closeConnection() = 23;
   android.view.inputmethod.EditorInfo getEditorInfo() = 24;
+  androidx.car.app.serialization.Bundleable getSurroundingText(int beforeLength, int afterLength, int flags) = 25;
 }
diff --git a/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/RemoteProxyInputConnection.java b/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/RemoteProxyInputConnection.java
index a4a1474..2220696 100644
--- a/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/RemoteProxyInputConnection.java
+++ b/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/RemoteProxyInputConnection.java
@@ -16,21 +16,28 @@
 
 package androidx.car.app.activity.renderer.surface;
 
+import static androidx.car.app.utils.LogTags.TAG;
+
 import static java.util.Objects.requireNonNull;
 
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
+import android.util.Log;
 import android.view.KeyEvent;
 import android.view.inputmethod.CompletionInfo;
 import android.view.inputmethod.CorrectionInfo;
 import android.view.inputmethod.ExtractedText;
 import android.view.inputmethod.ExtractedTextRequest;
 import android.view.inputmethod.InputConnectionWrapper;
+import android.view.inputmethod.SurroundingText;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.car.app.activity.ServiceDispatcher;
 import androidx.car.app.activity.renderer.IProxyInputConnection;
+import androidx.car.app.serialization.Bundleable;
+import androidx.car.app.serialization.BundlerException;
 
 /** Proxies input connection calls to the provided {@link IProxyInputConnection}. */
 final class RemoteProxyInputConnection extends InputConnectionWrapper {
@@ -77,7 +84,7 @@
     public ExtractedText getExtractedText(@NonNull ExtractedTextRequest request, int flags) {
         requireNonNull(request);
         return mServiceDispatcher.fetch("getExtractedText", null, () ->
-                        mProxyInputConnection.getExtractedText(request, flags));
+                mProxyInputConnection.getExtractedText(request, flags));
     }
 
     @Override
@@ -213,6 +220,24 @@
 
     @Nullable
     @Override
+    public SurroundingText getSurroundingText(int beforeLength, int afterLength, int flags) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+            return mServiceDispatcher.fetch("getSurroundingText", null, () -> {
+                try {
+                    Bundleable bundleable = mProxyInputConnection.getSurroundingText(beforeLength,
+                            afterLength, flags);
+                    return bundleable == null ? null : (SurroundingText) bundleable.get();
+                } catch (BundlerException e) {
+                    Log.e(TAG, "Cannot get surrounding text", e);
+                    return null;
+                }
+            });
+        }
+        return null;
+    }
+
+    @Nullable
+    @Override
     public Handler getHandler() {
         return null;
     }
diff --git a/car/app/app-automotive/src/main/stableAidl/androidx/car/app/activity/renderer/IProxyInputConnection.aidl b/car/app/app-automotive/src/main/stableAidl/androidx/car/app/activity/renderer/IProxyInputConnection.aidl
index 9bd5d7c..430cca5 100644
--- a/car/app/app-automotive/src/main/stableAidl/androidx/car/app/activity/renderer/IProxyInputConnection.aidl
+++ b/car/app/app-automotive/src/main/stableAidl/androidx/car/app/activity/renderer/IProxyInputConnection.aidl
@@ -23,6 +23,7 @@
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.ExtractedText;
 import android.view.inputmethod.ExtractedTextRequest;
+import androidx.car.app.serialization.Bundleable;
 
 /**
  * Proxies the {@link InputConnection} method invocations from {@link CarAppActivity} across a
@@ -102,4 +103,12 @@
 
     /** Returns the {@link EditorInfo} associated with the input connection. */
     EditorInfo getEditorInfo() = 24;
-}
\ No newline at end of file
+
+    /**
+     * Proxies a call to {@link InputConnection#getSurroundingText}.
+     * Note that this returns a {@link Bundleable} that wraps a {@link SurroundingText} since the
+     * latter is only available on Android S+. Note that this returns {@code null} on Android R- or
+     * when an exception is thrown.
+     */
+    Bundleable getSurroundingText(int beforeLength, int afterLength, int flags) = 25;
+}
diff --git a/car/app/app-automotive/src/test/java/androidx/car/app/activity/renderer/surface/RemoteProxyInputConnectionTest.java b/car/app/app-automotive/src/test/java/androidx/car/app/activity/renderer/surface/RemoteProxyInputConnectionTest.java
new file mode 100644
index 0000000..08d969d
--- /dev/null
+++ b/car/app/app-automotive/src/test/java/androidx/car/app/activity/renderer/surface/RemoteProxyInputConnectionTest.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.car.app.activity.renderer.surface;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.os.RemoteException;
+import android.view.inputmethod.SurroundingText;
+
+import androidx.car.app.activity.CarAppViewModel;
+import androidx.car.app.activity.ServiceDispatcher;
+import androidx.car.app.activity.renderer.IProxyInputConnection;
+import androidx.car.app.serialization.Bundleable;
+import androidx.car.app.serialization.BundlerException;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.annotation.internal.DoNotInstrument;
+
+/** Tests for {@link RemoteProxyInputConnection} */
+@RunWith(RobolectricTestRunner.class)
+@DoNotInstrument
+public class RemoteProxyInputConnectionTest {
+    private RemoteProxyInputConnection mRemoteProxyInputConnection;
+    private final CarAppViewModel mViewModel = mock(CarAppViewModel.class);
+    private final ServiceDispatcher mServiceDispatcher = new ServiceDispatcher(mViewModel,
+            () -> true);
+    private final IProxyInputConnection mProxyInputConnection =
+            mock(IProxyInputConnection.class);
+
+
+    @Before
+    public void setUp() throws Exception {
+        mRemoteProxyInputConnection =
+                new RemoteProxyInputConnection(mServiceDispatcher, mProxyInputConnection);
+
+    }
+
+    @Config(maxSdk = 30)
+    @Test
+    public void getSurroundingText_apiLevel30Minus_returnsNull() {
+        assertThat(mRemoteProxyInputConnection.getSurroundingText(10, 10, 0)).isNull();
+    }
+
+    @Config(minSdk = 31)
+    @Test
+    public void getSurroundingText_proxyInputReturnsValidValue_returnsValidValue()
+            throws RemoteException,
+            BundlerException {
+        SurroundingText surroundingText = new SurroundingText("Test Text", 0, 0, 0);
+        when(mProxyInputConnection.getSurroundingText(10, 10, 0)).thenReturn(
+                Bundleable.create(surroundingText));
+        assertThat(mRemoteProxyInputConnection.getSurroundingText(10, 10, 0)).isEqualTo(
+                surroundingText);
+    }
+
+    @Config(minSdk = 31)
+    @Test
+    public void getSurroundingText_proxyInputReturnsNull_returnsNull() throws RemoteException,
+            BundlerException {
+        SurroundingText surroundingText = new SurroundingText("Test Text", 0, 0, 0);
+        when(mProxyInputConnection.getSurroundingText(10, 10, 0)).thenReturn(null);
+        assertThat(mRemoteProxyInputConnection.getSurroundingText(10, 10, 0)).isNull();
+    }
+
+    @Config(minSdk = 31)
+    @Test
+    public void getSurroundingText_throwsRemoteException_returnsNull() throws RemoteException,
+            BundlerException {
+        SurroundingText surroundingText = new SurroundingText("Test Text", 0, 0, 0);
+        when(mProxyInputConnection.getSurroundingText(10, 10, 0)).thenThrow(RemoteException.class);
+        assertThat(mRemoteProxyInputConnection.getSurroundingText(10, 10, 0)).isNull();
+    }
+
+    @Config(minSdk = 31)
+    @Test
+    public void getSurroundingText_throwsBundlerException_returnsNull() throws RemoteException,
+            BundlerException {
+        SurroundingText surroundingText = new SurroundingText("Test Text", 0, 0, 0);
+        when(mProxyInputConnection.getSurroundingText(10, 10, 0)).thenReturn(
+                Bundleable.create("random string"));
+        assertThat(mRemoteProxyInputConnection.getSurroundingText(10, 10, 0)).isNull();
+    }
+}
diff --git a/car/app/app-samples/showcase/common/src/main/res/values-mk/strings.xml b/car/app/app-samples/showcase/common/src/main/res/values-mk/strings.xml
index 97ec824..c37b862 100644
--- a/car/app/app-samples/showcase/common/src/main/res/values-mk/strings.xml
+++ b/car/app/app-samples/showcase/common/src/main/res/values-mk/strings.xml
@@ -94,7 +94,7 @@
     <string name="no_energy_profile_permission" msgid="4662285713731308888">"Нема дозвола за енергетски профил."</string>
     <string name="fuel_types" msgid="6811375173343218212">"Типови гориво"</string>
     <string name="unavailable" msgid="3636401138255192934">"Недостапно"</string>
-    <string name="ev_connector_types" msgid="735458637011996125">"Типови конектори за ЕВ"</string>
+    <string name="ev_connector_types" msgid="735458637011996125">"Типови конектори за EV"</string>
     <string name="example_title" msgid="530257630320010494">"Пример %d"</string>
     <string name="example_1_text" msgid="8456567953748293512">"Текстов има црвена боја"</string>
     <string name="example_2_text" msgid="718820705318661440">"Текстов има зелена боја"</string>
@@ -181,7 +181,7 @@
     <string name="no_energy_level_permission" msgid="1684773185095107825">"Нема дозвола за EnergyLevel."</string>
     <string name="no_speed_permission" msgid="5812532480922675390">"Нема дозвола за брзина."</string>
     <string name="no_mileage_permission" msgid="4074779840599589847">"Нема дозвола за километража."</string>
-    <string name="no_ev_status_permission" msgid="933075402821938973">"Нема дозвола за статусот на ЕВ."</string>
+    <string name="no_ev_status_permission" msgid="933075402821938973">"Нема дозвола за статусот на EV."</string>
     <string name="no_accelerometer_permission" msgid="896914448469117234">"Нема дозвола за акцелерометар."</string>
     <string name="no_gyroscope_permission" msgid="665293140266771569">"Нема дозвола за жироскоп."</string>
     <string name="no_compass_permission" msgid="5162304489577567125">"Нема дозвола за компас."</string>
@@ -190,7 +190,7 @@
     <string name="fetch_energy_level" msgid="1773415471137542832">"Се презема ниво на енергија."</string>
     <string name="fetch_speed" msgid="7333830984597189627">"Се презема брзина."</string>
     <string name="fetch_mileage" msgid="7490131687788025123">"Се презема километража."</string>
-    <string name="fetch_ev_status" msgid="2798910410830567052">"Се презема статус на ЕВ."</string>
+    <string name="fetch_ev_status" msgid="2798910410830567052">"Се презема статус на EV."</string>
     <string name="fetch_accelerometer" msgid="697750041126810911">"Се презема акцелерометар."</string>
     <string name="fetch_gyroscope" msgid="7153155318827188539">"Се презема жироскоп."</string>
     <string name="fetch_compass" msgid="7316188117590056717">"Се презема компас."</string>
@@ -204,8 +204,8 @@
     <string name="raw_speed" msgid="7295910214088983967">"Брзина на RAW"</string>
     <string name="unit" msgid="7697521583928135171">"Единица"</string>
     <string name="odometer" msgid="3925174645651546591">"Броило"</string>
-    <string name="ev_connected" msgid="2277845607662494696">"Поврзана е порта за полнење ЕВ"</string>
-    <string name="ev_open" msgid="4916704450914519643">"Отворена е порта за полнење ЕВ"</string>
+    <string name="ev_connected" msgid="2277845607662494696">"Поврзана е порта за полнење EV"</string>
+    <string name="ev_open" msgid="4916704450914519643">"Отворена е порта за полнење EV"</string>
     <string name="accelerometer" msgid="2084026313768299185">"Акцелерометар"</string>
     <string name="gyroscope" msgid="3428075828014504651">"Жироскоп"</string>
     <string name="compass" msgid="7037367764762441245">"Компас"</string>
diff --git a/car/app/app-samples/showcase/common/src/main/res/values-sq/strings.xml b/car/app/app-samples/showcase/common/src/main/res/values-sq/strings.xml
index e83b300..b52261b 100644
--- a/car/app/app-samples/showcase/common/src/main/res/values-sq/strings.xml
+++ b/car/app/app-samples/showcase/common/src/main/res/values-sq/strings.xml
@@ -119,7 +119,7 @@
     <string name="loading_demo_row_title" msgid="8933049915126088142">"Ngarkimi përfundoi!"</string>
     <string name="pop_to_root" msgid="2078277386355064198">"Hidhu te rrënja"</string>
     <string name="pop_to_marker" msgid="5007078308762725207">"Hidhu te shënuesi i demonstrimeve të ndryshme"</string>
-    <string name="push_stack" msgid="2433062141810168976">"Shty më tej te stiva"</string>
+    <string name="push_stack" msgid="2433062141810168976">"Shtyj më tej te stiva"</string>
     <string name="pop_to_prefix" msgid="4288884615669751608">"Hidhu te"</string>
     <string name="pop_to_title" msgid="3924696281273379455">"Hidhu te demonstrimi"</string>
     <string name="package_not_found_error_msg" msgid="7525619456883627939">"Paketa nuk u gjet."</string>
diff --git a/compose/animation/animation-graphics/src/commonMain/kotlin/androidx/compose/animation/graphics/vector/Animator.kt b/compose/animation/animation-graphics/src/commonMain/kotlin/androidx/compose/animation/graphics/vector/Animator.kt
index f21dbb9..c38b355 100644
--- a/compose/animation/animation-graphics/src/commonMain/kotlin/androidx/compose/animation/graphics/vector/Animator.kt
+++ b/compose/animation/animation-graphics/src/commonMain/kotlin/androidx/compose/animation/graphics/vector/Animator.kt
@@ -219,6 +219,7 @@
         ) { atEnd ->
             if (atEnd) overallDuration.toFloat() else 0f
         }
+        @Suppress("UnrememberedMutableState") // b/279909531
         return derivedStateOf { interpolate(timeState.value) }
     }
 
diff --git a/compose/compiler/OWNERS b/compose/compiler/OWNERS
index fc11d9b..e48b97d 100644
--- a/compose/compiler/OWNERS
+++ b/compose/compiler/OWNERS
@@ -2,4 +2,5 @@
 jsproch@google.com
 chuckj@google.com
 lelandr@google.com
+anbailey@google.com
 per-file settings.gradle = dustinlam@google.com, rahulrav@google.com
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableTypeRemapper.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableTypeRemapper.kt
index 016b6e8..83a8184 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableTypeRemapper.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableTypeRemapper.kt
@@ -22,23 +22,16 @@
 import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
 import org.jetbrains.kotlin.backend.common.peek
 import org.jetbrains.kotlin.backend.common.pop
-import org.jetbrains.kotlin.ir.IrElement
-import org.jetbrains.kotlin.ir.IrStatement
 import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
 import org.jetbrains.kotlin.ir.builders.declarations.addValueParameter
-import org.jetbrains.kotlin.ir.declarations.IrClass
 import org.jetbrains.kotlin.ir.declarations.IrConstructor
 import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
-import org.jetbrains.kotlin.ir.declarations.IrField
 import org.jetbrains.kotlin.ir.declarations.IrFile
 import org.jetbrains.kotlin.ir.declarations.IrFunction
-import org.jetbrains.kotlin.ir.declarations.IrLocalDelegatedProperty
-import org.jetbrains.kotlin.ir.declarations.IrMetadataSourceOwner
 import org.jetbrains.kotlin.ir.declarations.IrProperty
 import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
 import org.jetbrains.kotlin.ir.declarations.IrTypeParametersContainer
 import org.jetbrains.kotlin.ir.declarations.copyAttributes
-import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl
 import org.jetbrains.kotlin.ir.expressions.IrCall
 import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
 import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
@@ -58,7 +51,6 @@
 import org.jetbrains.kotlin.ir.types.impl.makeTypeProjection
 import org.jetbrains.kotlin.ir.types.isClassWithFqName
 import org.jetbrains.kotlin.ir.types.typeOrNull
-import org.jetbrains.kotlin.ir.util.DeepCopyIrTreeWithSymbols
 import org.jetbrains.kotlin.ir.util.DeepCopySymbolRemapper
 import org.jetbrains.kotlin.ir.util.SymbolRemapper
 import org.jetbrains.kotlin.ir.util.SymbolRenamer
@@ -74,28 +66,12 @@
 import org.jetbrains.kotlin.name.FqName
 import org.jetbrains.kotlin.types.Variance
 
-class DeepCopyIrTreeWithSymbolsPreservingMetadata(
+internal class DeepCopyIrTreeWithRemappedComposableTypes(
     private val context: IrPluginContext,
     private val symbolRemapper: DeepCopySymbolRemapper,
     typeRemapper: TypeRemapper,
     symbolRenamer: SymbolRenamer = SymbolRenamer.DEFAULT
-) : DeepCopyIrTreeWithSymbols(symbolRemapper, typeRemapper, symbolRenamer) {
-
-    override fun visitClass(declaration: IrClass): IrClass {
-        return super.visitClass(declaration).also { it.copyMetadataFrom(declaration) }
-    }
-
-    override fun visitFunction(declaration: IrFunction): IrStatement {
-        return super.visitFunction(declaration).also {
-            it.copyMetadataFrom(declaration)
-        }
-    }
-
-    override fun visitConstructor(declaration: IrConstructor): IrConstructor {
-        return super.visitConstructor(declaration).also {
-            it.copyMetadataFrom(declaration)
-        }
-    }
+) : DeepCopyPreservingMetadata(symbolRemapper, typeRemapper, symbolRenamer) {
 
     override fun visitSimpleFunction(declaration: IrSimpleFunction): IrSimpleFunction {
         if (declaration.symbol.isRemappedAndBound()) {
@@ -106,30 +82,17 @@
         }
         return super.visitSimpleFunction(declaration).also {
             it.correspondingPropertySymbol = declaration.correspondingPropertySymbol
-            it.copyMetadataFrom(declaration)
         }
     }
-
-    override fun visitField(declaration: IrField): IrField {
-        return super.visitField(declaration).also {
-            it.metadata = declaration.metadata
-        }
-    }
-
     override fun visitProperty(declaration: IrProperty): IrProperty {
         return super.visitProperty(declaration).also {
-            it.copyMetadataFrom(declaration)
             it.copyAttributes(declaration)
         }
     }
 
     override fun visitFile(declaration: IrFile): IrFile {
         includeFileNameInExceptionTrace(declaration) {
-            return super.visitFile(declaration).also {
-                if (it is IrFileImpl) {
-                    it.metadata = declaration.metadata
-                }
-            }
+            return super.visitFile(declaration)
         }
     }
 
@@ -188,13 +151,6 @@
         return super.visitConstructorCall(expression)
     }
 
-    override fun visitLocalDelegatedProperty(
-        declaration: IrLocalDelegatedProperty
-    ): IrLocalDelegatedProperty =
-        super.visitLocalDelegatedProperty(declaration).apply {
-            metadata = declaration.metadata
-        }
-
     private fun IrFunction.needsComposableRemapping(): Boolean {
         if (
             needsComposableRemapping(dispatchReceiverParameter?.type) ||
@@ -390,14 +346,6 @@
             extensionReceiver = original.extensionReceiver?.transform()
         }
 
-    private fun IrElement.copyMetadataFrom(owner: IrMetadataSourceOwner) {
-        if (this is IrMetadataSourceOwner) {
-            metadata = owner.metadata
-        } else {
-            throw IllegalArgumentException("Cannot copy metadata to $this")
-        }
-    }
-
     private fun IrType.isComposable(): Boolean {
         return annotations.hasAnnotation(ComposeFqNames.Composable)
     }
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposerParamTransformer.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposerParamTransformer.kt
index 5b7efce..7bb80ae 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposerParamTransformer.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposerParamTransformer.kt
@@ -120,7 +120,7 @@
         // for each declaration, we create a deepCopy transformer It is important here that we
         // use the "preserving metadata" variant since we are using this copy to *replace* the
         // originals, or else the module we would produce wouldn't have any metadata in it.
-        val transformer = DeepCopyIrTreeWithSymbolsPreservingMetadata(
+        val transformer = DeepCopyIrTreeWithRemappedComposableTypes(
             context,
             symbolRemapper,
             typeRemapper
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/DeepCopyPreservingMetadata.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/DeepCopyPreservingMetadata.kt
new file mode 100644
index 0000000..3ef6491
--- /dev/null
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/DeepCopyPreservingMetadata.kt
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.compiler.plugins.kotlin.lower
+
+import org.jetbrains.kotlin.ir.declarations.IrClass
+import org.jetbrains.kotlin.ir.declarations.IrConstructor
+import org.jetbrains.kotlin.ir.declarations.IrField
+import org.jetbrains.kotlin.ir.declarations.IrFile
+import org.jetbrains.kotlin.ir.declarations.IrLocalDelegatedProperty
+import org.jetbrains.kotlin.ir.declarations.IrProperty
+import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
+import org.jetbrains.kotlin.ir.util.DeepCopyIrTreeWithSymbols
+import org.jetbrains.kotlin.ir.util.SymbolRemapper
+import org.jetbrains.kotlin.ir.util.SymbolRenamer
+import org.jetbrains.kotlin.ir.util.TypeRemapper
+
+internal open class DeepCopyPreservingMetadata(
+    symbolRemapper: SymbolRemapper,
+    typeRemapper: TypeRemapper,
+    symbolRenamer: SymbolRenamer
+) : DeepCopyIrTreeWithSymbols(symbolRemapper, typeRemapper, symbolRenamer) {
+    override fun visitFile(declaration: IrFile): IrFile =
+        super.visitFile(declaration).apply {
+            metadata = declaration.metadata
+        }
+
+    override fun visitClass(declaration: IrClass): IrClass =
+        super.visitClass(declaration).apply {
+            metadata = declaration.metadata
+        }
+
+    override fun visitConstructor(declaration: IrConstructor): IrConstructor =
+        super.visitConstructor(declaration).apply {
+            metadata = declaration.metadata
+        }
+
+    override fun visitSimpleFunction(declaration: IrSimpleFunction): IrSimpleFunction =
+        super.visitSimpleFunction(declaration).apply {
+            metadata = declaration.metadata
+        }
+
+    override fun visitProperty(declaration: IrProperty): IrProperty =
+        super.visitProperty(declaration).apply {
+            metadata = declaration.metadata
+        }
+
+    override fun visitField(declaration: IrField): IrField =
+        super.visitField(declaration).apply {
+            metadata = declaration.metadata
+        }
+
+    override fun visitLocalDelegatedProperty(
+        declaration: IrLocalDelegatedProperty
+    ): IrLocalDelegatedProperty =
+        super.visitLocalDelegatedProperty(declaration).apply {
+            metadata = declaration.metadata
+        }
+}
\ No newline at end of file
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/decoys/DecoyTransformBase.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/decoys/DecoyTransformBase.kt
index 6143aff..632e6b00 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/decoys/DecoyTransformBase.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/decoys/DecoyTransformBase.kt
@@ -16,6 +16,7 @@
 
 package androidx.compose.compiler.plugins.kotlin.lower.decoys
 
+import androidx.compose.compiler.plugins.kotlin.lower.DeepCopyPreservingMetadata
 import androidx.compose.compiler.plugins.kotlin.lower.hasAnnotationSafe
 import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
 import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
@@ -24,16 +25,9 @@
 import org.jetbrains.kotlin.ir.IrElement
 import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
 import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
-import org.jetbrains.kotlin.ir.declarations.IrClass
-import org.jetbrains.kotlin.ir.declarations.IrConstructor
 import org.jetbrains.kotlin.ir.declarations.IrDeclaration
 import org.jetbrains.kotlin.ir.declarations.IrDeclarationContainer
-import org.jetbrains.kotlin.ir.declarations.IrField
-import org.jetbrains.kotlin.ir.declarations.IrFile
 import org.jetbrains.kotlin.ir.declarations.IrFunction
-import org.jetbrains.kotlin.ir.declarations.IrLocalDelegatedProperty
-import org.jetbrains.kotlin.ir.declarations.IrProperty
-import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
 import org.jetbrains.kotlin.ir.expressions.IrConst
 import org.jetbrains.kotlin.ir.expressions.IrExpression
 import org.jetbrains.kotlin.ir.expressions.IrVararg
@@ -47,10 +41,8 @@
 import org.jetbrains.kotlin.ir.types.IrType
 import org.jetbrains.kotlin.ir.types.IrTypeArgument
 import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
-import org.jetbrains.kotlin.ir.util.DeepCopyIrTreeWithSymbols
 import org.jetbrains.kotlin.ir.util.DeepCopyTypeRemapper
 import org.jetbrains.kotlin.ir.util.IdSignature
-import org.jetbrains.kotlin.ir.util.SymbolRemapper
 import org.jetbrains.kotlin.ir.util.SymbolRenamer
 import org.jetbrains.kotlin.ir.util.TypeRemapper
 import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
@@ -217,7 +209,7 @@
                 return typeRemapper.remapType(type.remapTypeParameters(source, target))
             }
         }
-        val deepCopy = DeepCopySavingMetadata(
+        val deepCopy = DeepCopyPreservingMetadata(
             symbolRemapper,
             typeParamRemapper,
             SymbolRenamer.DEFAULT
@@ -226,46 +218,3 @@
         deepCopy
     }
 }
-
-internal class DeepCopySavingMetadata(
-    symbolRemapper: SymbolRemapper,
-    typeRemapper: TypeRemapper,
-    symbolRenamer: SymbolRenamer
-) : DeepCopyIrTreeWithSymbols(symbolRemapper, typeRemapper, symbolRenamer) {
-    override fun visitFile(declaration: IrFile): IrFile =
-        super.visitFile(declaration).apply {
-            metadata = declaration.metadata
-        }
-
-    override fun visitClass(declaration: IrClass): IrClass =
-        super.visitClass(declaration).apply {
-            metadata = declaration.metadata
-        }
-
-    override fun visitConstructor(declaration: IrConstructor): IrConstructor =
-        super.visitConstructor(declaration).apply {
-            metadata = declaration.metadata
-        }
-
-    override fun visitSimpleFunction(declaration: IrSimpleFunction): IrSimpleFunction =
-        super.visitSimpleFunction(declaration).apply {
-            metadata = declaration.metadata
-        }
-
-    override fun visitProperty(declaration: IrProperty): IrProperty =
-        super.visitProperty(declaration).apply {
-            metadata = declaration.metadata
-        }
-
-    override fun visitField(declaration: IrField): IrField =
-        super.visitField(declaration).apply {
-            metadata = declaration.metadata
-        }
-
-    override fun visitLocalDelegatedProperty(
-        declaration: IrLocalDelegatedProperty
-    ): IrLocalDelegatedProperty =
-        super.visitLocalDelegatedProperty(declaration).apply {
-            metadata = declaration.metadata
-        }
-}
\ No newline at end of file
diff --git a/compose/desktop/desktop/build.gradle b/compose/desktop/desktop/build.gradle
index a8baf7a..46e9c83 100644
--- a/compose/desktop/desktop/build.gradle
+++ b/compose/desktop/desktop/build.gradle
@@ -14,6 +14,9 @@
  * limitations under the License.
  */
 
+
+import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
 import androidx.build.LibraryType
 import androidx.build.RunApiTasks
 import androidx.build.BuildOnServerKt
@@ -26,41 +29,55 @@
     id("kotlin-multiplatform")
 }
 
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
+
 dependencies {
 }
 
 kotlin {
-    jvm() {
-        withJava()
+    if (desktopEnabled) {
+        jvm() {
+            withJava()
+        }
     }
 
-    sourceSets {
-        commonMain.dependencies {
-            implementation(libs.kotlinStdlibCommon)
-            implementation(project(":compose:ui:ui-util"))
-            api(project(":compose:foundation:foundation"))
-            api(project(":compose:material:material"))
-            api(project(":compose:runtime:runtime"))
-            api(project(":compose:ui:ui"))
-            api(project(":compose:ui:ui-tooling-preview"))
-        }
-
-        jvmMain.dependencies {
-            implementation(libs.kotlinStdlib)
-            implementation(libs.kotlinStdlibJdk8)
-            implementation(libs.kotlinCoroutinesCore)
-        }
-
-        jvmTest {
-            resources.srcDirs += new File(SupportConfigKt.getExternalProjectPath(project), "noto-fonts/other/")
-            resources.srcDirs += "src/jvmTest/res"
-            dependencies {
-                implementation(libs.kotlinCoroutinesTest)
-                implementation(libs.skikoCurrentOs)
-                implementation(project(":compose:ui:ui-test-junit4"))
-                implementation(libs.junit)
-                implementation(libs.truth)
+    if (desktopEnabled) {
+        sourceSets {
+            commonMain.dependencies {
+                implementation(libs.kotlinStdlibCommon)
+                implementation(project(":compose:ui:ui-util"))
+                api(project(":compose:foundation:foundation"))
+                api(project(":compose:material:material"))
+                api(project(":compose:runtime:runtime"))
+                api(project(":compose:ui:ui"))
+                api(project(":compose:ui:ui-tooling-preview"))
             }
+
+            jvmMain.dependencies {
+                implementation(libs.kotlinStdlib)
+                implementation(libs.kotlinStdlibJdk8)
+                implementation(libs.kotlinCoroutinesCore)
+            }
+
+            jvmTest {
+                resources.srcDirs += new File(SupportConfigKt.getExternalProjectPath(project), "noto-fonts/other/")
+                resources.srcDirs += "src/jvmTest/res"
+                dependencies {
+                    implementation(libs.kotlinCoroutinesTest)
+                    implementation(libs.skikoCurrentOs)
+                    implementation(project(":compose:ui:ui-test-junit4"))
+                    implementation(libs.junit)
+                    implementation(libs.truth)
+                }
+            }
+        }
+    }
+}
+
+if (!desktopEnabled) {
+    kotlin {
+        jvm("disabled") {
+            withJava()
         }
     }
 }
@@ -74,8 +91,10 @@
     }
 }
 
-tasks.findByName("jvmTest").configure {
-    systemProperties["GOLDEN_PATH"] = getGoldenPath(project).toString()
+if (desktopEnabled) {
+    tasks.findByName("jvmTest").configure {
+        systemProperties["GOLDEN_PATH"] = getGoldenPath(project).toString()
+    }
 }
 
 androidx {
@@ -127,4 +146,6 @@
     }
 }
 
-BuildOnServerKt.addToBuildOnServer(project, "${project.path}:jvmJar")
+if (desktopEnabled) {
+    BuildOnServerKt.addToBuildOnServer(project, "${project.path}:jvmJar")
+}
diff --git a/compose/desktop/desktop/samples/build.gradle b/compose/desktop/desktop/samples/build.gradle
index 76b09be..7502716 100644
--- a/compose/desktop/desktop/samples/build.gradle
+++ b/compose/desktop/desktop/samples/build.gradle
@@ -15,94 +15,105 @@
  */
 
 import androidx.build.BuildOnServerKt
+import androidx.build.KmpPlatformsKt
 import androidx.build.SupportConfigKt
 
 plugins {
     id("AndroidXPlugin")
+    id("java")
     id("AndroidXComposePlugin")
     id("kotlin-multiplatform")
 }
 
-dependencies {
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
+
+if (desktopEnabled) {
+    kotlin {
+        jvm()
+
+        sourceSets {
+            jvmMain {
+                resources.srcDirs += new File(SupportConfigKt.getExternalProjectPath(project), "noto-fonts/other/")
+                resources.srcDirs += "src/jvmMain/res"
+            }
+
+            jvmMain.dependencies {
+                implementation(libs.skikoCurrentOs)
+                implementation(project(":compose:desktop:desktop"))
+            }
+        }
+    }
+
+    task run1(type: JavaExec) {
+        dependsOn(":compose:desktop:desktop:jar")
+        main = "androidx.compose.desktop.examples.example1.Main_jvmKt"
+        systemProperty("skiko.fps.enabled", "true")
+        def compilation = kotlin.jvm().compilations["main"]
+        classpath =
+                compilation.output.allOutputs +
+                        compilation.runtimeDependencyFiles
+    }
+
+    task run2(type: JavaExec) {
+        dependsOn(":compose:desktop:desktop:jar")
+        main = "androidx.compose.desktop.examples.example2.Main_jvmKt"
+        def compilation = kotlin.jvm().compilations["main"]
+        classpath =
+                compilation.output.allOutputs +
+                        compilation.runtimeDependencyFiles
+    }
+
+    task run3(type: JavaExec) {
+        dependsOn(":compose:desktop:desktop:jar")
+        main = "androidx.compose.desktop.examples.popupexample.Main_jvmKt"
+        def compilation = kotlin.jvm().compilations["main"]
+        classpath =
+                compilation.output.allOutputs +
+                        compilation.runtimeDependencyFiles
+    }
+
+    task run4(type: JavaExec) {
+        dependsOn(":compose:desktop:desktop:jar")
+        main = "androidx.compose.desktop.examples.swingexample.Main_jvmKt"
+        def compilation = kotlin.jvm().compilations["main"]
+        classpath =
+                compilation.output.allOutputs +
+                        compilation.runtimeDependencyFiles
+    }
+
+    task runVsync(type: JavaExec) {
+        dependsOn(":compose:desktop:desktop:jar")
+        main = "androidx.compose.desktop.examples.vsynctest.Main_jvmKt"
+        jvmArgs("-verbose:gc")
+        def compilation = kotlin.jvm().compilations["main"]
+        classpath =
+                compilation.output.allOutputs +
+                        compilation.runtimeDependencyFiles
+    }
+
+    task runWindowApi(type: JavaExec) {
+        dependsOn(":compose:desktop:desktop:jar")
+        main = "androidx.compose.desktop.examples.windowapi.Main_jvmKt"
+        def compilation = kotlin.jvm().compilations["main"]
+        systemProperty("skiko.rendering.laf.global", "true")
+        systemProperty("skiko.rendering.useScreenMenuBar", "true")
+        classpath =
+                compilation.output.allOutputs +
+                        compilation.runtimeDependencyFiles
+    }
+
+    task run {
+        dependsOn("run1")
+    }
+
+
+    BuildOnServerKt.addToBuildOnServer(project, "${project.path}:jvmJar")
 }
 
-kotlin {
-    jvm()
-
-    sourceSets {
-        jvmMain {
-            resources.srcDirs += new File(SupportConfigKt.getExternalProjectPath(project), "noto-fonts/other/")
-            resources.srcDirs += "src/jvmMain/res"
-        }
-
-        jvmMain.dependencies {
-            implementation(libs.skikoCurrentOs)
-            implementation(project(":compose:desktop:desktop"))
+if (!desktopEnabled) {
+    kotlin {
+        jvm("disabled") {
+            withJava()
         }
     }
 }
-
-task run1(type: JavaExec) {
-    dependsOn(":compose:desktop:desktop:jar")
-    main = "androidx.compose.desktop.examples.example1.Main_jvmKt"
-    systemProperty("skiko.fps.enabled", "true")
-    def compilation = kotlin.jvm().compilations["main"]
-    classpath =
-        compilation.output.allOutputs +
-        compilation.runtimeDependencyFiles
-}
-
-task run2(type: JavaExec) {
-    dependsOn(":compose:desktop:desktop:jar")
-    main = "androidx.compose.desktop.examples.example2.Main_jvmKt"
-    def compilation = kotlin.jvm().compilations["main"]
-    classpath =
-        compilation.output.allOutputs +
-        compilation.runtimeDependencyFiles
-}
-
-task run3(type: JavaExec) {
-    dependsOn(":compose:desktop:desktop:jar")
-    main = "androidx.compose.desktop.examples.popupexample.Main_jvmKt"
-    def compilation = kotlin.jvm().compilations["main"]
-    classpath =
-        compilation.output.allOutputs +
-        compilation.runtimeDependencyFiles
-}
-
-task run4(type: JavaExec) {
-    dependsOn(":compose:desktop:desktop:jar")
-    main = "androidx.compose.desktop.examples.swingexample.Main_jvmKt"
-    def compilation = kotlin.jvm().compilations["main"]
-    classpath =
-        compilation.output.allOutputs +
-        compilation.runtimeDependencyFiles
-}
-
-task runVsync(type: JavaExec) {
-    dependsOn(":compose:desktop:desktop:jar")
-    main = "androidx.compose.desktop.examples.vsynctest.Main_jvmKt"
-    jvmArgs("-verbose:gc")
-    def compilation = kotlin.jvm().compilations["main"]
-    classpath =
-        compilation.output.allOutputs +
-        compilation.runtimeDependencyFiles
-}
-
-task runWindowApi(type: JavaExec) {
-    dependsOn(":compose:desktop:desktop:jar")
-    main = "androidx.compose.desktop.examples.windowapi.Main_jvmKt"
-    def compilation = kotlin.jvm().compilations["main"]
-    systemProperty("skiko.rendering.laf.global", "true")
-    systemProperty("skiko.rendering.useScreenMenuBar", "true")
-    classpath =
-        compilation.output.allOutputs +
-        compilation.runtimeDependencyFiles
-}
-
-task run {
-    dependsOn("run1")
-}
-
-
-BuildOnServerKt.addToBuildOnServer(project, "${project.path}:jvmJar")
diff --git a/compose/desktop/desktop/samples/src/jvmMain/disabled/Empty.kt b/compose/desktop/desktop/samples/src/jvmMain/disabled/Empty.kt
new file mode 100644
index 0000000..0c32401
--- /dev/null
+++ b/compose/desktop/desktop/samples/src/jvmMain/disabled/Empty.kt
@@ -0,0 +1 @@
+// Give Kotlin a placeholder file to compile when this project is disabled.
\ No newline at end of file
diff --git a/compose/desktop/desktop/src/disabled/Empty.kt b/compose/desktop/desktop/src/disabled/Empty.kt
new file mode 100644
index 0000000..0c32401
--- /dev/null
+++ b/compose/desktop/desktop/src/disabled/Empty.kt
@@ -0,0 +1 @@
+// Give Kotlin a placeholder file to compile when this project is disabled.
\ No newline at end of file
diff --git a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/PagerSamples.kt b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/PagerSamples.kt
index b95aeb5..78597e0 100644
--- a/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/PagerSamples.kt
+++ b/compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/PagerSamples.kt
@@ -21,25 +21,39 @@
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.aspectRatio
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.offset
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.pager.HorizontalPager
 import androidx.compose.foundation.pager.PageSize
 import androidx.compose.foundation.pager.VerticalPager
 import androidx.compose.foundation.pager.rememberPagerState
+import androidx.compose.foundation.rememberScrollState
+import androidx.compose.foundation.verticalScroll
 import androidx.compose.material.Button
 import androidx.compose.material.Text
+import androidx.compose.material.TopAppBar
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
 import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
+import androidx.compose.ui.input.nestedscroll.NestedScrollSource
+import androidx.compose.ui.input.nestedscroll.nestedScroll
+import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.unit.Density
+import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
+import kotlin.math.roundToInt
 import kotlinx.coroutines.launch
 
 @OptIn(ExperimentalFoundationApi::class)
@@ -254,4 +268,73 @@
             }
         }
     }
+}
+
+@OptIn(ExperimentalFoundationApi::class)
+@Sampled
+@Composable
+fun HorizontalPagerWithScrollableContent() {
+    // This is a sample using NestedScroll and Pager.
+    // We use the toolbar offset changing example from
+    // androidx.compose.ui.samples.NestedScrollConnectionSample
+
+    val pagerState = rememberPagerState { 10 }
+
+    val toolbarHeight = 48.dp
+    val toolbarHeightPx = with(LocalDensity.current) { toolbarHeight.roundToPx().toFloat() }
+    val toolbarOffsetHeightPx = remember { mutableStateOf(0f) }
+    val nestedScrollConnection = remember {
+        object : NestedScrollConnection {
+            override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset {
+                val delta = available.y
+                val newOffset = toolbarOffsetHeightPx.value + delta
+                toolbarOffsetHeightPx.value = newOffset.coerceIn(-toolbarHeightPx, 0f)
+                return Offset.Zero
+            }
+        }
+    }
+
+    Box(
+        modifier = Modifier
+            .fillMaxSize()
+            .nestedScroll(nestedScrollConnection)
+    ) {
+        TopAppBar(
+            modifier = Modifier
+                .height(toolbarHeight)
+                .offset { IntOffset(x = 0, y = toolbarOffsetHeightPx.value.roundToInt()) },
+            title = { Text("Toolbar offset is ${toolbarOffsetHeightPx.value}") }
+        )
+
+        val paddingOffset =
+            toolbarHeight + with(LocalDensity.current) { toolbarOffsetHeightPx.value.toDp() }
+
+        HorizontalPager(
+            modifier = Modifier.fillMaxSize(),
+            state = pagerState,
+            contentPadding = PaddingValues(top = paddingOffset)
+        ) {
+            Column(
+                modifier = Modifier
+                    .fillMaxWidth()
+                    .verticalScroll(rememberScrollState())
+            ) {
+                repeat(20) {
+                    Box(
+                        modifier = Modifier
+                            .fillMaxWidth()
+                            .height(64.dp)
+                            .padding(4.dp)
+                            .background(if (it % 2 == 0) Color.Black else Color.Yellow),
+                        contentAlignment = Alignment.Center
+                    ) {
+                        Text(
+                            text = it.toString(),
+                            color = if (it % 2 != 0) Color.Black else Color.Yellow
+                        )
+                    }
+                }
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/BasePagerTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/BasePagerTest.kt
index 80cc4f9..1c1eb34 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/BasePagerTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/BasePagerTest.kt
@@ -57,6 +57,7 @@
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.dp
+import kotlin.test.assertTrue
 import kotlinx.coroutines.CoroutineScope
 
 @OptIn(ExperimentalFoundationApi::class)
@@ -336,6 +337,20 @@
         rule.onNodeWithTag("$pageToVerifyPosition")
             .assertPositionInRootIsEqualTo(left + leftContentPadding, top + topContentPadding)
     }
+
+    internal fun runAndWaitForPageSettling(block: () -> Unit) {
+        block()
+        rule.mainClock.advanceTimeUntil {
+            pagerState.currentPageOffsetFraction != 0.0f
+        } // wait for first move from drag
+        rule.mainClock.advanceTimeUntil {
+            pagerState.currentPageOffsetFraction == 0.0f
+        } // wait for fling settling
+        // pump the clock twice and check we're still settled.
+        rule.mainClock.advanceTimeByFrame()
+        rule.mainClock.advanceTimeByFrame()
+        assertTrue { pagerState.currentPageOffsetFraction == 0.0f }
+    }
 }
 
 class ParamConfig(
@@ -358,7 +373,7 @@
 
 internal const val PagerTestTag = "pager"
 internal const val DefaultPageCount = 20
-internal const val DefaultAnimationRepetition = 3
+internal const val DefaultAnimationRepetition = 2
 internal val TestOrientation = listOf(Orientation.Vertical, Orientation.Horizontal)
 internal val AllOrientationsParams = mutableListOf<ParamConfig>().apply {
     for (orientation in TestOrientation) {
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PageLayoutPositionOnScrollingTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PageLayoutPositionOnScrollingTest.kt
index 6531eba..ef8e8fa 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PageLayoutPositionOnScrollingTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PageLayoutPositionOnScrollingTest.kt
@@ -24,6 +24,7 @@
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.performTouchInput
 import androidx.test.filters.LargeTest
+import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
@@ -35,6 +36,11 @@
     val config: ParamConfig
 ) : BasePagerTest(config) {
 
+    @Before
+    fun setUp() {
+        rule.mainClock.autoAdvance = false
+    }
+
     @Test
     fun swipeForwardAndBackward_verifyPagesAreLaidOutCorrectly() {
         // Arrange
@@ -45,13 +51,14 @@
         repeat(DefaultAnimationRepetition) {
             rule.onNodeWithTag(it.toString()).assertIsDisplayed()
             confirmPageIsInCorrectPosition(it)
-            rule.onNodeWithTag(it.toString()).performTouchInput {
-                swipeWithVelocityAcrossMainAxis(
-                    with(rule.density) { 1.5f * MinFlingVelocityDp.toPx() },
-                    delta
-                )
+            runAndWaitForPageSettling {
+                rule.onNodeWithTag(it.toString()).performTouchInput {
+                    swipeWithVelocityAcrossMainAxis(
+                        with(rule.density) { 1.5f * MinFlingVelocityDp.toPx() },
+                        delta
+                    )
+                }
             }
-            rule.waitForIdle()
         }
 
         // Act - backward
@@ -59,13 +66,14 @@
             val countDown = DefaultAnimationRepetition - it
             rule.onNodeWithTag(countDown.toString()).assertIsDisplayed()
             confirmPageIsInCorrectPosition(countDown)
-            rule.onNodeWithTag(countDown.toString()).performTouchInput {
-                swipeWithVelocityAcrossMainAxis(
-                    with(rule.density) { 1.5f * MinFlingVelocityDp.toPx() },
-                    delta * -1f
-                )
+            runAndWaitForPageSettling {
+                rule.onNodeWithTag(countDown.toString()).performTouchInput {
+                    swipeWithVelocityAcrossMainAxis(
+                        with(rule.density) { 1.5f * MinFlingVelocityDp.toPx() },
+                        delta * -1f
+                    )
+                }
             }
-            rule.waitForIdle()
         }
     }
 
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerOffscreenPageLimitPlacingTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerOffscreenPageLimitPlacingTest.kt
index aaf1a6f..5967023 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerOffscreenPageLimitPlacingTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerOffscreenPageLimitPlacingTest.kt
@@ -22,6 +22,7 @@
 import androidx.compose.ui.test.performTouchInput
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth
+import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
@@ -33,6 +34,11 @@
     val config: ParamConfig
 ) : BasePagerTest(config) {
 
+    @Before
+    fun setUp() {
+        rule.mainClock.autoAdvance = false
+    }
+
     @Test
     fun offscreenPageLimitIsUsed_shouldPlaceMoreItemsThanVisibleOnesAsWeScroll() {
         // Arrange
@@ -45,11 +51,12 @@
 
         repeat(DefaultAnimationRepetition) {
             // Act
-            onPager().performTouchInput {
-                swipeWithVelocityAcrossMainAxis(0f, delta)
+            runAndWaitForPageSettling {
+                onPager().performTouchInput {
+                    swipeWithVelocityAcrossMainAxis(0f, delta)
+                }
             }
 
-            rule.waitForIdle()
             // Next page was placed
             rule.runOnIdle {
                 Truth.assertThat(placed).contains(
@@ -58,7 +65,7 @@
                 )
             }
         }
-        rule.waitForIdle()
+
         confirmPageIsInCorrectPosition(pagerState.currentPage)
     }
 
@@ -102,7 +109,6 @@
         )
 
         // Assert
-        rule.waitForIdle()
         val firstVisible = pagerState.layoutInfo.visiblePagesInfo.first().index
         val lastVisible = pagerState.layoutInfo.visiblePagesInfo.last().index
         Truth.assertThat(placed).doesNotContain(firstVisible - 1)
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerScrollingTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerScrollingTest.kt
index 70cc0a6..103f9c7 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerScrollingTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerScrollingTest.kt
@@ -32,6 +32,7 @@
 import androidx.test.filters.LargeTest
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.runBlocking
+import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
@@ -43,6 +44,11 @@
     val config: ParamConfig
 ) : BasePagerTest(config) {
 
+    @Before
+    fun setUp() {
+        rule.mainClock.autoAdvance = false
+    }
+
     @Test
     fun swipeWithLowVelocity_positionalThresholdLessThanDefaultThreshold_shouldBounceBack() {
         // Arrange
@@ -51,26 +57,28 @@
         val delta = pagerSize * swipeValue * scrollForwardSign
 
         // Act - forward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
         confirmPageIsInCorrectPosition(5)
 
         // Act - backward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta * -1
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta * -1
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
@@ -89,26 +97,28 @@
         val delta = pagerSize * swipeValue * scrollForwardSign
 
         // Act - forward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
         confirmPageIsInCorrectPosition(5)
 
         // Act - backward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta * -1
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta * -1
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
@@ -127,26 +137,28 @@
         val delta = pagerSize * swipeValue * scrollForwardSign
 
         // Act - forward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
         confirmPageIsInCorrectPosition(5)
 
         // Act - backward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta * -1
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta * -1
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
@@ -163,26 +175,28 @@
         val delta = (2.4f * pageSize) * scrollForwardSign // 2.4 pages
 
         // Act - forward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("4").assertIsDisplayed()
         confirmPageIsInCorrectPosition(4)
 
         // Act - backward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta * -1
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta * -1
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("2").assertIsDisplayed()
@@ -197,26 +211,28 @@
         val delta = pagerSize * swipeValue * scrollForwardSign
 
         // Act - forward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("6").assertIsDisplayed()
         confirmPageIsInCorrectPosition(6)
 
         // Act - backward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta * -1
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta * -1
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
@@ -235,26 +251,28 @@
         val delta = pagerSize * swipeValue * scrollForwardSign
 
         // Act - forward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("6").assertIsDisplayed()
         confirmPageIsInCorrectPosition(6)
 
         // Act - backward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta * -1
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta * -1
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
@@ -275,26 +293,28 @@
         val delta = 2.6f * pageSize * scrollForwardSign
 
         // Act - forward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
         confirmPageIsInCorrectPosition(5)
 
         // Act - backward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta * -1
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta * -1
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("2").assertIsDisplayed()
@@ -313,26 +333,28 @@
         val delta = pagerSize * swipeValue * scrollForwardSign
 
         // Act - forward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("6").assertIsDisplayed()
         confirmPageIsInCorrectPosition(6)
 
         // Act - backward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
-                delta * -1
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * MinFlingVelocityDp.toPx() },
+                    delta * -1
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
@@ -351,26 +373,28 @@
         val delta = pagerSize * 0.4f * scrollForwardSign
 
         // Act - forward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * snapVelocityThreshold.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * snapVelocityThreshold.toPx() },
+                    delta
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
         confirmPageIsInCorrectPosition(5)
 
         // Act - backward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 0.5f * snapVelocityThreshold.toPx() },
-                delta * -1
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 0.5f * snapVelocityThreshold.toPx() },
+                    delta * -1
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
@@ -385,26 +409,28 @@
         val delta = pagerSize * 0.4f * scrollForwardSign
 
         // Act - forward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
+                    delta
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("6").assertIsDisplayed()
         confirmPageIsInCorrectPosition(6)
 
         // Act - backward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
-                delta * -1
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
+                    delta * -1
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
@@ -424,26 +450,28 @@
         val delta = pagerSize * 0.4f * scrollForwardSign
 
         // Act - forward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 1.1f * snapVelocityThreshold.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 1.1f * snapVelocityThreshold.toPx() },
+                    delta
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("6").assertIsDisplayed()
         confirmPageIsInCorrectPosition(6)
 
         // Act - backward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 1.1f * snapVelocityThreshold.toPx() },
-                delta * -1
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 1.1f * snapVelocityThreshold.toPx() },
+                    delta * -1
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
@@ -458,26 +486,28 @@
         val delta = pagerSize * 0.8f * scrollForwardSign
 
         // Act - forward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
+                    delta
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("6").assertIsDisplayed()
         confirmPageIsInCorrectPosition(6)
 
         // Act - backward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
-                delta * -1
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
+                    delta * -1
+                )
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         rule.onNodeWithTag("5").assertIsDisplayed()
@@ -492,10 +522,11 @@
         val delta = pagerSize * 1.4f * scrollForwardSign
 
         // Act - forward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(0f, delta)
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(0f, delta)
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         assertThat(pagerState.currentPage).isAtMost(7)
@@ -503,10 +534,11 @@
         confirmPageIsInCorrectPosition(pagerState.currentPage)
 
         // Act - backward
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(0f, delta * -1)
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(0f, delta * -1)
+            }
         }
-        rule.waitForIdle()
 
         // Assert
         assertThat(pagerState.currentPage).isAtLeast(5)
@@ -621,8 +653,8 @@
                     initialPage = initialPage,
                     initialPageOffsetFraction = 0f
                 ) {
-                   10
-                }
+                    10
+                }.also { pagerState = it }
             }
 
             HorizontalOrVerticalPager(
@@ -636,39 +668,41 @@
             }
         }
         val delta = pageSize * 0.4f * scrollForwardSign
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
+                    delta
+                )
+            }
         }
-
-        rule.waitForIdle()
         rule.onNodeWithTag("1").assertIsDisplayed()
         confirmPageIsInCorrectPosition(1)
 
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
+                    delta
+                )
+            }
         }
 
-        rule.waitForIdle()
         rule.onNodeWithTag("2").assertIsDisplayed()
         confirmPageIsInCorrectPosition(2)
 
         rule.runOnIdle { initialPage = 1 }
 
         rule.waitForIdle()
-        onPager().performTouchInput {
-            swipeWithVelocityAcrossMainAxis(
-                with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
-                delta
-            )
+        runAndWaitForPageSettling {
+            onPager().performTouchInput {
+                swipeWithVelocityAcrossMainAxis(
+                    with(rule.density) { 1.1f * MinFlingVelocityDp.toPx() },
+                    delta
+                )
+            }
         }
 
-        rule.waitForIdle()
         confirmPageIsInCorrectPosition(2)
     }
 
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerStateNonGestureScrollingTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerStateNonGestureScrollingTest.kt
new file mode 100644
index 0000000..7bed3fc
--- /dev/null
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerStateNonGestureScrollingTest.kt
@@ -0,0 +1,260 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.foundation.pager
+
+import androidx.compose.foundation.AutoTestFrameClock
+import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.derivedStateOf
+import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.layout.onSizeChanged
+import androidx.compose.ui.platform.testTag
+import androidx.compose.ui.test.assertIsDisplayed
+import androidx.compose.ui.test.junit4.StateRestorationTester
+import androidx.compose.ui.test.onNodeWithTag
+import androidx.compose.ui.unit.dp
+import androidx.test.filters.LargeTest
+import com.google.common.truth.Truth
+import kotlin.test.assertFalse
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+import kotlinx.coroutines.withContext
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+
+@OptIn(ExperimentalFoundationApi::class)
+@LargeTest
+@RunWith(Parameterized::class)
+class PagerStateNonGestureScrollingTest(val config: ParamConfig) : BasePagerTest(config) {
+    @Test
+    fun pagerStateNotAttached_shouldReturnDefaultValues_andChangeAfterAttached() = runBlocking {
+        // Arrange
+        val state = PagerStateImpl(5, 0.2f) { DefaultPageCount }
+
+        Truth.assertThat(state.currentPage).isEqualTo(5)
+        Truth.assertThat(state.currentPageOffsetFraction).isEqualTo(0.2f)
+
+        val currentPage = derivedStateOf { state.currentPage }
+        val currentPageOffsetFraction = derivedStateOf { state.currentPageOffsetFraction }
+
+        rule.setContent {
+            HorizontalOrVerticalPager(
+                state = state,
+                modifier = Modifier
+                    .fillMaxSize()
+                    .testTag(PagerTestTag)
+                    .onSizeChanged { pagerSize = if (vertical) it.height else it.width },
+                pageSize = PageSize.Fill,
+                reverseLayout = config.reverseLayout,
+                pageSpacing = config.pageSpacing,
+                contentPadding = config.mainAxisContentPadding,
+            ) {
+                Page(index = it)
+            }
+        }
+
+        withContext(Dispatchers.Main + AutoTestFrameClock()) {
+            state.scrollToPage(state.currentPage + 1)
+        }
+
+        rule.runOnIdle {
+            Truth.assertThat(currentPage.value).isEqualTo(6)
+            Truth.assertThat(currentPageOffsetFraction.value).isEqualTo(0.0f)
+        }
+    }
+
+    @Test
+    fun initialPageOnPagerState_shouldDisplayThatPageFirst() {
+        // Arrange
+
+        // Act
+        createPager(initialPage = 5, modifier = Modifier.fillMaxSize())
+
+        // Assert
+        rule.onNodeWithTag("4").assertDoesNotExist()
+        rule.onNodeWithTag("5").assertIsDisplayed()
+        rule.onNodeWithTag("6").assertDoesNotExist()
+        confirmPageIsInCorrectPosition(pagerState.currentPage)
+    }
+
+    @Test
+    fun testStateRestoration() {
+        // Arrange
+        val tester = StateRestorationTester(rule)
+        lateinit var state: PagerState
+        tester.setContent {
+            state = rememberPagerState(pageCount = { DefaultPageCount })
+            scope = rememberCoroutineScope()
+            HorizontalOrVerticalPager(
+                state = state,
+                modifier = Modifier.fillMaxSize()
+            ) {
+                Page(it)
+            }
+        }
+
+        // Act
+        rule.runOnIdle {
+            scope.launch {
+                state.scrollToPage(5)
+            }
+            runBlocking {
+                state.scroll {
+                    scrollBy(50f)
+                }
+            }
+        }
+
+        val previousPage = state.currentPage
+        val previousOffset = state.currentPageOffsetFraction
+        tester.emulateSavedInstanceStateRestore()
+
+        // Assert
+        rule.runOnIdle {
+            Truth.assertThat(state.currentPage).isEqualTo(previousPage)
+            Truth.assertThat(state.currentPageOffsetFraction).isEqualTo(previousOffset)
+        }
+    }
+
+    @Test
+    fun currentPageOffsetFraction_shouldNeverBeNan() {
+        rule.setContent {
+            val state = rememberPagerState(pageCount = { 10 })
+            // Read state in composition, should never be Nan
+            assertFalse { state.currentPageOffsetFraction.isNaN() }
+            HorizontalOrVerticalPager(state = state) {
+                Page(index = it)
+            }
+        }
+    }
+
+    @Test
+    fun calculatePageCountOffset_shouldBeBasedOnCurrentPage() {
+        val pageToOffsetCalculations = mutableMapOf<Int, Float>()
+        createPager(modifier = Modifier.fillMaxSize(), pageSize = { PageSize.Fixed(20.dp) }) {
+            pageToOffsetCalculations[it] = pagerState.getOffsetFractionForPage(it)
+            Page(index = it)
+        }
+
+        for ((page, offset) in pageToOffsetCalculations) {
+            val currentPage = pagerState.currentPage
+            val currentPageOffset = pagerState.currentPageOffsetFraction
+            Truth.assertThat(offset).isEqualTo((currentPage - page) + currentPageOffset)
+        }
+    }
+
+    @Test
+    fun scrollToPage_usingLaunchedEffect() {
+
+        createPager(additionalContent = {
+            LaunchedEffect(pagerState) {
+                pagerState.scrollToPage(10)
+            }
+        })
+
+        Truth.assertThat(pagerState.currentPage).isEqualTo(10)
+        confirmPageIsInCorrectPosition(10)
+    }
+
+    @Test
+    fun scrollToPageWithOffset_usingLaunchedEffect() {
+        createPager(additionalContent = {
+            LaunchedEffect(pagerState) {
+                pagerState.scrollToPage(10, 0.4f)
+            }
+        })
+
+        Truth.assertThat(pagerState.currentPage).isEqualTo(10)
+        confirmPageIsInCorrectPosition(10, pageOffset = 0.4f)
+    }
+
+    @Test
+    fun animatedScrollToPage_usingLaunchedEffect() {
+
+        createPager(additionalContent = {
+            LaunchedEffect(pagerState) {
+                pagerState.animateScrollToPage(10)
+            }
+        })
+
+        Truth.assertThat(pagerState.currentPage).isEqualTo(10)
+        confirmPageIsInCorrectPosition(10)
+    }
+
+    @Test
+    fun animatedScrollToPageWithOffset_usingLaunchedEffect() {
+
+        createPager(additionalContent = {
+            LaunchedEffect(pagerState) {
+                pagerState.animateScrollToPage(10, 0.4f)
+            }
+        })
+
+        Truth.assertThat(pagerState.currentPage).isEqualTo(10)
+        confirmPageIsInCorrectPosition(10, pageOffset = 0.4f)
+    }
+
+    @Test
+    fun animatedScrollToPage_viewPortNumberOfPages_usingLaunchedEffect_shouldNotPlaceALlPages() {
+
+        createPager(additionalContent = {
+            LaunchedEffect(pagerState) {
+                pagerState.animateScrollToPage(DefaultPageCount - 1)
+            }
+        })
+
+        // Assert
+        rule.runOnIdle {
+            Truth.assertThat(pagerState.currentPage).isEqualTo(DefaultPageCount - 1)
+            Truth.assertThat(placed).doesNotContain(DefaultPageCount / 2 - 1)
+            Truth.assertThat(placed).doesNotContain(DefaultPageCount / 2)
+            Truth.assertThat(placed).doesNotContain(DefaultPageCount / 2 + 1)
+        }
+        confirmPageIsInCorrectPosition(pagerState.currentPage)
+    }
+
+    @Test
+    fun scrollTo_beforeFirstLayout_shouldWaitForStateAndLayoutSetting() {
+        // Arrange
+
+        rule.mainClock.autoAdvance = false
+
+        // Act
+        createPager(modifier = Modifier.fillMaxSize(), additionalContent = {
+            LaunchedEffect(pagerState) {
+                pagerState.scrollToPage(5)
+            }
+        })
+
+        // Assert
+        Truth.assertThat(pagerState.currentPage).isEqualTo(5)
+    }
+
+    companion object {
+        @JvmStatic
+        @Parameterized.Parameters(name = "{0}")
+        fun params() = mutableListOf<ParamConfig>().apply {
+            for (orientation in TestOrientation) {
+                add(ParamConfig(orientation = orientation))
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerStateTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerStateTest.kt
index 9bf833a..fbcbe8b 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerStateTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/pager/PagerStateTest.kt
@@ -22,21 +22,13 @@
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.runtime.LaunchedEffect
-import androidx.compose.runtime.derivedStateOf
-import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Offset
-import androidx.compose.ui.layout.onSizeChanged
-import androidx.compose.ui.platform.testTag
-import androidx.compose.ui.test.assertIsDisplayed
-import androidx.compose.ui.test.junit4.StateRestorationTester
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.performTouchInput
-import androidx.compose.ui.unit.dp
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
 import com.google.common.truth.Truth.assertThat
-import kotlin.test.assertFalse
 import kotlin.test.assertTrue
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
@@ -52,43 +44,6 @@
 class PagerStateTest(val config: ParamConfig) : BasePagerTest(config) {
 
     @Test
-    fun pagerStateNotAttached_shouldReturnDefaultValues_andChangeAfterAttached() = runBlocking {
-        // Arrange
-        val state = PagerStateImpl(5, 0.2f) { DefaultPageCount }
-
-        assertThat(state.currentPage).isEqualTo(5)
-        assertThat(state.currentPageOffsetFraction).isEqualTo(0.2f)
-
-        val currentPage = derivedStateOf { state.currentPage }
-        val currentPageOffsetFraction = derivedStateOf { state.currentPageOffsetFraction }
-
-        rule.setContent {
-            HorizontalOrVerticalPager(
-                state = state,
-                modifier = Modifier
-                    .fillMaxSize()
-                    .testTag(PagerTestTag)
-                    .onSizeChanged { pagerSize = if (vertical) it.height else it.width },
-                pageSize = PageSize.Fill,
-                reverseLayout = config.reverseLayout,
-                pageSpacing = config.pageSpacing,
-                contentPadding = config.mainAxisContentPadding,
-            ) {
-                Page(index = it)
-            }
-        }
-
-        withContext(Dispatchers.Main + AutoTestFrameClock()) {
-            state.scrollToPage(state.currentPage + 1)
-        }
-
-        rule.runOnIdle {
-            assertThat(currentPage.value).isEqualTo(6)
-            assertThat(currentPageOffsetFraction.value).isEqualTo(0.0f)
-        }
-    }
-
-    @Test
     fun scrollToPage_shouldPlacePagesCorrectly() = runBlocking {
         // Arrange
         createPager(modifier = Modifier.fillMaxSize())
@@ -96,9 +51,11 @@
         // Act and Assert
         repeat(DefaultAnimationRepetition) {
             assertThat(pagerState.currentPage).isEqualTo(it)
+            val nextPage = pagerState.currentPage + 1
             withContext(Dispatchers.Main + AutoTestFrameClock()) {
-                pagerState.scrollToPage(pagerState.currentPage + 1)
+                pagerState.scrollToPage(nextPage)
             }
+            rule.mainClock.advanceTimeUntil { pagerState.currentPage == nextPage }
             confirmPageIsInCorrectPosition(pagerState.currentPage)
         }
     }
@@ -179,9 +136,11 @@
         // Act and Assert
         repeat(DefaultAnimationRepetition) {
             assertThat(pagerState.currentPage).isEqualTo(it)
+            val nextPage = pagerState.currentPage + 1
             withContext(Dispatchers.Main + AutoTestFrameClock()) {
-                pagerState.animateScrollToPage(pagerState.currentPage + 1)
+                pagerState.animateScrollToPage(nextPage)
             }
+            rule.mainClock.advanceTimeUntil { pagerState.currentPage == nextPage }
             confirmPageIsInCorrectPosition(pagerState.currentPage)
         }
     }
@@ -277,31 +236,6 @@
     }
 
     @Test
-    fun scrollToPage_usingLaunchedEffect() {
-
-        createPager(additionalContent = {
-            LaunchedEffect(pagerState) {
-                pagerState.scrollToPage(10)
-            }
-        })
-        rule.waitForIdle()
-        assertThat(pagerState.currentPage).isEqualTo(10)
-        confirmPageIsInCorrectPosition(10)
-    }
-
-    @Test
-    fun scrollToPageWithOffset_usingLaunchedEffect() {
-        createPager(additionalContent = {
-            LaunchedEffect(pagerState) {
-                pagerState.scrollToPage(10, 0.4f)
-            }
-        })
-        rule.waitForIdle()
-        assertThat(pagerState.currentPage).isEqualTo(10)
-        confirmPageIsInCorrectPosition(10, pageOffset = 0.4f)
-    }
-
-    @Test
     fun animateScrollToPage_shouldCoerceWithinRange() = runBlocking {
         // Arrange
 
@@ -345,69 +279,26 @@
     @Test
     fun animateScrollToPage_withPassedAnimation() = runBlocking {
         // Arrange
-
+        rule.mainClock.autoAdvance = false
         createPager(modifier = Modifier.fillMaxSize())
         val differentAnimation: AnimationSpec<Float> = tween()
 
         // Act and Assert
         repeat(DefaultAnimationRepetition) {
             assertThat(pagerState.currentPage).isEqualTo(it)
+            val nextPage = pagerState.currentPage + 1
             withContext(Dispatchers.Main + AutoTestFrameClock()) {
                 pagerState.animateScrollToPage(
-                    pagerState.currentPage + 1,
+                    nextPage,
                     animationSpec = differentAnimation
                 )
             }
+            rule.mainClock.advanceTimeUntil { pagerState.currentPage == nextPage }
             confirmPageIsInCorrectPosition(pagerState.currentPage)
         }
     }
 
     @Test
-    fun animatedScrollToPage_usingLaunchedEffect() {
-
-        createPager(additionalContent = {
-            LaunchedEffect(pagerState) {
-                pagerState.animateScrollToPage(10)
-            }
-        })
-        rule.waitForIdle()
-        assertThat(pagerState.currentPage).isEqualTo(10)
-        confirmPageIsInCorrectPosition(10)
-    }
-
-    @Test
-    fun animatedScrollToPageWithOffset_usingLaunchedEffect() {
-
-        createPager(additionalContent = {
-            LaunchedEffect(pagerState) {
-                pagerState.animateScrollToPage(10, 0.4f)
-            }
-        })
-        rule.waitForIdle()
-        assertThat(pagerState.currentPage).isEqualTo(10)
-        confirmPageIsInCorrectPosition(10, pageOffset = 0.4f)
-    }
-
-    @Test
-    fun animatedScrollToPage_viewPortNumberOfPages_usingLaunchedEffect_shouldNotPlaceALlPages() {
-
-        createPager(additionalContent = {
-            LaunchedEffect(pagerState) {
-                pagerState.animateScrollToPage(DefaultPageCount - 1)
-            }
-        })
-        rule.waitForIdle()
-        // Assert
-        rule.runOnIdle {
-            assertThat(pagerState.currentPage).isEqualTo(DefaultPageCount - 1)
-            assertThat(placed).doesNotContain(DefaultPageCount / 2 - 1)
-            assertThat(placed).doesNotContain(DefaultPageCount / 2)
-            assertThat(placed).doesNotContain(DefaultPageCount / 2 + 1)
-        }
-        confirmPageIsInCorrectPosition(pagerState.currentPage)
-    }
-
-    @Test
     fun currentPage_shouldChangeWhenClosestPageToSnappedPositionChanges() {
         // Arrange
 
@@ -783,103 +674,6 @@
         }
     }
 
-    @Test
-    fun initialPageOnPagerState_shouldDisplayThatPageFirst() {
-        // Arrange
-
-        // Act
-        createPager(initialPage = 5, modifier = Modifier.fillMaxSize())
-
-        // Assert
-        rule.onNodeWithTag("4").assertDoesNotExist()
-        rule.onNodeWithTag("5").assertIsDisplayed()
-        rule.onNodeWithTag("6").assertDoesNotExist()
-        confirmPageIsInCorrectPosition(pagerState.currentPage)
-    }
-
-    @Test
-    fun testStateRestoration() {
-        // Arrange
-        val tester = StateRestorationTester(rule)
-        lateinit var state: PagerState
-        tester.setContent {
-            state = rememberPagerState(pageCount = { DefaultPageCount })
-            scope = rememberCoroutineScope()
-            HorizontalOrVerticalPager(
-                state = state,
-                modifier = Modifier.fillMaxSize()
-            ) {
-                Page(it)
-            }
-        }
-
-        // Act
-        rule.runOnIdle {
-            scope.launch {
-                state.scrollToPage(5)
-            }
-            runBlocking {
-                state.scroll {
-                    scrollBy(50f)
-                }
-            }
-        }
-
-        val previousPage = state.currentPage
-        val previousOffset = state.currentPageOffsetFraction
-        tester.emulateSavedInstanceStateRestore()
-
-        // Assert
-        rule.runOnIdle {
-            assertThat(state.currentPage).isEqualTo(previousPage)
-            assertThat(state.currentPageOffsetFraction).isEqualTo(previousOffset)
-        }
-    }
-
-    @Test
-    fun scrollTo_beforeFirstLayout_shouldWaitForStateAndLayoutSetting() {
-        // Arrange
-
-        rule.mainClock.autoAdvance = false
-
-        // Act
-        createPager(modifier = Modifier.fillMaxSize(), additionalContent = {
-            LaunchedEffect(pagerState) {
-                pagerState.scrollToPage(5)
-            }
-        })
-
-        // Assert
-        assertThat(pagerState.currentPage).isEqualTo(5)
-    }
-
-    @Test
-    fun currentPageOffsetFraction_shouldNeverBeNan() {
-        rule.setContent {
-            val state = rememberPagerState(pageCount = { 10 })
-            // Read state in composition, should never be Nan
-            assertFalse { state.currentPageOffsetFraction.isNaN() }
-            HorizontalOrVerticalPager(state = state) {
-                Page(index = it)
-            }
-        }
-    }
-
-    @Test
-    fun calculatePageCountOffset_shouldBeBasedOnCurrentPage() {
-        val pageToOffsetCalculations = mutableMapOf<Int, Float>()
-        createPager(modifier = Modifier.fillMaxSize(), pageSize = { PageSize.Fixed(20.dp) }) {
-            pageToOffsetCalculations[it] = pagerState.getOffsetFractionForPage(it)
-            Page(index = it)
-        }
-
-        for ((page, offset) in pageToOffsetCalculations) {
-            val currentPage = pagerState.currentPage
-            val currentPageOffset = pagerState.currentPageOffsetFraction
-            assertThat(offset).isEqualTo((currentPage - page) + currentPageOffset)
-        }
-    }
-
     companion object {
         @JvmStatic
         @Parameterized.Parameters(name = "{0}")
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/Pager.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/Pager.kt
index 025ea33..cb376a7 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/Pager.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/Pager.kt
@@ -70,8 +70,9 @@
  * @see androidx.compose.foundation.gestures.snapping.SnapLayoutInfoProvider for the implementation
  * of a [SnapLayoutInfoProvider] that uses [androidx.compose.foundation.lazy.LazyListState].
  *
- * Please refer to the sample to learn how to use this API.
+ * Please refer to the samples to learn how to use this API.
  * @sample androidx.compose.foundation.samples.SimpleHorizontalPagerSample
+ * @sample androidx.compose.foundation.samples.HorizontalPagerWithScrollableContent
  *
  * @param state The state to control this pager
  * @param modifier A modifier instance to be applied to this Pager outer layout
diff --git a/compose/material3/material3/src/androidMain/res/values-af/strings.xml b/compose/material3/material3/src/androidMain/res/values-af/strings.xml
deleted file mode 100644
index 50ba928..0000000
--- a/compose/material3/material3/src/androidMain/res/values-af/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialoog"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Maak toe"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Soek"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Voorstelle hieronder"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Kies datum"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Geselekteerde datum"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Skakel oor na kies van ’n jaar"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Swiep om ’n jaar te kies of tik om terug te skakel om ’n dag te kies"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Verander na volgende maand"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Verander na vorige maand"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Gaan na jaar %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Huidige keuse: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Geen"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Vandag"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Jaarkieser sigbaar"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Kies datum"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Datum wat ingevoer is"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Datum"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Datum wat ingevoer is: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Geen"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Datum word nie toegelaat nie: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Datum pas nie by die verwagte patroon nie: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Datum val buite die omvang van die verwagte jaartal %1$s-%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Skakel oor na kalenderinvoermodus"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Skakel oor na teksinvoermodus"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Rollees om later jare te wys"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Rollees om vroeër jare te wys"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Kies datums"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Begindatum"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Einddatum"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Rollees om die volgende maand te wys"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Rollees om die vorige maand te wys"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Binne reikwydte"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Voer datums in"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Ongeldige datumreeksinvoer"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Sleephandvatsel"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Vou onderste blad in"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Maak onderste blad toe"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Vou onderste blad uit"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Nutswenk"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Wys nutswenk"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"nm."</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"vm."</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Kies vm. of nm."</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Kies uur"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Kies minute"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d uur"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d uur"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minute"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuut"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Uur"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"vir minute"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"vir uur"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-am/strings.xml b/compose/material3/material3/src/androidMain/res/values-am/strings.xml
deleted file mode 100644
index 7c545ef..0000000
--- a/compose/material3/material3/src/androidMain/res/values-am/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"መገናኛ"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"አሰናብት"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"ፍለጋ"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"የአስተያየት ጥቆማዎች ከታች"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"ቀን ይምረጡ"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"የተመረጠው ቀን"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"ወደ ዓመት መምረጥ ቀይር"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"ዓመት ለመምረጥ ያንሸራትቱ ወይም ወደ ቀንን መምረጥ መልሶ ለመቀየር መታ ያድርጉ"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"ወደ የሚቀጥለው ወር ቀይር"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"ወደ ቀዳሚው ወር ቀይር"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"ወደ ዓመት %1$s ያስሱ"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"የአሁን ምርጫ፦ %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"ምንም"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"ዛሬ"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"ዓመት መራጭ ይታያል"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"ቀን ይምረጡ"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"የገባው ቀን"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"ቀን"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"የገባው ቀን፦ %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"ምንም"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"ቀን አልተፈቀደም፦ %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"ቀኑ ከተጠበቀው ስርዓተ ጥለት ጋር አይዛመድም፦ %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"ቀን ከተጠበቀው የዓመት ክልል ውጪ ነው %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"ወደ የቀን መቁጠሪያ ግቤት ሁነታ ቀይር"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"ወደ የጽሁፍ ግቤት ሁነታ ቀይር"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"ከዚህ በኋላ ያሉ ዓመታትን ለማሳየት ይሸብልሉ"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"ቀደም ያሉ ዓመታትን ለማሳየት ይሸብልሉ"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"ቀናትን ይምረጡ"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"የመጀመሪያ ቀን"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"የማብቂያ ቀን"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"ቀጣዩን ወር ለማሳየት ይሸብልሉ"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"ቀዳሚውን ወር ለማሳየት ይሸብልሉ"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"በክልል ውስጥ"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"ቀናትን ያስገቡ"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"ልክ ያልሆነ የቀን ክልል ግቤት"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"መያዣ ይጎትቱ"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"የግርጌ ሉህን ይሰብስቡ"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"የግርጌ ሉህን ይሰብስቡ"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"የግርጌ ሉህ ይዘርጉ"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"የመሣሪያ ጥቆማ"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"መሣሪያ ጥቆማን አሳይ"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"ከሰዓት"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"ጠዋት"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"ጠዋት ወይም ከሰዓትን ይምረጡ"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"ሰዓት ምረጥ"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"ደቂቃዎች ምረጥ"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d ሰዓት"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d ሰዓታት"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d ደቂቃዎች"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"ደቂቃ"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"ሰዓት"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"ለደቂቃዎች"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"ለሰዓት"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ar/strings.xml b/compose/material3/material3/src/androidMain/res/values-ar/strings.xml
deleted file mode 100644
index 3707858..0000000
--- a/compose/material3/material3/src/androidMain/res/values-ar/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"مربّع حوار"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"إغلاق"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"بحث"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"إليك الاقتراحات:"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"اختيار تاريخ"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"التاريخ المحدَّد"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"التبديل لاختيار سنة"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"مرِّر سريعًا لتحديد عام، أو انقر للرجوع إلى تحديد يوم."</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"التغيير إلى الشهر التالي"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"التغيير إلى الشهر السابق"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"‏الانتقال إلى عام %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"‏التحديد الحالي: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"بدون تاريخ"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"اليوم"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"أداة اختيار الأعوام مرئية"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"اختيار تاريخ"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"التاريخ الذي تم إدخاله"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"التاريخ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"‏التاريخ الذي تم إدخاله: ‎%1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"بدون تاريخ"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"‏التاريخ غير مسموح به: ‎%1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"‏لا يتوافق التاريخ مع النمط المتوقَّع: ‎%1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"‏التاريخ خارج نطاق الأعوام المتوقَّع: ‎%1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"التبديل إلى وضع \"الإدخال في التقويم\""</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"التبديل إلى وضع \"إدخال النص\""</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"انتقِل للأسفل/للأعلى لإظهار السنوات التالية."</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"انتقِل للأسفل/للأعلى لإظهار السنوات السابقة."</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"اختيار التواريخ"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"تاريخ البدء"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"تاريخ الانتهاء"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"انتقِل للأسفل/للأعلى لإظهار الشهر التالي."</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"انتقِل للأسفل/للأعلى لإظهار الشهر السابق."</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"في النطاق"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"إدخال التواريخ"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"إدخال نطاق زمني غير صالح"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"مقبض السحب"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"تصغير البطاقة السفلية"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"إغلاق البطاقة السفلية"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"توسيع البطاقة السفلية"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"تلميح"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"إظهار التلميح"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"م"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"ص"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"يُرجى اختيار ص (صباحًا) أو م (مساءً)."</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"اختيار الساعة"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"اختيار الدقائق"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"‏الساعة %1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"‏%1$d ساعة"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"‏%1$d دقيقة"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"دقيقة"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"ساعة"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"لمدة دقائق"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"لمدة ساعة"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-as/strings.xml b/compose/material3/material3/src/androidMain/res/values-as/strings.xml
deleted file mode 100644
index 8427a67..0000000
--- a/compose/material3/material3/src/androidMain/res/values-as/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"ডায়ল’গ"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"অগ্ৰাহ্য কৰক"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"সন্ধান কৰক"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"তলত পৰামৰ্শ দেখুওৱা হৈছে"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"তাৰিখ বাছনি কৰক"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"বাছনি কৰা তাৰিখ"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"বছৰ বাছনি কৰাৰ ছুইচ"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"এটা বছৰ বাছনি কৰিবলৈ ছোৱাইপ কৰক অথবা এটা দিন বাছনি কৰাৰ সুবিধাটোলৈ উভতি যাবলৈ টিপক"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"পৰৱৰ্তী মাহলৈ সলনি কৰক"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"পূৰ্বৱৰ্তী মাহলৈ সলনি কৰক"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"বৰ্ষ %1$sলৈ নেভিগে’ট কৰক"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"বৰ্তমানৰ বাছনি: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"একো নাই"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"আজি"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"বছৰ বাছনিকৰ্তা দৃশ্যমান"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"তাৰিখ বাছনি কৰক"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"দিয়া তাৰিখ"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"তাৰিখ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"দিয়া তাৰিখ: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"একো নাই"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"অনুমোদিত নোহোৱা তাৰিখ: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"তাৰিখটো এই প্ৰত্যাশিত আৰ্হিটোৰ সৈতে মিলা নাই: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"তাৰিখটো প্ৰত্যাশিত বছৰৰ পৰিসৰ %1$s - %2$sৰ বাহিৰৰ"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"কেলেণ্ডাৰ ইনপুট ম’ডলৈ সলনি কৰক"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"পাঠ ইনপুট ম’ডলৈ সলনি কৰক"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"পাছৰ বছৰবোৰ দেখুৱাবলৈ স্ক্ৰ’ল কৰক"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"আগৰ বছৰবোৰ দেখুৱাবলৈ স্ক্ৰ’ল কৰক"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"তাৰিখ বাছনি কৰক"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"আৰম্ভণিৰ তাৰিখ"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"সমাপ্তিৰ তাৰিখ"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"পৰৱৰ্তী মাহটো দেখুৱাবলৈ স্ক্ৰ’ল কৰক"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"পূৰ্বৱৰ্তী মাহটো দেখুৱাবলৈ স্ক্ৰ’ল কৰক"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"পৰিসৰৰ ভিতৰত আছে"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"তাৰিখ দিয়ক"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"অমান্য তাৰিখৰ পৰিসৰৰ ইনপুট"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"ড্ৰেগ হেণ্ডেল"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"তলৰ শ্বীটখন সংকোচন কৰক"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"তলৰ শ্বীটখন অগ্ৰাহ্য কৰক"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"তলৰ শ্বীটখন বিস্তাৰ কৰক"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"টুলটিপ"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"টুলটিপ দেখুৱাওক"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"পৰাহ্ন"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"পুৱা"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"পূৰ্বাহ্ন অথবা অপৰাহ্ন বাছনি কৰক"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"ঘণ্টা বাছনি কৰক"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"মিনিট বাছনি কৰক"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d বাজিছে"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%d ঘণ্টা"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%d মিনিট"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"মিনিট"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"ঘণ্টা"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"মিনিটৰ বাবে"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"ঘণ্টাৰ বাবে"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-az/strings.xml b/compose/material3/material3/src/androidMain/res/values-az/strings.xml
deleted file mode 100644
index c6d0f72..0000000
--- a/compose/material3/material3/src/androidMain/res/values-az/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialoq"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Qapadın"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Axtarış"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Təkliflər aşağıdadır"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Tarix seçin"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Seçilmiş tarix"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"İl seçiminə keçin"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"İl seçmək üçün sürüşdürün və ya gün seçiminə qayıtmaq üçün toxunun"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Növbəti aya dəyişin"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Əvvəlki aya dəyişin"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Bu ilə keçin: %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Cari seçim: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Heç biri"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Bu gün"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"İl seçicisi görünür"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Tarix seçin"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Daxil edilmiş tarix"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Tarix"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Daxil edilmiş tarix: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Heç biri"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Tarixə icazə verilmir: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Tarix gözlənilən modelə uyğun gəlmir: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Tarix gözlənilən il aralığından kənardır: %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Təqvim daxiletmə rejiminə keçin"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Mətn daxiletmə rejiminə keçin"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Sonrakı illəri göstərmək üçün sürüşdürün"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Əvvəlki illəri göstərmək üçün sürüşdürün"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Tarixləri seçin"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Başlama tarixi"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Bitmə tarixi"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Növbəti ayı göstərmək üçün sürüşdürün"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Əvvəlki ayı göstərmək üçün sürüşdürün"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Bu aralıqda"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Tarixləri daxil edin"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Yanlış tarix aralığı daxiletməsi"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Dəstəyi çəkin"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Aşağıdakı vərəqi yığcamlaşdırın"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Aşağıdakı vərəqi rədd edin"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Aşağıdakı vərəqi genişləndirin"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Alət izahı"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"İpucu göstərin"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Gündüz və ya axşam seçin"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Saatı seçin"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Dəqiqə seçin"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"Saat: %1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d saat"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d dəqiqə"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Dəqiqə"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Saat"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"dəqiqəlik"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"saatlıq"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-b+sr+Latn/strings.xml b/compose/material3/material3/src/androidMain/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index bfca44cb..0000000
--- a/compose/material3/material3/src/androidMain/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dijalog"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Odbacite"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Pretraga"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Predlozi su u nastavku"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Izaberite datum"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Izabrani datum"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Pređite na izbor godine"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Prevucite da biste izabrali godinu ili dodirnite da biste se vratili na izbor dana"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Pređite na sledeći mesec"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Pređite na prethodni mesec"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Idite na godinu: %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Aktuelni izbor: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Ništa"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Danas"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Vidljiv birač godina"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Izaberite datum"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Uneti datum"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Datum"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Uneti datum: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Ništa"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Datum nije dozvoljen: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Datum ne odgovara očekivanom šablonu: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Datum je izvan očekivanog opsega godina %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Pređite na režim unosa u Kalendaru"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Pređite na režim unosa teksta"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Pomerajte da bi se prikazale kasnije godine"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Pomerajte da bi se prikazale ranije godine"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Izaberite datume"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Datum početka"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Datum završetka"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Pomerajte da bi se prikazao sledeći mesec"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Pomerajte da bi se prikazao prethodni mesec"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"U dometu"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Unesite datume"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Unos opsega datuma je nevažeći"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Identifikator za prevlačenje"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Skupi donju tabelu"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Odbaci donju tabelu"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Proširi donju tabelu"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Objašnjenje"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Prikaži objašnjenje"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"po"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"pr"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Izaberite pre podne ili po podne"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Izaberite sat"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Izaberite minute"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d č"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d č"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d min"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minut"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Sat"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"za minute"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"za sate"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-be/strings.xml b/compose/material3/material3/src/androidMain/res/values-be/strings.xml
deleted file mode 100644
index cbb9ad2..0000000
--- a/compose/material3/material3/src/androidMain/res/values-be/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Дыялогавае акно"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Закрыць"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Пошук"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Прапановы ўнізе"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Выберыце дату"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Выбраная дата"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Перайсці да выбару года"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Правядзіце пальцам, каб выбраць год, або націсніце, каб вярнуцца да выбару даты"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Перайсці да наступнага месяца"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Перайсці да папярэдняга месяца"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Перайсці ў год %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Бягучы выбар: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Не выбрана"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Сёння"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Бачны інструмент выбару года"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Выберыце дату"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Уведзеная дата"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Дата"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Уведзеная дата: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Без абмежаванняў"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Дата забаронена: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Дата не адпавядае ўзору: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Дата выходзіць за дазволены дыяпазон гадоў %1$s-%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Пераключыцца ў рэжым уводу \"Каляндар\""</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Пераключыцца ў рэжым уводу \"Тэкст\""</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Прагартайце экран, каб праглядзець пазнейшыя гады"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Прагартайце экран, каб праглядзець ранейшыя гады"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Выберыце даты"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Дата пачатку"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Дата заканчэння"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Прагартайце экран, каб праглядзець наступны месяц"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Прагартайце экран, каб праглядзець мінулы месяц"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"У зоне дасягальнасці"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Увядзіце даты"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Уведзены няправільны дыяпазон дат"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Маркер перацягвання"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Згарнуць ніжні аркуш"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Закрыць ніжні аркуш"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Разгарнуць ніжні аркуш"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Падказка"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Паказваць усплывальную падказку"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"пасля паўдня"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"да паўдня"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Выберыце AM (да паўдня) або PM (пасля паўдня)"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Выберыце гадзіны"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Выберыце хвіліны"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d гадз"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d гадз"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d хв"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Хвіліны"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Гадзіны"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"хвіліны"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"гадзіны"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-bg/strings.xml b/compose/material3/material3/src/androidMain/res/values-bg/strings.xml
deleted file mode 100644
index 557d55a..0000000
--- a/compose/material3/material3/src/androidMain/res/values-bg/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Диалогов прозорец"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Отхвърляне"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Търсене"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Предложенията са по-долу"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Избиране на дата"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Избрана дата"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Превключване към избиране на година"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Прекарайте пръст, за да изберете година, или докоснете, за да се върнете към избора на ден"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Преминаване към следващия месец"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Преминаване към предишния месец"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Навигиране до %1$s година"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Текущ избор: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Без"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Днес"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Инструментът за избор на година е видим"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Избиране на дата"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Въведена дата"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Дата"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Въведена дата: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Няма"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Датата не е разрешена: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Датата не е в очаквания формат: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Датата е извън очаквания годишен диапазон: %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Превключване към режим за въвеждане в календар"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Превключване към режим за въвеждане на текст"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Превъртете, за да видите следващите години"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Превъртете, за да видите миналите години"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Избиране на дати"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Начална дата"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Крайна дата"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Превъртете, за да видите следващия месец"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Превъртете, за да видите предишния месец"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"В диапазона"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Въведете дати"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Въведен е невалиден период от време"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Манипулатор за преместване с плъзгане"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Свиване на долния лист"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Отхвърляне на долния лист"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Разгъване на долния лист"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Подсказка"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Показване на подсказка"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Изберете AM или PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Избиране на час"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Избиране на минути"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d часа"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d часа"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d минути"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Минута"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Час"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"за минутите"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"за часа"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-bn/strings.xml b/compose/material3/material3/src/androidMain/res/values-bn/strings.xml
deleted file mode 100644
index 78f48ce..0000000
--- a/compose/material3/material3/src/androidMain/res/values-bn/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"ডায়ালগ বক্স"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"বাতিল করুন"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"সার্চ করুন"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"নিচে দেওয়া সাজেশন"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"তারিখ বেছে নিন"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"বেছে নেওয়া তারিখ"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"কোনও একটি বছর বেছে নিতে পাল্টে নিন"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"একটি বছর বেছে নিতে সোয়াইপ করুন অথবা কোনও একটি দিন বাছতে ফিরে গিয়ে সুইচে ট্যাপ করুন"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"আগামী মাসে পরিবর্তন করুন"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"আগের মাসে পরিবর্তন করুন"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"নেভিগেট করে %1$s বছরে যান"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"বর্তমানে বেছে নেওয়া হয়েছে: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"কোনওটিই নয়"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"আজ"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"বছর বেছে নেওয়ার তালিকা দেখা যাচ্ছে"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"তারিখ বেছে নিন"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"উল্লেখ করা তারিখ"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"তারিখ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"উল্লেখ করা তারিখ: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"কোনওটিই নয়"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"এই তারিখ লেখা যাবে না: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"প্রত্যাশিত প্যাটার্নের সাথে তারিখ মিলছে না: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"প্রত্যাশিত বছরের রেঞ্জের বাইরের তারিখ %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"\'ক্যালেন্ডার ইনপুট\' মোডে বদল করুন"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"\'টেক্সট ইনপুট\' মোডে বদল করুন"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"পরের বছর দেখতে স্ক্রল করুন"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"আগের বছর দেখতে স্ক্রল করুন"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"তারিখ বেছে নিন"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"শুরু হওয়ার তারিখ"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"শেষ হওয়ার তারিখ"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"পরের মাস দেখতে স্ক্রল করুন"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"আগের মাস দেখতে স্ক্রল করুন"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"সীমার মধ্যে"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"তারিখ লিখুন"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"তারিখের ব্যাপ্তি সম্পর্কিত ইনপুট ভুল দেওয়া আছে"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"টেনে আনার হ্যান্ডেল"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"স্ক্রিনের নিচে অ্যাটাচ করা শিট আড়াল করুন"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"স্ক্রিনের নিচে অ্যাটাচ করা শিট বাতিল করুন"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"স্ক্রিনের নিচে অ্যাটাচ করা শিট বড় করুন"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"টুলটিপ"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"টুলটিপ দেখান"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"AM বা PM বেছে নিন"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"ঘণ্টা বেছে নিন"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"মিনিট বেছে নিন"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d টা"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d ঘণ্টা"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d মিনিট"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"মিনিট"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"ঘণ্টা"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"এত মিনিটের জন্য"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"এত ঘণ্টার জন্য"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-bs/strings.xml b/compose/material3/material3/src/androidMain/res/values-bs/strings.xml
deleted file mode 100644
index 74b0671..0000000
--- a/compose/material3/material3/src/androidMain/res/values-bs/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dijaloški okvir"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Odbacivanje"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Pretraživanje"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Prijedlozi su u nastavku"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Odabir datuma"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Odabrani datum"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Prebaci na odabir godine"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Prevucite da odaberete godinu ili dodirnite da se vratite na odabir dana"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Promijeni na sljedeći mjesec"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Promijeni na prethodni mjesec"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Odlazak na %1$s. godinu"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Trenutni odabir: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Ništa"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Danas"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Birač godine je vidljiv"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Odaberite datum"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Unesen je datum"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Datum"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Unesen je datum: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Ništa"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Datum nije dozvoljen: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Datumi se ne podudaraju s očekivanim obrascem: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Datum je izvan očekivanog raspona %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Prebacivanje na način rada unosa kalendara"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Prebacivanje na način rada unosa teksta"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Kliznite da se prikažu kasnije godine"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Kliznite da se prikažu ranije godine"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Odaberite datume"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Datum početka"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Datum završetka"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Kliznite da se prikaže sljedeći mjesec"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Kliznite da se prikaže prethodni mjesec"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"U dometu"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Unesite datume"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Nevažeći unos raspona datuma"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Ručica za prevlačenje"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Sužavanje donje tabele"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Odbacivanje donje tabele"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Proširivanje donje tabele"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Skočni opis"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Prikaži skočni opis"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"poslijepodne"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"prij."</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Odaberite prijepodne ili poslijepodne"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Odaberite sate"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Odaberite minute"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d h"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d h"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d min"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuta"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Sat"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"za minute"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"za sat"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ca/strings.xml b/compose/material3/material3/src/androidMain/res/values-ca/strings.xml
deleted file mode 100644
index fde4338..0000000
--- a/compose/material3/material3/src/androidMain/res/values-ca/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Diàleg"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Ignora"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Cerca"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Suggeriments a continuació"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Selecciona la data"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Data seleccionada"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Canvia a la selecció de l\'any"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Llisca per seleccionar un any o toca per tornar a seleccionar un dia"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Canvia al mes següent"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Canvia al mes anterior"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navega fins a l\'any %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Selecció actual: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Cap"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Avui"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Selector d\'any visible"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Selecciona la data"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Data introduïda"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Data"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Data introduïda: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Cap"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Data no permesa: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"La data no coincideix amb el patró esperat: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"La data no es troba dins de l\'interval d\'anys esperat: %1$s-%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Canvia al mode d\'introducció de dades del calendari"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Canvia al mode d\'introducció de text"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Desplaça\'t per mostrar els darrers anys"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Desplaça\'t per mostrar els anys anteriors"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Selecciona les dates"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Data d\'inici"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Data de finalització"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Desplaça\'t per mostrar el mes següent"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Desplaça\'t per mostrar el mes anterior"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Dins de l\'interval"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Introdueix les dates"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"S\'ha introduït un interval de dades no vàlid"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Ansa per arrossegar"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Replega el full inferior"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Ignora el full inferior"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Desplega el full inferior"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Descripció emergent"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Mostra la descripció emergent"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Selecciona AM o PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Selecciona l\'hora"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Selecciona els minuts"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d en punt"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d hores"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minuts"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minut"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Hora"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"per als minuts"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"per a l\'hora"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-cs/strings.xml b/compose/material3/material3/src/androidMain/res/values-cs/strings.xml
deleted file mode 100644
index b0effce..0000000
--- a/compose/material3/material3/src/androidMain/res/values-cs/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialogové okno"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Zavřít"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Hledat"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Návrh je níže"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Vybrat datum"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Vybrané datum"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Přepnout na výběr roku"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Přejetím prstem vyberte rok nebo se klepnutím vraťte k výběru dne"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Přejít na další měsíc"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Přejít na předchozí měsíc"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Přejít na rok %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Aktuální výběr: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Žádné"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Dnes"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Je vidět výběr roku"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Vybrat datum"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Zadané datum"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Datum"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Zadané datum: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Žádné"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Nepovolené datum: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Datum neodpovídá očekávanému vzoru: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Datum mimo očekávaný rozsah roků %1$s–%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Přepnout na režim zadávání do kalendáře"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Přepnout na režim zadávání textu"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Posunutím zobrazíte pozdější roky"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Posunutím zobrazíte předchozí roky"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Vyberte data"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Datum zahájení"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Datum ukončení"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Posunutím zobrazíte další měsíc"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Posunutím zobrazíte předchozí měsíc"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"V rozsahu"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Zadejte data"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Neplatné období"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Úchyt pro přetažení"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Sbalit spodní tabulku"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Zavřít spodní tabulku"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Rozbalit spodní tabulku"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Popisek"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Zobrazit popisek"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Vyberte AM nebo PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Vybrat hodinu"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Vyberte minuty"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d hodin"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d hodin"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minut"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuta"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Hodina"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"pro minuty"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"pro hodinu"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-da/strings.xml b/compose/material3/material3/src/androidMain/res/values-da/strings.xml
deleted file mode 100644
index 2790036..0000000
--- a/compose/material3/material3/src/androidMain/res/values-da/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialogboks"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Afvis"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Søg"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Forslag nedenfor"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Vælg dato"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Valgt dato"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Skift til valg af år"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Stryg for at vælge et år, eller tryk for at skifte tilbage til datovælgeren"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Skift til næste måned"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Skift til forrige måned"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Naviger til år %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Aktuelt valg: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Ingen"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"I dag"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Årsvælgeren er synlig"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Vælg dato"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Angivet dato"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Dato"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Angivet dato: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Ingen"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Datoen er ikke tilladt: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Datoen svarer ikke til det forventede format: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Datoen er uden for det forventede årsinterval: %1$s-%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Skift til input-tilstand for kalender"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Skift til input-tilstand for tekst"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Rul for at vise senere år"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Rul for at vise tidligere år"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Vælg datoer"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Startdato"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Slutdato"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Rul for at vise næste måned"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Rul for at vise forrige måned"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Inden for de valgte dage"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Angiv datoer"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Ugyldig angivelse af datainterval"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Håndtag"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Skjul felt i bunden"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Luk felt i bunden"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Udvid felt i bunden"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Værktøjstip"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Se værktøjstip"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Vælg AM eller PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Vælg time"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Vælg minutter"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"kl. %1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d timer"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutter"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minut"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Time"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"for minutter"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"for time"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-de/strings.xml b/compose/material3/material3/src/androidMain/res/values-de/strings.xml
deleted file mode 100644
index bc43c82..0000000
--- a/compose/material3/material3/src/androidMain/res/values-de/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialogfeld"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Schließen"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Suchen"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Vorschläge unten"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Datum auswählen"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Ausgewähltes Datum"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Zur Jahresauswahl wechseln"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Wischen, um ein Jahr auszuwählen, oder tippen, um zur Tagesauswahl zurückzukehren"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Zum nächsten Monat wechseln"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Zum vorherigen Monat wechseln"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Zum Jahr %1$s wechseln"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Aktuelle Auswahl: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Keine"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Heute"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Jahresauswahl sichtbar"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Datum auswählen"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Eingabedatum:"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Datum"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Eingabedatum: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Kein Datum"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Unzulässiges Datum: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Datum entspricht nicht dem erwarteten Format: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Datum liegt außerhalb des erwarteten Jahresbereichs (%1$s–%2$s)"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"In den Kalendereingabemodus wechseln"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"In den Texteingabemodus wechseln"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Zum Ansehen nachfolgender Jahre scrollen"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Zum Ansehen vorheriger Jahre scrollen"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Daten auswählen"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Startdatum"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Enddatum"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Zum Ansehen des nächsten Monats scrollen"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Zum Ansehen des vorherigen Monats scrollen"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Im Zeitraum"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Daten eingeben"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Angegebener Zeitraum ungültig"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Ziehpunkt"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Ansicht am unteren Rand minimieren"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Ansicht am unteren Rand schließen"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Ansicht am unteren Rand maximieren"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Kurzinfo"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Kurzinfo anzeigen"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"AM oder PM auswählen"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Stunde auswählen"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Minuten auswählen"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d Uhr"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d Stunden"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d Minuten"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minute"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Stunde"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"für Minuten"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"für Stunde"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-el/strings.xml b/compose/material3/material3/src/androidMain/res/values-el/strings.xml
deleted file mode 100644
index 544c36a..0000000
--- a/compose/material3/material3/src/androidMain/res/values-el/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Παράθυρο διαλόγου"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Παράβλεψη"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Αναζήτηση"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Προτάσεις παρακάτω"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Επιλογή ημερομηνίας"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Επιλεγμένη ημερομηνία"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Εναλλαγή σε επιλογή έτους"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Σύρετε για να επιλέξετε ένα έτος ή πατήστε για να επιστρέψετε στην επιλογή ημέρας."</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Αλλαγή στον επόμενο μήνα"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Αλλαγή στον προηγούμενο μήνα"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Μετάβαση στο έτος %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Τρέχουσα επιλογή: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Καμία"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Σήμερα"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Το εργαλείο επιλογής έτους είναι ορατό"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Επιλογή ημερομηνίας"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Εισαγωγή ημερομηνίας"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Ημερομηνία"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Εισαγωγή ημερομηνίας: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Καμία"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Η ημερομηνία δεν επιτρέπεται: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Η ημερομηνία δεν αντιστοιχεί στο αναμενόμενο μοτίβο: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Η ημερομηνία είναι εκτός του αναμενόμενου εύρους ετών %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Εναλλαγή στη λειτουργία εισαγωγής ημερολογίου"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Εναλλαγή στη λειτουργία εισαγωγής κειμένου"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Κάντε κύλιση για εμφάνιση επόμενων ετών"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Κάντε κύλιση για εμφάνιση προηγούμενων ετών"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Επιλογή ημερομηνιών"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Ημερομηνία έναρξης"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Ημερομηνία λήξης"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Κάντε κύλιση για εμφάνιση του επόμενου μήνα"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Κάντε κύλιση για εμφάνιση του προηγούμενου μήνα"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Εντός εύρους"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Εισαγωγή ημερομηνιών"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Μη έγκυρη εισαγωγή εύρους ημερομηνιών"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Λαβή μεταφοράς"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Σύμπτυξη φύλλου κάτω μέρους"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Παράβλεψη φύλλου κάτω μέρους"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Ανάπτυξη φύλλου κάτω μέρους"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Επεξήγηση εργαλείου"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Προβολή επεξήγησης"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"ΜΜ"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"ΠΜ"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Επιλέξτε π.μ. ή μ.μ."</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Επιλογή ώρας"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Επιλογή λεπτών"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d η ώρα"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"Ώρα %1$d"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d λεπτά"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Λεπτό"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Ώρα"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"για λεπτά"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"για ώρα"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-en-rAU/strings.xml b/compose/material3/material3/src/androidMain/res/values-en-rAU/strings.xml
deleted file mode 100644
index d0dfceb..0000000
--- a/compose/material3/material3/src/androidMain/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialogue"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Dismiss"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Search"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Suggestions below"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Select date"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Selected date"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Switch to selecting a year"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Swipe to select a year, or tap to switch back to selecting a day"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Change to next month"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Change to previous month"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navigate to year %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Current selection: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"None"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Today"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Year picker visible"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Select date"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Entered date"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Date"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Entered date: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"None"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Date not allowed: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Date does not match expected pattern: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Date out of expected year range %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Switch to calendar input mode"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Switch to text input mode"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Scroll to show later years"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Scroll to show earlier years"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Select dates"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Start date"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"End date"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Scroll to show the next month"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Scroll to show the previous month"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"In range"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Enter dates"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Invalid date range input"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Drag handle"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Collapse bottom sheet"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Dismiss bottom sheet"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Expand bottom sheet"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Tooltip"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Show tooltip"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Select a.m. or p.m."</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Select hour"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Select minutes"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d o\'clock"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d hours"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutes"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minute"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Hour"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"for minutes"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"for hour"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-en-rCA/strings.xml b/compose/material3/material3/src/androidMain/res/values-en-rCA/strings.xml
index 09aad5d..e1286b7 100644
--- a/compose/material3/material3/src/androidMain/res/values-en-rCA/strings.xml
+++ b/compose/material3/material3/src/androidMain/res/values-en-rCA/strings.xml
@@ -17,57 +17,112 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialog"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Dismiss"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Search"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Suggestions below"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Select date"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Selected date"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Switch to selecting a year"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Swipe to select a year, or tap to switch back to selecting a day"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Change to next month"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Change to previous month"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navigate to year %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Current selection: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"None"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Today"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Year picker visible"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Select date"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Entered date"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Date"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Entered date: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"None"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Date not allowed: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Date does not match expected pattern: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Date out of expected year range %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Switch to calendar input mode"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Switch to text input mode"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Scroll to show later years"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Scroll to show earlier years"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Select dates"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Start date"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"End date"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Scroll to show the next month"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Scroll to show the previous month"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"In range"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Enter dates"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Invalid date range input"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Drag handle"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Collapse bottom sheet"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Dismiss bottom sheet"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Expand bottom sheet"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Tooltip"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Show tooltip"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Select AM or PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Select hour"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Select minutes"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d o\'clock"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d hours"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutes"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minute"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Hour"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"for minutes"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"for hour"</string>
+    <!-- no translation found for m3c_dialog (7617233117134790350) -->
+    <skip />
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"Expanded"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"Collapsed"</string>
+    <!-- no translation found for m3c_snackbar_dismiss (6152755701819882931) -->
+    <skip />
+    <!-- no translation found for m3c_search_bar_search (6152806324422087846) -->
+    <skip />
+    <!-- no translation found for m3c_suggestions_available (7655536806087401899) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_title (7430790972741451689) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_headline (7605002211875882969) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_switch_to_year_selection (791651718641787594) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_switch_to_day_selection (395627960681594326) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_switch_to_next_month (7142101321095356500) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_switch_to_previous_month (228438865139394590) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_navigate_to_year_description (8436650776581492840) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_headline_description (3664277305226978227) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_no_selection_description (5811000998184572395) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_today_description (3199387177749801575) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_year_picker_pane_title (2068382232816991922) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_title (7306227249789210568) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_headline (8166741421776570875) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_label (2895559812010326913) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_headline_description (229313757840775812) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_no_input_description (1237013946323089826) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_invalid_not_allowed (2521768508935305279) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_invalid_for_pattern (6116910750161463197) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_invalid_year_range (7052898923934555305) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_switch_to_calendar_mode (1804346892470238807) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_switch_to_input_mode (2219746470065162704) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_scroll_to_later_years (5727367015496556177) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_scroll_to_earlier_years (7813882352367152251) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_picker_title (3134165431120340385) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_picker_start_headline (4665981448952749820) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_picker_end_headline (4947636797751277713) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_picker_scroll_to_next_month (602077859540990149) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_picker_scroll_to_previous_month (4592174524846109496) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_picker_day_in_range (2138321128465719402) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_input_title (3148384720560189467) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_input_invalid_range_input (3190049423327661366) -->
+    <skip />
+    <!-- no translation found for m3c_bottom_sheet_drag_handle_description (8403354765404029791) -->
+    <skip />
+    <!-- no translation found for m3c_bottom_sheet_collapse_description (2988463736136100848) -->
+    <skip />
+    <!-- no translation found for m3c_bottom_sheet_dismiss_description (1555567894577437024) -->
+    <skip />
+    <!-- no translation found for m3c_bottom_sheet_expand_description (6670819569745899763) -->
+    <skip />
+    <!-- no translation found for m3c_tooltip_pane_description (5460405025248574620) -->
+    <skip />
+    <!-- no translation found for m3c_tooltip_long_press_label (1805687647081129904) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_pm (6616362054113087709) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_am (2786685010796619560) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_period_toggle_description (5865171949528594571) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_hour_selection (8876759303332837035) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_minute_selection (4699133535056739733) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_hour_suffix (3458167507790628988) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_hour_24h_suffix (9179527532316922345) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_minute_suffix (5064177921781937179) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_minute (4313071914266462005) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_hour (2349193472625211372) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_minute_text_field (7661234488295443182) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_hour_text_field (6973808109666874069) -->
+    <skip />
 </resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-en-rGB/strings.xml b/compose/material3/material3/src/androidMain/res/values-en-rGB/strings.xml
deleted file mode 100644
index d0dfceb..0000000
--- a/compose/material3/material3/src/androidMain/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialogue"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Dismiss"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Search"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Suggestions below"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Select date"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Selected date"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Switch to selecting a year"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Swipe to select a year, or tap to switch back to selecting a day"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Change to next month"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Change to previous month"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navigate to year %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Current selection: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"None"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Today"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Year picker visible"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Select date"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Entered date"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Date"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Entered date: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"None"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Date not allowed: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Date does not match expected pattern: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Date out of expected year range %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Switch to calendar input mode"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Switch to text input mode"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Scroll to show later years"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Scroll to show earlier years"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Select dates"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Start date"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"End date"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Scroll to show the next month"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Scroll to show the previous month"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"In range"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Enter dates"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Invalid date range input"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Drag handle"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Collapse bottom sheet"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Dismiss bottom sheet"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Expand bottom sheet"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Tooltip"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Show tooltip"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Select a.m. or p.m."</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Select hour"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Select minutes"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d o\'clock"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d hours"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutes"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minute"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Hour"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"for minutes"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"for hour"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-en-rIN/strings.xml b/compose/material3/material3/src/androidMain/res/values-en-rIN/strings.xml
deleted file mode 100644
index d0dfceb..0000000
--- a/compose/material3/material3/src/androidMain/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialogue"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Dismiss"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Search"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Suggestions below"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Select date"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Selected date"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Switch to selecting a year"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Swipe to select a year, or tap to switch back to selecting a day"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Change to next month"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Change to previous month"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navigate to year %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Current selection: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"None"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Today"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Year picker visible"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Select date"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Entered date"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Date"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Entered date: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"None"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Date not allowed: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Date does not match expected pattern: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Date out of expected year range %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Switch to calendar input mode"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Switch to text input mode"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Scroll to show later years"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Scroll to show earlier years"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Select dates"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Start date"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"End date"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Scroll to show the next month"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Scroll to show the previous month"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"In range"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Enter dates"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Invalid date range input"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Drag handle"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Collapse bottom sheet"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Dismiss bottom sheet"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Expand bottom sheet"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Tooltip"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Show tooltip"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Select a.m. or p.m."</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Select hour"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Select minutes"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d o\'clock"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d hours"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutes"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minute"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Hour"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"for minutes"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"for hour"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-en-rXC/strings.xml b/compose/material3/material3/src/androidMain/res/values-en-rXC/strings.xml
index 4691fe5..af84efe 100644
--- a/compose/material3/material3/src/androidMain/res/values-en-rXC/strings.xml
+++ b/compose/material3/material3/src/androidMain/res/values-en-rXC/strings.xml
@@ -17,57 +17,112 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‎‎‏‏‎‎‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‏‎‎‏‎‎‎‏‎‏‎‏‎‏‎‏‎‏‏‎‎‎‎‎‎Dialog‎‏‎‎‏‎"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‎‏‏‎‎‎‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‎‎‏‏‎‏‎‎‏‎‏‏‏‏‏‏‎‏‎Dismiss‎‏‎‎‏‎"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎‎‏‎‎‎‎‎‏‎‎‏‎‏‎‏‎‎‎‎‎‏‏‎‏‏‎‏‎‏‎‏‎‎Search‎‏‎‎‏‎"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‎‏‏‏‏‎‎‏‏‏‎‏‎‏‎‏‏‎‏‏‎‎‏‏‎‏‏‎‎‏‏‏‎‎‏‏‏‎‏‎‎‏‏‎‏‎‎‏‏‏‏‎‎Suggestions below‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‏‏‏‎‎‏‎‏‏‏‏‎‏‏‎‏‎‎‎‎‎‏‏‎‏‎‏‎‎‎‎‎‎‏‏‎‏‏‎‏‎‎‏‎‎‎‎‎Select date‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‎‎‎‎‎‏‏‏‎‎‏‏‏‏‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‎‎‏‏‎‏‎‏‎‎‏‎‎‎‎‏‏‏‎‏‎‎‎‎‏‎Selected date‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‎‏‎‏‏‎‏‏‎‎‏‎‏‏‎‎‎‏‏‏‎‏‎‎‎‎‎‏‏‎‏‏‎‎‎‏‎‎‎‎‏‎‎‏‏‎‎‏‏‏‎‏‏‏‎‏‎Switch to selecting a year‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‎‎‎‎‎‏‏‎‏‏‏‎‏‏‎‎‎‎‎‎‎‎‎‏‎‏‏‎‎‎‎‏‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎Swipe to select a year, or tap to switch back to selecting a day‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‏‎‏‎‏‏‎‎‏‏‏‏‎‏‎‎‏‏‏‎‎‏‏‎‎‎‎‎‏‏‎‎Change to next month‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‎‏‎‏‏‎‏‏‏‎‏‎‏‏‎‎‎‏‎‎‏‎‏‏‏‎‏‏‎‎‏‏‏‎‏‏‎‎‏‏‎‏‎‏‎‏‏‎‎‎‎‎‏‎Change to previous month‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‏‏‎‏‎‎‏‎‏‎‎‏‎‎‎‎‏‎‏‏‎‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‏‏‎‎‎Navigate to year %1$s‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎‏‏‎‏‏‏‎‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‎‎‏‏‏‎‏‎‏‎‏‏‏‏‏‎‎‏‏‎‎‏‏‏‏‎‏‏‏‏‎‏‎Current selection: %1$s‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‏‎‎‎‏‎‎‎‏‎‎‏‎‏‎‏‎‏‎‎‎‎‎‎‎‏‎‎‏‏‎‏‎‎‎‎‏‎‏‎‎‏‎‎‏‏‏‎‎‏‎‏‏‎None‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‎‎‎‏‏‏‎‎‎‎‏‏‏‏‎‏‎‎‎‏‎‏‏‎‎‏‎‏‏‎‏‎‎‏‏‎‎‏‏‏‎‏‏‏‏‏‎‎‎‏‏‎‎‏‎Today‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‎‎‎‎‎‏‏‏‏‏‎‎‎‏‏‎‎‏‎‏‎‎‎‏‏‎‏‎‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‏‎‎‎‎‎‎‎Year picker visible‎‏‎‎‏‎"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‎‎‏‏‏‎‎‎‏‎‎‏‏‏‏‎‏‎‏‎‎‎‎‎‎‎‏‏‎‏‎‏‎‏‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‎‎‎‎Select date‎‏‎‎‏‎"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‏‏‎‎‎‏‎‏‎‎‏‎‎‏‎‎‎‏‏‏‎‏‏‏‎‏‎‏‏‎‏‎‏‎‎‎‎‎‏‏‎‎Entered date‎‏‎‎‏‎"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‎‏‎‏‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‏‏‏‎‏‎‎‎‎‎‎‏‎‎‏‏‏‎‎‏‎‎‏‎‎‎‏‏‎‎‏‎‎‏‎‎Date‎‏‎‎‏‎"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‎‎‏‏‏‎‎‏‏‎‎‏‏‎‎‏‎‏‎‏‏‎‎‎‏‏‏‏‎‏‎‎‎‎‎‎‎‎‎‏‏‎‎‏‎‎‎‎‏‎‏‎‎Entered date: %1$s‎‏‎‎‏‎"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‎‏‏‏‏‏‎‏‏‏‏‏‎‎‎‎‏‎‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‏‎‏‎‎‎‎‎‎‏‎‎‎None‎‏‎‎‏‎"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‎‏‏‏‎‎‎‎‎‏‏‎‏‏‏‏‎‏‎‏‎‎‎‎‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‎‎‏‏‎‎‎‏‎‎‎‎‎‏‏‎Date not allowed: %1$s‎‏‎‎‏‎"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‏‎‎‏‏‎‎‏‏‎‏‏‎‏‎‏‎‎‎‎‎‏‏‎‏‎‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‎‎‏‎‎‎‎‏‏‎‎‎‏‎Date does not match expected pattern: %1$s‎‏‎‎‏‎"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‏‏‏‎‏‏‎‎‏‎‏‏‏‎‎‎‎‏‏‎‎‎‎‎‎‏‎‎‎‏‎‎‎‎‎Date out of expected year range %1$s - %2$s‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‏‏‎‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‏‎‏‏‏‏‎‎‎‎‎‏‏‎‎‎‎‏‏‏‏‏‎Switch to calendar input mode‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‎‎‏‎‏‏‎‎‎‎‏‏‎‏‎‏‏‎‏‏‎‎‎‎‏‏‏‎‏‏‏‏‎‎‎‏‏‎‎‏‏‎‎‏‎‎‎‏‏‎‏‏‎‎Switch to text input mode‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‏‎‎‎‏‏‎‎‏‎‎‎‏‎‎‎‎‏‎‏‏‎‎‎‏‎‏‏‏‎‏‎‎‏‏‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‏‎‎Scroll to show later years‎‏‎‎‏‎"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‏‎‎‎‏‏‎‎‎‏‎‏‎‏‏‎‏‏‎‎‏‎‏‎‎‎‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎‎‎‏‏‏‏‏‎Scroll to show earlier years‎‏‎‎‏‎"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‎‎‏‎‎‏‏‏‎‏‎‏‎‎‎‏‎‎‎‏‎‎‏‏‎‎‎‏‏‎‎‏‎‎‎‏‏‏‎‎‏‎‏‏‎‏‏‏‎‎‏‏‎‎‏‎Select dates‎‏‎‎‏‎"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‏‎‏‏‏‎‎‏‏‎‏‎‏‏‎‎‎‎‏‎‎‎‏‏‎‏‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‎Start date‎‏‎‎‏‎"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‎‎‏‎‏‎‎‏‏‎‎‎‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‏‎‎‏‎‎‎‎‏‎‏‏‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎End date‎‏‎‎‏‎"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‎‏‎‏‏‎‏‏‎‏‏‏‏‎‎‏‎‏‏‏‎‎‏‎‎‎‎‎‎‎‏‏‎‎‎‏‏‎‎‏‏‎‏‏‎‎‎‏‎‎‏‎‎‏‏‏‎‎Scroll to show the next month‎‏‎‎‏‎"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‎‏‎‏‏‏‏‎‎‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‎‎‎‎‎‏‎‎‎‎‏‏‎‎‏‏‏‎‎‎Scroll to show the previous month‎‏‎‎‏‎"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‎‏‏‎‏‎‎‎‎‏‎‏‎‎‏‎‏‏‏‎‏‎‏‎‎‏‎‏‏‎‏‎‎‎‎‎‏‏‏‎‎‎‏‏‏‎‎‏‎In range‎‏‎‎‏‎"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‎‏‎‏‏‏‎‎‏‎‏‏‏‏‎‏‎‎‎‏‏‏‎‎‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‎Enter dates‎‏‎‎‏‎"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‎‏‎‎‎‎‎‎‎‏‎‎‏‎‎‏‎‏‏‎‏‎‎‎‎‏‎‎‏‎‏‏‎‎‏‎‎‏‎‏‎‎‎‏‎‎‏‎‏‏‎‏‎‎‎‏‎Invalid date range input‎‏‎‎‏‎"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‏‏‏‎‎‏‏‎‏‎‏‎‏‏‎‎‎‏‎‎‏‏‏‎‏‎‏‏‏‏‎‎‎‎‏‏‎‎‏‎‎‏‏‏‎‏‏‏‎‏‏‎‎‎Drag handle‎‏‎‎‏‎"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‏‏‎‎‏‎‏‏‏‎‎‏‏‏‎‎‎‎‎‎‎‎‎‎‏‎‎‎‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‎‎‏‎‎‎Collapse bottom sheet‎‏‎‎‏‎"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‎‏‏‏‏‏‎‎‏‎‏‎‎‏‎‏‎‏‎‏‎‏‎‎‎‎‏‏‏‎‎‎‎‏‏‎‎‏‎‎‎‎‎‎‎‎‏‎‎‏‏‎‎‎‎Dismiss bottom sheet‎‏‎‎‏‎"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‎‎‎‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎‎‏‎‏‎‏‎‎‎‎‏‏‎‏‎‎‎‏‏‏‎‏‏‎‏‎Expand bottom sheet‎‏‎‎‏‎"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‎‏‏‎‏‎‎‏‎‎‎‎‏‎‎‏‏‎‏‎‎‎‏‎‎‏‎‎‎‏‏‏‏‏‎‎‏‎‎‏‎‎‏‎‏‎‏‏‎‎‏‎‏‎Tooltip‎‏‎‎‏‎"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‏‎‏‏‎‎‏‏‎‏‏‏‏‏‎‎‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‎‎‏‎‏‎‎‎‎‏‏‎‏‏‏‎‏‏‏‎‏‎Show tooltip‎‏‎‎‏‎"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‏‎‏‏‎‎‎‎‎‏‏‏‏‎‏‎‏‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‎‏‎‎‏‎‎PM‎‏‎‎‏‎"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‎‏‏‏‎‎‏‎‎‏‎‎‏‎‎‏‎‎‎‏‏‎‎‏‎‏‏‎‎‎‎‎‎‎‏‎‎‏‏‎‏‏‎‎‏‎‎‎‎‎‏‎‎‏‎‎AM‎‏‎‎‏‎"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‎‏‎‎‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‎‎‎‎‏‏‎‏‎‎‏‎‎‎‏‎‎‎‏‏‏‎‎‎‏‎‎‏‏‎‎‏‎‎‎Select AM or PM‎‏‎‎‏‎"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‏‎‎‏‏‎‎‏‏‏‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‏‏‎‎‎‎‏‎‎‎‏‏‎‎‎Select hour‎‏‎‎‏‎"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‎‏‏‏‎‎‎‎‎‏‏‎‎‎‎‏‎‎‎‎‏‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‎‎‎‎‏‎‎Select minutes‎‏‎‎‏‎"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‏‏‎‏‎‏‎‎‏‎‏‎‎‏‏‎‏‎‏‏‏‎‎‎‎‏‎‏‎‏‏‏‎‏‏‏‎‏‏‎‎‎‎‎‏‎‎‎‏‎‎‎‎‎%1$d o\'clock‎‏‎‎‏‎"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‏‎‏‏‎‎‏‏‏‏‏‎‎‏‎‎‎‎‎‏‏‏‏‏‎‎‎‎‎‎‏‎‎‎‎‏‎‏‏‎‏‎‎‏‏‏‏‏‏‏‏‏‏‎%1$d hours‎‏‎‎‏‎"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‏‏‎‎‎‎‎‎‏‎‏‎‎‎‏‏‎‏‎‏‎‎‏‎‎‎‏‎‏‎‎‏‏‏‎‏‎%1$d minutes‎‏‎‎‏‎"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‎‎‏‎‎‏‎‎‎‏‏‎‎‏‏‎‎‏‎‏‏‏‏‏‎‎‏‎‎‏‎‏‎‏‏‏‎‏‎‏‎‏‎‏‏‎‏‏‏‎‎‏‎Minute‎‏‎‎‏‎"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‏‏‎‏‏‏‎‏‏‎‏‏‎‎‎‏‏‎‏‎‏‎‏‏‏‎‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‎Hour‎‏‎‎‏‎"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‏‏‎‎‏‎‏‏‏‏‎‎‎‎‎‎‎‏‎‎‎‏‎‎‏‎‏‎‎‏‎‏‏‎‎‏‏‎‏‎‎‎‏‎‏‎‎‎‏‎‏‏‎‏‎‏‎for minutes‎‏‎‎‏‎"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‎‎‎‏‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‎‎‏‎‎‏‎‎‎‏‎‎‏‎‏‎‏‎‏‎‎‏‏‏‏‏‎‏‎‎for hour‎‏‎‎‏‎"</string>
+    <!-- no translation found for m3c_dialog (7617233117134790350) -->
+    <skip />
+    <string name="m3c_dropdown_menu_expanded" msgid="2360841780724299882">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‎‎‎‎‏‏‎‏‏‎‎‏‎‏‎‎‎‏‎‏‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‏‏‏‎‎‎‎‏‏‎‏‎‏‎‎Expanded‎‏‎‎‏‎"</string>
+    <string name="m3c_dropdown_menu_collapsed" msgid="3177828188723359358">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‎‎‏‏‏‏‎‏‎‎‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‏‏‏‏‎‎Collapsed‎‏‎‎‏‎"</string>
+    <!-- no translation found for m3c_snackbar_dismiss (6152755701819882931) -->
+    <skip />
+    <!-- no translation found for m3c_search_bar_search (6152806324422087846) -->
+    <skip />
+    <!-- no translation found for m3c_suggestions_available (7655536806087401899) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_title (7430790972741451689) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_headline (7605002211875882969) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_switch_to_year_selection (791651718641787594) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_switch_to_day_selection (395627960681594326) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_switch_to_next_month (7142101321095356500) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_switch_to_previous_month (228438865139394590) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_navigate_to_year_description (8436650776581492840) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_headline_description (3664277305226978227) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_no_selection_description (5811000998184572395) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_today_description (3199387177749801575) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_year_picker_pane_title (2068382232816991922) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_title (7306227249789210568) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_headline (8166741421776570875) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_label (2895559812010326913) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_headline_description (229313757840775812) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_no_input_description (1237013946323089826) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_invalid_not_allowed (2521768508935305279) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_invalid_for_pattern (6116910750161463197) -->
+    <skip />
+    <!-- no translation found for m3c_date_input_invalid_year_range (7052898923934555305) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_switch_to_calendar_mode (1804346892470238807) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_switch_to_input_mode (2219746470065162704) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_scroll_to_later_years (5727367015496556177) -->
+    <skip />
+    <!-- no translation found for m3c_date_picker_scroll_to_earlier_years (7813882352367152251) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_picker_title (3134165431120340385) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_picker_start_headline (4665981448952749820) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_picker_end_headline (4947636797751277713) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_picker_scroll_to_next_month (602077859540990149) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_picker_scroll_to_previous_month (4592174524846109496) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_picker_day_in_range (2138321128465719402) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_input_title (3148384720560189467) -->
+    <skip />
+    <!-- no translation found for m3c_date_range_input_invalid_range_input (3190049423327661366) -->
+    <skip />
+    <!-- no translation found for m3c_bottom_sheet_drag_handle_description (8403354765404029791) -->
+    <skip />
+    <!-- no translation found for m3c_bottom_sheet_collapse_description (2988463736136100848) -->
+    <skip />
+    <!-- no translation found for m3c_bottom_sheet_dismiss_description (1555567894577437024) -->
+    <skip />
+    <!-- no translation found for m3c_bottom_sheet_expand_description (6670819569745899763) -->
+    <skip />
+    <!-- no translation found for m3c_tooltip_pane_description (5460405025248574620) -->
+    <skip />
+    <!-- no translation found for m3c_tooltip_long_press_label (1805687647081129904) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_pm (6616362054113087709) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_am (2786685010796619560) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_period_toggle_description (5865171949528594571) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_hour_selection (8876759303332837035) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_minute_selection (4699133535056739733) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_hour_suffix (3458167507790628988) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_hour_24h_suffix (9179527532316922345) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_minute_suffix (5064177921781937179) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_minute (4313071914266462005) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_hour (2349193472625211372) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_minute_text_field (7661234488295443182) -->
+    <skip />
+    <!-- no translation found for m3c_time_picker_hour_text_field (6973808109666874069) -->
+    <skip />
 </resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-es-rUS/strings.xml b/compose/material3/material3/src/androidMain/res/values-es-rUS/strings.xml
deleted file mode 100644
index e738f3e..0000000
--- a/compose/material3/material3/src/androidMain/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Diálogo"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Descartar"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Buscar"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Sugerencias a continuación"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Seleccionar fecha"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Fecha seleccionada"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Cambiar a seleccionar un año"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Desliza el dedo para elegir un año o presiona para volver a seleccionar un día"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Cambiar al mes siguiente"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Cambiar al mes anterior"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navegar al año %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Selección actual: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Nada"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Hoy"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Selector de año visible"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Seleccionar fecha"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Fecha ingresada"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Fecha"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Fecha ingresada: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Ninguna"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Fecha no permitida: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"La fecha no coincide con el patrón esperado: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"La fecha está fuera del rango de años esperado: %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Cambiar al modo de entrada de calendario"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Cambiar al modo de entrada de texto"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Desplázate para ver los últimos años"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Desplázate para ver los primeros años"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Seleccionar fechas"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Fecha de inicio"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Fecha de finalización"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Desplázate para ver el próximo mes"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Desplázate para ver el mes anterior"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"En el rango"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Ingresar fechas"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Se introdujo un período no válido"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Controlador de arrastre"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Contraer la hoja inferior"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Descartar la hoja inferior"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Expandir la hoja inferior"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Información"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Mostrar información"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"p.m."</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"a.m."</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Selecciona a.m. o p.m."</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Seleccionar hora"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Seleccionar los minutos"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d en punto"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d horas"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutos"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuto"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Hora"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"por minutos"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"por hora"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-es/strings.xml b/compose/material3/material3/src/androidMain/res/values-es/strings.xml
deleted file mode 100644
index 99589f9..0000000
--- a/compose/material3/material3/src/androidMain/res/values-es/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Cuadro de diálogo"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Cerrar"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Buscar"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Sugerencias a continuación"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Seleccionar fecha"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Fecha seleccionada"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Cambiar para seleccionar un año"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Desliza el dedo para seleccionar un año o toca para volver a seleccionar un día"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Cambiar al mes siguiente"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Cambiar al mes anterior"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Ir al año %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Selección: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Ninguno"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Hoy"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Selector de año visible"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Seleccionar fecha"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Fecha introducida"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Fecha"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Fecha introducida: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Ninguna"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Fecha no permitida: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"La fecha no coincide con el patrón esperado: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Fecha fuera del intervalo de años previsto: %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Cambiar al modo de introducción de calendario"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Cambiar al modo de escritura"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Desplázate para ver los últimos años"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Desplázate para ver los años anteriores"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Seleccionar fechas"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Fecha de inicio"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Fecha de finalización"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Desplázate para ver el mes siguiente"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Desplázate para ver el mes anterior"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Dentro del intervalo"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Introducir fechas"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"El intervalo de fechas no es válido"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Controlador de arrastre"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Contrae la hoja inferior"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Cierra la hoja inferior"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Despliega la hoja inferior"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Descripción emergente"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Mostrar descripción emergente"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Selecciona AM o PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Seleccionar hora"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Seleccionar minutos"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d en punto"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d horas"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutos"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minutos"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Hora"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"por minutos"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"por hora"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-et/strings.xml b/compose/material3/material3/src/androidMain/res/values-et/strings.xml
deleted file mode 100644
index 6e2d1c3..0000000
--- a/compose/material3/material3/src/androidMain/res/values-et/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialoog"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Loobu"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Otsing"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Soovitused on allpool"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Valige kuupäev"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Valitud kuupäev"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Lülitu aasta valimisele"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Pühkige aasta valimiseks või puudutage, et minna tagasi päeva valimise juurde"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Vaheta järgmisele kuule"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Vaheta eelmisele kuule"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Liigu aasta %1$s juurde"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Praegune valik: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Pole"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Täna"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Aasta valija on nähtav"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Valige kuupäev"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Sisestatud kuupäev"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Kuupäev"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Sisestatud kuupäev: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Puudub"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Kuupäev pole lubatud: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Kuupäev ei ühti eeldatud mustriga: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Kuupäev on väljaspool eeldatud aastavahemikku %1$s–%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Lülitu kalendrisisestusrežiimile"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Lülitu tekstisisestusrežiimile"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Hilisemate aastate kuvamiseks kerige"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Varasemate aastate kuvamiseks kerige"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Valige kuupäevad"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Alguskuupäev"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Lõppkuupäev"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Järgmise kuu kuvamiseks kerige"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Eelmise kuu kuvamiseks kerige"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Vahemikus"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Sisestage kuupäevad"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Sisestati sobimatu kuupäevavahemik"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Lohistamispide"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Alumise lehe ahendamine"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Alumisest lehest loobumine"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Alumise lehe laiendamine"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Kohtspikker"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Kuva kohtspikker"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Valige AM või PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Tunni valimine"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Minutite valimine"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d.00"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d tundi"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutit"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minutid"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Tunnid"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"minutite jaoks"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"tundide jaoks"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-eu/strings.xml b/compose/material3/material3/src/androidMain/res/values-eu/strings.xml
deleted file mode 100644
index 6cbc678..0000000
--- a/compose/material3/material3/src/androidMain/res/values-eu/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Leihoa"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Baztertu"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Bilaketa"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Iradokizunak daude behean"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Hautatu data bat"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Hautatutako data"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Joan urte-hautatzailera"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Pasatu hatza urte bat hautatzeko. Bestela, sakatu hau eguna hautatzeko pantailara itzultzeko."</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Aldatu hurrengo hilabetera"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Aldatu aurreko hilabetera"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Joan %1$s urtera"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Oraingo hautapena: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Bat ere ez"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Gaur"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Urte-hautatzailea ikusgai dago"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Hautatu data bat"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Idatzitako data"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Data"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Idatzitako data: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Bat ere ez"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Ez da onartzen data: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Data ez dator bat espero den ereduarekin: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Espero den urte tartetik (%1$s-%2$s) kanpo dago data"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Aldatu egutegiaren idazketa-metodora"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Aldatu testua idazteko modura"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Egin gora/behera etorkizuneko urteak erakusteko"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Egin gora/behera iraganeko urteak erakusteko"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Hautatu datak"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Hasiera-data"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Amaiera-data"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Egin gora/behera hurrengo hilabetea erakusteko"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Egin gora/behera aurreko hilabetea erakusteko"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Tartean"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Idatzi datak"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Idatzitako data tarteak ez du balio"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Arrastatzeko kontrol-puntua"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Tolestu pantailaren behealdean ainguratutako orria"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Baztertu pantailaren behealdean ainguratutako orria"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Zabaldu pantailaren behealdean ainguratutako orria"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Aholkua"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Erakutsi aholkua"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Hautatu AM edo PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Hautatu ordua"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Hautatu minutuak"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutu"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minutuak"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Orduak"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"minutuetarako"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"ordurako"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-fa/strings.xml b/compose/material3/material3/src/androidMain/res/values-fa/strings.xml
deleted file mode 100644
index cde14a3..0000000
--- a/compose/material3/material3/src/androidMain/res/values-fa/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"کادر گفتگو"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"بستن"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"جستجو"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"پیشنهادهای زیر"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"انتخاب تاریخ"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"تاریخ انتخابی"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"رفتن به انتخاب سال"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"برای انتخاب سال، تند بکشید یا برای برگشتن به انتخاب روز، ضربه بزنید"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"تغییر به ماه بعدی"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"تغییر به ماه قبلی"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"‏پیمایش به سال %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"‏انتخاب فعلی: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"هیچ‌کدام"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"امروز"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"انتخابگر سال نمایان است"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"انتخاب تاریخ"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"تاریخ واردشده"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"تاریخ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"‏تاریخ واردشده: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"هیچ‌کدام"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"‏تاریخ مجاز نیست: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"‏تاریخ با الگوی موردانتظار مطابقت ندارد: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"‏تاریخ خارج از بازه زمانی %1$s تا %2$s است"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"رفتن به روش ورودی تقویم"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"رفتن به حالت ورودی نوشتاری"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"برای نمایش سال‌های بعد پیمایش کنید"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"برای نمایش سال‌های قبل پیمایش کنید"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"تاریخ‌ها را انتخاب کنید"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"تاریخ شروع"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"تاریخ پایان"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"برای نمایش ماه بعد پیمایش کنید"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"برای نمایش ماه قبل پیمایش کنید"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"در محدوده"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"تاریخ‌ها را وارد کنید"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"محدوده تاریخ واردشده نامعتبر است"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"دستگیره کشاندن"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"جمع کردن برگه زیرین"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"رد کردن برگه زیرین"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"ازهم باز کردن برگه زیرین"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"نکته‌ابزار"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"نمایش نکته‌ابزار"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"ب.ظ."</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"ق.ظ."</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"انتخاب ق.ظ. یا ب.ظ."</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"انتخاب ساعت"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"انتخاب دقیقه"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"‏ساعت %1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"‏%1$d ساعت"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"‏%1$d دقیقه"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"دقیقه"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"ساعت"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"برای دقیقه"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"برای ساعت"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-fi/strings.xml b/compose/material3/material3/src/androidMain/res/values-fi/strings.xml
deleted file mode 100644
index 5424f78..0000000
--- a/compose/material3/material3/src/androidMain/res/values-fi/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Valintaikkuna"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Hylkää"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Hae"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Ehdotuksia alla"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Valitse päivämäärä"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Valittu päivämäärä"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Vaihda vuoden valintaan"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Valitse vuosi pyyhkäisemällä tai palaa päivän valintaan napauttamalla"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Vaihda seuraavaan kuukauteen"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Vaihda edelliseen kuukauteen"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Siirry vuoteen %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Nykyinen valinta: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"–"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Tänään"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Vuosivalitsin näkyvillä"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Valitse päivämäärä"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Lisätty päivämäärä"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Päivämäärä"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Lisätty päivämäärä: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"–"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Päivämäärä ei sallittu: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Päivämäärä ei vastaa odotettua mallia: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Päivämäärä ei sisälly odotettuun vuosiaikaväliin: %1$s–%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Vaihda syöttötavaksi kalenteri"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Vaihda tekstinsyöttötilaan"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Vieritä nähdäksesi myöhemmät vuodet"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Vieritä nähdäksesi aiemmat vuodet"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Valitse päivämäärät"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Alkamispäivä"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Päättymispäivä"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Vieritä nähdäksesi seuraavan kuukauden"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Vieritä nähdäksesi edellisen kuukauden"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Valitulla välillä"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Lisää päivämäärät"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Virheellinen ajanjakso"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Vetokahva"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Tiivistä alapaneeli"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Hylkää alapaneeli"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Laajenna alapaneeli"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Vihjeteksti"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Näytä vihjeteksti"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"IP"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AP"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Valitse AP tai IP"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Valitse tunti"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Valitse minuutit"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"Kello %1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d h"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minuuttia"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuutti"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Tunti"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"minuuttien ajan"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"tunnin ajan"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-fr-rCA/strings.xml b/compose/material3/material3/src/androidMain/res/values-fr-rCA/strings.xml
deleted file mode 100644
index fbeef28..0000000
--- a/compose/material3/material3/src/androidMain/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialogue"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Fermer"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Recherche"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Suggestions ci-dessous"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Sélectionnez une date"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Date sélectionnée"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Passer à la sélection d\'une année"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Balayez l\'écran pour sélectionner une année, ou touchez pour revenir en arrière et sélectionner un jour"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Passer au mois suivant"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Passer au mois précédent"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Naviguez jusqu\'à l\'année %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Sélection actuelle : %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Aucune"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Aujourd\'hui"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Sélecteur d\'année visible"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Sélectionnez une date"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Date entrée"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Date"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Date entrée : %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Aucune"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Date non autorisée : %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"La date ne correspond pas au schéma prévu : %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Date non comprise dans la fourchette prévue des années %1$s à %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Passer au mode d\'entrée de l\'Agenda"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Passer au mode d\'entrée de texte"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Faites défiler pour afficher les années suivantes"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Faites défiler pour afficher les années précédentes"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Sélectionner les dates"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Date de début"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Date de fin"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Faites défiler pour afficher le mois suivant"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Faites défiler pour afficher le mois précédent"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"À portée"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Entrer les dates"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Entrée de période incorrecte"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Poignée de déplacement"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Réduire la zone de contenu dans le bas de l\'écran"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Fermer la zone de contenu dans le bas de l\'écran"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Développer la zone de contenu dans le bas de l\'écran"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Infobulle"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Afficher une infobulle"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Sélectionner AM ou PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Sélectionner l\'heure"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Sélectionner les minutes"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d h"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d h"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutes"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minute"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Heure"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"pour les minutes"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"pour l\'heure"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-fr/strings.xml b/compose/material3/material3/src/androidMain/res/values-fr/strings.xml
deleted file mode 100644
index a4d1152..0000000
--- a/compose/material3/material3/src/androidMain/res/values-fr/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Boîte de dialogue"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Ignorer"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Rechercher"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Suggestions ci-dessous"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Sélectionner une date"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Date sélectionnée"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Passer à la sélection d\'une année"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Balayez l\'écran pour sélectionner une année ou appuyez pour revenir à la sélection d\'un jour"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Passer au mois suivant"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Passer au mois précédent"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Accéder à l\'année %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Sélection actuelle : %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Aucune"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Aujourd\'hui"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Sélecteur d\'année visible"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Sélectionner une date"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Date saisie"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Date"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Date saisie : %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Aucune"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Date non autorisée : %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"La date ne correspond pas au format attendu : %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Date hors de la plage d\'années attendue : %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Passer au mode de saisie Agenda"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Passer au mode de saisie Texte"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Faites défiler pour afficher les années suivantes"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Faites défiler pour afficher les années précédentes"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Sélectionner des dates"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Date de début"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Date de fin"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Faites défiler pour afficher le mois suivant"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Faites défiler pour afficher le mois précédent"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Dans la plage"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Saisir des dates"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Plage de dates non valide"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Poignée de déplacement"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Réduire la bottom sheet"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Fermer la bottom sheet"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Développer la bottom sheet"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Info-bulle"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Afficher l\'info-bulle"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Sélectionner le format AM ou PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Sélectionner une heure"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Sélectionner des minutes"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d heures"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d heures"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutes"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minute"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Heure"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"en minutes"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"en heures"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-gl/strings.xml b/compose/material3/material3/src/androidMain/res/values-gl/strings.xml
deleted file mode 100644
index 62a9952..0000000
--- a/compose/material3/material3/src/androidMain/res/values-gl/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Cadro de diálogo"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Pechar"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Busca"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Hai suxestións abaixo"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Selecciona a data"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Data seleccionada"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Cambiar a seleccionar un ano"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Pasa o dedo para seleccionar un ano ou toca a pantalla para volver á selección do día"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Cambiar ao mes seguinte"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Cambiar ao mes anterior"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Ir ao ano %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Selección actual: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Ningunha"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Hoxe"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Selector de ano visible"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Seleccionar data"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Data inserida"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Data"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Data inserida: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Ningunha"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Data non permitida: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"A data non coincide co padrón esperado: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"A data está fóra do intervalo de anos esperado (%1$s - %2$s)"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Cambiar ao modo de entrada de calendario"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Cambiar ao modo de introdución de texto"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Desprázate para mostrar anos posteriores"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Desprázate para mostrar anos anteriores"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Selecciona as datas"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Data de inicio"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Data de finalización"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Desprázate para mostrar o mes seguinte"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Desprázate para mostrar o mes anterior"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Dentro do intervalo"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Indica as datas"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Indicouse un intervalo de datas que non é válido"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Controlador de arrastre"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Contraer panel inferior"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Pechar panel inferior"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Despregar panel inferior"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Cadro de información"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Mostrar cadro de información"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"pm"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"am"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Seleccionar a. m. ou p. m."</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Seleccionar hora"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Seleccionar minutos"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d en pto."</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d horas"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutos"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuto"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Hora"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"por minuto"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"por hora"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-gu/strings.xml b/compose/material3/material3/src/androidMain/res/values-gu/strings.xml
deleted file mode 100644
index cc9f98f..0000000
--- a/compose/material3/material3/src/androidMain/res/values-gu/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"સંવાદ બૉક્સ"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"છોડી દો"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"શોધો"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"સૂચનો નીચે છે"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"તારીખ પસંદ કરો"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"પસંદ કરેલી તારીખ"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"વર્ષ પસંદ કરવાના વિકલ્પ પર સ્વિચ કરો"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"વર્ષ પસંદ કરવા માટે સ્વાઇપ કરો અથવા દિવસની પસંદગી પર પાછા સ્વિચ કરવા માટે ટૅપ કરો"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"બદલીને આગલો મહિનો પસંદ કરો"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"બદલીને પાછલો મહિનો પસંદ કરો"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"વર્ષ %1$s પર નૅવિગેટ કરો"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"હાલની પસંદગી: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"એકપણ નહીં"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"આજે"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"વર્ષ માટેનું પિકર દૃશ્યમાન છે"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"તારીખ પસંદ કરો"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"દાખલ કરેલી તારીખ"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"તારીખ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"દાખલ કરેલી તારીખ: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"એકપણ નહીં"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"આ તારીખની મંજૂરી નથી: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"તારીખ અપેક્ષિત પૅટર્ન સાથે મેળ ખાતી નથી: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"અપેક્ષિત વર્ષની શ્રેણી %1$s - %2$sની બહારની તારીખ"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"કૅલેન્ડર ઇનપુટ મોડ પર સ્વિચ કરો"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"ટેક્સ્ટ ઇનપુટ મોડ પર સ્વિચ કરો"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"પછીના વર્ષો બતાવવા માટે સ્ક્રોલ કરો"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"અગાઉના વર્ષો બતાવવા માટે સ્ક્રોલ કરો"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"તારીખો પસંદ કરો"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"પ્રારંભ તારીખ"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"સમાપ્તિ તારીખ"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"આગલો મહિનો બતાવવા માટે સ્ક્રોલ કરો"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"પાછલો મહિનો બતાવવા માટે સ્ક્રોલ કરો"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"રેન્જમાં છે"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"તારીખો દાખલ કરો"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"તારીખની શ્રેણીનું અમાન્ય ઇનપુટ"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"ઑબ્જેક્ટ ખેંચવાનું હૅન્ડલ"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"બોટમ શીટ નાની કરો"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"બોટમ શીટ છોડી દો"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"બોટમ શીટ મોટી કરો"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"ટૂલટિપ"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"ટૂલટિપ બતાવો"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"AM કે PM પસંદ કરો"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"કલાક પસંદ કરો"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"મિનિટ પસંદ કરો"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d વાગ્યે"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d કલાકે"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d મિનિટ"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"મિનિટ"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"કલાક"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"મિનિટ માટે"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"કલાક માટે"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-hi/strings.xml b/compose/material3/material3/src/androidMain/res/values-hi/strings.xml
deleted file mode 100644
index 8bf1fa4..0000000
--- a/compose/material3/material3/src/androidMain/res/values-hi/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"डायलॉग"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"खारिज करें"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"खोजें"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"सुझाव यहां मौजूद हैं"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"तारीख चुनें"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"चुनी गई तारीख"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"साल चुनने के लिए स्विच करें"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"साल चुनने के लिए स्वाइप करें या दिन चुनने पर वापस स्विच करने लिए टैप करें"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"अगले महीने पर जाएं"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"पिछले महीने पर जाएं"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"साल %1$s पर जाएं"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"फ़िलहाल, यह चुना गया है: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"कोई नहीं"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"आज"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"साल चुनने का विकल्प दिख रहा है"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"तारीख चुनें"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"डाली गई तारीख"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"तारीख"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"डाली गई तारीख: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"कोई नहीं"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"यह तारीख सही नहीं है: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"तारीख सही फ़ॉर्मैट में नहीं डाली गई है: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"तारीख को साल के सही फ़ॉर्मैट में नहीं डाला गया है %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"कैलेंडर इनपुट मोड पर स्विच करें"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"टेक्स्ट इनपुट मोड पर स्विच करें"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"बाद वाले सालों की तारीख देखने के लिए स्क्रोल करें"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"पिछले सालों की तारीख देखने के लिए स्क्रोल करें"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"तारीखें चुनें"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"शुरू होने की तारीख"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"खत्म होने की तारीख"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"अगले महीने की तारीख देखने के लिए स्क्रोल करें"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"पिछले महीने की तारीख देखने के लिए स्क्रोल करें"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"रेंज में"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"तारीखें डालें"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"तारीख की दी गई सीमा गलत है"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"खींचकर छोड़ने वाला हैंडल"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"बॉटम शीट को छोटा करें"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"बॉटम शीट को खारिज करें"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"बॉटम शीट को बड़ा करें"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"टूलटिप"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"टूलटिप देखें"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"AM या PM चुनें"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"घंटा चुनें"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"मिनट चुनें"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d बजे"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d घंटे"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d मिनट"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"मिनट"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"घंटा"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"मिनट के लिए"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"घंटे के लिए"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-hr/strings.xml b/compose/material3/material3/src/androidMain/res/values-hr/strings.xml
deleted file mode 100644
index 9c40743..0000000
--- a/compose/material3/material3/src/androidMain/res/values-hr/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dijaloški okvir"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Odbaci"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Pretraživanje"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Prijedlozi su u nastavku"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Odaberite datum"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Odabrani datum"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Prijelaz na odabir godine"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Pomaknite se za odabir godine ili dodirnite za povratak na odabir dana"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Pomicanje na sljedeći mjesec"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Pomicanje na prethodni mjesec"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Prelazak u godinu %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Trenutačni odabir: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Ništa"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Danas"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Vidljiv je alat za odabir godine"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Odaberite datum"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Datum unosa"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Datum"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Datum unosa: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Ništa"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Datum nije dopušten: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Datum se ne podudara s očekivanim uzorkom: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Datum je izvan očekivanog raspona godine %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Prijelaz na način unosa u Kalendaru"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Prijelaz na način unosa teksta"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Pomaknite se za prikaz kasnijih godina"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Pomaknite se za prikaz ranijih godina"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Odabir datuma"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Datum početka"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Datum završetka"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Pomaknite se za prikaz sljedećeg mjeseca"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Pomaknite se za prikaz prethodnog mjeseca"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"U dometu"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Unos datuma"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Unos datumskog raspona nije važeći"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Marker za povlačenje"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Sažimanje donje tablice"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Odbacivanje donje tablice"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Proširivanje donje tablice"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Opis"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Prikaži opis"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"Poslijepodne"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"Prijepodne"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Odaberite prijepodne ili poslijepodne"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Odabir sata"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Odabir minuta"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d h"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d h"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d min"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuta"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Sat"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"minutama"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"na jedan sat"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-hu/strings.xml b/compose/material3/material3/src/androidMain/res/values-hu/strings.xml
deleted file mode 100644
index f0cc3f5..0000000
--- a/compose/material3/material3/src/androidMain/res/values-hu/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Párbeszédablak"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Elvetés"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Keresés"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Javaslatok alább"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Dátum kiválasztása"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Kiválasztott dátum"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Váltson a kívánt év kiválasztásához"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Csúsztatással kiválaszthatja a kívánt évet, vagy koppintással visszaválthat a nap kiválasztásához."</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Váltás a következő hónapra"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Váltás az előző hónapra"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navigálás a következő évhez: %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Jelenleg kiválasztva: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Nincs"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Ma"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Látható az évválasztó"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Dátum kiválasztása"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Megadott dátum"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Dátum"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Megadott dátum: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Nincs"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Nem engedélyezett dátum: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"A dátum nem felel meg a várt formátumnak: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"A dátum a várt időtartományon (%1$s – %2$s) kívül esik"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Váltás naptárbeviteli módra"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Váltás szövegbeviteli módra"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Görgessen a későbbi évek megjelenítéséhez"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Görgessen a korábbi évek megjelenítéséhez"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Válassza ki a kívánt dátumokat"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Kezdő dátum"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Befejezés dátuma"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Görgessen a következő hónap megjelenítéséhez"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Görgessen az előző hónap megjelenítéséhez"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Hatókörön belül"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Dátumok megadása"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Érvénytelen a megadott dátum"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Fogópont"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Az alsó lap összecsukása"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Az alsó lap elvetése"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Az alsó lap kibontása"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Elemleírás"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Elemleírás megjelenítése"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"du."</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"de."</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Válassza ki, hogy délelőtt vagy délután"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Óra kiválasztása"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Perc kiválasztása"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d óra"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d óra"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d perc"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Perc"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Óra"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"percre"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"órára"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-hy/strings.xml b/compose/material3/material3/src/androidMain/res/values-hy/strings.xml
deleted file mode 100644
index ec88ab0..0000000
--- a/compose/material3/material3/src/androidMain/res/values-hy/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Երկխոսության պատուհան"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Փակել"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Որոնում"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Առաջարկները հասանելի են ստորև"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Ընտրեք ամսաթիվը"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Ընտրված ամսաթիվ"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Անցնել տարվա ընտրությանը"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Սահեցրեք՝ տարեթիվ ընտրելու համար, կամ հպեք՝ օրվա ընտրությանը վերադառնալու համար"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Անցնել հաջորդ ամսվան"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Անցնել նախորդ ամսվան"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Անցնել %1$s թվական"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Ընթացիկ ընտրությունը՝ %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Ոչ մեկը"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Այսօր"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Տարեթվի ցուցադրվող ընտրիչ"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Ընտրեք ամսաթիվը"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Մուտքագրված ամսաթիվ"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Ամսաթիվ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Մուտքագրված ամսաթիվ՝ %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Ընտրված տարրեր չկան"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Ամսաթիվը թույլատրված չէ՝ %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Ամսաթիվը չի համընկնում թույլատրելի ձևաչափի հետ՝ %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Ամսաթիվը տարեթվերի թույլատրելի միջակայքից (%1$s – %2$s) դուրս է"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Անցնել օրացույցի մուտքագրման ռեժիմ"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Անցնել տեքստի մուտքագրման ռեժիմին"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Ոլորեք՝ վերջին տարիները ցուցադրելու համար"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Ոլորեք՝ նախորդ տարիները ցուցադրելու համար"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Ընտրեք ամսաթվեր"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Սկզբի ամսաթիվ"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Ավարտի ամսաթիվ"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Ոլորեք՝ հաջորդ ամիսը ցուցադրելու համար"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Ոլորեք՝ նախորդ ամիսը ցուցադրելու համար"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Միջակայքում"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Մուտքագրեք ամսաթվերը"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Մուտքագրված ամսաթվերի միջակայքն անվավեր է"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Տեղափոխման նշիչ"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Ծալել ներքևի էկրանը"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Փակել ներքևի էկրանը"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Ծավալել ներքևի էկրանը"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Հուշակ"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Ցուցադրել հուշում"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Ընտրել AM կամ PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Ընտրել ժամը"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Ընտրել րոպեն"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d ժամ"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d րոպե"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Րոպե"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Ժամ"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"րոպեներ"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"ժամեր"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-in/strings.xml b/compose/material3/material3/src/androidMain/res/values-in/strings.xml
deleted file mode 100644
index 22625d0..0000000
--- a/compose/material3/material3/src/androidMain/res/values-in/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialog"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Tutup"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Telusuri"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Saran di bawah"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Pilih tanggal"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Tanggal yang dipilih"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Beralih ke memilih tahun"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Geser untuk memilih tahun, atau ketuk untuk beralih kembali ke pemilihan tanggal"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Ubah ke bulan berikutnya"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Ubah ke bulan sebelumnya"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Pilih tahun %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Pilihan saat ini: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Tidak ada"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Hari ini"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Pemilih tahun terlihat"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Pilih tanggal"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Tanggal yang dimasukkan"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Tanggal"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Tanggal yang dimasukkan: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Tidak ada"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Tanggal tidak diizinkan: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Tanggal tidak cocok dengan pola yang diharapkan: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Tanggal di luar rentang tahun yang diharapkan %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Beralih ke mode input kalender"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Beralih ke mode input teks"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Scroll untuk menampilkan tahun berikutnya"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Scroll untuk menampilkan tahun sebelumnya"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Pilih tanggal"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Tanggal mulai"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Tanggal akhir"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Scroll untuk menampilkan bulan berikutnya"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Scroll untuk menampilkan bulan sebelumnya"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Dalam rentang"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Masukkan tanggal"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Input rentang tanggal tidak valid"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Handel geser"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Menciutkan sheet bawah"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Menutup sheet bawah"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Meluaskan sheet bawah"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Tooltip"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Tampilkan tooltip"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Pilih AM atau PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Pilih jam"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Pilih menit"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"Pukul %1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d jam"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d menit"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Menit"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Jam"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"untuk menit"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"untuk jam"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-is/strings.xml b/compose/material3/material3/src/androidMain/res/values-is/strings.xml
deleted file mode 100644
index 0e78deb..0000000
--- a/compose/material3/material3/src/androidMain/res/values-is/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Gluggi"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Hunsa"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Leit"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Tillögur hér fyrir neðan"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Velja dagsetningu"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Valin dagsetning"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Skipta yfir í val á ári"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Strjúktu til að velja ár eða ýttu til að skipta aftur yfir í að velja dag"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Breyta í næsta mánuð"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Breyta í fyrri mánuð"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Fletta til ársins %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Núverandi val: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Ekkert"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Í dag"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Ársval birt"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Velja dagsetningu"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Skráð dagsetning"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Dagsetning"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Skráð dagsetning: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Ekkert"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Dagsetning er ekki leyfileg: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Dagsetning passar ekki við áætlað mynstur: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Dagsetning er utan áætlaðra ára: %1$s–%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Skipta yfir í innfærsluaðferð fyrir dagatal"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Skipta yfir í textainnslátt"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Flettu til að sjá síðari ár"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Flettu til að sjá fyrri ár"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Veldu dagsetningar"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Upphafsdagur"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Lokadagur"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Flettu til að sjá næsta mánuð"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Flettu til að sjá fyrri mánuð"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Innan tímabils"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Sláðu inn dagsetningar"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Ógilt tímabil fært inn"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Dragkló"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Minnka blað neðst"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Hunsa blað neðst"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Stækka blað neðst"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Ábending"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Sýna ábendingu"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"eh"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"fh"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Velja f.h. eða e.h."</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Velja klst."</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Velja mínútur"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"Kl. %1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d klst."</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d mínútur"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Mínúta"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Klukkustund"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"fyrir mínútur"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"fyrir klukkustund"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-it/strings.xml b/compose/material3/material3/src/androidMain/res/values-it/strings.xml
deleted file mode 100644
index ab99079..0000000
--- a/compose/material3/material3/src/androidMain/res/values-it/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Finestra di dialogo"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Chiudi"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Cerca"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Suggerimenti sotto"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Seleziona data"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Data selezionata"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Passa alla selezione di un anno"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Scorri per selezionare un anno o tocca per tornare alla selezione di un giorno"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Passa al mese successivo"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Passa al mese precedente"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Vai all\'anno %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Selezione attuale: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Nessuna selezione"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Oggi"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Selettore dell\'anno visibile"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Seleziona data"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Data inserita"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Data"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Data inserita: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Nessuna"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Data non consentita: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"La data non corrisponde al pattern previsto: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"La data non rientra nell\'intervallo di anni previsto (%1$s-%2$s)"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Passa alla modalità di immissione Calendario"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Passa alla modalità di immissione Testo"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Scorri per visualizzare gli anni successivi"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Scorri per visualizzare gli anni precedenti"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Seleziona date"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Data di inizio"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Data di fine"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Scorri per visualizzare il mese successivo"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Scorri per visualizzare il mese precedente"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Nell\'intervallo"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Inserisci date"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Intervallo di date inserito non valido"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Punto di trascinamento"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Comprimi il riquadro inferiore"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Chiudi il riquadro inferiore"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Espandi il riquadro inferiore"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Descrizione comando"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Mostra descrizione comando"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Seleziona AM o PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Seleziona ora"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Seleziona i minuti"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d ore"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minuti"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuto"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Ora"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"per minuti"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"per ora"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-iw/strings.xml b/compose/material3/material3/src/androidMain/res/values-iw/strings.xml
deleted file mode 100644
index 77b22bd..0000000
--- a/compose/material3/material3/src/androidMain/res/values-iw/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"תיבת דו-שיח"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"סגירה"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"חיפוש"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"הצעות מופיעות למטה"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"בחירת תאריך"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"התאריך הנבחר"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"החלפה לבחירה של שנה"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"יש להחליק כדי לבחור שנה, או להקיש כדי לחזור לבחירת היום"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"מעבר לחודש הבא"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"מעבר לחודש הקודם"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"‏ניווט לשנת %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"‏הבחירה הנוכחית: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"ללא"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"היום"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"בורר השנה גלוי"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"בחירת תאריך"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"התאריך שהוזן"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"תאריך"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"‏התאריך שהוזן: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"ללא"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"‏תאריך לא מורשה: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"‏התאריך לא תואם לקו ביטול הנעילה הצפוי: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"‏התאריך נמצא מחוץ לטווח השנים הצפוי %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"מעבר לשיטת קלט של יומן"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"מעבר לשיטת קלט של טקסט"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"צריך לגלול כדי להציג את השנים המאוחרות"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"צריך לגלול כדי להציג את השנים הקודמות"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"בחירת תאריכים"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"תאריך התחלה"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"תאריך סיום"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"צריך לגלול כדי להציג את החודש הבא"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"צריך לגלול כדי להציג את החודש הקודם"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"בטווח"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"הזנת תאריכים"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"קלט טווח תאריכים לא חוקי"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"נקודת אחיזה לגרירה"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"כיווץ הגיליון התחתון"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"סגירת הגיליון התחתון"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"הרחבת הגיליון התחתון"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"הסבר קצר"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"הצגת הסבר קצר"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"‏צריך לבחור ב-AM או ב-PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"בחירת שעה"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"בחירת דקות"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"‏%1$d שעות"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"‏%1$d דקות"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"דקות"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"שעות"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"דקות"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"שעות"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ja/strings.xml b/compose/material3/material3/src/androidMain/res/values-ja/strings.xml
deleted file mode 100644
index 416719f..0000000
--- a/compose/material3/material3/src/androidMain/res/values-ja/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"ダイアログ"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"閉じる"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"検索"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"検索候補は次のとおりです"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"日付を選択します"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"選択した日付"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"年の選択に移行"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"スワイプして年を選択するか、タップして日付の選択に戻ります"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"翌月に変更"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"前月に変更"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"年に移動 %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"現在の選択: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"なし"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"今日"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"年の選択ツールの表示"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"日付を選択"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"入力された日付"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"日付"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"入力された日付: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"なし"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"許可されていない日付です: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"想定されるパターンと日付が一致しません: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"想定される年の範囲(%1$s~%2$s)から日付が外れています"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"カレンダー入力モードに切り替え"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"テキスト入力モードに切り替え"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"これより後の年を表示するにはスクロールしてください"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"これより前の年を表示するにはスクロールしてください"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"日付の選択"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"開始日"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"終了日"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"次の月を表示するにはスクロールしてください"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"前の月を表示するにはスクロールしてください"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"範囲内"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"日付の入力"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"入力された期間は無効です"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"ドラッグ ハンドル"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"ボトムシートを折りたたみます"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"ボトムシートを閉じます"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"ボトムシートを開きます"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"ツールチップ"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"ツールチップを表示します"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"午前または午後を選択"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"時刻を選択"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"分を選択"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d 時"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d 時間"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d 分"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"分"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"時間"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"(分単位)"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"(時間単位)"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ka/strings.xml b/compose/material3/material3/src/androidMain/res/values-ka/strings.xml
deleted file mode 100644
index 205cfa5..0000000
--- a/compose/material3/material3/src/androidMain/res/values-ka/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"დიალოგი"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"დახურვა"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"ძიება"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"შემოთავაზებები იხილეთ ქვემოთ"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"აირჩიეთ თარიღი"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"არჩეული თარიღი"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"წლის არჩევაზე გადასვლა"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"გადაფურცლეთ წლის ასარჩევად, ან შეხებით აირჩიეთ ისევ დღის არჩევაზე გადართვა"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"შემდეგ თვეზე გადასვლა"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"წინა თვეზე გადასვლა"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$s-ზე გადასვლა"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"ამჟამინდელი არჩევანი: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"არცერთი"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"დღეს"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"არჩეული წელი ხილულია"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"აირჩიეთ თარიღი"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"შეყვანილი სახელი"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"თარიღი"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"შეყვანილი თარიღი: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"არცერთი"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"თარიღი დაუშვებელია: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"თარიღი არ ემთხვევა მოსალოდნელ ნიმუშს: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"თარიღი არ არის წლების მოსალოდნელ დიაპაზონში %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"კალენდარში შეყვანის რეჟიმზე გადართვა"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"ტექსტის შეყვანის რეჟიმზე გადართვა"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"გადააადგილეთ შემდგომი წლების საჩვენებლად"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"გადააადგილეთ წინა წლების საჩვენებლად"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"თარიღების არჩევა"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"დაწყების თარიღი"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"დასრულების თარიღი"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"გადააადგილეთ შემდეგი თვის საჩვენებლად"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"გადააადგილეთ წინა თვის საჩვენებლად"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"არეალშია"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"თარიღების შეყვანა"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"შეყვანილია თარიღების არასწორი დიაპაზონი"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"სახელური ჩავლებისთვის"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"ქვედა ფურცლის ჩაკეცვა"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"ქვედა ფურცლის უარყოფა"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"ქვედა ფურცლის გაშლა"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"მინიშნება"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"მინიშნების ჩვენება"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"აირჩიეთ AM ან PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"აირჩიეთ საათი"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"აირჩიეთ წუთები"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d სთ"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d საათი"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d წთ"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"წუთი"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"საათი"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"რამდენიმე წუთით"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"ერთი საათით"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-kk/strings.xml b/compose/material3/material3/src/androidMain/res/values-kk/strings.xml
deleted file mode 100644
index 11ed19f..0000000
--- a/compose/material3/material3/src/androidMain/res/values-kk/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Диалогтік терезе"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Жабу"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Іздеу"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Төмендегі ұсыныстар"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Күн таңдау"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Таңдалған күн"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Жыл таңдауға өту"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Жыл таңдау үшін сырғытыңыз. Күн таңдауға ауысу үшін түртіңіз."</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Келесі айға өзгерту"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Алдыңғы айға өзгерту"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Мына жылға өту: %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Қазіргі таңдау: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Ешқандай"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Бүгін"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Көрсетілген жыл таңдағышы"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Күнді таңдаңыз"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Деректер енгізілді"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Күні"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Деректер енгізілді: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Жоқ"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Деректер рұқсат етілмейді: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Деректер болжалды өрнекке сай келмейді: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Күтілетін жыл аралығы: %1$s–%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Күнтізбенің енгізу режиміне ауысу"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Мәтін енгізу режиміне ауысу"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Кейінгі жылдарды көрсету үшін айналдырыңыз."</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Алдыңғы жылдарды көрсету үшін айналдырыңыз."</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Күндер таңдау"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Басталу күні"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Аяқталу күні"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Келесі айды көрсету үшін айналдырыңыз."</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Алдыңғы айды көрсету үшін айналдырыңыз."</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Күндер аралығында"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Күндерді енгізіңіз"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Жарамсыз күндер аралығы енгізілген."</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Сүйрейтін тетік"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Төменгі парақшаны жию"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Төменгі парақшаны жабу"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Төменгі парақшаны жаю"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Қалқыма көмек"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Қалқыма көмекті көрсету"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"түстен кейін"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"түске дейін"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"\"AM\" немесе \"PM\" форматын таңдау"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Сағатты таңдау"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Минут таңдау"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d сағат"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d сағат"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d минут"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Mинут"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Сағат"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"минут"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"сағат"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-km/strings.xml b/compose/material3/material3/src/androidMain/res/values-km/strings.xml
deleted file mode 100644
index fc671fa..0000000
--- a/compose/material3/material3/src/androidMain/res/values-km/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"ប្រអប់"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"ច្រានចោល"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"ស្វែងរក"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"ការណែនាំខាងក្រោម"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"ជ្រើសរើស​កាលបរិច្ឆេទ"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"កាលបរិច្ឆេទដែលបាន​ជ្រើសរើស"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"ប្ដូរទៅ​ការជ្រើសរើសឆ្នាំ"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"អូសដើម្បីជ្រើសរើសឆ្នាំ ឬចុចដើម្បីប្ដូរត្រឡប់ទៅការជ្រើសរើសថ្ងៃវិញ"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"ប្ដូរ​ទៅ​ខែបន្ទាប់"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"ប្ដូរ​ទៅ​ខែមុន"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"រុករកទៅកាន់ឆ្នាំ %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"ការជ្រើសរើសបច្ចុប្បន្ន៖ %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"គ្មាន"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"ថ្ងៃនេះ"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"អាចមើលឃើញផ្ទាំងជ្រើសរើសឆ្នាំ"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"ជ្រើសរើស​កាលបរិច្ឆេទ"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"កាលបរិច្ឆេទដែលបានបញ្ចូល"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"កាលបរិច្ឆេទ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"កាលបរិច្ឆេទដែលបានបញ្ចូល៖ %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"គ្មាន"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"កាលបរិច្ឆេទដែលមិនបានអនុញ្ញាត៖ %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"កាលបរិច្ឆេទមិនត្រូវគ្នានឹងលំនាំដែលរំពឹងទុកទេ៖ %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"កាលបរិច្ឆេទដែលស្ថិតនៅក្រៅចន្លោះឆ្នាំដែលរំពឹងទុក %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"ប្ដូរទៅ​មុខងារបញ្ចូល​ប្រតិទិន"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"ប្ដូរទៅ​មុខងារបញ្ចូល​អក្សរ"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"រំកិលដើម្បី​បង្ហាញឆ្នាំក្រោយៗ"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"រំកិលដើម្បី​បង្ហាញឆ្នាំមុនៗ"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"ជ្រើសរើស​កាល​បរិច្ឆេទ"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"កាលបរិច្ឆេទ​ចាប់ផ្ដើម"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"កាលបរិច្ឆេទ​បញ្ចប់"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"រំកិលដើម្បីបង្ហាញខែក្រោយ"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"រំកិលដើម្បីបង្ហាញខែមុន"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"ក្នុងចន្លោះ"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"បញ្ចូល​កាលបរិច្ឆេទ"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"ការបញ្ចូលចន្លោះកាលបរិច្ឆេទមិនត្រឹមត្រូវ"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"ដង​អូស"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"បង្រួម​សន្លឹកខាងក្រោម"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"ច្រានចោល​សន្លឹកខាងក្រោម"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"ពង្រីក​សន្លឹកខាងក្រោម"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"កំណត់​ពន្យល់"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"បង្ហាញ​កំណត់​ពន្យល់"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"ជ្រើសរើស AM ឬ PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"ជ្រើសរើសម៉ោង"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"ជ្រើស​នាទី"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"ម៉ោង %1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d ម៉ោង"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d នាទី"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"នាទី​"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"ម៉ោង"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"រយៈពេលប៉ុន្មាននាទី"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"រយៈពេលប៉ុន្មានម៉ោង"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-kn/strings.xml b/compose/material3/material3/src/androidMain/res/values-kn/strings.xml
deleted file mode 100644
index aead7fc..0000000
--- a/compose/material3/material3/src/androidMain/res/values-kn/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"ಡೈಲಾಗ್"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"ವಜಾಗೊಳಿಸಿ"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"ಹುಡುಕಿ"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"ಸಲಹೆಗಳನ್ನು ಕೆಳಗೆ ನೀಡಲಾಗಿದೆ"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"ದಿನಾಂಕವನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"ದಿನಾಂಕವನ್ನು ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"ವರ್ಷವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಬದಲಿಸಿ"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"ಒಂದು ವರ್ಷವನ್ನು ಆಯ್ಕೆಮಾಡಲು ಸ್ವೈಪ್ ಮಾಡಿ ಅಥವಾ ಒಂದು ದಿನವನ್ನು ಆಯ್ಕೆಮಾಡಲು ಹಿಂತಿರುಗಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"ಮುಂದಿನ ತಿಂಗಳಿಗೆ ಬದಲಿಸಿ"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"ಹಿಂದಿನ ತಿಂಗಳಿಗೆ ಬದಲಿಸಿ"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$s ವರ್ಷಕ್ಕೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"ಪ್ರಸ್ತುತ ಆಯ್ಕೆ: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"ಯಾವುದೂ ಅಲ್ಲ"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"ಇಂದು"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"ವರ್ಷದ ಪಿಕರ್ ಗೋಚರಿಸುತ್ತದೆ"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"ದಿನಾಂಕವನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"ನಮೂದಿಸಿದ ದಿನಾಂಕ"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"ದಿನಾಂಕ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"ನಮೂದಿಸಿದ ದಿನಾಂಕ: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"ಯಾವುದೂ ಅಲ್ಲ"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"ದಿನಾಂಕವನ್ನು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"ನಿರೀಕ್ಷಿಸಿದ ಪ್ಯಾಟರ್ನ್‌ನೊಂದಿಗೆ ದಿನಾಂಕ ಹೊಂದಾಣಿಕೆಯಾಗುತ್ತಿಲ್ಲ: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"ದಿನಾಂಕವು ನಿರೀಕ್ಷಿಸಿದ ವರ್ಷದ ವ್ಯಾಪ್ತಿಯನ್ನು ಮೀರಿದೆ %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"ಕ್ಯಾಲೆಂಡರ್ ಇನ್‌ಪುಟ್ ಮೋಡ್‌ಗೆ ಬದಲಿಸಿ"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"ಪಠ್ಯ ಇನ್‌ಪುಟ್ ಮೋಡ್‌ಗೆ ಬದಲಿಸಿ"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"ನಂತರದ ವರ್ಷಗಳನ್ನು ತೋರಿಸಲು ಸ್ಕ್ರಾಲ್ ಮಾಡಿ"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"ಹಿಂದಿನ ವರ್ಷಗಳನ್ನು ತೋರಿಸಲು ಸ್ಕ್ರಾಲ್‌ ಮಾಡಿ"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"ದಿನಾಂಕಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"ಆರಂಭ ದಿನಾಂಕ"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"ಅಂತಿಮ ದಿನಾಂಕ"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"ಮುಂದಿನ ತಿಂಗಳನ್ನು ತೋರಿಸಲು ಸ್ಕ್ರಾಲ್ ಮಾಡಿ"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"ಹಿಂದಿನ ತಿಂಗಳನ್ನು ತೋರಿಸಲು ಸ್ಕ್ರಾಲ್‌ ಮಾಡಿ"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"ವ್ಯಾಪ್ತಿಯಲ್ಲಿದೆ"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"ದಿನಾಂಕಗಳನ್ನು ನಮೂದಿಸಿ"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"ದಿನಾಂಕ ವ್ಯಾಪ್ತಿಯ ಇನ್‌ಪುಟ್ ಅಮಾನ್ಯವಾಗಿದೆ"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"ಹ್ಯಾಂಡಲ್ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"ಕೆಳಭಾಗದ ಶೀಟ್ ಅನ್ನು ಕುಗ್ಗಿಸಿ"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"ಕೆಳಭಾಗದ ಶೀಟ್ ಅನ್ನು ವಜಾಗೊಳಿಸಿ"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"ಕೆಳಭಾಗದ ಶೀಟ್ ಅನ್ನು ವಿಸ್ತರಿಸಿ"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"ಟೂಲ್‌ಟಿಪ್"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"ಟೂಲ್‌ಟಿಪ್ ಅನ್ನು ತೋರಿಸಿ"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"AM ಅಥವಾ PM ಆಯ್ಕೆಮಾಡಿ"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"ಸಮಯವನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"ನಿಮಿಷಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d ಓ ಕ್ಲಾಕ್"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d ಗಂಟೆ"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d ನಿಮಿಷಗಳು"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"ನಿಮಿಷ"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"ಗಂಟೆ"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"ನಿಮಿಷಗಳವರೆಗೆ"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"ಗಂಟೆಯವರೆಗೆ"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ko/strings.xml b/compose/material3/material3/src/androidMain/res/values-ko/strings.xml
deleted file mode 100644
index bbe57a2..0000000
--- a/compose/material3/material3/src/androidMain/res/values-ko/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"대화상자"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"닫기"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"검색"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"아래의 추천 검색어"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"날짜 선택"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"선택한 날짜"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"연도 선택으로 전환"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"스와이프하여 연도를 선택하거나 탭하여 날짜 선택으로 돌아가세요."</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"다음 달로 변경"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"이전 달로 변경"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$s년으로 이동"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"현재 선택사항: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"없음"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"오늘"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"연도 선택 도구 표시"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"날짜 선택"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"입력한 날짜"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"날짜"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"입력한 날짜: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"없음"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"데이터 허용 안 됨: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"데이터가 예상 패턴과 일치하지 않음: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"데이터가 예상 연도 범위(%1$s~%2$s)를 벗어남"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"캘린더 입력 모드로 전환"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"텍스트 입력 모드로 전환"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"스크롤하여 이후 연도 보기"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"스크롤하여 이전 연도 보기"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"날짜 선택"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"시작일"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"종료일"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"스크롤하여 다음 달 보기"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"스크롤하여 이전 달 보기"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"범위 내"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"날짜 입력"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"잘못된 기간 입력"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"드래그 핸들"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"하단 시트 접기"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"하단 시트 닫기"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"하단 시트 펼치기"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"도움말"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"도움말 표시"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"오후"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"오전"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"오전 또는 오후를 선택하세요."</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"시간 선택"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"분 선택"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d시 정각"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d시간"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d분"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"분"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"시간"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"기간(분)"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"기간(시간)"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ky/strings.xml b/compose/material3/material3/src/androidMain/res/values-ky/strings.xml
deleted file mode 100644
index 81f00bb..0000000
--- a/compose/material3/material3/src/androidMain/res/values-ky/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Диалог"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Жабуу"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Издөө"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Сунуштар төмөндө келтирилди"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Күндү тандоо"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Тандалган күн"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Жыл тандоого которулуу"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Жылды тандоо үчүн экранды сүрүңүз же күндү тандоого кайтуу үчүн таптап коюңуз"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Кийинки айга өзгөртүү"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Мурунку айга өзгөртүү"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$s-жылга өтүү"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Учурда %1$s тандалды"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Жок"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Бүгүн"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Көрсөтүлгөн жыл тандагыч"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Күндү тандоо"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Киргизилген күн"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Күнү"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Киргизилген күн: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Жок"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Күндүн мындай форматын колдонууга болбойт: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Күндүн форматы үлгүгө дал келген жок: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Күн %1$s — %2$s деп белгиленген жылдар диапазонуна кирбей калды"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Жылнаамага киргизүү режимине которулуу"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Текст киргизүү режимине которулуу"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Кийинки жылдарды көрүү үчүн сыдырыңыз"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Мурунку жылдарды көрүү үчүн сыдырыңыз"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Күндөрдү тандоо"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Башталуу күнү"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Аяктоо күнү"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Кийинки айды көрүү үчүн сыдырыңыз"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Мурунку айды көрүү үчүн сыдырыңыз"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Төмөнкү убакыт аралыгындагы күн"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Күндөрдү киргизүү"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Даталар диапазону туура эмес тандалды"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Тизменин керектүү жерине сүйрөп баруу"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Ылдыйкы экранды жыйыштыруу"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Ылдыйкы экранды жабуу"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Ылдыйкы экранды жайып көрсөтүү"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Калкып чыгуучу кеңеш"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Калкып чыгуучу кеңешти көрсөтүү"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"түштөн кийин"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"түшкө чейин"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Түшкө чейинки же түштөн кийинки убакытты тандоо"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Саат тандоо"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Мүнөттөрдү тандоо"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d саат"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d саат"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d мүнөт"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Мүнөт"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Саат"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"мүнөткө"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"саатка"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-lo/strings.xml b/compose/material3/material3/src/androidMain/res/values-lo/strings.xml
deleted file mode 100644
index f350116..0000000
--- a/compose/material3/material3/src/androidMain/res/values-lo/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"ກ່ອງໂຕ້ຕອບ"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"ປິດໄວ້"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"ຊອກຫາ"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"ການແນະນຳຢູ່ຂ້າງລຸ່ມ"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"ເລືອກວັນທີ"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"ວັນທີທີ່ເລືອກໄວ້"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"ປ່ຽນໄປເລືອກປີ"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"ປັດເພື່ອເລືອກປີ ຫຼື ແຕະເພື່ອສະຫຼັບກັບໄປຫາການເລືອກວັນ"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"ປ່ຽນເປັນເດືອນຕໍ່ໄປ"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"ປ່ຽນເປັນເດືອນຜ່ານມາ"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"ນຳທາງໄປຫາປີ %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"ການເລືອກປັດຈຸບັນ: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"ບໍ່ມີ"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"ມື້ນີ້"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"ສະແດງຕົວເລືອກປີ"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"ເລືອກວັນທີ"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"ປ້ອນວັນທີແລ້ວ"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"ວັນທີ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"ປ້ອນວັນທີແລ້ວ: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"ບໍ່ມີ"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"ວັນທີທີ່ບໍ່ອະນຸຍາດ: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"ວັນທີບໍ່ກົງກັບຮູບແບບທີ່ຄາດໄວ້: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"ວັນທີຢູ່ນອກໄລຍະປີທີ່ຄາດໄວ້ %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"ສະຫຼັບໄປໃຊ້ໂໝດປ້ອນຂໍ້ມູນປະຕິທິນ"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"ສະຫຼັບໄປໃຊ້ໂໝດປ້ອນຂໍ້ຄວາມ"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"ເລື່ອນເພື່ອສະແດງປີຫຼັງຈາກນີ້"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"ເລື່ອນເພື່ອສະແດງປີກ່ອນໜ້ານີ້"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"ເລືອກວັນທີ"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"ວັນທີເລີ່ມຕົ້ນ"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"ວັນທີສິ້ນສຸດ"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"ເລື່ອນເພື່ອສະແດງເດືອນຕໍ່ໄປ"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"ເລື່ອນເພື່ອສະແດງເດືອນກ່ອນໜ້າ"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"ຢູ່ໃນໄລຍະ"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"ໃສ່ວັນທີ"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"ອິນພຸດໄລຍະວັນທີບໍ່ຖືກຕ້ອງ"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"ບ່ອນຈັບລາກ"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"ຫຍໍ້ຊີດລຸ່ມສຸດລົງ"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"ປິດຊີດລຸ່ມສຸດໄວ້"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"ຂະຫຍາຍຊີດລຸ່ມສຸດ"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"ຄຳແນະນຳ"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"ສະແດງຄຳແນະນຳ"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"ຫຼັງທ່ຽງ"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"ກ່ອນທ່ຽງ"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"ເລືອກກ່ອນທ່ຽງ ຫຼື ຫຼັງທ່ຽງ"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"ເລືອກຊົ່ວໂມງ"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"ເລືອກນາທີ"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d ໂມງ"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d ຊົ່ວໂມງ"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d ນາທີ"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"ນາທີ"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"ຊົ່ວໂມງ"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"ສຳລັບນາທີ"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"ສຳລັບຊົ່ວໂມງ"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-lt/strings.xml b/compose/material3/material3/src/androidMain/res/values-lt/strings.xml
deleted file mode 100644
index edfbf46a..0000000
--- a/compose/material3/material3/src/androidMain/res/values-lt/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialogo langas"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Atsisakyti"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Paieška"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Pasiūlymai pateikti toliau"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Pasirinkite datą"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Pasirinkta data"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Perjungti į metų pasirinkimą"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Perbraukite, kad pasirinktumėte metus, arba palieskite, kad grįžtumėte ir vėl pasirinktumėte dieną"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Pakeisti į kitą mėnesį"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Pakeisti į ankstesnį mėnesį"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Eiti į %1$s m."</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Dabartinis pasirinkimas: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Nėra"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Šiandien"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Rodomas metų parinkiklis"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Pasirinkite datą"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Įvesta data"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Data"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Įvesta data: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Nėra"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Data neleidžiama: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Data neatitinka numatyto šablono: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Data nepatenka į numatytų metų diapazoną: %1$s–%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Perjungti į kalendoriaus įvesties režimą"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Perjungti į teksto įvesties režimą"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Slinkite, kol bus rodomi vėlesni metai"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Slinkite, kol bus rodomi ankstesni metai"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Pasirinkite datas"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Pradžios data"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Pabaigos data"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Slinkite, kol bus rodomas kitas mėnuo"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Slinkite, kol bus rodomas ankstesnis mėnuo"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Diapazone"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Įvesti datas"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Netinkama dienų sekos įvestis"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Vilkimo rankenėlė"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Sutraukti apatinį lapą"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Atsisakyti apatinio lapo"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Išskleisti apatinį lapą"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Patarimas"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Rodyti patarimą"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"popiet"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"priešpiet"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Pasirinkite „priešpiet“ arba „popiet“"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Pasirinkite valandą"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Pasirinkite minutes"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d val."</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d val."</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%d min."</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minutė"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Valanda"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"minutės"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"valandos"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-lv/strings.xml b/compose/material3/material3/src/androidMain/res/values-lv/strings.xml
deleted file mode 100644
index edb7117..0000000
--- a/compose/material3/material3/src/androidMain/res/values-lv/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialoglodziņš"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Noraidīt"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Meklēšana"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Tālāk ir sniegti ieteikumi"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Atlasīt datumu"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Atlasītais datums"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Pāriet uz gada atlasi"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Velciet, lai atlasītu gadu, vai pieskarieties, lai pārietu atpakaļ pie dienas atlases"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Mainīt uz nākamo mēnesi"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Mainīt uz iepriekšējo mēnesi"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Pāriet uz %1$s. gadu"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Pašreizējā atlase: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Nav"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Šodien"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Redzams gada atlasītājs"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Atlasīt datumu"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Ievadītais datums"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Datums"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Ievadītais datums: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Nav"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Datums nav atļauts: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Datums neatbilst paredzētajam formātam: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Datums nav paredzētajā gadu diapazonā (%1$s.–%2$s. g.)"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Pārslēgties uz kalendāra ievades režīmu"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Pārslēgties uz teksta ievades režīmu"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Lai rādītu nākamos gadus, ritiniet"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Lai rādītu iepriekšējos gadus, ritiniet"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Atlasiet datumus"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Sākuma datums"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Beigu datums"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Lai rādītu nākamo mēnesi, ritiniet"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Lai rādītu iepriekšējo mēnesi, ritiniet"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Atlasītajā diapazonā"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Ievadiet datumus"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Ievadīts nederīgs datumu diapazons."</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Vilkšanas turis"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Sakļaut ekrāna apakšdaļas lapu"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Noraidīt ekrāna apakšdaļas lapu"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Izvērst ekrāna apakšdaļas lapu"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Rīka padoms"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Rādīt rīka padomu"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Atlasīt “AM” (priekšpusdienā) vai “PM” (pēcpusdienā)"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Atlasīt stundu"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Atlasīt minūtes"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"Minūtes: %1$d"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minūtes"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Stundas"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"(minūtes)"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"(stundas)"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-mk/strings.xml b/compose/material3/material3/src/androidMain/res/values-mk/strings.xml
deleted file mode 100644
index 5729b09..0000000
--- a/compose/material3/material3/src/androidMain/res/values-mk/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Дијалог"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Отфрли"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Пребарување"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Предлозите се наведени подолу"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Изберете датум"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Избран датум"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Префрли на бирање година"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Повлечете за да изберете година или допрете за да се вратите на бирање ден"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Промени на следниот месец"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Промени на претходниот месец"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Одете на годината %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Тековен избор: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Нема"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Денес"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Избирачот на година е видлив"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Изберете датум"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Внесен датум"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Датум"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Внесен датум: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Нема"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Датумот не е дозволен: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Не се совпаѓа со очекуваната шема: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Датумот не е во очекуваниот опсег на години %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Префрли на режим за внесување во календарот"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Префрли на режим за внесување текст"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Лизгајте за да ги прикажете подоцнежните години"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Лизгајте за да ги прикажете претходните години"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Изберете датуми"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Датум на започнување"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Датум на завршување"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Лизгајте за да го прикажете следниот месец"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Лизгајте за да го прикажете претходниот месец"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Во опсег"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Внесете датуми"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Внесовте неважечки временски период"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Рачка за влечење"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Собери го долниот лист"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Отфрли го долниот лист"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Прошири го долниот лист"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Совет за алатка"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Прикажи совет за алатка"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"попладне"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"претпладне"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Изберете претпладне или попладне"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Изберете час"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Изберете минути"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d часот"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d часот"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d минути"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Минута"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Час"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"за минути"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"за час"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ml/strings.xml b/compose/material3/material3/src/androidMain/res/values-ml/strings.xml
deleted file mode 100644
index 2cf84ce..0000000
--- a/compose/material3/material3/src/androidMain/res/values-ml/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"ഡയലോഗ്"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"ഡിസ്‌മിസ് ചെയ്യുക"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"തിരയുക"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"നിദ്ദേശങ്ങൾ ചുവടെയുണ്ട്"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"തീയതി തിരഞ്ഞെടുക്കുക"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"തിരഞ്ഞെടുത്ത തീയതി"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"വർഷം തിരഞ്ഞെടുക്കുന്നതിലേക്ക് മാറുക"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"വർഷം തിരഞ്ഞെടുക്കാൻ സ്വൈപ്പ് ചെയ്യുക അല്ലെങ്കിൽ ദിവസം തിരഞ്ഞെടുക്കുന്നതിലേക്ക് തിരികെ പോകാൻ ടാപ്പ് ചെയ്യുക"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"അടുത്ത മാസത്തിലേക്ക് മാറ്റുക"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"മുമ്പത്തെ മാസത്തിലേക്ക് മാറ്റുക"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$s എന്ന വർഷത്തിലേക്ക് പോകുക"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"നിലവിലെ തിരഞ്ഞെടുപ്പ്: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"ഒന്നുമില്ല"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"ഇന്ന്"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"വർഷ പിക്കർ ദൃശ്യമാണ്"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"തീയതി തിരഞ്ഞെടുക്കുക"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"നൽകിയ തീയതി"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"തീയതി"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"നൽകിയ തീയതി: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"ഒന്നുമില്ല"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"തീയതി അനുവദനീയമല്ല: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"പ്രതീക്ഷിച്ച പാറ്റേണുമായി തീയതി പൊരുത്തപ്പെടുന്നില്ല: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"പ്രതീക്ഷിക്കുന്ന കാലയളവിലെ വർഷമല്ല നൽകിയ തീയതിയുടേത് %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"കലണ്ടർ ഇൻപുട്ട് മോഡിലേക്ക് മാറുക"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"ടെക്‌സ്‌റ്റ് ഇൻപുട്ട് മോഡിലേക്ക് മാറുക"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"പിന്നീടുള്ള വർഷങ്ങൾ കാണിക്കാൻ സ്ക്രോൾ ചെയ്യുക"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"മുൻ വർഷങ്ങൾ കാണിക്കാൻ സ്ക്രോൾ ചെയ്യുക"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"തീയതികൾ തിരഞ്ഞെടുക്കുക"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"ആരംഭിക്കുന്ന തീയതി"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"അവസാനിക്കുന്ന തീയതി"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"\'അടുത്ത മാസം\' കാണിക്കാൻ സ്ക്രോൾ ചെയ്യുക"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"മുമ്പത്തെ മാസം കാണിക്കാൻ സ്ക്രോൾ ചെയ്യുക"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"പരിധിയിൽ"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"തീയതികൾ നൽകുക"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"തീയതി ശ്രേണി ഇൻപുട്ട് അസാധുവാണ്"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"വലിച്ചിടുന്നതിനുള്ള ഹാൻഡിൽ"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"ബോട്ടം ഷീറ്റ് ചുരുക്കുക"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"ബോട്ടം ഷീറ്റ് ഡിസ്മിസ് ചെയ്യുക"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"ബോട്ടം ഷീറ്റ് വികസിപ്പിക്കുക"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"ടൂൾടിപ്പ്"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"ടൂൾടിപ്പ് കാണിക്കുക"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"AM അല്ലെങ്കിൽ PM തിരഞ്ഞെടുക്കുക"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"മണിക്കൂർ തിരഞ്ഞെടുക്കുക"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"മിനിറ്റ് തിരഞ്ഞെടുക്കുക"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d മണി"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d മ."</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d മിനിറ്റ്"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"മിനിറ്റ്"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"മണിക്കൂർ"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"മിനിറ്റ് നേരത്തേക്ക്"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"മണിക്കൂർ നേരത്തേക്ക്"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-mn/strings.xml b/compose/material3/material3/src/androidMain/res/values-mn/strings.xml
deleted file mode 100644
index b1e4a85..0000000
--- a/compose/material3/material3/src/androidMain/res/values-mn/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Харилцах цонх"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Үл хэрэгсэх"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Хайх"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Доорх зөвлөмжүүд"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Огноо сонгох"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Сонгосон огноо"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Жил сонгох руу сэлгэх"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Он сонгохын тулд шудрах эсвэл өдөр сонгох руу буцааж сэлгэхийн тулд товшино уу"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Дараагийн сар луу өөрчлөх"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Өмнөх сар луу өөрчлөх"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$s он руу шилжих"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Одоогийн сонголт: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Байхгүй"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Өнөөдөр"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Он сонгогч харагдаж байна"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Огноо сонгох"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Оруулсан огноо"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Огноо"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Оруулсан огноо: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Байхгүй"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Зөвшөөрөөгүй огноо: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Огноо нь тооцоолсон хээтэй таарахгүй байна: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Тооцоолсон оны %1$s - %2$s мужаас гарсан огноо"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Календарийн орох горим руу сэлгэх"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Текст оруулах горим руу сэлгэх"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Дараагийн жилүүдийг харуулахын тулд гүйлгэнэ үү"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Өмнөх жилүүдийг харуулахын тулд гүйлгэнэ үү"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Огноо сонгох"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Эхлэх огноо"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Дуусах огноо"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Дараагийн сарыг харуулахын тулд гүйлгэнэ үү"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Өмнөх сарыг харуулахын тулд гүйлгэнэ үү"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Хүрээнд байгаа"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Огноо оруулах"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Хугацааны интервалын оролт буруу байна"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Чирэх бариул"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Доод хүснэгтийг хураах"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Доод хүснэгтийг хаах"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Доод хүснэгтийг дэлгэх"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Зөвлөмж"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Зөвлөмж харуулах"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"ҮХ"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"ҮӨ"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"ҮӨ эсвэл ҮХ эсэхийг сонгоно уу"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Цаг сонгох"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Минут сонгоно уу"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d цаг"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d цаг"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d минут"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Минут"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Цаг"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"минутын турш"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"цагийн турш"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-mr/strings.xml b/compose/material3/material3/src/androidMain/res/values-mr/strings.xml
deleted file mode 100644
index 508bca8..0000000
--- a/compose/material3/material3/src/androidMain/res/values-mr/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"डायलॉग"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"डिसमिस करा"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"शोधा"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"सूचना खाली आहेत"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"तारीख निवडा"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"निवडलेली तारीख"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"वर्ष निवडणे वर स्विच करा"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"वर्ष निवडण्यासाठी स्‍वाइप करा, किंवा दिवस निवडण्यावर परत स्विच करण्यासाठी टॅप करा"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"पुढील महिन्यावर बदला"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"मागील महिन्यावर बदला"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$s वर्षावर नेव्हिगेट करा"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"सद्य निवड: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"काहीही नाही"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"आज"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"वर्ष पिकर दृश्यमान आहे"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"तारीख निवडा"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"एंटर केलेली तारीख"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"तारीख"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"एंटर केली तारीख: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"काहीही नाही"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"अशा तारखेला अनुमती नाही: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"तारीख ही अपेक्षित पॅटर्नशी जुळत नाही: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"तारीख ही %1$s - %2$s या अपेक्षित रेंजच्या बाहेरची आहे"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"कॅलेंडर इनपुट मोडवर स्विच करा"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"टेक्स्ट इनपुट मोडवर स्विच करा"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"नंतरची वर्ष दाखवण्यासाठी स्क्रोल करा"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"पूर्वीची वर्ष दाखवण्यासाठी स्क्रोल करा"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"तारखा निवडा"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"सुरू होण्याची तारीख"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"संपण्याची तारीख"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"पुढील महिना दाखवण्यासाठी स्क्रोल करा"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"मागील महिना दाखवण्यासाठी स्क्रोल करा"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"रेंजमध्ये"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"तारखा एंटर करा"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"तारीख रेंजचे इनपुट चुकीचे आहे"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"ड्रॅग हॅंडल"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"तळाशी असलेली शीट कोलॅप्स करा"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"तळाशी असलेली शीट डिसमिस करा"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"तळाशी असलेली शीट विस्तारीत करा"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"टूलटिप"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"टूलटिप दाखवा"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"AM किंवा PM निवडा"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"तास निवडा"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"मिनिटे निवडा"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d वाजता"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d तास"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d मिनिटे"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"मिनिट"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"तास"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"मिनिटांसाठी"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"तासासाठी"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ms/strings.xml b/compose/material3/material3/src/androidMain/res/values-ms/strings.xml
deleted file mode 100644
index 3a3a214..0000000
--- a/compose/material3/material3/src/androidMain/res/values-ms/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialog"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Ketepikan"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Carian"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Cadangan di bawah"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Pilih tarikh"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Tarikh dipilih"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Beralih kepada pemilihan tahun"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Leret untuk memilih tahun atau ketik untuk bertukar kembali kepada pemilihan hari"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Tukar kepada bulan seterusnya"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Tukar kepada bulan sebelumnya"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navigasi ke tahun %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Pilihan semasa: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Tiada"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Hari ini"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Pemilih tahun kelihatan"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Pilih tarikh"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Tarikh yang dimasukkan"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Tarikh"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Tarikh yang dimasukkan: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Tiada"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Tarikh yang tidak dibenarkan: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Tarikh tidak sepadan dengan corak yang dijangkakan: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Tarikh di luar julat tahun yang dijangkakan %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Beralih kepada mod input kalendar"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Beralih kepada mod input teks"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Tatal untuk menunjukkan tahun kemudian"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Tatal untuk menunjukkan tahun terdahulu"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Pilih tarikh"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Tarikh mula"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Tarikh tamat"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Tatal untuk menunjukkan bulan seterusnya"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Tatal untuk menunjukkan bulan sebelumnya"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Dalam liputan"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Masukkan tarikh"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Input julat tarikh tidak sah"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Pemegang seret"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Kuncupkan helaian bawah"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Ketepikan helaian bawah"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Kembangkan helaian bawah"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Tip alat"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Tunjukkan tip alat"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"P/M"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"PG"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Pilih PG atau PTG/MLM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Pilih jam"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Pilih minit"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"Pukul %1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d jam"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minit"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minit"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Jam"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"selama # minit"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"selama # jam"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-my/strings.xml b/compose/material3/material3/src/androidMain/res/values-my/strings.xml
deleted file mode 100644
index 49c9da8..0000000
--- a/compose/material3/material3/src/androidMain/res/values-my/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"ဒိုင်ယာလော့"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"ပယ်ရန်"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"ရှာဖွေရန်"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"အကြံပြုချက်များ အောက်တွင်ရှိသည်"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"ရက်စွဲရွေးရန်"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"ရွေးထားသည့် ရက်စွဲ"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"နှစ်ရွေးခြင်းသို့ ပြောင်းရန်"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"ခုနှစ်ရွေးချယ်ရန် ပွတ်ဆွဲပါ (သို့) ရက်ရွေးချယ်ခြင်းသို့ ပြန်ရန် တို့ပါ"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"နောက်လသို့ ပြောင်းရန်"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"ယခင်လသို့ ပြောင်းရန်"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$s ခုနှစ်သို့ သွားရန်"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"လက်ရှိ ရွေးချယ်မှု- %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"မရှိ"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"ယနေ့"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"ခုနှစ်ရွေးချယ်ရေးစနစ်ကို မြင်ရသည်"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"ရက်စွဲရွေးရန်"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"ထည့်ထားသော ရက်စွဲ"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"ရက်စွဲ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"ထည့်ထားသော ရက်စွဲ- %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"မရှိ"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"ရက်စွဲကို ခွင့်ပြုမထားပါ- %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"ရက်စွဲသည် မျှော်မှန်းထားသော ပုံစံနှင့် မကိုက်ညီပါ- %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"ရက်စွဲသည် မျှော်မှန်းထားသော နှစ်အပိုင်းအခြား %1$s - %2$s တွင် မပါဝင်ပါ"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"ပြက္ခဒိန် လက်ကွက်ထည့်သွင်းနည်းသို့ ပြောင်းရန်"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"စာရိုက်နည်းသို့ ပြောင်းရန်"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"နောက်ပိုင်းနှစ်များ ပြရန် လှိမ့်ပါ"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"ယခင်နှစ်များ ပြရန် လှိမ့်ပါ"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"ရက်စွဲများရွေးပါ"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"စတင်ရက်"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"ပြီးဆုံးရက်"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"လာမည့်လကို ပြရန် လှိမ့်ပါ"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"ယခင်လကို ပြရန် လှိမ့်ပါ"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"အပိုင်းအခြားအတွင်း"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"ရက်စွဲများထည့်ပါ"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"ဒေတာအပိုင်းအခြား ထည့်သွင်းမှု မမှန်ပါ"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"ဖိဆွဲအထိန်း"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"အောက်ခြေအပိုဆောင်း စာမျက်နှာကို ချုံ့သည်"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"အောက်ခြေအပိုဆောင်း စာမျက်နှာကို ပယ်သည်"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"အောက်ခြေအပိုဆောင်း စာမျက်နှာကို ချဲ့သည်"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"အကြံပြုချက်ပြ ပေါ့အပ် ဝင်းဒိုး"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"အကြံပြုချက်ပြ ပေါ့အပ်ဝင်းဒိုး ပြရန်"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"AM (သို့) PM ရွေးရန်"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"နာရီ ရွေးရန်"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"မိနစ် ရွေးရန်"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d နာရီ"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d နာရီ"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d မိနစ်"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"မိနစ်"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"နာရီ"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"မိနစ်ကြာ"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"နာရီကြာ"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-nb/strings.xml b/compose/material3/material3/src/androidMain/res/values-nb/strings.xml
deleted file mode 100644
index 943ea73..0000000
--- a/compose/material3/material3/src/androidMain/res/values-nb/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialogboks"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Lukk"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Søk"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Du finner forslag nedenfor"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Velg dato"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Valgt dato"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Bytt til å velge et år"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Sveip for å velge år, eller trykk for å bytte tilbake til valg av dag"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Endre til neste måned"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Endre til forrige måned"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Gå til år %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Valgt: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Ingen"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"I dag"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Årsvelgeren er synlig"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Velg dato"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Angitt dato"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Dato"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Angitt dato: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Ingen"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Datoen er ikke tillatt: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Datoen matcher ikke det forventede mønsteret: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Datoen er utenfor det forventede årsintervallet %1$s–%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Bytt til kalendermodus for inndata"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Bytt til tekstmodus for inndata"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Rull for å vise senere år"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Rull for å vise tidligere år"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Velg datoer"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Startdato"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Sluttdato"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Rull for å vise den neste måneden"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Rull for å vise den forrige måneden"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Innen rekkevidde"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Legg inn datoer"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"En ugyldig dataperiode er skrevet inn"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Håndtak"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Skjul feltet nederst"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Lukk feltet nederst"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Vis feltet nederst"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Verktøytips"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Vis verktøytips"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Velg AM eller PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Velg time"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Velg minutter"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d timer"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutter"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minutt"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Time"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"for minutter"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"for timer"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ne/strings.xml b/compose/material3/material3/src/androidMain/res/values-ne/strings.xml
deleted file mode 100644
index 5a4fec4..0000000
--- a/compose/material3/material3/src/androidMain/res/values-ne/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"डायलग"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"हटाउनुहोस्"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"खोज्नुहोस्"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"सुझावहरू तल दिइएका छन्"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"मिति चयन गर्नुहोस्"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"चयन गरिएको मिति"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"साल चयन गर्ने फिल्डमा जानुहोस्"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"कुनै साल छनौट गर्न स्वाइप गर्नुहोस् वा दिन चयन गर्न ट्याप गर्नुहोस्"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"हाल चयन गरिएको महिना परिवर्तन गरी आगामी महिना बनाउनुहोस्"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"हाल चयन गरिएको महिना परिवर्तन गरी अघिल्लो महिना बनाउनुहोस्"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"साल %1$s मा जानुहोस्"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"हालको छनौट: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"कुनै पनि होइन"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"आज"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"साल पिकर देखिएको छ"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"मिति चयन गर्नुहोस्"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"हालिएको मिति"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"मिति"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"हालिएको मिति: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"कुनै पनि होइन"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"यो मिति हाल्न पाइँदैन: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"हालिएको मितिको ढाँचा अपेक्षित ढाँचासँग मिलेन: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"हालिएको मिति सालको अपेक्षित दायरा (%1$s - %2$s) भित्र पर्दैन"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"पात्रोको इनपुट मोड प्रयोग गर्नुहोस्"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"टेक्स्ट इनपुट मोड प्रयोग गर्नुहोस्"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"आगामी सालहरूको जानकारी हेर्न स्क्रोल गर्नुहोस्"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"विगतका सालहरूको जानकारी हेर्न स्क्रोल गर्नुहोस्"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"मितिहरू चयन गर्नुहोस्"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"सुरु हुने मिति"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"समापन हुने मिति"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"अर्को महिनाको जानकारी हेर्न स्क्रोल गर्नुहोस्"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"गत महिनाको जानकारी हेर्न स्क्रोल गर्नुहोस्"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"चयन गरिएका मितिभित्र पर्ने"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"मितिहरू हाल्नुहोस्"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"मितिको अवैध दायरा तोकियो"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"ड्र्याग ह्यान्डल"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"पुछारको पाना कोल्याप्स गर्नुहोस्"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"पुछारको पाना हटाउनुहोस्"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"पुछारको पाना एक्स्पान्ड गर्नुहोस्"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"टुलटिप"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"टुलटिप देखाइयोस्"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"पूर्वाह्न वा अपराह्न चयन गर्नुहोस्"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"घण्टा चयन गर्नुहोस्"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"मिनेट चयन गर्नुहोस्"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d बजे"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d घण्टा"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d मिनेट"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"मिनेट"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"घण्टा"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"मिनेटका लागि"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"घण्टाका लागि"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-nl/strings.xml b/compose/material3/material3/src/androidMain/res/values-nl/strings.xml
deleted file mode 100644
index 1cb58a4..0000000
--- a/compose/material3/material3/src/androidMain/res/values-nl/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialoogvenster"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Sluiten"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Zoeken"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Suggesties hieronder"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Datum selecteren"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Geselecteerde datum"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Schakelaar om een jaar te selecteren"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Swipe om een jaar te selecteren of tik om terug te gaan en een dag te selecteren"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Naar volgende maand gaan"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Naar vorige maand gaan"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Ga naar jaar %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Huidige selectie: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Geen"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Vandaag"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Jaarselectie zichtbaar"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Datum selecteren"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Opgegeven datum"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Datum"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Opgegeven datum: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Geen"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Datum niet toegestaan: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"De datum komt niet overeen met het verwachte patroon: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Datum buiten het verwachte jaarbereik %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Overschakelen naar agenda-invoermodus"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Overschakelen naar tekstinvoermodus"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Scroll om latere jaren te tonen"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Scroll om eerdere jaren te tonen"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Datums selecteren"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Startdatum"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Einddatum"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Scroll om de volgende maand te tonen"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Scroll om de vorige maand te tonen"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Binnen bereik"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Datums opgeven"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Ongeldige invoer voor periode"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Handgreep voor slepen"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Blad onderaan samenvouwen"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Blad onderaan sluiten"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Blad onderaan uitvouwen"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Tooltip"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Tooltip tonen"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"AM of PM selecteren"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Uur selecteren"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Minuten selecteren"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d uur"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d uur"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minuten"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuut"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Uur"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"voor minuten"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"voor uur"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-or/strings.xml b/compose/material3/material3/src/androidMain/res/values-or/strings.xml
deleted file mode 100644
index 2d8e870c..0000000
--- a/compose/material3/material3/src/androidMain/res/values-or/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"ଡାଏଲଗ"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"ଖାରଜ କରନ୍ତୁ"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"ସର୍ଚ୍ଚ କରନ୍ତୁ"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"ପରାମର୍ଶ ତଳେ ଦିଆଯାଇଛି"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"ତାରିଖ ଚୟନ କରନ୍ତୁ"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"ଚୟନିତ ତାରିଖ"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"ବର୍ଷ ଚୟନ କରିବାକୁ ସ୍ୱିଚ କରନ୍ତୁ"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"ଏକ ବର୍ଷ ଚୟନ କରିବା ପାଇଁ ସ୍ୱାଇପ କରନ୍ତୁ କିମ୍ବା ଏକ ଦିନ ଚୟନ କରିବା ପାଇଁ ପୁଣି ସ୍ୱିଚ କରିବାକୁ ଟାପ କରନ୍ତୁ"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"ପରବର୍ତ୍ତୀ ମାସକୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"ପୂର୍ବବର୍ତ୍ତୀ ମାସକୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$s ବର୍ଷକୁ ନାଭିଗେଟ କରନ୍ତୁ"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"ବର୍ତ୍ତମାନର ଚୟନ: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"କିଛି ନାହିଁ"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"ଆଜି"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"ବର୍ଷ ପିକର ଦେଖାଯାଉଛି"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"ତାରିଖ ଚୟନ କରନ୍ତୁ"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"ଲେଖାଯାଇଥିବା ତାରିଖ"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"ତାରିଖ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"ଲେଖାଯାଇଥିବା ତାରିଖ: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"କିଛି ନାହିଁ"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"ତାରିଖକୁ ଅନୁମତି ଦିଆଯାଇନାହିଁ: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"ଆଶା କରାଯାଉଥିବା ପାଟର୍ନ ସହ ତାରିଖ ମେଳ ହେଉନାହିଁ: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"ତାରିଖଟି ଆଶା କରାଯାଉଥିବା ବର୍ଷ ରେଞ୍ଜ %1$s - %2$sରୁ ବାହାରେ ଅଛି"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"କେଲେଣ୍ଡର ଇନପୁଟ ମୋଡକୁ ସ୍ୱିଚ କରନ୍ତୁ"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"ଟେକ୍ସଟ ଇନପୁଟ ମୋଡକୁ ସ୍ୱିଚ କରନ୍ତୁ"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"ପର ବର୍ଷଗୁଡ଼ିକ ଦେଖାଇବା ପାଇଁ ସ୍କ୍ରୋଲ କରନ୍ତୁ"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"ପୂର୍ବ ବର୍ଷଗୁଡ଼ିକ ଦେଖାଇବା ପାଇଁ ସ୍କ୍ରୋଲ କରନ୍ତୁ"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"ତାରିଖଗୁଡ଼ିକ ଚୟନ କରନ୍ତୁ"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"ଆରମ୍ଭ ତାରିଖ"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"ଶେଷ ତାରିଖ"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"ପରବର୍ତ୍ତୀ ମାସ ଦେଖାଇବା ପାଇଁ ସ୍କ୍ରୋଲ କରନ୍ତୁ"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"ପୂର୍ବବର୍ତ୍ତୀ ମାସ ଦେଖାଇବା ପାଇଁ ସ୍କ୍ରୋଲ କରନ୍ତୁ"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"ରେଞ୍ଜରେ ଅଛି"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"ତାରିଖଗୁଡ଼ିକ ଲେଖନ୍ତୁ"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"ଅବୈଧ ତାରିଖ ରେଞ୍ଜ ଇନପୁଟ"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"ଡ୍ରାଗ ହେଣ୍ଡେଲ"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"ବଟମ ସିଟକୁ ସଙ୍କୁଚିତ କରନ୍ତୁ"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"ବଟମ ସିଟକୁ ଖାରଜ କରନ୍ତୁ"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"ବଟମ ସିଟକୁ ବିସ୍ତାର କରନ୍ତୁ"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"ଟୁଲଟିପ"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"ଟୁଲଟିପ ଦେଖାନ୍ତୁ"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"AM କିମ୍ବା PM ଚୟନ କରନ୍ତୁ"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"ଘଣ୍ଟା ଚୟନ କରନ୍ତୁ"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"ମିନିଟ ଚୟନ କରନ୍ତୁ"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$dଟା"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d ଘଣ୍ଟା"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d ମିନିଟ"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"ମିନିଟ"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"ଘଣ୍ଟା"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"ମିନିଟ ପାଇଁ"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"ଘଣ୍ଟା ପାଇଁ"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-pa/strings.xml b/compose/material3/material3/src/androidMain/res/values-pa/strings.xml
deleted file mode 100644
index fe98acf..0000000
--- a/compose/material3/material3/src/androidMain/res/values-pa/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"ਵਿੰਡੋ"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"ਖਾਰਜ ਕਰੋ"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"ਖੋਜੋ"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"ਸੁਝਾਅ ਹੇਠਾਂ ਹਨ"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"ਤਾਰੀਖ ਚੁਣੋ"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"ਚੁਣੀ ਗਈ ਤਾਰੀਖ"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"ਸਾਲ ਚੁਣਨ ਲਈ ਸਵਿੱਚ ਕਰੋ"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"ਕੋਈ ਸਾਲ ਚੁਣਨ ਲਈ ਸਵਾਈਪ ਕਰੋ ਜਾਂ ਕੋਈ ਦਿਨ ਚੁਣਨ ਲਈ ਵਾਪਸ ਜਾਣ ਵਾਸਤੇ ਟੈਪ ਕਰੋ"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"ਅਗਲੇ ਮਹੀਨੇ \'ਤੇ ਜਾਓ"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"ਪਿਛਲੇ ਮਹੀਨੇ \'ਤੇ ਜਾਓ"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"ਸਾਲ %1$s \'ਤੇ ਜਾਓ"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"ਮੌਜੂਦਾ ਚੋਣ: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"ਕੋਈ ਨਹੀਂ"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"ਅੱਜ"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"ਸਾਲ ਚੋਣਕਾਰ ਦਿਖਣਯੋਗ ਹੈ"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"ਤਾਰੀਖ ਚੁਣੋ"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"ਦਾਖਲ ਕੀਤੀ ਗਈ ਤਾਰੀਖ"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"ਤਾਰੀਖ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"ਦਾਖਲ ਕੀਤੀ ਗਈ ਤਾਰੀਖ: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"ਕੋਈ ਨਹੀਂ"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"ਇਸ ਤਾਰੀਖ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"ਤਾਰੀਖ ਸੰਭਾਵਿਤ ਪੈਟਰਨ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦੀ: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"ਤਾਰੀਖ ਸੰਭਾਵਿਤ ਸਾਲ ਦੀ ਰੇਂਜ ਤੋਂ ਬਾਹਰ ਹੈ %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"ਕੈਲੰਡਰ ਇਨਪੁੱਟ ਮੋਡ \'ਤੇ ਸਵਿੱਚ ਕਰੋ"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"ਲਿਖਤ ਇਨਪੁੱਟ ਮੋਡ \'ਤੇ ਸਵਿੱਚ ਕਰੋ"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"ਬਾਅਦ ਵਾਲੇ ਸਾਲਾਂ ਨੂੰ ਦਿਖਾਉਣ ਲਈ ਸਕ੍ਰੋਲ ਕਰੋ"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"ਪਹਿਲਾਂ ਵਾਲੇ ਸਾਲਾਂ ਨੂੰ ਦਿਖਾਉਣ ਲਈ ਸਕ੍ਰੋਲ ਕਰੋ"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"ਤਾਰੀਖਾਂ ਚੁਣੋ"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"ਸ਼ੁੁਰੂਆਤੀ ਤਾਰੀਖ"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"ਸਮਾਪਤੀ ਤਾਰੀਖ"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"ਅਗਲਾ ਮਹੀਨਾ ਦਿਖਾਉਣ ਲਈ ਸਕ੍ਰੋਲ ਕਰੋ"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"ਪਿਛਲਾ ਮਹੀਨਾ ਦਿਖਾਉਣ ਲਈ ਸਕ੍ਰੋਲ ਕਰੋ"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"ਰੇਂਜ ਵਿੱਚ"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"ਤਾਰੀਖਾਂ ਦਾਖਲ ਕਰੋ"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"ਇਨਪੁੱਟ ਕੀਤੀ ਗਈ ਤਾਰੀਖ ਦੀ ਰੇਂਜ ਅਵੈਧ ਹੈ"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"ਘਸੀਟਣ ਵਾਲਾ ਹੈਂਡਲ"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"ਹੇਠਲੀ ਸ਼ੀਟ ਨੂੰ ਸਮੇਟੋ"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"ਹੇਠਲੀ ਸ਼ੀਟ ਨੂੰ ਖਾਰਜ ਕਰੋ"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"ਹੇਠਲੀ ਸ਼ੀਟ ਦਾ ਵਿਸਤਾਰ ਕਰੋ"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"ਟੂਲ-ਟਿੱਪ"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"ਟੂਲ-ਟਿੱਪ ਦਿਖਾਓ"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"AM ਜਾਂ PM ਚੁਣੋ"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"ਘੰਟਾ ਚੁਣੋ"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"ਮਿੰਟ ਚੁਣੋ"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d ਵਜੇ"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d ਘੰਟੇ"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d ਮਿੰਟ"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"ਮਿੰਟ"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"ਘੰਟੇ"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"ਮਿੰਟਾਂ ਲਈ"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"ਘੰਟੇ ਲਈ"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-pl/strings.xml b/compose/material3/material3/src/androidMain/res/values-pl/strings.xml
deleted file mode 100644
index 4307562..0000000
--- a/compose/material3/material3/src/androidMain/res/values-pl/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialog"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Zamknij"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Wyszukiwanie"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Propozycje znajdziesz poniżej"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Wybierz datę"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Wybrana data"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Przełącz na wybór roku"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Przesuń, aby wybrać rok, lub wróć do poprzedniej sekcji i wybierz dzień"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Zmień na następny miesiąc"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Zmień na poprzedni miesiąc"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Przejdź do roku %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Obecnie wybrane: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Brak"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Dzisiaj"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Widoczny selektor roku"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Wybierz datę"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Wprowadzono datę"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Data"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Wprowadzono datę: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Brak"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Data niedozwolona: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Data nie pasuje do oczekiwanego wzorca: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Data poza oczekiwanym zakresem lat %1$s–%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Włącz tryb wprowadzania danych kalendarzowych"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Włącz tryb wprowadzania tekstu"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Przewiń, aby wyświetlić późniejsze lata"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Przewiń, aby wyświetlić wcześniejsze lata"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Wybierz daty"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Data początkowa"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Data końcowa"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Przewiń, aby wyświetlić kolejny miesiąc"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Przewiń, aby wyświetlić poprzedni miesiąc"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"W zasięgu"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Wprowadź daty"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Nieprawidłowy zakres dat"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Uchwyt do przeciągania"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Zwiń planszę dolną"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Zamknij planszę dolną"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Rozwiń planszę dolną"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Etykietka"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Pokaż etykietkę"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Wybierz AM lub PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Wybierz godzinę"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Wybierz minuty"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d godziny"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minut"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuta"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Godzina"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"na minuty"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"na godzinę"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-pt-rBR/strings.xml b/compose/material3/material3/src/androidMain/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 12a5094..0000000
--- a/compose/material3/material3/src/androidMain/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Caixa de diálogo"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Dispensar"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Pesquisa"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Sugestões abaixo"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Selecionar data"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Data selecionada"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Trocar para a seleção de ano"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Deslize para selecionar um ano ou toque para voltar à seleção de dia"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Mudar para o próximo mês"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Mudar para o mês anterior"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navegar para o ano de %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Seleção atual: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Nenhuma"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Hoje"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Seletor de dia visível"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Selecionar data"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Data inserida"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Data"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Data inserida: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Nenhuma"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Data não permitida: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"A data não está no padrão esperado: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"A data está fora do intervalo de anos esperado %1$s a %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Alternar para o modo de entrada da agenda"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Alternar para o modo de entrada de texto"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Role a tela para mostrar anos posteriores"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Role a tela para mostrar anos anteriores"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Selecionar datas"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Data de início"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Data de término"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Role a tela para mostrar o mês posterior"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Role a tela para mostrar o mês anterior"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Dentro do alcance"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Informar datas"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Período inválido"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Alça de arrastar"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Fechar página inferior"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Dispensar página inferior"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Abrir página inferior"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Dica"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Mostrar dica"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Selecione AM ou PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Selecione a hora"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Selecione os minutos"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$dh"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d horas"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutos"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuto"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Hora"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"por minutos"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"por hora"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-pt-rPT/strings.xml b/compose/material3/material3/src/androidMain/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 9bb9a3a..0000000
--- a/compose/material3/material3/src/androidMain/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Caixa de diálogo"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Ignorar"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Pesquisar"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Sugestões abaixo"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Selecionar data"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Data selecionada"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Mude para a seleção do ano"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Deslize rapidamente para selecionar um ano ou toque para mudar novamente para a seleção do dia"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Mudar para o mês seguinte"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Mudar para o mês anterior"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navegar para o ano %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Seleção atual: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Nenhuma"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Hoje"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Selecionador de ano visível"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Selecionar data"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Data introduzida"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Data"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Data introduzida: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Nenhuma"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Data não permitida: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"A data não corresponde ao padrão esperado: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Data fora do intervalo de anos esperado: %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Mudar para o método de introdução de calendário"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Mudar para o método de introdução de texto"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Desloque a página para mostrar anos posteriores"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Desloque a página para mostrar anos anteriores"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Selecione as datas"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Data de início"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Data de fim"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Desloque a página para mostrar o mês seguinte"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Desloque a página para mostrar o mês anterior"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Dentro do alcance"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Introduza as datas"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Entrada do intervalo de datas inválida"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Indicador para arrastar"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Reduza a secção inferior"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Ignore a secção inferior"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Expanda a secção inferior"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Sugestão"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Mostrar sugestão"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Selecione AM ou PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Selecione a hora"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Selecione os minutos"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d h"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d horas"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutos"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuto"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Hora"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"para minutos"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"para hora"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-pt/strings.xml b/compose/material3/material3/src/androidMain/res/values-pt/strings.xml
deleted file mode 100644
index 12a5094..0000000
--- a/compose/material3/material3/src/androidMain/res/values-pt/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Caixa de diálogo"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Dispensar"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Pesquisa"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Sugestões abaixo"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Selecionar data"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Data selecionada"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Trocar para a seleção de ano"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Deslize para selecionar um ano ou toque para voltar à seleção de dia"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Mudar para o próximo mês"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Mudar para o mês anterior"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navegar para o ano de %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Seleção atual: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Nenhuma"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Hoje"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Seletor de dia visível"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Selecionar data"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Data inserida"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Data"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Data inserida: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Nenhuma"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Data não permitida: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"A data não está no padrão esperado: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"A data está fora do intervalo de anos esperado %1$s a %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Alternar para o modo de entrada da agenda"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Alternar para o modo de entrada de texto"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Role a tela para mostrar anos posteriores"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Role a tela para mostrar anos anteriores"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Selecionar datas"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Data de início"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Data de término"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Role a tela para mostrar o mês posterior"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Role a tela para mostrar o mês anterior"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Dentro do alcance"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Informar datas"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Período inválido"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Alça de arrastar"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Fechar página inferior"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Dispensar página inferior"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Abrir página inferior"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Dica"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Mostrar dica"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Selecione AM ou PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Selecione a hora"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Selecione os minutos"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$dh"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d horas"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minutos"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuto"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Hora"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"por minutos"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"por hora"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ro/strings.xml b/compose/material3/material3/src/androidMain/res/values-ro/strings.xml
deleted file mode 100644
index 4b56db4..0000000
--- a/compose/material3/material3/src/androidMain/res/values-ro/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialog"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Respinge"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Caută"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Sugestii mai jos"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Selectează data"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Data selectată"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Comută la selectarea anului"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Glisează pentru a selecta un an sau atinge pentru a reveni la selectarea zilei"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Treci la luna următoare"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Treci la luna anterioară"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navighează la anul %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Opțiunea selectată: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Fără"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Azi"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Selectorul de an este vizibil"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Selectează data"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Data introdusă"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Dată"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Data introdusă: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Fără"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Data nu este permisă: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Data nu corespunde modelului așteptat: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Data este în afara intervalului de ani %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Comută la modul de introducere în calendar"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Comută la modul de introducere a textului"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Derulează pentru a afișa ani ulteriori"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Derulează pentru a afișa ani anteriori"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Selectează datele"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Data de începere"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Data de încheiere"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Derulează pentru a afișa luna următoare"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Derulează pentru a afișa luna anterioară"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"În interval"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Introdu datele"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Intervalul de date introdus nu este valid"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Ghidaj de tragere"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Restrânge foaia din partea de jos"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Închide foaia din partea de jos"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Extinde foaia din partea de jos"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Balon explicativ"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Afișează balonul explicativ"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"p.m."</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"a.m."</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Selectează a.m. sau p.m."</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Selectează ora"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Selectează minutele"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"Ora %1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d ore"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minute"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minut"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Oră"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"timp de câteva minute"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"timp de o oră"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ru/strings.xml b/compose/material3/material3/src/androidMain/res/values-ru/strings.xml
deleted file mode 100644
index f513d6e..0000000
--- a/compose/material3/material3/src/androidMain/res/values-ru/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Диалоговое окно"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Закрыть"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Строка поиска"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Подсказки показаны ниже"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Выбор даты"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Выбранная дата"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Перейти к выбору года"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Проведите по экрану, чтобы выбрать год, или нажмите, чтобы вернуться к выбору дня."</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Перейти к следующему месяцу"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Перейти к предыдущему месяцу"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Переход к %1$s году"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Текущий выбор: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Не выбрано"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Сегодня"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Отображаемый выбор года"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Выберите дату"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Введенная дата"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Дата"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Введенная дата: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Нет"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Недопустимая дата: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Дата не соответствует допустимому шаблону: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Дата не входит в допустимый диапазон: %1$s–%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Перейти в режим выбора даты"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Перейти в режим ввода текста"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Прокрутите до более поздних лет"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Прокрутите до более ранних лет"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Выберите даты"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Дата начала"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Дата окончания"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Прокрутите до следующего месяца"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Прокрутите до предыдущего месяца"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"День в диапазоне дат"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Введите даты"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Указан недопустимый диапазон дат."</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Маркер перемещения"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Свернуть нижний экран"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Закрыть нижний экран"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Развернуть нижний экран"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Подсказка"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Показать подсказку"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Выбрать AM (до полудня) или PM (после полудня)"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Выбрать час"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Выбрать минуты"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d ч."</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d ч."</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d мин."</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Минуты"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Часы"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"минуты"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"часы"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-si/strings.xml b/compose/material3/material3/src/androidMain/res/values-si/strings.xml
deleted file mode 100644
index 3a2f668..0000000
--- a/compose/material3/material3/src/androidMain/res/values-si/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"සංවාදය"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"අස් කරන්න"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"සෙවීම"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"පහත යෝජනා"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"දිනය තෝරන්න"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"තේරූ දිනය"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"වසරක් තේරීමට මාරු වන්න"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"වසරක් තේරීමට ස්වයිප් කරන්න, නැතහොත් දිනක් තේරීමට ආපසු මාරු වීමට තට්ටු කරන්න"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"ලබන මාසයට වෙනස් කරන්න"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"කලින් මාසයට වෙනස් කරන්න"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$s වසර වෙත සංචලන කරන්න"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"වත්මන් තේරීම: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"කිසිවක් නැත"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"අද"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"වසර තෝරකය දෘශ්‍යමානයි"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"දිනය තෝරන්න"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"ඇතුළු කළ දිනය"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"දිනය"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"එක් කරන්න: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"කිසිවක් නැත"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"දිනය ඉඩ නොදෙයි: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"දිනය අපේක්ෂිත රටාවට නොගැළපෙයි: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"දිනය අපේක්ෂිත වසර පරාසයෙන් පිටත වේ %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"දින දර්ශන ආදාන ප්‍රකාරයට මාරු වන්න"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"පෙළ ආදාන ප්‍රකාරයට මාරු වන්න"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"පසු වසර පෙන්වීමට අනුචලන කරන්න"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"පෙර වසර පෙන්වීමට අනුචලන කරන්න"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"දින තෝරන්න"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"ආරම්භක දිනය"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"අවසාන දිනය"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"ඊළඟ මාසය පෙන්වීමට අනුචලන කරන්න"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"පෙර මාසය පෙන්වීමට අනුචලන කරන්න"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"පරාසය තුළ"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"දින ඇතුළු කරන්න"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"අවලංගු දින පරාස ආදානය"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"ඇදීම් හැඬලය"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"පහළම පත්‍රය හකුළන්න"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"පහළම පත්‍රය අස් කරන්න"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"පහළම පත්‍රය දිග හරින්න"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"මෙවලම් ඉඟිය"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"මෙවලම් ඉඟිය පෙන්වන්න"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"ප.ව."</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"පෙ.ව."</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"පෙ.ව. හෝ ප.ව. තෝරන්න"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"පැය තෝරන්න"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"මිනිත්තු තෝරන්න"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$dට"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"පැය %1$d"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"මිනිත්තු %1$d"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"විනාඩි"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"පැය"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"මිනිත්තු ගණනක් සඳහා"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"පැයක් සඳහා"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-sk/strings.xml b/compose/material3/material3/src/androidMain/res/values-sk/strings.xml
deleted file mode 100644
index bfbc5eb..0000000
--- a/compose/material3/material3/src/androidMain/res/values-sk/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialógové okno"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Zavrieť"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Vyhľadávanie"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Návrhy sú nižšie"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Vybrať dátum"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Vybraný dátum"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Prepnúť na výber roka"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Potiahnutím vyberte rok alebo klepnutím prepnite späť na výber dňa"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Zmeniť na nasledujúci mesiac"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Zmeniť na predchádzajúci mesiac"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Prechod na rok %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Aktuálny výber: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Žiadne"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Dnes"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Výber roka je viditeľný"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Vybrať dátum"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Zadaný dátum"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Dátum"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Zadaný dátum: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Žiadny"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Nepovolený dátum: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Dátum nezodpovedá očakávanému vzoru: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Dátum sa nenachádza v očakávanom rozsahu rokov: %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Prepnúť na kalendárový režim vstupu"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Prepnúť na textový režim vstupu"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Posunutím si zobrazte neskoršie roky"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Posunutím si zobrazte skoršie roky"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Vyberte dátumy"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Dátum začatia"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Dátum ukončenia"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Posunutím si zobrazte nasledujúci mesiac"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Posunutím si zobrazte predchádzajúci mesiac"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"V rozsahu"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Zadajte dátumy"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Neplatný vstup obdobia"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Presúvadlo"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Zbaliť dolný hárok"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Zavrieť dolný hárok"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Rozbaliť dolný hárok"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Popis"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Zobraziť opis"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Vyberte AM alebo PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Vybrať hodinu"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Vybrať minúty"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d h"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d h"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d min"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minúty"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Hodina"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"minúty"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"hodina"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-sl/strings.xml b/compose/material3/material3/src/androidMain/res/values-sl/strings.xml
deleted file mode 100644
index ec1c583..0000000
--- a/compose/material3/material3/src/androidMain/res/values-sl/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Pogovorno okno"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Opusti"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Iskanje"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Predlogi so spodaj"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Izbira datuma"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Izbrani datum"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Preklopi na izbiro leta"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Povlecite, da izberete leto, ali se dotaknite, da preklopite nazaj na izbiranje dneva."</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Spremeni na naslednji mesec"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Spremeni na prejšnji mesec"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Pomik na leto %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Trenutna izbira: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Brez"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Danes"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Izbirnik leta je viden"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Izbira datuma"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Vneseni datum"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Datum"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Vneseni datum: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Brez"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Oblika datuma ni dovoljena: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Datum se ne ujema s pričakovanim vzorcem: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Datum je zunaj pričakovanega razpona let %1$s–%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Preklop na način vnosa v koledar"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Preklop na način vnosa besedila"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Pomaknite se za prikaz poznejših let."</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Pomaknite se za prikaz zgodnejših let."</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Izberite datume"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Začetni datum"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Končni datum"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Pomaknite se za prikaz naslednjega meseca."</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Pomaknite se za prikaz prejšnjega meseca."</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Znotraj obdobja"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Vnesite datume"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Neveljaven vnos obdobja."</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Ročica za vlečenje"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Strnitev razdelka na dnu zaslona"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Opustitev razdelka na dnu zaslona"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Razširitev razdelka na dnu zaslona"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Opis orodja"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Pokaži opis orodja"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"pop."</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"dop."</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Izberite dopoldanski ali popoldanski čas."</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Izbira ure"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Izbira minut"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d min"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minute"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Ura"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"za minute"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"za uro"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-sq/strings.xml b/compose/material3/material3/src/androidMain/res/values-sq/strings.xml
deleted file mode 100644
index 61f61fe..0000000
--- a/compose/material3/material3/src/androidMain/res/values-sq/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialogu"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Hiq"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Kërko"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Sugjerimet më poshtë"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Zgjidh datën"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Data e zgjedhur"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Kalo te zgjedhja e një viti"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Rrëshqit shpejt për të zgjedhur një vit ose trokit për të kaluar sërish te zgjedhja e ditës"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Ndrysho te muaji i ardhshëm"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Ndrysho te muaji i kaluar"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navigo në vitin %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Zgjedhja aktuale: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Asnjë"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Sot"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Zgjedhësi i vitit i dukshëm"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Zgjidh datën"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Data e futur"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Data"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Data e futur: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Asnjë"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Data nuk lejohet: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Data nuk përputhet me motivin e pritur: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Data jashtë diapazonit të pritur të vitit %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Kalo te modaliteti i \"Hyrjes së kalendarit\""</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Kalo te modaliteti i \"Hyrjes së tekstit\""</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Lëviz për të shfaqur vitet e ardhshme"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Lëviz për të shfaqur vitet e mëparshme"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Zgjidh datat"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Data e fillimit"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Data e mbarimit"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Lëviz për të shfaqur muajin e ardhshëm"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Lëviz për të shfaqur muajin e mëparshëm"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Brenda rrezes"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Fut datat"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Hyrje e pavlefshme e diapazonit të datave"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Doreza e zvarritjes"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Palos fletën e poshtme"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Hiq fletën e poshtme"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Zgjero fletën e poshtme"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Këshilla për veglën"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Shfaq këshillat për veglën"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"MD"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"PD"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Zgjidh paradite ose pasdite"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Zgjidh orën"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Përzgjidh minutat"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"ora %1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d orë"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minuta"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuta"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Ora"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"për minuta"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"për orë"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-sr/strings.xml b/compose/material3/material3/src/androidMain/res/values-sr/strings.xml
deleted file mode 100644
index 76529ef..0000000
--- a/compose/material3/material3/src/androidMain/res/values-sr/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Дијалог"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Одбаците"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Претрага"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Предлози су у наставку"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Изаберите датум"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Изабрани датум"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Пређите на избор године"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Превуците да бисте изабрали годину или додирните да бисте се вратили на избор дана"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Пређите на следећи месец"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Пређите на претходни месец"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Идите на годину: %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Актуелни избор: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Ништа"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Данас"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Видљив бирач година"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Изаберите датум"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Унети датум"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Датум"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Унети датум: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Ништа"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Датум није дозвољен: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Датум не одговара очекиваном шаблону: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Датум је изван очекиваног опсега година %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Пређите на режим уноса у Календару"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Пређите на режим уноса текста"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Померајте да би се приказале касније године"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Померајте да би се приказале раније године"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Изаберите датуме"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Датум почетка"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Датум завршетка"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Померајте да би се приказао следећи месец"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Померајте да би се приказао претходни месец"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"У домету"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Унесите датуме"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Унос опсега датума је неважећи"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Идентификатор за превлачење"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Скупи доњу табелу"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Одбаци доњу табелу"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Прошири доњу табелу"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Објашњење"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Прикажи објашњење"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"по"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"пр"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Изаберите пре подне или по подне"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Изаберите сат"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Изаберите минуте"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d ч"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d ч"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d мин"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Минут"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Сат"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"за минуте"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"за сате"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-sv/strings.xml b/compose/material3/material3/src/androidMain/res/values-sv/strings.xml
deleted file mode 100644
index b265fa2..0000000
--- a/compose/material3/material3/src/androidMain/res/values-sv/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialogruta"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Stäng"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Sök"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Se förslag nedan"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Välj datum"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Valt datum"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Byt till att välja år"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Svep för att välja ett år eller tryck för att återgå till att välja en dag"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Ändra till nästa månad"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Ändra till föregående månad"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Navigera till %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Aktuellt val: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Inget"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"I dag"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Årväljaren är synlig"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Välj datum"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Angivet datum"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Datum"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Angivet datum: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Inget"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Datumet är inte tillåtet: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Datumet matchar inte det förväntade formatet: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Datumet faller utanför det förväntade årsintervallet %1$s–%2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Byt till kalender som inmatningsläge"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Byt till text som inmatningsläge"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Scrolla för att visa senare år"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Scrolla för att visa föregående år"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Välj datum"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Startdatum"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Slutdatum"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Scrolla för att visa nästa månad"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Scrolla för att visa föregående månad"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Inom intervall"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Ange datum"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Ett ogiltigt datumintervall har angetts"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Handtag"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Komprimera arket på nedre delen av skärmen"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Stäng arket på nedre delen av skärmen"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Utöka arket på nedre delen av skärmen"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Beskrivning"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Visa beskrivning"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"EM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"FM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Välj mellan FM och EM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Ange timme"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Välj minuter"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"Klockan %1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d timmar"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d minuter"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minut"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Timme"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"för minuter"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"för timmar"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-sw/strings.xml b/compose/material3/material3/src/androidMain/res/values-sw/strings.xml
deleted file mode 100644
index 4a415f9..0000000
--- a/compose/material3/material3/src/androidMain/res/values-sw/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Mazungumzo"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Ondoa"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Tafuta"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Mapendekezo yaliyo hapa chini"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Chagua tarehe"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Tarehe uliyochagua"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Nenda kwenye sehemu ya kuchagua mwaka"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Telezesha ili uchague mwaka au gusa ili urejee kwenye kuchagua siku"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Nenda kwenye mwezi unaofuata"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Rudi kwenye mwezi uliotangulia"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Nenda kwenye mwaka %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Iliyochaguliwa sasa: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Hamna"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Leo"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Kiteua mwaka kinaonekana"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Chagua tarehe"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Tarehe iliyowekwa"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Tarehe"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Tarehe iliyowekwa: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Hamna"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Tarehe isiyoruhusiwa: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Tarehe hailingani na mchoro uliotarajiwa: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Tarehe nje ya kipindi cha mwaka kilichotarajiwa %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Badilisha mipangilio ya kuingiza data ya kalenda"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Badilisha kwenda mipangilio ya kuingiza data ya maandishi"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Sogeza ili kuonyesha miaka ya baadaye"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Sogeza ili kuonyesha miaka iliyopita"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Chagua tarehe"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Tarehe ya kuanza"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Tarehe ya mwisho"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Sogeza ili kuonyesha mwezi ujao"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Sogeza ili kuonyesha mwezi uliopita"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Ipo karibu"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Weka tarehe"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Kipindi kilichowekwa si sahihi"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Aikoni ya buruta"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Kunja safu ya chini"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Ondoa safu ya chini"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Panua safu ya chini"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Kidirisha cha vidokezo"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Onyesha kidirisha cha vidokezo"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"Mchana"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"Asubuhi"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Chagua Asubuhi au Mchana"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Chagua saa"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Chagua dakika"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"Saa %1$d kamili"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"Saa %1$d"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"Dakika %1$d"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Dakika"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Saa"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"kwa dakika"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"kwa saa moja"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ta/strings.xml b/compose/material3/material3/src/androidMain/res/values-ta/strings.xml
deleted file mode 100644
index ab4f28f..0000000
--- a/compose/material3/material3/src/androidMain/res/values-ta/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"உரையாடல்"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"மூடும்"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"தேடலாம்"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"பரிந்துரைகள் கீழே கிடைக்கும்"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"தேதியைத் தேர்ந்தெடுக்கவும்"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"தேர்ந்தெடுக்கப்பட்ட தேதி"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"ஆண்டைத் தேர்ந்தெடுக்கும் விருப்பத்திற்கு மாற்று"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"ஆண்டைத் தேர்வுசெய்ய ஸ்வைப் செய்யுங்கள் அல்லது தேதியைத் தேர்வுசெய்யும் பக்கத்திற்கு மீண்டும் செல்ல தட்டுங்கள்"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"அடுத்த மாதத்திற்கு மாற்று"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"முந்தைய மாதத்திற்கு மாற்று"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$sக்குச் செல்லும்"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"தற்போது %1$s தேர்வுசெய்யப்பட்டுள்ளது"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"ஏதுமில்லை"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"இன்று"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"ஆண்டைத் தேர்வுசெய்யும் பக்கம் காட்டப்படுகிறது"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"தேதியைத் தேர்வுசெய்யுங்கள்"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"உள்ளிட்ட தேதி"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"தேதி"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"உள்ளிட்ட தேதி: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"ஏதுமில்லை"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"இந்தத் தேதி அனுமதிக்கப்படவில்லை: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"எதிர்பார்க்கப்படும் பேட்டர்னுடன் தேதி பொருந்தவில்லை: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"இந்தத் தேதி %1$s - %2$s ஆண்டு வரம்பிற்குள் இல்லை"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"கேலெண்டர் உள்ளீட்டு முறைக்கு மாற்று"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"எழுத்து உள்ளீட்டு முறைக்கு மாற்று"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"பிந்தைய ஆண்டுகளைப் பார்க்க ஸ்க்ரோல் செய்யுங்கள்"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"முந்தைய ஆண்டுகளைப் பார்க்க ஸ்க்ரோல் செய்யுங்கள்"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"தேதிகளைத் தேர்ந்தெடுங்கள்"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"தொடக்கத் தேதி"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"முடிவுத் தேதி"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"அடுத்த மாதத்தைப் பார்க்க ஸ்க்ரோல் செய்யுங்கள்"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"முந்தைய மாதத்தைப் பார்க்க ஸ்க்ரோல் செய்யுங்கள்"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"வரம்பிற்குள் உள்ளது"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"தேதிகளை உள்ளிடுங்கள்"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"தவறான தேதி வரம்பை உள்ளிட்டுள்ளீர்கள்"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"இழுப்பதற்கான ஹேண்டில்"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"கீழ்ப்புறச் சீட்டைச் சுருக்கும்"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"கீழ்ப்புறச் சீட்டை நிராகரிக்கும்"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"கீழ்ப்புறச் சீட்டை விரிவாக்கும்"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"உதவிக்குறிப்பு"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"உதவிக்குறிப்பைக் காட்டு"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"AM/PM என்பதைத் தேர்ந்தெடுக்கலாம்"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"மணிநேரத்தைத் தேர்ந்தெடுக்கலாம்"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"நிமிடங்களைத் தேர்ந்தெடுக்கலாம்"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d மணி"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d மணிநேரம்"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d நிமிடங்கள்"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"நிமிடம்"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"மணிநேரம்"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"நிமிடங்களுக்கு"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"மணிநேரத்திற்கு"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-te/strings.xml b/compose/material3/material3/src/androidMain/res/values-te/strings.xml
deleted file mode 100644
index a80032e..0000000
--- a/compose/material3/material3/src/androidMain/res/values-te/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"డైలాగ్"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"విస్మరించండి"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"సెర్చ్ చేయండి"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"సూచనలు దిగువున ఉన్నాయి"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"తేదీని ఎంచుకోండి"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"ఎంచుకున్న తేదీ"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"ఒక సంవత్సరాన్ని ఎంచుకునే ఆప్షన్‌కు మారండి"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"సంవత్సరాన్ని ఎంచుకోవడానికి స్వైప్ చేయండి, లేదా రోజును ఎంచుకునేందుకు తిరిగి మారడానికి ట్యాప్ చేయండి"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"వచ్చే నెలకు మార్చండి"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"మునుపటి నెలకు మార్చండి"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$s సంవత్సరానికి వెళ్లండి"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"ప్రస్తుత ఎంపిక: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"ఏదీ లేదు"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"ఈ రోజు"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"సంవత్సరం పికర్ కనిపిస్తుంది"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"తేదీ ఎంచుకోండి"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"ఎంటర్ చేసిన తేదీ"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"తేదీ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"ఎంటర్ చేసిన తేదీ: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"ఏదీ లేదు"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"చెల్లని తేదీ: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"తేదీ ఉండాల్సిన ఫార్మాట్‌తో మ్యాచ్ కాలేదు: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"ఉండాల్సిన సంవత్సరాల పరిధి %1$s - %2$s‌లో తేదీ లేదు"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"క్యాలెండర్ ఇన్‌పుట్ మోడ్‌కు స్విచ్ అవ్వండి"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"టెక్స్ట్ ఇన్‌పుట్ మోడ్‌కు స్విచ్ అవ్వండి"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"తదుపరి సంవత్సరాల డేటాను చూడటానికి స్క్రోల్ చేయండి"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"మునుపటి సంవత్సరాల డేటాను చూడటానికి స్క్రోల్ చేయండి"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"తేదీలను ఎంచుకోండి"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"ప్రారంభ తేదీ"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"ముగింపు తేదీ"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"వచ్చే నెల డేటాను చూడటానికి స్క్రోల్ చేయండి"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"మునుపటి నెల డేటాను చూడటానికి స్క్రోల్ చేయండి"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"పరిధిలో ఉంది"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"తేదీలను ఎంటర్ చేయండి"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"తేదీల పరిధి ఇన్‌పుట్ చెల్లదు"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"లాగే హ్యాండిల్"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"దిగువున ఉన్న షీట్‌ను కుదిస్తుంది"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"దిగువున ఉన్న షీట్‌ను విస్మరిస్తుంది"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"దిగువున ఉన్న షీట్‌ను విస్తరిస్తుంది"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"టూల్‌టిప్"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"టూల్‌టిప్‌ను చూపించు"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"AM లేదా PMను ఎంచుకోండి"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"గంటను ఎంచుకోండి"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"నిమిషాలను ఎంచుకోండి"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d గంటలు"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d గంటలు"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d నిమిషాలు"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"నిమిషం"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"గంట"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"నిమిషాలకు"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"ఒక గంట పాటు"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-th/strings.xml b/compose/material3/material3/src/androidMain/res/values-th/strings.xml
deleted file mode 100644
index 26177c8..0000000
--- a/compose/material3/material3/src/androidMain/res/values-th/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"กล่องโต้ตอบ"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"ปิด"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"ค้นหา"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"มีคำแนะนำที่ด้านล่าง"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"เลือกวันที่"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"วันที่ที่เลือก"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"เปลี่ยนไปที่การเลือกปี"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"ปัดเพื่อเลือกปีหรือแตะเพื่อเปลี่ยนกลับไปยังการเลือกวัน"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"เปลี่ยนไปที่เดือนถัดไป"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"เปลี่ยนไปที่เดือนก่อนหน้า"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"ไปยังปี %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"การเลือกปัจจุบัน: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"ไม่มี"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"วันนี้"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"แสดงตัวเลือกปี"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"เลือกวันที่"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"วันที่ป้อน"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"วันที่"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"วันที่ป้อน: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"ไม่มี"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"ไม่อนุญาตให้ใช้วันที่นี้: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"วันที่ไม่ตรงกับรูปแบบที่คาดไว้: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"วันที่อยู่นอกเหนือจากช่วงปีที่คาดไว้ %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"สลับไปใช้โหมดป้อนข้อมูลปฏิทิน"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"สลับไปใช้โหมดการป้อนข้อความ"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"เลื่อนเพื่อแสดงปีหลังจากนี้"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"เลื่อนเพื่อแสดงปีก่อนหน้านี้"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"เลือกวันที่"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"วันที่เริ่มต้น"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"วันที่สิ้นสุด"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"เลื่อนเพื่อแสดงเดือนถัดไป"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"เลื่อนเพื่อแสดงเดือนก่อนหน้า"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"อยู่ในช่วงวันที่ที่เลือก"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"ป้อนวันที่"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"การป้อนข้อมูลช่วงวันที่ไม่ถูกต้อง"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"แฮนเดิลการลาก"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"ยุบ Bottom Sheet"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"ปิด Bottom Sheet"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"ขยาย Bottom Sheet"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"เคล็ดลับเครื่องมือ"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"แสดงเคล็ดลับเครื่องมือ"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"เลือก AM หรือ PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"เลือกชั่วโมง"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"เลือกนาที"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d นาฬิกา"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d ชั่วโมง"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d นาที"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"นาที"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"ชั่วโมง"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"สำหรับนาที"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"สำหรับชั่วโมง"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-tl/strings.xml b/compose/material3/material3/src/androidMain/res/values-tl/strings.xml
deleted file mode 100644
index 3fa5a78..0000000
--- a/compose/material3/material3/src/androidMain/res/values-tl/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Dialog"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"I-dismiss"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Maghanap"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Mga suhestyon sa ibaba"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Pumili ng petsa"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Piniling petsa"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Lumipat sa pagpili ng taon"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Mag-swipe para pumili ng taon, o mag-tap para bumalik sa pagpili ng araw"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Lumipat sa susunod na buwan"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Lumipat sa nakaraang buwan"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Mag-navigate papunta sa taong %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Kasalukuyang napili: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Wala"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Ngayon"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Nakikita ang picker ng taon"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Pumili ng petsa"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Inilagay na petsa"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Petsa"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Inilagay na petsa: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Wala"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Hindi pinapayagan ang petsa: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Hindi tumutugma ang petsa sa inaasahang pattern: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Wala ang petsa sa inaasahang hanay ng taon na %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Lumipat sa pamamaraan ng pag-input ng kalendaryo"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Lumipat sa pamamaraan ng pag-input ng text"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Mag-scroll para makita ang mga mas kamakailang taon"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Mag-scroll para ipakita ang mga mas naunang taon"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Pumili ng mga petsa"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Petsa ng pagsisimula"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Petsa ng pagtatapos"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Mag-scroll para ipakita ang susunod na buwan"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Mag-scroll para ipakita ang nakaraang buwan"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"May signal"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Maglagay ng mga petsa"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Invalid ang input na hanay ng petsa"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Handle sa pag-drag"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"I-collapse ang bottom sheet"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"I-dismiss ang bottom sheet"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Palawakin ang bottom sheet"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Tooltip"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Ipakita ang tooltip"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Piliin ang AM o PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Pumili ng oras"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Pumili ng mga minuto"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d o\'clock"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d oras"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d (na) minuto"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Minuto"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Oras"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"nang ilang minuto"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"nang ilang oras"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-tr/strings.xml b/compose/material3/material3/src/androidMain/res/values-tr/strings.xml
deleted file mode 100644
index 2f1342f..0000000
--- a/compose/material3/material3/src/androidMain/res/values-tr/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"İletişim kutusu"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Kapat"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Arama"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Önerileri aşağıda bulabilirsiniz"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Tarih seç"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Seçilen tarih"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Yıl seçimine geç"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Kaydırarak bir yıl seçin veya gün seçme bölümüne geri dönmek için dokunun"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Sonraki aya değiştir"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Önceki aya değiştir"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$s yılına gidin"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Geçerli seçim: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Yok"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Bugün"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Yıl seçici görünür durumda"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Tarih seç"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Girilen tarih"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Tarih"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Girilen tarih: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Yok"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Tarihe izin verilmiyor: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Tarih, istenen biçimle eşleşmiyor: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Tarih, istenen %1$s - %2$s yıl aralığının dışında"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Takvim giriş moduna geç"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Metin giriş moduna geç"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Sonraki yılları göstermek için kaydırın"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Önceki yılları göstermek için kaydırın"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Tarihleri seçin"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Başlangıç tarihi"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Bitiş tarihi"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Sonraki ayı göstermek için kaydırın"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Önceki ayı göstermek için kaydırın"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Aralıkta"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Tarihleri girin"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Geçersiz tarih aralığı girişi"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Sürükleme tutamacı"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Alt sayfayı daralt"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Alt sayfayı kapat"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Alt sayfayı genişlet"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"İpucu"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Araç ipucunu göster"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"ÖS"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"ÖÖ veya ÖS\'yi seçin"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Saat seçin"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Dakikayı seçin"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"Saat %1$d"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d saat"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d dakika"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Dakika"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Saat"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"dakika"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"saat"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-uk/strings.xml b/compose/material3/material3/src/androidMain/res/values-uk/strings.xml
deleted file mode 100644
index 91aa33f..0000000
--- a/compose/material3/material3/src/androidMain/res/values-uk/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Вікно"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Закрити"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Пошук"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Підказки внизу"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Вибрати дату"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Вибрана дата"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Перейти до вибору року"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Проведіть пальцем по екрану, щоб вибрати рік, або торкніться, щоб повернутися до вибору дня"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Перейти до наступного місяця"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Перейти до попереднього місяця"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Перейти до %1$s року"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Поточний вибір: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Немає"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Сьогодні"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Показувати засіб вибору року"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Виберіть дату"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Введена дата"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Дата"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Введена дата: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Немає"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Недопустима дата: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Дата не відповідає очікуваному шаблону: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Дата за межами очікуваного діапазону років %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Перейти в режим введення в календарі"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Перейти в режим введення тексту"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Прокрутіть, щоб відобразити пізніші роки"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Прокрутіть, щоб відобразити попередні роки"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Виберіть дати"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Дата початку"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Дата завершення"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Прокрутіть, щоб відобразити наступний місяць"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Прокрутіть, щоб відобразити попередній місяць"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"У діапазоні"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Введіть дати"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Указано недійсний діапазон дат"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Маркер переміщення"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Згорнути нижній екран"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Закрити нижній екран"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Розгорнути нижній екран"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Спливаюча підказка"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Показати підказку"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"ПП"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"ДП"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Виберіть ДП чи ПП"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Вибрати годину"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Вибрати хвилини"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d год"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d год"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d хв"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Хвилина"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Година"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"для хвилин"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"для годин"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-ur/strings.xml b/compose/material3/material3/src/androidMain/res/values-ur/strings.xml
deleted file mode 100644
index af45027d..0000000
--- a/compose/material3/material3/src/androidMain/res/values-ur/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"ڈائلاگ"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"برخاست کریں"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"تلاش کریں"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"تلاش کی تجاویز نیچے دستیاب ہیں"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"تاریخ منتخب کریں"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"منتخب کردہ تاریخ"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"ایک سال کا انتخاب کرنے کے لیے سوئچ کریں"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"ایک سال منتخب کرنے کے لیے سوائپ کریں یا ایک دن منتخب کرنے کی خاطر دوبارہ سوئچ کرنے کے لیے تھپتھپائیں"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"اگلے ماہ میں تبدیل کریں"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"گزشتہ ماہ میں منتقل کریں"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"‏سال ‎%1$s پر نیویگیٹ کریں"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"‏موجودہ انتخاب: ‎%1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"کوئی نہیں"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"آج"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"سال کا منتخب کنندہ مرئی ہے"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"تاریخ منتخب کریں"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"درج کردہ تاریخ"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"تاریخ"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"‏درج کردہ تاریخ: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"کوئی نہیں"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"‏تاریخ کی اجازت نہیں ہے: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"‏تاریخ متوقع پیٹرن سے مماثل نہیں ہے: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"‏متوقع سال کی حد %1$s‏ - %2$s سے باہر کی تاریخ"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"کیلنڈر اندراج کے طرز پر سوئچ کریں"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"ٹیکسٹ اندراج کے طرز پر سوئچ کریں"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"بعد کے سالوں کا ڈیٹا دکھانے کے لیے اسکرول کریں"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"پچھلے سالوں کا ڈیٹا دکھانے کے لیے اسکرول کریں"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"تواریخ منتخب کریں"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"تاریخ آغاز"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"تاریخ اختتام"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"اگلے مہینے کا ڈیٹا دکھانے کے لیے اسکرول کریں"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"پچھلے مہینے کا ڈیٹا دکھانے کے لیے اسکرول کریں"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"رینج میں ہے"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"تواریخ درج کریں"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"تاریخ کی حد کا غلط ان پٹ"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"گھسیٹنے کا ہینڈل"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"نیچے کی شیٹ کو سکیڑیں"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"نیچے کی شیٹ کو برخاست کریں"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"نیچے کی شیٹ کو پھیلائیں"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"ٹول ٹپ"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"ٹول ٹپ دکھائیں"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"بعد از دوپہر"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"قبل‌از دوپہر"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"قبل از دوپہر یا بعد از دوپہر منتخب کریں"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"گھنٹہ منتخب کریں"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"منٹس منتخب کریں"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"‏‎%1$d بجے"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"‏‎%1$d گھنٹے"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"‏%1$d منٹس"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"منٹ"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"گھنٹہ"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"منٹ کے لیے"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"گھنٹے کے لیے"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-uz/strings.xml b/compose/material3/material3/src/androidMain/res/values-uz/strings.xml
deleted file mode 100644
index b7b6517..0000000
--- a/compose/material3/material3/src/androidMain/res/values-uz/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Muloqot oynasi"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Yopish"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Qidiruv"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Takliflar quyida"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Sanani tanlang"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Tanlangan sana"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Tanlangan yilga oʻtish"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Yilni tanlash uchun suring yoki kunni tanlashga qaytish uchun tegining"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Keyingi oyga oʻzgartirish"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Avvalgi oyga oʻzgartirish"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"%1$s-yilga oʻtish"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Joriy tanlov: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Hech biri"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Bugun"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Yil tanlagich ochiq"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Sanani tanlang"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Kiritilgan sana"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Sana"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Kiritilgan sana: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Yoʻq"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Sana xato: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Sana mavjud namunaga mos kelmaydi: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Sana kutilgan yil oraligʻida emas: %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Taqvim kiritish rejimiga oʻtish"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Matn kiritish rejimiga oʻtish"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Keyingi yillarga varaqlang"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Avvalgi yillarga varaqlang"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Sanalarni tanlang"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Boshlanish sanasi"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Tugash sanasi"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Keyingi oyna varaqlang"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Avvalgi oyga varaqlang"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Xizmat doirasida"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Sanalarni kiriting"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Kiritilgan muddat yaroqsiz"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Surish dastagi"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Quyi ekranni yigʻish"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Quyi ekranni yopish"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Quyi ekranni yoyish"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Maslahat oynasi"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Maslahat oynasini koʻrsatish"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"TK"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"TO"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Tushdan oldin yoki keyinligini tanlang"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Soatni tanlang"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Daqiqani tanlang"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d soat"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d soat"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d daqiqa"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Daqiqa"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Soat"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"bir daqiqa"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"bir soat"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-vi/strings.xml b/compose/material3/material3/src/androidMain/res/values-vi/strings.xml
deleted file mode 100644
index 659de9d..0000000
--- a/compose/material3/material3/src/androidMain/res/values-vi/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Hộp thoại"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Đóng"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Tìm kiếm"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Các đề xuất ở bên dưới"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Chọn ngày"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Ngày đã chọn"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Chuyển sang chọn năm"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Vuốt để chọn một năm hoặc nhấn để chuyển lại về chọn một ngày"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Chuyển sang tháng tiếp theo"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Chuyển về tháng trước"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Chuyển đến năm %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Lựa chọn hiện tại: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Không có"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Hôm nay"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Bộ chọn năm hiển thị"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Chọn ngày"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Ngày đã nhập"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Ngày"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Ngày đã nhập: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Không có"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Ngày không được phép: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Ngày không khớp với định dạng dự kiến: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Ngày không thuộc phạm vi năm dự kiến %1$s – %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Chuyển sang chế độ nhập lịch"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Chuyển sang chế độ nhập văn bản"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Cuộn để hiện những năm sau"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Cuộn để hiện những năm trước"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Chọn ngày"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Ngày bắt đầu"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Ngày kết thúc"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Cuộn để hiện tháng sau"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Cuộn để hiện tháng trước"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Trong khoảng"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Nhập ngày"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Phạm vi ngày đã nhập không hợp lệ"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Nút kéo"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Thu gọn bảng dưới cùng"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Bỏ qua bảng dưới cùng"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Mở rộng bảng dưới cùng"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Chú giải công cụ"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Hiển thị chú giải công cụ"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"CH"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"SA"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Chọn SA hoặc CH"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Chọn giờ"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Chọn phút"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d giờ"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d giờ"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d phút"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Phút"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Giờ"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"về số phút"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"về số giờ"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-zh-rCN/strings.xml b/compose/material3/material3/src/androidMain/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 5cf5d1a..0000000
--- a/compose/material3/material3/src/androidMain/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"对话框"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"关闭"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"搜索"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"以下是搜索建议"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"选择日期"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"选定的日期"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"切换以选择年份"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"滑动可选择年份,点按可切换回选择日期"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"转到下个月"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"转到上个月"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"切换到年份:%1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"当前的选择:%1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"无"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"今天"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"年份选择器可见"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"选择日期"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"输入日期"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"日期"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"输入日期:%1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"无"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"不允许的日期:%1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"日期不符合预期格式:%1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"日期超出预期年份范围 %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"切换到日历输入模式"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"切换到文本字段输入模式"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"滚动显示之后的年份"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"滚动显示之前的年份"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"选择日期"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"开始日期"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"结束日期"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"滚动显示下个月"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"滚动显示上个月"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"在范围内"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"输入日期"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"输入的日期范围无效"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"拖动手柄"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"收起底部动作条"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"关闭底部动作条"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"展开底部动作条"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"提示"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"显示提示"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"下午"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"上午"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"选择上午或下午"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"选择小时"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"选择分钟"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d 点"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d 小时"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d 分钟"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"分"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"时"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"表示分钟"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"表示小时"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-zh-rHK/strings.xml b/compose/material3/material3/src/androidMain/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 4f00ddb..0000000
--- a/compose/material3/material3/src/androidMain/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"對話框"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"閂"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"搵"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"建議如下"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"選取日期"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"所選日期"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"切換為選取年份"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"滑動可選取年分,或可輕按返回選取日期"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"變更至下個月"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"變更至上個月"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"前往 %1$s 年"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"目前選項:%1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"無"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"今天"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"顯示年分挑選器"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"選取日期"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"已輸入的日期"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"日期"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"已輸入的日期:%1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"無"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"不允許的日期:%1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"日期格式不符:%1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"日期超出預期的年份範圍:%1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"切換至日曆輸入模式"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"切換至文字輸入模式"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"碌去顯示新啲嘅年份"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"碌去顯示舊啲嘅年份"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"選取日期"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"開始日期"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"結束日期"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"碌去顯示下一個月"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"碌去顯示上一個月"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"在指定日期範圍內"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"輸入日期"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"輸入的日期範圍無效"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"拖曳控點"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"收合底部功能表"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"關閉底部功能表"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"展開底部功能表"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"提示"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"顯示提示"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"下午"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"上午"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"選取上午或下午"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"選取小時"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"選取分鐘"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d 點"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d 點"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d 分鐘"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"分鐘"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"小時"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"分鐘"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"小時"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-zh-rTW/strings.xml b/compose/material3/material3/src/androidMain/res/values-zh-rTW/strings.xml
deleted file mode 100644
index d586f0e..0000000
--- a/compose/material3/material3/src/androidMain/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"對話方塊"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"關閉"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"搜尋"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"建議如下"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"選取日期"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"所選日期"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"改為選取年份"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"滑動可選取年分,也可輕觸返回選取日期"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"改成下個月"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"改成上個月"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"前往 %1$s 年"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"目前選項:%1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"無"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"今天"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"顯示年份挑選器"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"選取日期"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"輸入的日期"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"日期"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"輸入的日期:%1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"無"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"不允許的日期:%1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"日期格式不符:%1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"日期超出預期的年份範圍:%1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"切換至日曆輸入模式"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"切換至文字輸入模式"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"捲動即可顯示之後的年分"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"捲動即可顯示先前的年分"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"選取日期"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"開始日期"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"結束日期"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"捲動即可顯示下一個月"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"捲動即可顯示上一個月"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"在指定日期範圍內"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"輸入日期"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"輸入的日期範圍無效"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"拖曳控點"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"收合底部功能表"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"關閉底部功能表"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"展開底部功能表"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"工具提示"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"顯示工具提示"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"下午"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"上午"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"選取上午或下午"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"選取小時"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"選取分鐘"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d 點"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"%1$d 時"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"%1$d 分鐘"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"分鐘"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"小時"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"分鐘"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"小時"</string>
-</resources>
diff --git a/compose/material3/material3/src/androidMain/res/values-zu/strings.xml b/compose/material3/material3/src/androidMain/res/values-zu/strings.xml
deleted file mode 100644
index 0d31e2a..0000000
--- a/compose/material3/material3/src/androidMain/res/values-zu/strings.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  Copyright 2022 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="m3c_dialog" msgid="4057925834421392736">"Ibhokisi"</string>
-    <string name="m3c_snackbar_dismiss" msgid="3962933905051144957">"Chitha"</string>
-    <string name="m3c_search_bar_search" msgid="6420018528474762666">"Sesha"</string>
-    <string name="m3c_suggestions_available" msgid="7189888345201419934">"Iziphakamiso ngezansi"</string>
-    <string name="m3c_date_picker_title" msgid="9208721003668059792">"Khetha usuku"</string>
-    <string name="m3c_date_picker_headline" msgid="2846784065735639969">"Khetha usuku"</string>
-    <string name="m3c_date_picker_switch_to_year_selection" msgid="3412370019845183965">"Shintshela ekukhetheni unyaka"</string>
-    <string name="m3c_date_picker_switch_to_day_selection" msgid="145089358343568971">"Swayipha ukuze ukhethe unyaka, noma thepha ukuze ubuyele ekukhetheni usuku"</string>
-    <string name="m3c_date_picker_switch_to_next_month" msgid="8313783187901412102">"Shintshela kunyanga elandelayo"</string>
-    <string name="m3c_date_picker_switch_to_previous_month" msgid="7596294429748914881">"Shintshela kunyanga edlule"</string>
-    <string name="m3c_date_picker_navigate_to_year_description" msgid="5152441868029453612">"Funa kunyaka %1$s"</string>
-    <string name="m3c_date_picker_headline_description" msgid="4627306862713137085">"Ukukhetha kwamanje: %1$s"</string>
-    <string name="m3c_date_picker_no_selection_description" msgid="5724377114289981899">"Lutho"</string>
-    <string name="m3c_date_picker_today_description" msgid="4775802721403526937">"Namuhla"</string>
-    <string name="m3c_date_picker_year_picker_pane_title" msgid="8140324713311804736">"Isikhethi sonyaka siyabonakala"</string>
-    <string name="m3c_date_input_title" msgid="3010396677286327048">"Khetha usuku"</string>
-    <string name="m3c_date_input_headline" msgid="3499643850558715142">"Usuku olufakiwe"</string>
-    <string name="m3c_date_input_label" msgid="5194825853981987218">"Usuku"</string>
-    <string name="m3c_date_input_headline_description" msgid="8562356184193964298">"Usuku olufakiwe: %1$s"</string>
-    <string name="m3c_date_input_no_input_description" msgid="5722931102250207748">"Lutho"</string>
-    <string name="m3c_date_input_invalid_not_allowed" msgid="6114792992433444995">"Usuku aluvunyelwe: %1$s"</string>
-    <string name="m3c_date_input_invalid_for_pattern" msgid="5281836720766682161">"Usuku alufani nephethini elindelekile: %1$s"</string>
-    <string name="m3c_date_input_invalid_year_range" msgid="8434112129235255568">"Usuku lungaphandle kwebanga lonyaka elilindelekile %1$s - %2$s"</string>
-    <string name="m3c_date_picker_switch_to_calendar_mode" msgid="9029369254443419167">"Shintshela kwimodi yokufaka yekhalenda"</string>
-    <string name="m3c_date_picker_switch_to_input_mode" msgid="1496750567914156598">"Shintshela kwimodi yokufaka yombhalo"</string>
-    <string name="m3c_date_picker_scroll_to_later_years" msgid="3226341140390493774">"Skrola ukuze ubonise iminyaka yakamuva"</string>
-    <string name="m3c_date_picker_scroll_to_earlier_years" msgid="8911933542023210271">"Skrola ukuze ubonise iminyaka yangaphambilini"</string>
-    <string name="m3c_date_range_picker_title" msgid="690080476639943577">"Khetha izinsuku"</string>
-    <string name="m3c_date_range_picker_start_headline" msgid="5759491386723090559">"Usuku lokuqala"</string>
-    <string name="m3c_date_range_picker_end_headline" msgid="4766270708882012148">"Usuku lokuphela"</string>
-    <string name="m3c_date_range_picker_scroll_to_next_month" msgid="51495506931835470">"Skrola ukuze ubonise inyanga elandelayo"</string>
-    <string name="m3c_date_range_picker_scroll_to_previous_month" msgid="4371570854614540700">"Skrola ukuze ubonise inyanga edlule"</string>
-    <string name="m3c_date_range_picker_day_in_range" msgid="9048690781645835833">"Kubanga"</string>
-    <string name="m3c_date_range_input_title" msgid="2366412111888449406">"Faka izinsuku"</string>
-    <string name="m3c_date_range_input_invalid_range_input" msgid="1891592555781755601">"Okokufaka kwebanga losuku okungavumelekile"</string>
-    <string name="m3c_bottom_sheet_drag_handle_description" msgid="7772321844937772780">"Hudula isibambi"</string>
-    <string name="m3c_bottom_sheet_collapse_description" msgid="6128938260108474660">"Goqa ishidi eliphansi"</string>
-    <string name="m3c_bottom_sheet_dismiss_description" msgid="1918297411568599192">"Chitha ishidi eliphansi"</string>
-    <string name="m3c_bottom_sheet_expand_description" msgid="4324434199045499117">"Nweba ishidi eliphansi"</string>
-    <string name="m3c_tooltip_pane_description" msgid="8191239805703103845">"Ithulithiphu"</string>
-    <string name="m3c_tooltip_long_press_label" msgid="2732804537909054941">"Bonisa ithulithiphu"</string>
-    <string name="m3c_time_picker_pm" msgid="2232702812657998674">"PM"</string>
-    <string name="m3c_time_picker_am" msgid="5096144640014509074">"AM"</string>
-    <string name="m3c_time_picker_period_toggle_description" msgid="7352665290700284516">"Khetha u-AM noma u-PM"</string>
-    <string name="m3c_time_picker_hour_selection" msgid="6081676287789101196">"Khetha ihora"</string>
-    <string name="m3c_time_picker_minute_selection" msgid="8494777394375441602">"Khetha imizuzu"</string>
-    <string name="m3c_time_picker_hour_suffix" msgid="6952032626122080528">"%1$d o\'clock"</string>
-    <string name="m3c_time_picker_hour_24h_suffix" msgid="4149641012513526783">"Amahora angu-%1$d"</string>
-    <string name="m3c_time_picker_minute_suffix" msgid="3206486707779478173">"Imizuzu engu-%1$d"</string>
-    <string name="m3c_time_picker_minute" msgid="6116528647594005945">"Umzuzu"</string>
-    <string name="m3c_time_picker_hour" msgid="7241191970823415723">"Ihora"</string>
-    <string name="m3c_time_picker_minute_text_field" msgid="994099543833979061">"ngemizuzu"</string>
-    <string name="m3c_time_picker_hour_text_field" msgid="5298761125390275834">"ngehora"</string>
-</resources>
diff --git a/compose/runtime/OWNERS b/compose/runtime/OWNERS
index 8983dbc..a9c5fa6 100644
--- a/compose/runtime/OWNERS
+++ b/compose/runtime/OWNERS
@@ -2,6 +2,7 @@
 jsproch@google.com
 chuckj@google.com
 lelandr@google.com
+anbailey@google.com
 
 # Per-file for Playground infra
 per-file settings.gradle = yboyar@google.com, dustinlam@google.com, rahulrav@google.com
diff --git a/compose/runtime/runtime/build.gradle b/compose/runtime/runtime/build.gradle
index f7317d7..37a15fa 100644
--- a/compose/runtime/runtime/build.gradle
+++ b/compose/runtime/runtime/build.gradle
@@ -14,9 +14,8 @@
  * limitations under the License.
  */
 
-import androidx.build.AndroidXComposePlugin
+import androidx.build.KmpPlatformsKt
 import androidx.build.LibraryType
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
 plugins {
     id("AndroidXPlugin")
@@ -24,87 +23,95 @@
     id("com.android.library")
 }
 
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
 
-dependencies {
+androidXMultiplatform {
+    android()
+    if (desktopEnabled) desktop()
 
-    if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
-        /*
-         * When updating dependencies, make sure to make the an an analogous update in the
-         * corresponding block below
-         */
-
-        api(libs.kotlinCoroutinesAndroid)
-
-        implementation("androidx.annotation:annotation:1.1.0")
-        implementation(libs.kotlinStdlib)
-
-        testImplementation(libs.kotlinTestJunit)
-        testImplementation(libs.junit)
-        testImplementation(libs.robolectric)
-        testImplementation(libs.kotlinCoroutinesTest)
-
-        androidTestImplementation(libs.kotlinTestJunit)
-        androidTestImplementation(libs.testExtJunit)
-        androidTestImplementation(libs.testRules)
-        androidTestImplementation(libs.testRunner)
-        androidTestImplementation(libs.junit)
-        androidTestImplementation(libs.truth)
-
-        lintChecks(projectOrArtifact(":compose:runtime:runtime-lint"))
-        lintPublish(projectOrArtifact(":compose:runtime:runtime-lint"))
-
-        samples(projectOrArtifact(":compose:runtime:runtime:runtime-samples"))
-    }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
-    androidXComposeMultiplatform {
-        android()
-        desktop()
-    }
-
-    kotlin {
-
-        /*
-         * When updating dependencies, make sure to make the an an analogous update in the
-         * corresponding block above
-         */
-        sourceSets {
-            commonMain.dependencies {
+    sourceSets {
+        commonMain {
+            dependencies {
                 implementation(libs.kotlinStdlibCommon)
                 implementation(libs.kotlinCoroutinesCore)
             }
-            jvmMain.dependencies {
-                implementation(libs.kotlinStdlib)
-                api(libs.kotlinCoroutinesCore)
-            }
-            androidMain {
-                dependencies {
-                    api(libs.kotlinCoroutinesAndroid)
-                    api("androidx.annotation:annotation:1.1.0")
-                }
-            }
+        }
 
-            commonTest.dependencies {
+        commonTest {
+            dependencies {
                 implementation kotlin("test")
                 implementation(libs.kotlinCoroutinesTest)
             }
+        }
 
-            androidAndroidTest {
+        jvmMain {
+            dependencies {
+                implementation(libs.kotlinStdlib)
+                api(libs.kotlinCoroutinesCore)
+            }
+        }
+
+
+        androidMain {
+            dependsOn(jvmMain)
+            dependencies {
+                api(libs.kotlinCoroutinesAndroid)
+                api("androidx.annotation:annotation:1.1.0")
+            }
+        }
+
+        if (desktopEnabled) {
+            desktopMain {
+                dependsOn(jvmMain)
+            }
+        }
+
+        jvmTest {
+            dependsOn(commonTest)
+            dependencies {
+            }
+        }
+
+        nonEmulatorCommonTest {
+            dependsOn(commonTest)
+            dependencies {
+            }
+        }
+
+        nonEmulatorJvmTest {
+            dependsOn(nonEmulatorCommonTest)
+            dependencies {
+            }
+        }
+
+        androidAndroidTest {
+            dependsOn(jvmTest)
+            dependencies {
+                implementation(libs.testExtJunit)
+                implementation(libs.testRules)
+                implementation(libs.testRunner)
+                implementation(libs.truth)
+            }
+        }
+
+        androidTest {
+            dependsOn(jvmTest)
+            dependsOn(nonEmulatorJvmTest)
+        }
+
+        if (desktopEnabled) {
+            desktopTest {
                 dependsOn(jvmTest)
-                dependencies {
-                    implementation(libs.testExtJunit)
-                    implementation(libs.testRules)
-                    implementation(libs.testRunner)
-                    implementation(libs.truth)
-                }
+                dependsOn(nonEmulatorJvmTest)
             }
         }
     }
-    dependencies {
-        samples(projectOrArtifact(":compose:runtime:runtime:runtime-samples"))
-    }
+}
+
+dependencies {
+    lintChecks(projectOrArtifact(":compose:runtime:runtime-lint"))
+    lintPublish(projectOrArtifact(":compose:runtime:runtime-lint"))
+    samples(projectOrArtifact(":compose:runtime:runtime:runtime-samples"))
 }
 
 android {
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/DerivedState.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/DerivedState.kt
index 0d74edd..4fa3504 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/DerivedState.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/DerivedState.kt
@@ -27,9 +27,8 @@
 import androidx.compose.runtime.snapshots.newWritableRecord
 import androidx.compose.runtime.snapshots.sync
 import androidx.compose.runtime.snapshots.withCurrent
-// Explicit imports for these needed in common source sets.
-import kotlin.jvm.JvmName
 import kotlin.jvm.JvmMultifileClass
+import kotlin.jvm.JvmName
 import kotlin.math.min
 
 /**
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/ProduceState.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/ProduceState.kt
index 1905768..cd26a4c 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/ProduceState.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/ProduceState.kt
@@ -18,12 +18,11 @@
 @file:JvmMultifileClass
 package androidx.compose.runtime
 
+import kotlin.coroutines.CoroutineContext
+import kotlin.jvm.JvmMultifileClass
+import kotlin.jvm.JvmName
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.suspendCancellableCoroutine
-import kotlin.coroutines.CoroutineContext
-// Explicit imports for these needed in common source sets.
-import kotlin.jvm.JvmName
-import kotlin.jvm.JvmMultifileClass
 
 /**
  * Receiver scope for use with [produceState].
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotFlow.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotFlow.kt
index 12250ab..3d7c842 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotFlow.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotFlow.kt
@@ -19,17 +19,16 @@
 package androidx.compose.runtime
 
 import androidx.compose.runtime.snapshots.Snapshot
+import kotlin.coroutines.CoroutineContext
+import kotlin.coroutines.EmptyCoroutineContext
+import kotlin.jvm.JvmMultifileClass
+import kotlin.jvm.JvmName
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.flow.flow
 import kotlinx.coroutines.withContext
-import kotlin.coroutines.CoroutineContext
-import kotlin.coroutines.EmptyCoroutineContext
-// Explicit imports for these needed in common source sets.
-import kotlin.jvm.JvmName
-import kotlin.jvm.JvmMultifileClass
 
 /**
  * Collects values from this [StateFlow] and represents its latest value via [State].
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotMutationPolicy.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotMutationPolicy.kt
index 69f2809..5b301a9 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotMutationPolicy.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotMutationPolicy.kt
@@ -18,11 +18,10 @@
 @file:JvmMultifileClass
 package androidx.compose.runtime
 
-import androidx.compose.runtime.snapshots.MutableSnapshot
-// Explicit imports for these needed in common source sets.
-import kotlin.jvm.JvmName
-import kotlin.jvm.JvmMultifileClass
 import androidx.compose.runtime.internal.JvmDefaultWithCompatibility
+import androidx.compose.runtime.snapshots.MutableSnapshot
+import kotlin.jvm.JvmMultifileClass
+import kotlin.jvm.JvmName
 
 /**
  * A policy to control how the result of [mutableStateOf] report and merge changes to
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotState.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotState.kt
index 7f1533b..d408eb3 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotState.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotState.kt
@@ -27,9 +27,8 @@
 import androidx.compose.runtime.snapshots.overwritable
 import androidx.compose.runtime.snapshots.readable
 import androidx.compose.runtime.snapshots.withCurrent
-// Explicit imports for jvm annotations needed in common source sets.
-import kotlin.jvm.JvmName
 import kotlin.jvm.JvmMultifileClass
+import kotlin.jvm.JvmName
 import kotlin.reflect.KProperty
 
 /**
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/AbstractApplierTest.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/AbstractApplierTest.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/AbstractApplierTest.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/AbstractApplierTest.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/BroadcastFrameClockTest.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/BroadcastFrameClockTest.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/BroadcastFrameClockTest.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/BroadcastFrameClockTest.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompositionAndDerivedStateTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompositionAndDerivedStateTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompositionAndDerivedStateTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompositionAndDerivedStateTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompositionLocalTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompositionLocalTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompositionLocalTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompositionLocalTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompositionReusingTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompositionReusingTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompositionReusingTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompositionReusingTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompositionTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompositionTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompositionTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompositionTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompoundHashKeyTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompoundHashKeyTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompoundHashKeyTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/CompoundHashKeyTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/EffectsTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/EffectsTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/EffectsTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/EffectsTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/GroupSizeValidationTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/GroupSizeValidationTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/GroupSizeValidationTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/GroupSizeValidationTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/LatchTest.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/LatchTest.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/LatchTest.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/LatchTest.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/ModelViewTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/ModelViewTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/ModelViewTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/ModelViewTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/MovableContentTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/MovableContentTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/MovableContentTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/MovableContentTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/NewCodeGenTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/NewCodeGenTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/NewCodeGenTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/NewCodeGenTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/RecomposerTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/RecomposerTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/RecomposerTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/RecomposerTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/RestartTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/RestartTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/RestartTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/RestartTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/SlotTableTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/SlotTableTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/SlotTableTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/SlotTableTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/SnapshotFlowTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/SnapshotFlowTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/SnapshotFlowTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/SnapshotFlowTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/UpdateChangedFlagsTest.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/UpdateChangedFlagsTest.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/UpdateChangedFlagsTest.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/UpdateChangedFlagsTest.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/collection/IdentityArrayIntMapTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/collection/IdentityArrayIntMapTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/collection/IdentityArrayIntMapTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/collection/IdentityArrayIntMapTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/collection/IdentityArrayMapTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/collection/IdentityArrayMapTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/collection/IdentityArrayMapTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/collection/IdentityArrayMapTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/collection/IdentityArraySetTest.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/collection/IdentityArraySetTest.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/collection/IdentityArraySetTest.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/collection/IdentityArraySetTest.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/collection/IdentityScopeMapTest.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/collection/IdentityScopeMapTest.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/collection/IdentityScopeMapTest.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/collection/IdentityScopeMapTest.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/collection/MutableVectorTest.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/collection/MutableVectorTest.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/collection/MutableVectorTest.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/collection/MutableVectorTest.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/ComposeContact.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/ComposeContact.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/ComposeContact.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/ComposeContact.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/ComposePoints.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/ComposePoints.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/ComposePoints.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/ComposePoints.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/ComposeReport.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/ComposeReport.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/ComposeReport.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/ComposeReport.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/CompositionTest.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/CompositionTest.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/CompositionTest.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/CompositionTest.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/Contact.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/Contact.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/Contact.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/Contact.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/ContactModel.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/ContactModel.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/ContactModel.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/ContactModel.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/EmptyApplier.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/EmptyApplier.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/EmptyApplier.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/EmptyApplier.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/MockViewValidator.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/MockViewValidator.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/MockViewValidator.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/MockViewValidator.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/Point.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/Point.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/Point.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/Point.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/Report.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/Report.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/Report.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/Report.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/TestMonotonicFrameClock.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/TestMonotonicFrameClock.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/TestMonotonicFrameClock.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/TestMonotonicFrameClock.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/View.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/View.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/View.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/View.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/ViewApplier.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/ViewApplier.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/ViewApplier.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/ViewApplier.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/Views.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/Views.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/mock/Views.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/mock/Views.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/DerivedSnapshotStateTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/DerivedSnapshotStateTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/DerivedSnapshotStateTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/DerivedSnapshotStateTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/PrimitiveSnapshotStateTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/PrimitiveSnapshotStateTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/PrimitiveSnapshotStateTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/PrimitiveSnapshotStateTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotContextElementTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotContextElementTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotContextElementTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotContextElementTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotDoubleIndexHeapTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotDoubleIndexHeapTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotDoubleIndexHeapTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotDoubleIndexHeapTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotIdSetTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotIdSetTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotIdSetTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotIdSetTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateExtensionsTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateExtensionsTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateExtensionsTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateExtensionsTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateListTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateListTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateListTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateListTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateMapTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateMapTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateMapTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateMapTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateObserverTestsCommon.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateObserverTestsCommon.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateObserverTestsCommon.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateObserverTestsCommon.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotWeakSetTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotWeakSetTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotWeakSetTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotWeakSetTests.kt
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/tooling/CompositionDataTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/tooling/CompositionDataTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/tooling/CompositionDataTests.kt
rename to compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/tooling/CompositionDataTests.kt
diff --git a/compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/JvmCompositionTests.kt b/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/JvmCompositionTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/JvmCompositionTests.kt
rename to compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/JvmCompositionTests.kt
diff --git a/compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/LiveEditTests.kt b/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/LiveEditTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/LiveEditTests.kt
rename to compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/LiveEditTests.kt
diff --git a/compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/MonotonicFrameClockTest.kt b/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/MonotonicFrameClockTest.kt
similarity index 100%
rename from compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/MonotonicFrameClockTest.kt
rename to compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/MonotonicFrameClockTest.kt
diff --git a/compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/RecomposerTests.jvm.kt b/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/RecomposerTests.jvm.kt
similarity index 100%
rename from compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/RecomposerTests.jvm.kt
rename to compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/RecomposerTests.jvm.kt
diff --git a/compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/reflect/ComposableMethodTest.kt b/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/reflect/ComposableMethodTest.kt
similarity index 100%
rename from compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/reflect/ComposableMethodTest.kt
rename to compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/reflect/ComposableMethodTest.kt
diff --git a/compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateObserverTestsJvm.kt b/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateObserverTestsJvm.kt
similarity index 100%
rename from compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateObserverTestsJvm.kt
rename to compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/snapshots/SnapshotStateObserverTestsJvm.kt
diff --git a/compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/snapshots/SnapshotTestsJvm.kt b/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/snapshots/SnapshotTestsJvm.kt
similarity index 100%
rename from compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/snapshots/SnapshotTestsJvm.kt
rename to compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/snapshots/SnapshotTestsJvm.kt
diff --git a/compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/snapshots/SnapshotThreadMapTests.kt b/compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/snapshots/SnapshotThreadMapTests.kt
similarity index 100%
rename from compose/runtime/runtime/src/jvmTest/kotlin/androidx/compose/runtime/snapshots/SnapshotThreadMapTests.kt
rename to compose/runtime/runtime/src/nonEmulatorJvmTest/kotlin/androidx/compose/runtime/snapshots/SnapshotThreadMapTests.kt
diff --git a/compose/ui/ui-graphics/api/current.txt b/compose/ui/ui-graphics/api/current.txt
index 1107548..2042050 100644
--- a/compose/ui/ui-graphics/api/current.txt
+++ b/compose/ui/ui-graphics/api/current.txt
@@ -16,8 +16,8 @@
   }
 
   public final class AndroidColorSpace_androidKt {
+    method @RequiresApi(android.os.Build.VERSION_CODES.O) public static android.graphics.ColorSpace toAndroidColorSpace(androidx.compose.ui.graphics.colorspace.ColorSpace);
     method @RequiresApi(android.os.Build.VERSION_CODES.O) public static androidx.compose.ui.graphics.colorspace.ColorSpace toComposeColorSpace(android.graphics.ColorSpace);
-    method @RequiresApi(android.os.Build.VERSION_CODES.O) public static android.graphics.ColorSpace toFrameworkColorSpace(androidx.compose.ui.graphics.colorspace.ColorSpace);
   }
 
   public final class AndroidImageBitmap_androidKt {
@@ -1620,5 +1620,9 @@
     method public androidx.compose.ui.graphics.Path toPath(optional androidx.compose.ui.graphics.Path target);
   }
 
+  public final class PathParserKt {
+    method public static androidx.compose.ui.graphics.Path toPath(java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode>, optional androidx.compose.ui.graphics.Path target);
+  }
+
 }
 
diff --git a/compose/ui/ui-graphics/api/public_plus_experimental_current.txt b/compose/ui/ui-graphics/api/public_plus_experimental_current.txt
index 9a11ebe..cb69cd3 100644
--- a/compose/ui/ui-graphics/api/public_plus_experimental_current.txt
+++ b/compose/ui/ui-graphics/api/public_plus_experimental_current.txt
@@ -16,8 +16,8 @@
   }
 
   public final class AndroidColorSpace_androidKt {
+    method @RequiresApi(android.os.Build.VERSION_CODES.O) public static android.graphics.ColorSpace toAndroidColorSpace(androidx.compose.ui.graphics.colorspace.ColorSpace);
     method @RequiresApi(android.os.Build.VERSION_CODES.O) public static androidx.compose.ui.graphics.colorspace.ColorSpace toComposeColorSpace(android.graphics.ColorSpace);
-    method @RequiresApi(android.os.Build.VERSION_CODES.O) public static android.graphics.ColorSpace toFrameworkColorSpace(androidx.compose.ui.graphics.colorspace.ColorSpace);
   }
 
   public final class AndroidImageBitmap_androidKt {
@@ -1623,5 +1623,9 @@
     method public androidx.compose.ui.graphics.Path toPath(optional androidx.compose.ui.graphics.Path target);
   }
 
+  public final class PathParserKt {
+    method public static androidx.compose.ui.graphics.Path toPath(java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode>, optional androidx.compose.ui.graphics.Path target);
+  }
+
 }
 
diff --git a/compose/ui/ui-graphics/api/restricted_current.txt b/compose/ui/ui-graphics/api/restricted_current.txt
index 80bf1ea..032a956b 100644
--- a/compose/ui/ui-graphics/api/restricted_current.txt
+++ b/compose/ui/ui-graphics/api/restricted_current.txt
@@ -46,8 +46,8 @@
   }
 
   public final class AndroidColorSpace_androidKt {
+    method @RequiresApi(android.os.Build.VERSION_CODES.O) public static android.graphics.ColorSpace toAndroidColorSpace(androidx.compose.ui.graphics.colorspace.ColorSpace);
     method @RequiresApi(android.os.Build.VERSION_CODES.O) public static androidx.compose.ui.graphics.colorspace.ColorSpace toComposeColorSpace(android.graphics.ColorSpace);
-    method @RequiresApi(android.os.Build.VERSION_CODES.O) public static android.graphics.ColorSpace toFrameworkColorSpace(androidx.compose.ui.graphics.colorspace.ColorSpace);
   }
 
   public final class AndroidImageBitmap_androidKt {
@@ -1679,5 +1679,9 @@
     method public androidx.compose.ui.graphics.Path toPath(optional androidx.compose.ui.graphics.Path target);
   }
 
+  public final class PathParserKt {
+    method public static androidx.compose.ui.graphics.Path toPath(java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode>, optional androidx.compose.ui.graphics.Path target);
+  }
+
 }
 
diff --git a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidColorSpaceTest.kt b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidColorSpaceTest.kt
index 25fdfe8..ca5301a 100644
--- a/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidColorSpaceTest.kt
+++ b/compose/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/AndroidColorSpaceTest.kt
@@ -212,6 +212,34 @@
 
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
     @Test
+    fun testUnknownColorSpaceNoTransform() {
+        val name = "MyCustomColorSpace"
+        val whitePoint = floatArrayOf(1.0f, 2.0f, 3.0f)
+        val primaries = floatArrayOf(1f, 2f, 3f, 4f, 5f, 6f)
+        colorSpaceTestHelper(
+            androidx.compose.ui.graphics.colorspace.Rgb(
+                name = name,
+                primaries = primaries,
+                WhitePoint(1.0f, 2.0f, 3.0f),
+                { 1.0 },
+                { 2.0 },
+                2f,
+                4f,
+            ),
+            ColorSpace.Rgb(
+                name,
+                primaries,
+                whitePoint,
+                { _ -> 1.0 },
+                { _ -> 2.0 },
+                2f,
+                4f,
+            )
+        )
+    }
+
+    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
+    @Test
     fun testUnknownColorspace2WhitePointValues() {
         val name = "MyCustomColorSpace"
         val whitePoint = floatArrayOf(1.0f, 2.0f)
@@ -251,7 +279,11 @@
                 composeColorSpace: androidx.compose.ui.graphics.colorspace.ColorSpace,
                 frameworkColorSpace: ColorSpace
             ) {
-                Assert.assertEquals(composeColorSpace, frameworkColorSpace.toComposeColorSpace())
+                val convertedColorSpace = frameworkColorSpace.toComposeColorSpace()
+                Assert.assertEquals(composeColorSpace, convertedColorSpace)
+
+                val frameworkConvertedColorSpace = convertedColorSpace.toAndroidColorSpace()
+                Assert.assertEquals(frameworkColorSpace, frameworkConvertedColorSpace)
             }
         }
     }
diff --git a/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/AndroidColorSpace.android.kt b/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/AndroidColorSpace.android.kt
index 66041c1..37086be 100644
--- a/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/AndroidColorSpace.android.kt
+++ b/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/AndroidColorSpace.android.kt
@@ -16,6 +16,7 @@
 
 package androidx.compose.ui.graphics
 
+import android.graphics.ColorSpace.get
 import android.os.Build
 import androidx.annotation.DoNotInline
 import androidx.annotation.RequiresApi
@@ -29,9 +30,9 @@
  * Convert the Compose [ColorSpace] into an Android framework [android.graphics.ColorSpace]
  */
 @RequiresApi(Build.VERSION_CODES.O)
-fun ColorSpace.toFrameworkColorSpace(): android.graphics.ColorSpace =
+fun ColorSpace.toAndroidColorSpace(): android.graphics.ColorSpace =
         with(ColorSpaceVerificationHelper) {
-            frameworkColorSpace()
+            androidColorSpace()
         }
 
 /**
@@ -49,28 +50,65 @@
     @DoNotInline
     @JvmStatic
     @RequiresApi(Build.VERSION_CODES.O)
-    fun ColorSpace.frameworkColorSpace(): android.graphics.ColorSpace {
-        val frameworkNamedSpace = when (this) {
-            ColorSpaces.Srgb -> android.graphics.ColorSpace.Named.SRGB
-            ColorSpaces.Aces -> android.graphics.ColorSpace.Named.ACES
-            ColorSpaces.Acescg -> android.graphics.ColorSpace.Named.ACESCG
-            ColorSpaces.AdobeRgb -> android.graphics.ColorSpace.Named.ADOBE_RGB
-            ColorSpaces.Bt2020 -> android.graphics.ColorSpace.Named.BT2020
-            ColorSpaces.Bt709 -> android.graphics.ColorSpace.Named.BT709
-            ColorSpaces.CieLab -> android.graphics.ColorSpace.Named.CIE_LAB
-            ColorSpaces.CieXyz -> android.graphics.ColorSpace.Named.CIE_XYZ
-            ColorSpaces.DciP3 -> android.graphics.ColorSpace.Named.DCI_P3
-            ColorSpaces.DisplayP3 -> android.graphics.ColorSpace.Named.DISPLAY_P3
-            ColorSpaces.ExtendedSrgb -> android.graphics.ColorSpace.Named.EXTENDED_SRGB
+    fun ColorSpace.androidColorSpace(): android.graphics.ColorSpace {
+        return when (this) {
+            ColorSpaces.Srgb -> get(android.graphics.ColorSpace.Named.SRGB)
+            ColorSpaces.Aces -> get(android.graphics.ColorSpace.Named.ACES)
+            ColorSpaces.Acescg -> get(android.graphics.ColorSpace.Named.ACESCG)
+            ColorSpaces.AdobeRgb -> get(android.graphics.ColorSpace.Named.ADOBE_RGB)
+            ColorSpaces.Bt2020 -> get(android.graphics.ColorSpace.Named.BT2020)
+            ColorSpaces.Bt709 -> get(android.graphics.ColorSpace.Named.BT709)
+            ColorSpaces.CieLab -> get(android.graphics.ColorSpace.Named.CIE_LAB)
+            ColorSpaces.CieXyz -> get(android.graphics.ColorSpace.Named.CIE_XYZ)
+            ColorSpaces.DciP3 -> get(android.graphics.ColorSpace.Named.DCI_P3)
+            ColorSpaces.DisplayP3 -> get(android.graphics.ColorSpace.Named.DISPLAY_P3)
+            ColorSpaces.ExtendedSrgb -> get(android.graphics.ColorSpace.Named.EXTENDED_SRGB)
             ColorSpaces.LinearExtendedSrgb ->
-                android.graphics.ColorSpace.Named.LINEAR_EXTENDED_SRGB
-            ColorSpaces.LinearSrgb -> android.graphics.ColorSpace.Named.LINEAR_SRGB
-            ColorSpaces.Ntsc1953 -> android.graphics.ColorSpace.Named.NTSC_1953
-            ColorSpaces.ProPhotoRgb -> android.graphics.ColorSpace.Named.PRO_PHOTO_RGB
-            ColorSpaces.SmpteC -> android.graphics.ColorSpace.Named.SMPTE_C
-            else -> android.graphics.ColorSpace.Named.SRGB
+                get(android.graphics.ColorSpace.Named.LINEAR_EXTENDED_SRGB)
+            ColorSpaces.LinearSrgb -> get(android.graphics.ColorSpace.Named.LINEAR_SRGB)
+            ColorSpaces.Ntsc1953 -> get(android.graphics.ColorSpace.Named.NTSC_1953)
+            ColorSpaces.ProPhotoRgb -> get(android.graphics.ColorSpace.Named.PRO_PHOTO_RGB)
+            ColorSpaces.SmpteC -> get(android.graphics.ColorSpace.Named.SMPTE_C)
+            else -> {
+                if (this is Rgb) {
+                    val whitePointArray = this.whitePoint.toXyz()
+                    val transferParams = this.transferParameters
+                    val androidTransferParams = if (transferParams != null) {
+                        android.graphics.ColorSpace.Rgb.TransferParameters(
+                            transferParams.a,
+                            transferParams.b,
+                            transferParams.c,
+                            transferParams.d,
+                            transferParams.e,
+                            transferParams.f,
+                            transferParams.gamma
+                        )
+                    } else {
+                        null
+                    }
+                    if (androidTransferParams != null) {
+                        android.graphics.ColorSpace.Rgb(
+                            this.name,
+                            this.primaries,
+                            whitePointArray,
+                            androidTransferParams
+                        )
+                    } else {
+                        android.graphics.ColorSpace.Rgb(
+                            this.name,
+                            this.primaries,
+                            whitePointArray,
+                            this.oetf,
+                            this.eotf,
+                            this.getMinValue(0),
+                            this.getMaxValue(0)
+                        )
+                    }
+                } else {
+                    get(android.graphics.ColorSpace.Named.SRGB)
+                }
+            }
         }
-        return android.graphics.ColorSpace.get(frameworkNamedSpace)
     }
 
     @DoNotInline
diff --git a/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/AndroidImageBitmap.android.kt b/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/AndroidImageBitmap.android.kt
index 463d8f3..93d2f9c 100644
--- a/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/AndroidImageBitmap.android.kt
+++ b/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/AndroidImageBitmap.android.kt
@@ -201,7 +201,7 @@
             height,
             bitmapConfig.toBitmapConfig(),
             hasAlpha,
-            colorSpace.toFrameworkColorSpace()
+            colorSpace.toAndroidColorSpace()
         )
     }
 
diff --git a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/PathParser.kt b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/PathParser.kt
index 66f1e24e..42cf68f 100644
--- a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/PathParser.kt
+++ b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/PathParser.kt
@@ -49,27 +49,15 @@
 internal val EmptyArray = FloatArray(0)
 
 class PathParser {
-    private data class PathPoint(var x: Float = 0.0f, var y: Float = 0.0f) {
-        fun reset() {
-            x = 0.0f
-            y = 0.0f
-        }
-    }
-
     private val nodes = mutableListOf<PathNode>()
 
+    private val floatResult = FloatResult()
+    private var nodeData = FloatArray(64)
+
     fun clear() {
         nodes.clear()
     }
 
-    private val currentPoint = PathPoint()
-    private val ctrlPoint = PathPoint()
-    private val segmentPoint = PathPoint()
-    private val reflectiveCtrlPoint = PathPoint()
-
-    private val floatResult = FloatResult()
-    private var nodeData = FloatArray(64)
-
     /**
      * Parses the path string to create a collection of PathNode instances with their corresponding
      * arguments
@@ -153,430 +141,412 @@
 
     fun toNodes(): List<PathNode> = nodes
 
-    fun toPath(target: Path = Path()): Path {
-        target.reset()
-        currentPoint.reset()
-        ctrlPoint.reset()
-        segmentPoint.reset()
-        reflectiveCtrlPoint.reset()
-
-        var previousNode: PathNode? = null
-        nodes.fastForEach { node ->
-            if (previousNode == null) previousNode = node
-            when (node) {
-                is Close -> close(target)
-                is RelativeMoveTo -> node.relativeMoveTo(target)
-                is MoveTo -> node.moveTo(target)
-                is RelativeLineTo -> node.relativeLineTo(target)
-                is LineTo -> node.lineTo(target)
-                is RelativeHorizontalTo -> node.relativeHorizontalTo(target)
-                is HorizontalTo -> node.horizontalTo(target)
-                is RelativeVerticalTo -> node.relativeVerticalTo(target)
-                is VerticalTo -> node.verticalTo(target)
-                is RelativeCurveTo -> node.relativeCurveTo(target)
-                is CurveTo -> node.curveTo(target)
-                is RelativeReflectiveCurveTo ->
-                    node.relativeReflectiveCurveTo(previousNode!!.isCurve, target)
-                is ReflectiveCurveTo -> node.reflectiveCurveTo(previousNode!!.isCurve, target)
-                is RelativeQuadTo -> node.relativeQuadTo(target)
-                is QuadTo -> node.quadTo(target)
-                is RelativeReflectiveQuadTo ->
-                    node.relativeReflectiveQuadTo(previousNode!!.isQuad, target)
-                is ReflectiveQuadTo -> node.reflectiveQuadTo(previousNode!!.isQuad, target)
-                is RelativeArcTo -> node.relativeArcTo(target)
-                is ArcTo -> node.arcTo(target)
-            }
-            previousNode = node
-        }
-        return target
-    }
-
-    private fun close(target: Path) {
-        currentPoint.x = segmentPoint.x
-        currentPoint.y = segmentPoint.y
-        ctrlPoint.x = segmentPoint.x
-        ctrlPoint.y = segmentPoint.y
-
-        target.close()
-        target.moveTo(currentPoint.x, currentPoint.y)
-    }
-
-    private fun RelativeMoveTo.relativeMoveTo(target: Path) {
-        currentPoint.x += dx
-        currentPoint.y += dy
-        target.relativeMoveTo(dx, dy)
-        segmentPoint.x = currentPoint.x
-        segmentPoint.y = currentPoint.y
-    }
-
-    private fun MoveTo.moveTo(target: Path) {
-        currentPoint.x = x
-        currentPoint.y = y
-        target.moveTo(x, y)
-        segmentPoint.x = currentPoint.x
-        segmentPoint.y = currentPoint.y
-    }
-
-    private fun RelativeLineTo.relativeLineTo(target: Path) {
-        target.relativeLineTo(dx, dy)
-        currentPoint.x += dx
-        currentPoint.y += dy
-    }
-
-    private fun LineTo.lineTo(target: Path) {
-        target.lineTo(x, y)
-        currentPoint.x = x
-        currentPoint.y = y
-    }
-
-    private fun RelativeHorizontalTo.relativeHorizontalTo(target: Path) {
-        target.relativeLineTo(dx, 0.0f)
-        currentPoint.x += dx
-    }
-
-    private fun HorizontalTo.horizontalTo(target: Path) {
-        target.lineTo(x, currentPoint.y)
-        currentPoint.x = x
-    }
-
-    private fun RelativeVerticalTo.relativeVerticalTo(target: Path) {
-        target.relativeLineTo(0.0f, dy)
-        currentPoint.y += dy
-    }
-
-    private fun VerticalTo.verticalTo(target: Path) {
-        target.lineTo(currentPoint.x, y)
-        currentPoint.y = y
-    }
-
-    private fun RelativeCurveTo.relativeCurveTo(target: Path) {
-        target.relativeCubicTo(
-            dx1, dy1,
-            dx2, dy2,
-            dx3, dy3
-        )
-        ctrlPoint.x = currentPoint.x + dx2
-        ctrlPoint.y = currentPoint.y + dy2
-        currentPoint.x += dx3
-        currentPoint.y += dy3
-    }
-
-    private fun CurveTo.curveTo(target: Path) {
-        target.cubicTo(
-            x1, y1,
-            x2, y2,
-            x3, y3
-        )
-        ctrlPoint.x = x2
-        ctrlPoint.y = y2
-        currentPoint.x = x3
-        currentPoint.y = y3
-    }
-
-    private fun RelativeReflectiveCurveTo.relativeReflectiveCurveTo(
-        prevIsCurve: Boolean,
-        target: Path
-    ) {
-        if (prevIsCurve) {
-            reflectiveCtrlPoint.x = currentPoint.x - ctrlPoint.x
-            reflectiveCtrlPoint.y = currentPoint.y - ctrlPoint.y
-        } else {
-            reflectiveCtrlPoint.reset()
-        }
-
-        target.relativeCubicTo(
-            reflectiveCtrlPoint.x, reflectiveCtrlPoint.y,
-            dx1, dy1,
-            dx2, dy2
-        )
-        ctrlPoint.x = currentPoint.x + dx1
-        ctrlPoint.y = currentPoint.y + dy1
-        currentPoint.x += dx2
-        currentPoint.y += dy2
-    }
-
-    private fun ReflectiveCurveTo.reflectiveCurveTo(prevIsCurve: Boolean, target: Path) {
-        if (prevIsCurve) {
-            reflectiveCtrlPoint.x = 2 * currentPoint.x - ctrlPoint.x
-            reflectiveCtrlPoint.y = 2 * currentPoint.y - ctrlPoint.y
-        } else {
-            reflectiveCtrlPoint.x = currentPoint.x
-            reflectiveCtrlPoint.y = currentPoint.y
-        }
-
-        target.cubicTo(
-            reflectiveCtrlPoint.x, reflectiveCtrlPoint.y,
-            x1, y1, x2, y2
-        )
-        ctrlPoint.x = x1
-        ctrlPoint.y = y1
-        currentPoint.x = x2
-        currentPoint.y = y2
-    }
-
-    private fun RelativeQuadTo.relativeQuadTo(target: Path) {
-        target.relativeQuadraticBezierTo(dx1, dy1, dx2, dy2)
-        ctrlPoint.x = currentPoint.x + dx1
-        ctrlPoint.y = currentPoint.y + dy1
-        currentPoint.x += dx2
-        currentPoint.y += dy2
-    }
-
-    private fun QuadTo.quadTo(target: Path) {
-        target.quadraticBezierTo(x1, y1, x2, y2)
-        ctrlPoint.x = x1
-        ctrlPoint.y = y1
-        currentPoint.x = x2
-        currentPoint.y = y2
-    }
-
-    private fun RelativeReflectiveQuadTo.relativeReflectiveQuadTo(
-        prevIsQuad: Boolean,
-        target: Path
-    ) {
-        if (prevIsQuad) {
-            reflectiveCtrlPoint.x = currentPoint.x - ctrlPoint.x
-            reflectiveCtrlPoint.y = currentPoint.y - ctrlPoint.y
-        } else {
-            reflectiveCtrlPoint.reset()
-        }
-
-        target.relativeQuadraticBezierTo(
-            reflectiveCtrlPoint.x,
-            reflectiveCtrlPoint.y, dx, dy
-        )
-        ctrlPoint.x = currentPoint.x + reflectiveCtrlPoint.x
-        ctrlPoint.y = currentPoint.y + reflectiveCtrlPoint.y
-        currentPoint.x += dx
-        currentPoint.y += dy
-    }
-
-    private fun ReflectiveQuadTo.reflectiveQuadTo(prevIsQuad: Boolean, target: Path) {
-        if (prevIsQuad) {
-            reflectiveCtrlPoint.x = 2 * currentPoint.x - ctrlPoint.x
-            reflectiveCtrlPoint.y = 2 * currentPoint.y - ctrlPoint.y
-        } else {
-            reflectiveCtrlPoint.x = currentPoint.x
-            reflectiveCtrlPoint.y = currentPoint.y
-        }
-        target.quadraticBezierTo(
-            reflectiveCtrlPoint.x,
-            reflectiveCtrlPoint.y, x, y
-        )
-        ctrlPoint.x = reflectiveCtrlPoint.x
-        ctrlPoint.y = reflectiveCtrlPoint.y
-        currentPoint.x = x
-        currentPoint.y = y
-    }
-
-    private fun RelativeArcTo.relativeArcTo(target: Path) {
-        val arcStartX = arcStartDx + currentPoint.x
-        val arcStartY = arcStartDy + currentPoint.y
-
-        drawArc(
-            target,
-            currentPoint.x.toDouble(),
-            currentPoint.y.toDouble(),
-            arcStartX.toDouble(),
-            arcStartY.toDouble(),
-            horizontalEllipseRadius.toDouble(),
-            verticalEllipseRadius.toDouble(),
-            theta.toDouble(),
-            isMoreThanHalf,
-            isPositiveArc
-        )
-        currentPoint.x = arcStartX
-        currentPoint.y = arcStartY
-
-        ctrlPoint.x = currentPoint.x
-        ctrlPoint.y = currentPoint.y
-    }
-
-    private fun ArcTo.arcTo(target: Path) {
-        drawArc(
-            target,
-            currentPoint.x.toDouble(),
-            currentPoint.y.toDouble(),
-            arcStartX.toDouble(),
-            arcStartY.toDouble(),
-            horizontalEllipseRadius.toDouble(),
-            verticalEllipseRadius.toDouble(),
-            theta.toDouble(),
-            isMoreThanHalf,
-            isPositiveArc
-        )
-
-        currentPoint.x = arcStartX
-        currentPoint.y = arcStartY
-
-        ctrlPoint.x = currentPoint.x
-        ctrlPoint.y = currentPoint.y
-    }
-
-    private fun drawArc(
-        p: Path,
-        x0: Double,
-        y0: Double,
-        x1: Double,
-        y1: Double,
-        a: Double,
-        b: Double,
-        theta: Double,
-        isMoreThanHalf: Boolean,
-        isPositiveArc: Boolean
-    ) {
-
-        /* Convert rotation angle from degrees to radians */
-        val thetaD = theta.toRadians()
-        /* Pre-compute rotation matrix entries */
-        val cosTheta = cos(thetaD)
-        val sinTheta = sin(thetaD)
-        /* Transform (x0, y0) and (x1, y1) into unit space */
-        /* using (inverse) rotation, followed by (inverse) scale */
-        val x0p = (x0 * cosTheta + y0 * sinTheta) / a
-        val y0p = (-x0 * sinTheta + y0 * cosTheta) / b
-        val x1p = (x1 * cosTheta + y1 * sinTheta) / a
-        val y1p = (-x1 * sinTheta + y1 * cosTheta) / b
-
-        /* Compute differences and averages */
-        val dx = x0p - x1p
-        val dy = y0p - y1p
-        val xm = (x0p + x1p) / 2
-        val ym = (y0p + y1p) / 2
-        /* Solve for intersecting unit circles */
-        val dsq = dx * dx + dy * dy
-        if (dsq == 0.0) {
-            return /* Points are coincident */
-        }
-        val disc = 1.0 / dsq - 1.0 / 4.0
-        if (disc < 0.0) {
-            val adjust = (sqrt(dsq) / 1.99999).toFloat()
-            drawArc(
-                p, x0, y0, x1, y1, a * adjust,
-                b * adjust, theta, isMoreThanHalf, isPositiveArc
-            )
-            return /* Points are too far apart */
-        }
-        val s = sqrt(disc)
-        val sdx = s * dx
-        val sdy = s * dy
-        var cx: Double
-        var cy: Double
-        if (isMoreThanHalf == isPositiveArc) {
-            cx = xm - sdy
-            cy = ym + sdx
-        } else {
-            cx = xm + sdy
-            cy = ym - sdx
-        }
-
-        val eta0 = atan2(y0p - cy, x0p - cx)
-
-        val eta1 = atan2(y1p - cy, x1p - cx)
-
-        var sweep = eta1 - eta0
-        if (isPositiveArc != (sweep >= 0)) {
-            if (sweep > 0) {
-                sweep -= 2 * PI
-            } else {
-                sweep += 2 * PI
-            }
-        }
-
-        cx *= a
-        cy *= b
-        val tcx = cx
-        cx = cx * cosTheta - cy * sinTheta
-        cy = tcx * sinTheta + cy * cosTheta
-
-        arcToBezier(
-            p, cx, cy, a, b, x0, y0, thetaD,
-            eta0, sweep
-        )
-    }
-
-    /**
-     * Converts an arc to cubic Bezier segments and records them in p.
-     *
-     * @param p The target for the cubic Bezier segments
-     * @param cx The x coordinate center of the ellipse
-     * @param cy The y coordinate center of the ellipse
-     * @param a The radius of the ellipse in the horizontal direction
-     * @param b The radius of the ellipse in the vertical direction
-     * @param e1x E(eta1) x coordinate of the starting point of the arc
-     * @param e1y E(eta2) y coordinate of the starting point of the arc
-     * @param theta The angle that the ellipse bounding rectangle makes with horizontal plane
-     * @param start The start angle of the arc on the ellipse
-     * @param sweep The angle (positive or negative) of the sweep of the arc on the ellipse
-     */
-    private fun arcToBezier(
-        p: Path,
-        cx: Double,
-        cy: Double,
-        a: Double,
-        b: Double,
-        e1x: Double,
-        e1y: Double,
-        theta: Double,
-        start: Double,
-        sweep: Double
-    ) {
-        var eta1x = e1x
-        var eta1y = e1y
-        // Taken from equations at: http://spaceroots.org/documents/ellipse/node8.html
-        // and http://www.spaceroots.org/documents/ellipse/node22.html
-
-        // Maximum of 45 degrees per cubic Bezier segment
-        val numSegments = ceil(abs(sweep * 4 / PI)).toInt()
-
-        var eta1 = start
-        val cosTheta = cos(theta)
-        val sinTheta = sin(theta)
-        val cosEta1 = cos(eta1)
-        val sinEta1 = sin(eta1)
-        var ep1x = (-a * cosTheta * sinEta1) - (b * sinTheta * cosEta1)
-        var ep1y = (-a * sinTheta * sinEta1) + (b * cosTheta * cosEta1)
-
-        val anglePerSegment = sweep / numSegments
-        for (i in 0 until numSegments) {
-            val eta2 = eta1 + anglePerSegment
-            val sinEta2 = sin(eta2)
-            val cosEta2 = cos(eta2)
-            val e2x = cx + (a * cosTheta * cosEta2) - (b * sinTheta * sinEta2)
-            val e2y = cy + (a * sinTheta * cosEta2) + (b * cosTheta * sinEta2)
-            val ep2x = (-a * cosTheta * sinEta2) - (b * sinTheta * cosEta2)
-            val ep2y = (-a * sinTheta * sinEta2) + (b * cosTheta * cosEta2)
-            val tanDiff2 = tan((eta2 - eta1) / 2)
-            val alpha = sin(eta2 - eta1) * (sqrt(4 + 3.0 * tanDiff2 * tanDiff2) - 1) / 3
-            val q1x = eta1x + alpha * ep1x
-            val q1y = eta1y + alpha * ep1y
-            val q2x = e2x - alpha * ep2x
-            val q2y = e2y - alpha * ep2y
-
-            // TODO (njawad) figure out if this is still necessary?
-            // Adding this no-op call to workaround a proguard related issue.
-            // p.relativeLineTo(0.0, 0.0)
-
-            p.cubicTo(
-                q1x.toFloat(),
-                q1y.toFloat(),
-                q2x.toFloat(),
-                q2y.toFloat(),
-                e2x.toFloat(),
-                e2y.toFloat()
-            )
-            eta1 = eta2
-            eta1x = e2x
-            eta1y = e2y
-            ep1x = ep2x
-            ep1y = ep2y
-        }
-    }
+    fun toPath(target: Path = Path()) = nodes.toPath(target)
 
     @Suppress("NOTHING_TO_INLINE")
     private inline fun addNodes(cmd: Char, args: FloatArray, count: Int) {
         cmd.addPathNodes(nodes, args, count)
     }
-
-    private fun Double.toRadians(): Double = this / 180 * PI
 }
+
+/**
+ * Converts this list of [PathNode] into a [Path] by adding the appropriate
+ * commands to the [target] path. If [target] is not specified, a new
+ * [Path] instance is created. This method returns [target] or the newly
+ * created [Path].
+ */
+fun List<PathNode>.toPath(target: Path = Path()): Path {
+    // Rewind unsets the filltype so reset it here
+    val fillType = target.fillType
+    target.rewind()
+    target.fillType = fillType
+
+    var currentX = 0.0f
+    var currentY = 0.0f
+    var ctrlX = 0.0f
+    var ctrlY = 0.0f
+    var segmentX = 0.0f
+    var segmentY = 0.0f
+    var reflectiveCtrlX: Float
+    var reflectiveCtrlY: Float
+
+    var previousNode = if (isEmpty()) Close else this[0]
+    fastForEach { node ->
+        when (node) {
+            is Close -> {
+                currentX = segmentX
+                currentY = segmentY
+                ctrlX = segmentX
+                ctrlY = segmentY
+                target.close()
+                target.moveTo(currentX, currentY)
+            }
+
+            is RelativeMoveTo -> {
+                currentX += node.dx
+                currentY += node.dy
+                target.relativeMoveTo(node.dx, node.dy)
+                segmentX = currentX
+                segmentY = currentY
+            }
+
+            is MoveTo -> {
+                currentX = node.x
+                currentY = node.y
+                target.moveTo(node.x, node.y)
+                segmentX = currentX
+                segmentY = currentY
+            }
+
+            is RelativeLineTo -> {
+                target.relativeLineTo(node.dx, node.dy)
+                currentX += node.dx
+                currentY += node.dy
+            }
+
+            is LineTo -> {
+                target.lineTo(node.x, node.y)
+                currentX = node.x
+                currentY = node.y
+            }
+
+            is RelativeHorizontalTo -> {
+                target.relativeLineTo(node.dx, 0.0f)
+                currentX += node.dx
+            }
+
+            is HorizontalTo -> {
+                target.lineTo(node.x, currentY)
+                currentX = node.x
+            }
+
+            is RelativeVerticalTo -> {
+                target.relativeLineTo(0.0f, node.dy)
+                currentY += node.dy
+            }
+
+            is VerticalTo -> {
+                target.lineTo(currentX, node.y)
+                currentY = node.y
+            }
+
+            is RelativeCurveTo -> {
+                target.relativeCubicTo(
+                    node.dx1, node.dy1,
+                    node.dx2, node.dy2,
+                    node.dx3, node.dy3
+                )
+                ctrlX = currentX + node.dx2
+                ctrlY = currentY + node.dy2
+                currentX += node.dx3
+                currentY += node.dy3
+            }
+
+            is CurveTo -> {
+                target.cubicTo(
+                    node.x1, node.y1,
+                    node.x2, node.y2,
+                    node.x3, node.y3
+                )
+                ctrlX = node.x2
+                ctrlY = node.y2
+                currentX = node.x3
+                currentY = node.y3
+            }
+
+            is RelativeReflectiveCurveTo -> {
+                if (previousNode.isCurve) {
+                    reflectiveCtrlX = currentX - ctrlX
+                    reflectiveCtrlY = currentY - ctrlY
+                } else {
+                    reflectiveCtrlX = 0.0f
+                    reflectiveCtrlY = 0.0f
+                }
+                target.relativeCubicTo(
+                    reflectiveCtrlX, reflectiveCtrlY,
+                    node.dx1, node.dy1,
+                    node.dx2, node.dy2
+                )
+                ctrlX = currentX + node.dx1
+                ctrlY = currentY + node.dy1
+                currentX += node.dx2
+                currentY += node.dy2
+            }
+
+            is ReflectiveCurveTo -> {
+                if (previousNode.isCurve) {
+                    reflectiveCtrlX = 2 * currentX - ctrlX
+                    reflectiveCtrlY = 2 * currentY - ctrlY
+                } else {
+                    reflectiveCtrlX = currentX
+                    reflectiveCtrlY = currentY
+                }
+                target.cubicTo(
+                    reflectiveCtrlX, reflectiveCtrlY,
+                    node.x1, node.y1, node.x2, node.y2
+                )
+                ctrlX = node.x1
+                ctrlY = node.y1
+                currentX = node.x2
+                currentY = node.y2
+            }
+
+            is RelativeQuadTo -> {
+                target.relativeQuadraticBezierTo(node.dx1, node.dy1, node.dx2, node.dy2)
+                ctrlX = currentX + node.dx1
+                ctrlY = currentY + node.dy1
+                currentX += node.dx2
+                currentY += node.dy2
+            }
+
+            is QuadTo -> {
+                target.quadraticBezierTo(node.x1, node.y1, node.x2, node.y2)
+                ctrlX = node.x1
+                ctrlY = node.y1
+                currentX = node.x2
+                currentY = node.y2
+            }
+
+            is RelativeReflectiveQuadTo -> {
+                if (previousNode.isQuad) {
+                    reflectiveCtrlX = currentX - ctrlX
+                    reflectiveCtrlY = currentY - ctrlY
+                } else {
+                    reflectiveCtrlX = 0.0f
+                    reflectiveCtrlY = 0.0f
+                }
+                target.relativeQuadraticBezierTo(
+                    reflectiveCtrlX,
+                    reflectiveCtrlY, node.dx, node.dy
+                )
+                ctrlX = currentX + reflectiveCtrlX
+                ctrlY = currentY + reflectiveCtrlY
+                currentX += node.dx
+                currentY += node.dy
+            }
+
+            is ReflectiveQuadTo -> {
+                if (previousNode.isQuad) {
+                    reflectiveCtrlX = 2 * currentX - ctrlX
+                    reflectiveCtrlY = 2 * currentY - ctrlY
+                } else {
+                    reflectiveCtrlX = currentX
+                    reflectiveCtrlY = currentY
+                }
+                target.quadraticBezierTo(
+                    reflectiveCtrlX,
+                    reflectiveCtrlY, node.x, node.y
+                )
+                ctrlX = reflectiveCtrlX
+                ctrlY = reflectiveCtrlY
+                currentX = node.x
+                currentY = node.y
+            }
+
+            is RelativeArcTo -> {
+                val arcStartX = node.arcStartDx + currentX
+                val arcStartY = node.arcStartDy + currentY
+                drawArc(
+                    target,
+                    currentX.toDouble(),
+                    currentY.toDouble(),
+                    arcStartX.toDouble(),
+                    arcStartY.toDouble(),
+                    node.horizontalEllipseRadius.toDouble(),
+                    node.verticalEllipseRadius.toDouble(),
+                    node.theta.toDouble(),
+                    node.isMoreThanHalf,
+                    node.isPositiveArc
+                )
+                currentX = arcStartX
+                currentY = arcStartY
+                ctrlX = currentX
+                ctrlY = currentY
+            }
+
+            is ArcTo -> {
+                drawArc(
+                    target,
+                    currentX.toDouble(),
+                    currentY.toDouble(),
+                    node.arcStartX.toDouble(),
+                    node.arcStartY.toDouble(),
+                    node.horizontalEllipseRadius.toDouble(),
+                    node.verticalEllipseRadius.toDouble(),
+                    node.theta.toDouble(),
+                    node.isMoreThanHalf,
+                    node.isPositiveArc
+                )
+                currentX = node.arcStartX
+                currentY = node.arcStartY
+                ctrlX = currentX
+                ctrlY = currentY
+            }
+        }
+        previousNode = node
+    }
+    return target
+}
+
+private fun drawArc(
+    p: Path,
+    x0: Double,
+    y0: Double,
+    x1: Double,
+    y1: Double,
+    a: Double,
+    b: Double,
+    theta: Double,
+    isMoreThanHalf: Boolean,
+    isPositiveArc: Boolean
+) {
+
+    /* Convert rotation angle from degrees to radians */
+    val thetaD = theta.toRadians()
+    /* Pre-compute rotation matrix entries */
+    val cosTheta = cos(thetaD)
+    val sinTheta = sin(thetaD)
+    /* Transform (x0, y0) and (x1, y1) into unit space */
+    /* using (inverse) rotation, followed by (inverse) scale */
+    val x0p = (x0 * cosTheta + y0 * sinTheta) / a
+    val y0p = (-x0 * sinTheta + y0 * cosTheta) / b
+    val x1p = (x1 * cosTheta + y1 * sinTheta) / a
+    val y1p = (-x1 * sinTheta + y1 * cosTheta) / b
+
+    /* Compute differences and averages */
+    val dx = x0p - x1p
+    val dy = y0p - y1p
+    val xm = (x0p + x1p) / 2
+    val ym = (y0p + y1p) / 2
+    /* Solve for intersecting unit circles */
+    val dsq = dx * dx + dy * dy
+    if (dsq == 0.0) {
+        return /* Points are coincident */
+    }
+    val disc = 1.0 / dsq - 1.0 / 4.0
+    if (disc < 0.0) {
+        val adjust = (sqrt(dsq) / 1.99999).toFloat()
+        drawArc(
+            p, x0, y0, x1, y1, a * adjust,
+            b * adjust, theta, isMoreThanHalf, isPositiveArc
+        )
+        return /* Points are too far apart */
+    }
+    val s = sqrt(disc)
+    val sdx = s * dx
+    val sdy = s * dy
+    var cx: Double
+    var cy: Double
+    if (isMoreThanHalf == isPositiveArc) {
+        cx = xm - sdy
+        cy = ym + sdx
+    } else {
+        cx = xm + sdy
+        cy = ym - sdx
+    }
+
+    val eta0 = atan2(y0p - cy, x0p - cx)
+
+    val eta1 = atan2(y1p - cy, x1p - cx)
+
+    var sweep = eta1 - eta0
+    if (isPositiveArc != (sweep >= 0)) {
+        if (sweep > 0) {
+            sweep -= 2 * PI
+        } else {
+            sweep += 2 * PI
+        }
+    }
+
+    cx *= a
+    cy *= b
+    val tcx = cx
+    cx = cx * cosTheta - cy * sinTheta
+    cy = tcx * sinTheta + cy * cosTheta
+
+    arcToBezier(
+        p, cx, cy, a, b, x0, y0, thetaD,
+        eta0, sweep
+    )
+}
+
+/**
+ * Converts an arc to cubic Bezier segments and records them in p.
+ *
+ * @param p The target for the cubic Bezier segments
+ * @param cx The x coordinate center of the ellipse
+ * @param cy The y coordinate center of the ellipse
+ * @param a The radius of the ellipse in the horizontal direction
+ * @param b The radius of the ellipse in the vertical direction
+ * @param e1x E(eta1) x coordinate of the starting point of the arc
+ * @param e1y E(eta2) y coordinate of the starting point of the arc
+ * @param theta The angle that the ellipse bounding rectangle makes with horizontal plane
+ * @param start The start angle of the arc on the ellipse
+ * @param sweep The angle (positive or negative) of the sweep of the arc on the ellipse
+ */
+private fun arcToBezier(
+    p: Path,
+    cx: Double,
+    cy: Double,
+    a: Double,
+    b: Double,
+    e1x: Double,
+    e1y: Double,
+    theta: Double,
+    start: Double,
+    sweep: Double
+) {
+    var eta1x = e1x
+    var eta1y = e1y
+    // Taken from equations at: http://spaceroots.org/documents/ellipse/node8.html
+    // and http://www.spaceroots.org/documents/ellipse/node22.html
+
+    // Maximum of 45 degrees per cubic Bezier segment
+    val numSegments = ceil(abs(sweep * 4 / PI)).toInt()
+
+    var eta1 = start
+    val cosTheta = cos(theta)
+    val sinTheta = sin(theta)
+    val cosEta1 = cos(eta1)
+    val sinEta1 = sin(eta1)
+    var ep1x = (-a * cosTheta * sinEta1) - (b * sinTheta * cosEta1)
+    var ep1y = (-a * sinTheta * sinEta1) + (b * cosTheta * cosEta1)
+
+    val anglePerSegment = sweep / numSegments
+    for (i in 0 until numSegments) {
+        val eta2 = eta1 + anglePerSegment
+        val sinEta2 = sin(eta2)
+        val cosEta2 = cos(eta2)
+        val e2x = cx + (a * cosTheta * cosEta2) - (b * sinTheta * sinEta2)
+        val e2y = cy + (a * sinTheta * cosEta2) + (b * cosTheta * sinEta2)
+        val ep2x = (-a * cosTheta * sinEta2) - (b * sinTheta * cosEta2)
+        val ep2y = (-a * sinTheta * sinEta2) + (b * cosTheta * cosEta2)
+        val tanDiff2 = tan((eta2 - eta1) / 2)
+        val alpha = sin(eta2 - eta1) * (sqrt(4 + 3.0 * tanDiff2 * tanDiff2) - 1) / 3
+        val q1x = eta1x + alpha * ep1x
+        val q1y = eta1y + alpha * ep1y
+        val q2x = e2x - alpha * ep2x
+        val q2y = e2y - alpha * ep2y
+
+        // TODO (njawad) figure out if this is still necessary?
+        // Adding this no-op call to workaround a proguard related issue.
+        // p.relativeLineTo(0.0, 0.0)
+
+        p.cubicTo(
+            q1x.toFloat(),
+            q1y.toFloat(),
+            q2x.toFloat(),
+            q2y.toFloat(),
+            e2x.toFloat(),
+            e2y.toFloat()
+        )
+        eta1 = eta2
+        eta1x = e2x
+        eta1y = e2y
+        ep1x = ep2x
+        ep1y = ep2y
+    }
+}
+
+@Suppress("NOTHING_TO_INLINE")
+private inline fun Double.toRadians(): Double = this / 180 * PI
diff --git a/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt b/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt
index 23c7e7a..0e0f06e 100644
--- a/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt
+++ b/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt
@@ -32,7 +32,6 @@
 import org.jetbrains.skia.ClipMode as SkClipMode
 import org.jetbrains.skia.RRect as SkRRect
 import org.jetbrains.skia.Rect as SkRect
-// Using skiko use as it has versions for all mpp platforms
 import org.jetbrains.skia.impl.use
 
 actual typealias NativeCanvas = org.jetbrains.skia.Canvas
diff --git a/compose/ui/ui-text/api/current.txt b/compose/ui/ui-text/api/current.txt
index 1f0ad8e..09ac6ba 100644
--- a/compose/ui/ui-text/api/current.txt
+++ b/compose/ui/ui-text/api/current.txt
@@ -509,7 +509,7 @@
   public final class TextRangeKt {
     method public static long TextRange(int start, int end);
     method public static long TextRange(int index);
-    method public static long constrain(long, int minimumValue, int maximumValue);
+    method public static long coerceIn(long, int minimumValue, int maximumValue);
     method public static String substring(CharSequence, long range);
   }
 
diff --git a/compose/ui/ui-text/api/public_plus_experimental_current.txt b/compose/ui/ui-text/api/public_plus_experimental_current.txt
index 509ae13..4299328 100644
--- a/compose/ui/ui-text/api/public_plus_experimental_current.txt
+++ b/compose/ui/ui-text/api/public_plus_experimental_current.txt
@@ -522,7 +522,7 @@
   public final class TextRangeKt {
     method public static long TextRange(int start, int end);
     method public static long TextRange(int index);
-    method public static long constrain(long, int minimumValue, int maximumValue);
+    method public static long coerceIn(long, int minimumValue, int maximumValue);
     method public static String substring(CharSequence, long range);
   }
 
diff --git a/compose/ui/ui-text/api/restricted_current.txt b/compose/ui/ui-text/api/restricted_current.txt
index 1f0ad8e..09ac6ba 100644
--- a/compose/ui/ui-text/api/restricted_current.txt
+++ b/compose/ui/ui-text/api/restricted_current.txt
@@ -509,7 +509,7 @@
   public final class TextRangeKt {
     method public static long TextRange(int start, int end);
     method public static long TextRange(int index);
-    method public static long constrain(long, int minimumValue, int maximumValue);
+    method public static long coerceIn(long, int minimumValue, int maximumValue);
     method public static String substring(CharSequence, long range);
   }
 
diff --git a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/TextPainterTest.kt b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/TextPainterTest.kt
index af0ce0e3..b847c51 100644
--- a/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/TextPainterTest.kt
+++ b/compose/ui/ui-text/src/androidAndroidTest/kotlin/androidx/compose/ui/text/TextPainterTest.kt
@@ -473,7 +473,7 @@
     @Test
     fun textMeasurerDraw_isConstrainedTo_canvasSizeByDefault() {
         val measurer = textMeasurer()
-        // constrain the width, height is ignored
+        // coerceIn the width, height is ignored
         val textLayoutResult = measurer.measure(
             text = longText,
             style = TextStyle(
@@ -499,7 +499,7 @@
     @Test
     fun textMeasurerDraw_usesCanvasDensity_ByDefault() {
         val measurer = textMeasurer()
-        // constrain the width, height is ignored
+        // coerceIn the width, height is ignored
         val textLayoutResult = measurer.measure(
             text = longText,
             style = TextStyle(
@@ -528,7 +528,7 @@
     @Test
     fun drawTextClipsTheContent_ifOverflowIsClip() {
         val measurer = textMeasurer()
-        // constrain the width, height is ignored
+        // coerceIn the width, height is ignored
         val textLayoutResult = measurer.measure(
             text = longText,
             style = TextStyle(
@@ -588,7 +588,7 @@
     @Test
     fun drawTextDoesNotClipTheContent_ifOverflowIsVisible() {
         val measurer = textMeasurer()
-        // constrain the width, height is ignored
+        // coerceIn the width, height is ignored
         val textLayoutResult = measurer.measure(
             text = longText,
             style = TextStyle(
diff --git a/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/AndroidParagraph.android.kt b/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/AndroidParagraph.android.kt
index 35b572e..cc2ed1d 100644
--- a/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/AndroidParagraph.android.kt
+++ b/compose/ui/ui-text/src/androidMain/kotlin/androidx/compose/ui/text/AndroidParagraph.android.kt
@@ -50,8 +50,8 @@
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_JUSTIFICATION_MODE
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_LINESPACING_MULTIPLIER
 import androidx.compose.ui.text.android.LayoutCompat.HYPHENATION_FREQUENCY_NONE
-import androidx.compose.ui.text.android.LayoutCompat.HYPHENATION_FREQUENCY_NORMAL
-import androidx.compose.ui.text.android.LayoutCompat.HYPHENATION_FREQUENCY_NORMAL_FAST
+import androidx.compose.ui.text.android.LayoutCompat.HYPHENATION_FREQUENCY_FULL
+import androidx.compose.ui.text.android.LayoutCompat.HYPHENATION_FREQUENCY_FULL_FAST
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_LINE_BREAK_STYLE
 import androidx.compose.ui.text.android.LayoutCompat.DEFAULT_LINE_BREAK_WORD_STYLE
 import androidx.compose.ui.text.android.LayoutCompat.JUSTIFICATION_MODE_INTER_WORD
@@ -562,9 +562,9 @@
 @OptIn(InternalPlatformTextApi::class)
 private fun toLayoutHyphenationFrequency(hyphens: Hyphens?): Int = when (hyphens) {
     Hyphens.Auto -> if (Build.VERSION.SDK_INT <= 32) {
-        HYPHENATION_FREQUENCY_NORMAL
+        HYPHENATION_FREQUENCY_FULL
     } else {
-        HYPHENATION_FREQUENCY_NORMAL_FAST
+        HYPHENATION_FREQUENCY_FULL_FAST
     }
     Hyphens.None -> HYPHENATION_FREQUENCY_NONE
     else -> DEFAULT_HYPHENATION_FREQUENCY
diff --git a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/TextRange.kt b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/TextRange.kt
index fbad0c0..2fbf0a7 100644
--- a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/TextRange.kt
+++ b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/TextRange.kt
@@ -108,7 +108,7 @@
  * @param minimumValue the minimum value that [TextRange.start] or [TextRange.end] can be.
  * @param maximumValue the exclusive maximum value that [TextRange.start] or [TextRange.end] can be.
  */
-fun TextRange.constrain(minimumValue: Int, maximumValue: Int): TextRange {
+fun TextRange.coerceIn(minimumValue: Int, maximumValue: Int): TextRange {
     val newStart = start.coerceIn(minimumValue, maximumValue)
     val newEnd = end.coerceIn(minimumValue, maximumValue)
     if (newStart != start || newEnd != end) {
diff --git a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/input/TextFieldValue.kt b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/input/TextFieldValue.kt
index d8dbaaf..ed074ba 100644
--- a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/input/TextFieldValue.kt
+++ b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/input/TextFieldValue.kt
@@ -22,7 +22,7 @@
 import androidx.compose.ui.text.AnnotatedStringSaver
 import androidx.compose.ui.text.Saver
 import androidx.compose.ui.text.TextRange
-import androidx.compose.ui.text.constrain
+import androidx.compose.ui.text.coerceIn
 import androidx.compose.ui.text.restore
 import androidx.compose.ui.text.save
 import kotlin.math.max
@@ -85,7 +85,7 @@
      * The selection range. If the selection is collapsed, it represents cursor
      * location. When selection range is out of bounds, it is constrained with the text length.
      */
-    val selection: TextRange = selection.constrain(0, text.length)
+    val selection: TextRange = selection.coerceIn(0, text.length)
 
     /**
      * Composition range created by  IME. If null, there is no composition range.
@@ -99,7 +99,7 @@
      * composition by setting the value to null. Applying a composition will accept the changes
      * that were still being composed by IME.
      */
-    val composition: TextRange? = composition?.constrain(0, text.length)
+    val composition: TextRange? = composition?.coerceIn(0, text.length)
 
     /**
      * Returns a copy of the TextFieldValue.
diff --git a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/TextRangeTest.kt b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/TextRangeTest.kt
index 36fd1bc..9c47e02 100644
--- a/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/TextRangeTest.kt
+++ b/compose/ui/ui-text/src/test/java/androidx/compose/ui/text/TextRangeTest.kt
@@ -139,23 +139,23 @@
 
     @Test
     fun constrain_updates_start_end_if_required() {
-        assertThat(TextRange(0, 4).constrain(1, 3)).isEqualTo(TextRange(1, 3))
+        assertThat(TextRange(0, 4).coerceIn(1, 3)).isEqualTo(TextRange(1, 3))
     }
 
     @Test
     fun constrain_with_collapsed_min_max_returns_collapsed_values() {
-        assertThat(TextRange(1, 2).constrain(2, 2)).isEqualTo(TextRange(2, 2))
-        assertThat(TextRange(2, 3).constrain(2, 2)).isEqualTo(TextRange(2, 2))
+        assertThat(TextRange(1, 2).coerceIn(2, 2)).isEqualTo(TextRange(2, 2))
+        assertThat(TextRange(2, 3).coerceIn(2, 2)).isEqualTo(TextRange(2, 2))
     }
 
     @Test
     fun constrain_min_max_greater_than_TextRange_values() {
-        assertThat(TextRange(0, 4).constrain(5, 6)).isEqualTo(TextRange(5, 5))
+        assertThat(TextRange(0, 4).coerceIn(5, 6)).isEqualTo(TextRange(5, 5))
     }
 
     @Test
     fun constrain_min_smaller_than_TextRange_values() {
-        assertThat(TextRange(5, 6).constrain(0, 4)).isEqualTo(TextRange(4, 4))
+        assertThat(TextRange(5, 6).coerceIn(0, 4)).isEqualTo(TextRange(4, 4))
     }
 
     @Test
diff --git a/compose/ui/ui-tooling-preview/api/current.ignore b/compose/ui/ui-tooling-preview/api/current.ignore
new file mode 100644
index 0000000..71dfdb2
--- /dev/null
+++ b/compose/ui/ui-tooling-preview/api/current.ignore
@@ -0,0 +1,7 @@
+// Baseline format: 1.0
+ChangedValue: androidx.compose.ui.tooling.preview.Devices#DESKTOP:
+    Field androidx.compose.ui.tooling.preview.Devices.DESKTOP has changed value from spec:shape=Normal,width=1920,height=1080,unit=dp,dpi=420 to spec:id=reference_desktop,shape=Normal,width=1920,height=1080,unit=dp,dpi=160
+ChangedValue: androidx.compose.ui.tooling.preview.Devices#FOLDABLE:
+    Field androidx.compose.ui.tooling.preview.Devices.FOLDABLE has changed value from spec:shape=Normal,width=673,height=841,unit=dp,dpi=480 to spec:id=reference_foldable,shape=Normal,width=673,height=841,unit=dp,dpi=420
+ChangedValue: androidx.compose.ui.tooling.preview.Devices#TABLET:
+    Field androidx.compose.ui.tooling.preview.Devices.TABLET has changed value from spec:shape=Normal,width=1280,height=800,unit=dp,dpi=420 to spec:id=reference_tablet,shape=Normal,width=1280,height=800,unit=dp,dpi=240
diff --git a/compose/ui/ui-tooling-preview/api/current.txt b/compose/ui/ui-tooling-preview/api/current.txt
index a5363d9..9d09eb2 100644
--- a/compose/ui/ui-tooling-preview/api/current.txt
+++ b/compose/ui/ui-tooling-preview/api/current.txt
@@ -4,8 +4,8 @@
   public final class Devices {
     field public static final String AUTOMOTIVE_1024p = "id:automotive_1024p_landscape";
     field public static final String DEFAULT = "";
-    field public static final String DESKTOP = "spec:shape=Normal,width=1920,height=1080,unit=dp,dpi=420";
-    field public static final String FOLDABLE = "spec:shape=Normal,width=673,height=841,unit=dp,dpi=480";
+    field public static final String DESKTOP = "spec:id=reference_desktop,shape=Normal,width=1920,height=1080,unit=dp,dpi=160";
+    field public static final String FOLDABLE = "spec:id=reference_foldable,shape=Normal,width=673,height=841,unit=dp,dpi=420";
     field public static final androidx.compose.ui.tooling.preview.Devices INSTANCE;
     field public static final String NEXUS_10 = "name:Nexus 10";
     field public static final String NEXUS_5 = "id:Nexus 5";
@@ -27,7 +27,7 @@
     field public static final String PIXEL_4_XL = "id:pixel_4_xl";
     field public static final String PIXEL_C = "id:pixel_c";
     field public static final String PIXEL_XL = "id:pixel_xl";
-    field public static final String TABLET = "spec:shape=Normal,width=1280,height=800,unit=dp,dpi=420";
+    field public static final String TABLET = "spec:id=reference_tablet,shape=Normal,width=1280,height=800,unit=dp,dpi=240";
     field public static final String TV_1080p = "spec:shape=Normal,width=1920,height=1080,unit=dp,dpi=420";
     field public static final String TV_720p = "spec:shape=Normal,width=1280,height=720,unit=dp,dpi=420";
     field public static final String WEAR_OS_LARGE_ROUND = "id:wearos_large_round";
diff --git a/compose/ui/ui-tooling-preview/api/public_plus_experimental_current.txt b/compose/ui/ui-tooling-preview/api/public_plus_experimental_current.txt
index a5363d9..9d09eb2 100644
--- a/compose/ui/ui-tooling-preview/api/public_plus_experimental_current.txt
+++ b/compose/ui/ui-tooling-preview/api/public_plus_experimental_current.txt
@@ -4,8 +4,8 @@
   public final class Devices {
     field public static final String AUTOMOTIVE_1024p = "id:automotive_1024p_landscape";
     field public static final String DEFAULT = "";
-    field public static final String DESKTOP = "spec:shape=Normal,width=1920,height=1080,unit=dp,dpi=420";
-    field public static final String FOLDABLE = "spec:shape=Normal,width=673,height=841,unit=dp,dpi=480";
+    field public static final String DESKTOP = "spec:id=reference_desktop,shape=Normal,width=1920,height=1080,unit=dp,dpi=160";
+    field public static final String FOLDABLE = "spec:id=reference_foldable,shape=Normal,width=673,height=841,unit=dp,dpi=420";
     field public static final androidx.compose.ui.tooling.preview.Devices INSTANCE;
     field public static final String NEXUS_10 = "name:Nexus 10";
     field public static final String NEXUS_5 = "id:Nexus 5";
@@ -27,7 +27,7 @@
     field public static final String PIXEL_4_XL = "id:pixel_4_xl";
     field public static final String PIXEL_C = "id:pixel_c";
     field public static final String PIXEL_XL = "id:pixel_xl";
-    field public static final String TABLET = "spec:shape=Normal,width=1280,height=800,unit=dp,dpi=420";
+    field public static final String TABLET = "spec:id=reference_tablet,shape=Normal,width=1280,height=800,unit=dp,dpi=240";
     field public static final String TV_1080p = "spec:shape=Normal,width=1920,height=1080,unit=dp,dpi=420";
     field public static final String TV_720p = "spec:shape=Normal,width=1280,height=720,unit=dp,dpi=420";
     field public static final String WEAR_OS_LARGE_ROUND = "id:wearos_large_round";
diff --git a/compose/ui/ui-tooling-preview/api/restricted_current.ignore b/compose/ui/ui-tooling-preview/api/restricted_current.ignore
new file mode 100644
index 0000000..71dfdb2
--- /dev/null
+++ b/compose/ui/ui-tooling-preview/api/restricted_current.ignore
@@ -0,0 +1,7 @@
+// Baseline format: 1.0
+ChangedValue: androidx.compose.ui.tooling.preview.Devices#DESKTOP:
+    Field androidx.compose.ui.tooling.preview.Devices.DESKTOP has changed value from spec:shape=Normal,width=1920,height=1080,unit=dp,dpi=420 to spec:id=reference_desktop,shape=Normal,width=1920,height=1080,unit=dp,dpi=160
+ChangedValue: androidx.compose.ui.tooling.preview.Devices#FOLDABLE:
+    Field androidx.compose.ui.tooling.preview.Devices.FOLDABLE has changed value from spec:shape=Normal,width=673,height=841,unit=dp,dpi=480 to spec:id=reference_foldable,shape=Normal,width=673,height=841,unit=dp,dpi=420
+ChangedValue: androidx.compose.ui.tooling.preview.Devices#TABLET:
+    Field androidx.compose.ui.tooling.preview.Devices.TABLET has changed value from spec:shape=Normal,width=1280,height=800,unit=dp,dpi=420 to spec:id=reference_tablet,shape=Normal,width=1280,height=800,unit=dp,dpi=240
diff --git a/compose/ui/ui-tooling-preview/api/restricted_current.txt b/compose/ui/ui-tooling-preview/api/restricted_current.txt
index a5363d9..9d09eb2 100644
--- a/compose/ui/ui-tooling-preview/api/restricted_current.txt
+++ b/compose/ui/ui-tooling-preview/api/restricted_current.txt
@@ -4,8 +4,8 @@
   public final class Devices {
     field public static final String AUTOMOTIVE_1024p = "id:automotive_1024p_landscape";
     field public static final String DEFAULT = "";
-    field public static final String DESKTOP = "spec:shape=Normal,width=1920,height=1080,unit=dp,dpi=420";
-    field public static final String FOLDABLE = "spec:shape=Normal,width=673,height=841,unit=dp,dpi=480";
+    field public static final String DESKTOP = "spec:id=reference_desktop,shape=Normal,width=1920,height=1080,unit=dp,dpi=160";
+    field public static final String FOLDABLE = "spec:id=reference_foldable,shape=Normal,width=673,height=841,unit=dp,dpi=420";
     field public static final androidx.compose.ui.tooling.preview.Devices INSTANCE;
     field public static final String NEXUS_10 = "name:Nexus 10";
     field public static final String NEXUS_5 = "id:Nexus 5";
@@ -27,7 +27,7 @@
     field public static final String PIXEL_4_XL = "id:pixel_4_xl";
     field public static final String PIXEL_C = "id:pixel_c";
     field public static final String PIXEL_XL = "id:pixel_xl";
-    field public static final String TABLET = "spec:shape=Normal,width=1280,height=800,unit=dp,dpi=420";
+    field public static final String TABLET = "spec:id=reference_tablet,shape=Normal,width=1280,height=800,unit=dp,dpi=240";
     field public static final String TV_1080p = "spec:shape=Normal,width=1920,height=1080,unit=dp,dpi=420";
     field public static final String TV_720p = "spec:shape=Normal,width=1280,height=720,unit=dp,dpi=420";
     field public static final String WEAR_OS_LARGE_ROUND = "id:wearos_large_round";
diff --git a/compose/ui/ui-tooling-preview/src/androidMain/kotlin/androidx/compose/ui/tooling/preview/Device.kt b/compose/ui/ui-tooling-preview/src/androidMain/kotlin/androidx/compose/ui/tooling/preview/Device.kt
index c6405e4..57fa29b 100644
--- a/compose/ui/ui-tooling-preview/src/androidMain/kotlin/androidx/compose/ui/tooling/preview/Device.kt
+++ b/compose/ui/ui-tooling-preview/src/androidMain/kotlin/androidx/compose/ui/tooling/preview/Device.kt
@@ -53,9 +53,11 @@
 
     // Reference devices
     const val PHONE = "spec:id=reference_phone,shape=Normal,width=411,height=891,unit=dp,dpi=420"
-    const val FOLDABLE = "spec:shape=Normal,width=673,height=841,unit=dp,dpi=480"
-    const val TABLET = "spec:shape=Normal,width=1280,height=800,unit=dp,dpi=420"
-    const val DESKTOP = "spec:shape=Normal,width=1920,height=1080,unit=dp,dpi=420"
+    const val FOLDABLE =
+        "spec:id=reference_foldable,shape=Normal,width=673,height=841,unit=dp,dpi=420"
+    const val TABLET = "spec:id=reference_tablet,shape=Normal,width=1280,height=800,unit=dp,dpi=240"
+    const val DESKTOP =
+        "spec:id=reference_desktop,shape=Normal,width=1920,height=1080,unit=dp,dpi=160"
 
     // TV devices (not adding 4K since it will be very heavy for preview)
     const val TV_720p = "spec:shape=Normal,width=1280,height=720,unit=dp,dpi=420"
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/accessibility/ComplexAccessibility.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/accessibility/ComplexAccessibility.kt
index e8aed9a..6a22a71 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/accessibility/ComplexAccessibility.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/accessibility/ComplexAccessibility.kt
@@ -21,7 +21,9 @@
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
 import androidx.compose.material.BottomAppBar
@@ -29,12 +31,14 @@
 import androidx.compose.material.FabPosition
 import androidx.compose.material.FloatingActionButton
 import androidx.compose.material.Icon
+import androidx.compose.material.IconButton
 import androidx.compose.material.MaterialTheme
 import androidx.compose.material.Scaffold
 import androidx.compose.material.Text
 import androidx.compose.material.TopAppBar
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.Add
+import androidx.compose.material.icons.filled.Face
 import androidx.compose.material.rememberDrawerState
 import androidx.compose.material.rememberScaffoldState
 import androidx.compose.runtime.Composable
@@ -42,6 +46,7 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.platform.testTag
+import androidx.compose.ui.semantics.clearAndSetSemantics
 import androidx.compose.ui.semantics.isTraversalGroup
 import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.semantics.traversalIndex
@@ -350,3 +355,47 @@
         }
     }
 }
+
+@Preview
+@Composable
+fun IconsInScaffoldWithListDemo() {
+    Scaffold(
+        topBar = {
+            Row(
+                horizontalArrangement = Arrangement.SpaceEvenly
+            ) {
+                IconButton(onClick = { }) {
+                    Icon(Icons.Default.Face, contentDescription = "Face 1")
+                }
+                // Setting `clearAndSetSemantics` below means that Face 2 will not be sorted nor
+                // will be read by TalkBack. The final traversal order should go from Face 1 to
+                // Face 3 to the LazyColumn content.
+                IconButton(
+                    onClick = { },
+                    modifier = Modifier.clearAndSetSemantics { }
+                ) {
+                    Icon(Icons.Default.Face, contentDescription = "Face 2")
+                }
+                IconButton(onClick = { }) {
+                    Icon(Icons.Default.Face, contentDescription = "Face 3")
+                }
+            }
+        },
+        content = { innerPadding ->
+            LazyColumn(
+                contentPadding = innerPadding,
+                verticalArrangement = Arrangement.spacedBy(8.dp)
+            ) {
+                val list = (0..75).map { it.toString() }
+                items(count = list.size) {
+                    Text(
+                        text = list[it],
+                        modifier = Modifier
+                            .fillMaxWidth()
+                            .padding(horizontal = 16.dp)
+                    )
+                }
+            }
+        }
+    )
+}
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AndroidAccessibilityTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AndroidAccessibilityTest.kt
index e2ebcd9..5d49476 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AndroidAccessibilityTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/AndroidAccessibilityTest.kt
@@ -79,6 +79,7 @@
 import androidx.compose.material.TopAppBar
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.Add
+import androidx.compose.material.icons.filled.Face
 import androidx.compose.material.icons.filled.MoreVert
 import androidx.compose.material.rememberDrawerState
 import androidx.compose.material.rememberScaffoldState
@@ -141,6 +142,7 @@
 import androidx.compose.ui.test.assertValueEquals
 import androidx.compose.ui.test.isEnabled
 import androidx.compose.ui.test.junit4.createAndroidComposeRule
+import androidx.compose.ui.test.onNodeWithContentDescription
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.onNodeWithText
 import androidx.compose.ui.test.performClick
@@ -1261,6 +1263,119 @@
         assertThat(contentTraverseBefore).isLessThan(bottomAppBarNode.id)
     }
 
+    @Test
+    fun testSortedAccessibilityNodeInfo_clearSemantics() {
+        val content1 = "Face 1"
+        val content2 = "Face 2"
+        val content3 = "Face 3"
+        val contentText = "Content"
+        container.setContent {
+            Scaffold(
+                topBar = {
+                    Row(
+                        horizontalArrangement = Arrangement.SpaceEvenly
+                    ) {
+                        IconButton(onClick = { }) {
+                            Icon(Icons.Default.Face, contentDescription = content1)
+                        }
+                        IconButton(
+                            onClick = { },
+                            modifier = Modifier.clearAndSetSemantics { }
+                        ) {
+                            Icon(Icons.Default.Face, contentDescription = content2)
+                        }
+                        IconButton(onClick = { }) {
+                            Icon(Icons.Default.Face, contentDescription = content3)
+                        }
+                    }
+                },
+                content = { padding -> Text(contentText, modifier = Modifier.padding(padding)) }
+            )
+        }
+        val faceNode1 = rule.onNodeWithContentDescription(content1).fetchSemanticsNode()
+        val faceNode3 = rule.onNodeWithContentDescription(content3).fetchSemanticsNode()
+        val contentNode = rule.onNodeWithText(contentText).fetchSemanticsNode()
+
+        val ANI1 = provider.createAccessibilityNodeInfo(faceNode1.id)
+        val ANI3 = provider.createAccessibilityNodeInfo(faceNode3.id)
+
+        val traverseBefore1 = ANI1?.extras?.getInt(EXTRA_DATA_TEST_TRAVERSALBEFORE_VAL)
+        val traverseBefore3 = ANI3?.extras?.getInt(EXTRA_DATA_TEST_TRAVERSALBEFORE_VAL)
+
+        // On screen we have three faces in a top app bar, and then a content node:
+        //
+        //     Face1       Face2      Face3
+        //               Content
+        //
+
+        // Since `clearAndSetSemantics` is set on Face2, it should not generate any semantics node.
+        rule.onNodeWithTag(content2).assertDoesNotExist()
+
+        // The traversal order for the elements on screen should then be Face1 -> Face3 -> content.
+        assertEquals(traverseBefore1, faceNode3.id)
+        assertEquals(traverseBefore3, contentNode.id)
+    }
+
+    @Test
+    fun testSortedAccessibilityNodeInfo_zOcclusion() {
+        val parentBox1Tag = "ParentForOverlappedChildren"
+        val childOneTag = "OverlappedChildOne"
+        val childTwoTag = "OverlappedChildTwo"
+        val childThreeTag = "ChildThree"
+
+        container.setContent {
+            Column {
+                Box(Modifier.testTag(parentBox1Tag)) {
+                    with(LocalDensity.current) {
+                        BasicText(
+                            "Child One",
+                            Modifier
+                                // A child with larger [zIndex] will be drawn on top of all the
+                                // children with smaller [zIndex]. So child 1 covers child 2.
+                                .zIndex(1f)
+                                .testTag(childOneTag)
+                                .requiredSize(50.toDp())
+                        )
+                        BasicText(
+                            "Child Two",
+                            Modifier
+                                .testTag(childTwoTag)
+                                .requiredSize(50.toDp())
+                        )
+                    }
+                }
+                Box {
+                    BasicText(
+                        "Child Three",
+                        Modifier
+                            .testTag(childThreeTag)
+                    )
+                }
+            }
+        }
+
+        val parentBox1Node = rule.onNodeWithTag(parentBox1Tag).fetchSemanticsNode()
+        val childOneNode = rule.onNodeWithTag(
+            childOneTag, useUnmergedTree = true).fetchSemanticsNode()
+        val childTwoNode = rule.onNodeWithTag(
+            childTwoTag, useUnmergedTree = true).fetchSemanticsNode()
+        val childThreeNode = rule.onNodeWithTag(
+            childThreeTag, useUnmergedTree = true).fetchSemanticsNode()
+
+        val ANI1 = provider.createAccessibilityNodeInfo(childOneNode.id)
+        val traverseBefore1 = ANI1?.extras?.getInt(EXTRA_DATA_TEST_TRAVERSALBEFORE_VAL)
+
+        // Since child 2 is completely covered, it should not generate any ANI. The first box
+        // parent should only have one child (child 1).
+        assertEquals(
+            1, provider.createAccessibilityNodeInfo(parentBox1Node.id)!!.childCount)
+        assertNull(provider.createAccessibilityNodeInfo(childTwoNode.id))
+
+        // The traversal order for the elements on screen should then be child 1 -> child 3,
+        // completely skipping over child 2.
+        assertEquals(traverseBefore1, childThreeNode.id)
+    }
+
     @Composable
     fun ScrollColumn(testTag: String) {
         var counter = 0
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat.android.kt
index 909c4a5..ad8183c 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat.android.kt
@@ -694,9 +694,9 @@
 
         fun depthFirstSearch(currNode: SemanticsNode) {
             // We only want to add children that are either traversalGroups or are
-            // screen reader focusable.
-            if (currNode.isTraversalGroup == true ||
-                isScreenReaderFocusable(currNode)) {
+            // screen reader focusable. The child must also be in the current pruned semantics tree.
+            if ((currNode.isTraversalGroup == true || isScreenReaderFocusable(currNode)) &&
+                currNode.id in currentSemanticsNodes.keys) {
                 geometryList.add(currNode)
             }
             if (currNode.isTraversalGroup == true) {
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/Vector.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/Vector.kt
index 7e68ef8..562f991 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/Vector.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/Vector.kt
@@ -145,11 +145,7 @@
     }
 
     fun DrawScope.draw(alpha: Float, colorFilter: ColorFilter?) {
-        val targetColorFilter = if (colorFilter != null) {
-            colorFilter
-        } else {
-            intrinsicColorFilter
-        }
+        val targetColorFilter = colorFilter ?: intrinsicColorFilter
         // If the content of the vector has changed, or we are drawing a different size
         // update the cached image to ensure we are scaling the vector appropriately
         if (isDirty || previousDrawSize != size) {
@@ -293,17 +289,18 @@
 
     private val pathMeasure: PathMeasure by lazy(LazyThreadSafetyMode.NONE) { PathMeasure() }
 
-    private val parser = PathParser()
-
     private fun updatePath() {
-        parser.clear()
-        path.reset()
-        parser.addPathNodes(pathData).toPath(path)
+        // The call below resets the path
+        pathData.toPath(path)
         updateRenderPath()
     }
 
     private fun updateRenderPath() {
-        renderPath.reset()
+        // Rewind unsets the filltype so reset it here
+        val fillType = renderPath.fillType
+        renderPath.rewind()
+        renderPath.fillType = fillType
+
         if (trimPathStart == DefaultTrimPathStart && trimPathEnd == DefaultTrimPathEnd) {
             renderPath.addPath(path)
         } else {
@@ -366,7 +363,6 @@
     private var isClipPathDirty = true
 
     private var clipPath: Path? = null
-    private var parser: PathParser? = null
 
     override var invalidateListener: (() -> Unit)? = null
         set(value) {
@@ -378,23 +374,14 @@
 
     private fun updateClipPath() {
         if (willClipPath) {
-            var targetParser = parser
-            if (targetParser == null) {
-                targetParser = PathParser()
-                parser = targetParser
-            } else {
-                targetParser.clear()
-            }
-
             var targetClip = clipPath
             if (targetClip == null) {
                 targetClip = Path()
                 clipPath = targetClip
-            } else {
-                targetClip.reset()
             }
 
-            targetParser.addPathNodes(clipPathData).toPath(targetClip)
+            // toPath() will reset the path we send
+            clipPathData.toPath(targetClip)
         }
     }
 
diff --git a/constraintlayout/constraintlayout-compose/src/androidMain/kotlin/androidx/constraintlayout/compose/MotionDragHandler.kt b/constraintlayout/constraintlayout-compose/src/androidMain/kotlin/androidx/constraintlayout/compose/MotionDragHandler.kt
index 3328406..40561ea 100644
--- a/constraintlayout/constraintlayout-compose/src/androidMain/kotlin/androidx/constraintlayout/compose/MotionDragHandler.kt
+++ b/constraintlayout/constraintlayout-compose/src/androidMain/kotlin/androidx/constraintlayout/compose/MotionDragHandler.kt
@@ -24,6 +24,7 @@
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.input.pointer.util.VelocityTracker
+import androidx.compose.ui.input.pointer.util.addPointerInputChange
 import androidx.compose.ui.platform.debugInspectorInfo
 import androidx.compose.ui.unit.Velocity
 import kotlinx.coroutines.channels.Channel
@@ -104,7 +105,7 @@
                 )
             }
         ) { change, dragAmount ->
-            velocityTracker.addPosition(change.uptimeMillis, change.position)
+            velocityTracker.addPointerInputChange(change)
             // As dragging is done, pass the dragAmount to update the MotionLayout progress.
             dragChannel.trySend(MotionDragState.onDrag(dragAmount))
         }
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/motion/utils/StopLogicEngine.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/motion/utils/StopLogicEngine.java
index 0982b43..40f75d0 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/motion/utils/StopLogicEngine.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/motion/utils/StopLogicEngine.java
@@ -34,6 +34,7 @@
     private boolean mBackwards = false;
     private float mStartPosition;
     private float mLastPosition;
+    private float mLastTime;
     @SuppressWarnings("unused")
     private boolean mDone = false;
     private static final float EPSILON = 0.00001f;
@@ -106,14 +107,14 @@
             return mStage2Velocity + (mStage3Velocity - mStage2Velocity) * x / mStage2Duration;
         }
         if (mNumberOfStages == 2) {
-            return mStage2EndPosition;
+            return 0;
         }
         x -= mStage2Duration;
         if (x < mStage3Duration) {
 
             return mStage3Velocity - mStage3Velocity * x / mStage3Duration;
         }
-        return mStage3EndPosition;
+        return 0;
     }
 
     private float calcY(float time) {
@@ -162,13 +163,14 @@
     @Override
     public float getInterpolation(float v) {
         float y = calcY(v);
-        mLastPosition = v;
+        mLastPosition = y;
+        mLastTime = v;
         return mBackwards ? mStartPosition - y : mStartPosition + y;
     }
 
     @Override
     public float getVelocity() {
-        return mBackwards ? -getVelocity(mLastPosition) : getVelocity(mLastPosition);
+        return mBackwards ? -getVelocity(mLastTime) : getVelocity(mLastTime);
     }
 
     @Override
diff --git a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/motion/MotionBasicTest.java b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/motion/MotionBasicTest.java
index b9dd2fd..857999a 100644
--- a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/motion/MotionBasicTest.java
+++ b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/motion/MotionBasicTest.java
@@ -16,6 +16,7 @@
 package androidx.constraintlayout.core.motion;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import androidx.constraintlayout.core.motion.utils.CurveFit;
 import androidx.constraintlayout.core.motion.utils.Easing;
@@ -214,6 +215,7 @@
             float pos = breakLogic.getInterpolation(time);
             ret[i] = pos;
         }
+        assertTrue(breakLogic.isStopped());
         return ret;
     }
 
diff --git a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/motion/StopLogicTest.java b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/motion/StopLogicTest.java
index 760085c..92f6313 100644
--- a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/motion/StopLogicTest.java
+++ b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/motion/StopLogicTest.java
@@ -40,6 +40,7 @@
         float damping = 50f;
         float stopThreshold = 0f;
         int springBoundary = 0;
+        boolean expectStopped = false; // Doesn't make it to 1.0f in the given time
         stop.springConfig(position,
                 destination,
                 currentVelocity,
@@ -65,7 +66,7 @@
                 + "|                                             *************  |\n"
                 + "|                                                           *| 0.885\n"
                 + "0.0                                                      0.885\n";
-        assertEquals(expect, verify(stop, position, maxTime));
+        assertEquals(expect, verify(stop, position, maxTime, expectStopped));
     }
 
     @Test
@@ -78,6 +79,7 @@
         float maxTime = 0.9f;
         float maxAcceleration = 3.2f;
         float maxVelocity = 3.2f;
+        boolean expectStopped = true;
         stop.config(position, destination, currentVelocity, maxTime, maxAcceleration, maxVelocity);
         System.out.println(stop.debug("check1", 0));
         String expect = ""
@@ -97,7 +99,7 @@
                 + "|          *************************                         |\n"
                 + "|                                   *********************** *| 1.0\n"
                 + "0.0                                                      0.885\n";
-        assertEquals(expect, verify(stop, position, maxTime));
+        assertEquals(expect, verify(stop, position, maxTime, expectStopped));
     }
 
     @Test
@@ -110,6 +112,7 @@
         float maxTime = 0.9f;
         float maxAcceleration = 3.2f;
         float maxVelocity = 3.2f;
+        boolean expectStopped = true;
         stop.config(position, destination, currentVelocity, maxTime, maxAcceleration, maxVelocity);
         System.out.println(stop.debug("check1", 0));
         String expect = ""
@@ -129,7 +132,7 @@
                 + "|              **************                                |\n"
                 + "|                            ****************************** *| 1.0\n"
                 + "0.0                                                      0.885\n";
-        assertEquals(expect, verify(stop, position, maxTime));
+        assertEquals(expect, verify(stop, position, maxTime, expectStopped));
     }
 
     @Test
@@ -141,6 +144,7 @@
         float maxTime = 0.9f;
         float maxAcceleration = 3.2f;
         float maxVelocity = 3.2f;
+        boolean expectStopped = true;
         stop.config(position, destination, currentVelocity, maxTime, maxAcceleration, maxVelocity);
         System.out.println(stop.debug("check1", 0));
         String expect = ""
@@ -160,7 +164,7 @@
                 + "|  ******                                                    |\n"
                 + "|        ************************************************** *| 1.0\n"
                 + "0.0                                                      0.885\n";
-        assertEquals(expect, verify(stop, position, maxTime));
+        assertEquals(expect, verify(stop, position, maxTime, expectStopped));
     }
 
     @Test
@@ -172,6 +176,7 @@
         float maxTime = 0.9f;
         float maxAcceleration = 3.2f;
         float maxVelocity = 1.2f;
+        boolean expectStopped = false; // Doesn't make it to 1f in the given time
         stop.config(position, destination, currentVelocity, maxTime, maxAcceleration, maxVelocity);
         System.out.println(stop.debug("check1", 0));
         String expect = ""
@@ -191,7 +196,7 @@
                 + "|                                               ***********  |\n"
                 + "|                                                           *| 0.997\n"
                 + "0.0                                                      0.885\n";
-        assertEquals(expect, verify(stop, position, maxTime));
+        assertEquals(expect, verify(stop, position, maxTime, expectStopped));
     }
 
     @Test
@@ -203,6 +208,7 @@
         float maxTime = 0.9f;
         float maxAcceleration = 3.2f;
         float maxVelocity = 3.2f;
+        boolean expectStopped = true;
         stop.config(position, destination, currentVelocity, maxTime, maxAcceleration, maxVelocity);
         System.out.println(stop.debug("check1", 0));
         String expect = ""
@@ -222,7 +228,7 @@
                 + "|                                            **************  |\n"
                 + "|                                                           *| 1.0\n"
                 + "0.0                                                      0.885\n";
-        assertEquals(expect, verify(stop, position, maxTime));
+        assertEquals(expect, verify(stop, position, maxTime, expectStopped));
     }
 
     @Test
@@ -234,6 +240,7 @@
         float maxTime = 0.9f;
         float maxAcceleration = 5.2f;
         float maxVelocity = 1.2f;
+        boolean expectStopped = true;
         stop.config(position, destination, currentVelocity, maxTime, maxAcceleration, maxVelocity);
         System.out.println(stop.debug("check1", 0));
         String expect = ""
@@ -253,10 +260,13 @@
                 + "|                                          **********        |\n"
                 + "|                                                    ****** *| 1.0\n"
                 + "0.0                                                      0.885\n";
-        assertEquals(expect, verify(stop, position, maxTime));
+        assertEquals(expect, verify(stop, position, maxTime, expectStopped));
     }
 
-    private static String verify(StopEngine stop, float position, float maxTime) {
+    private static String verify(StopEngine stop,
+            float position,
+            float maxTime,
+            boolean expectStopped) {
         float p = stop.getInterpolation(0);
         assertEquals(p, position, 0.0001);
         int count = 60;
@@ -272,6 +282,7 @@
         }
         String ret = textDraw(count, count / 4, x, y, false);
         System.out.println(ret);
+        assertEquals(expectStopped, stop.isStopped());
         return ret;
     }
 
diff --git a/docs-public/build.gradle b/docs-public/build.gradle
index 4545228..569d1ac 100644
--- a/docs-public/build.gradle
+++ b/docs-public/build.gradle
@@ -30,14 +30,14 @@
     docs("androidx.asynclayoutinflater:asynclayoutinflater:1.1.0-alpha01")
     docs("androidx.asynclayoutinflater:asynclayoutinflater-appcompat:1.1.0-alpha01")
     docs("androidx.autofill:autofill:1.2.0-beta01")
-    docs("androidx.benchmark:benchmark-common:1.2.0-alpha13")
-    docs("androidx.benchmark:benchmark-junit4:1.2.0-alpha13")
-    docs("androidx.benchmark:benchmark-macro:1.2.0-alpha13")
-    docs("androidx.benchmark:benchmark-macro-junit4:1.2.0-alpha13")
+    docs("androidx.benchmark:benchmark-common:1.2.0-alpha14")
+    docs("androidx.benchmark:benchmark-junit4:1.2.0-alpha14")
+    docs("androidx.benchmark:benchmark-macro:1.2.0-alpha14")
+    docs("androidx.benchmark:benchmark-macro-junit4:1.2.0-alpha14")
     docs("androidx.biometric:biometric:1.2.0-alpha05")
     docs("androidx.biometric:biometric-ktx:1.2.0-alpha05")
     samples("androidx.biometric:biometric-ktx-samples:1.2.0-alpha05")
-    docs("androidx.browser:browser:1.5.0")
+    docs("androidx.browser:browser:1.6.0-alpha01")
     docs("androidx.camera:camera-camera2:1.3.0-alpha06")
     docs("androidx.camera:camera-core:1.3.0-alpha06")
     docs("androidx.camera:camera-extensions:1.3.0-alpha06")
@@ -252,18 +252,18 @@
     docs("androidx.navigation:navigation-testing:2.6.0-beta01")
     docs("androidx.navigation:navigation-ui:2.6.0-beta01")
     docs("androidx.navigation:navigation-ui-ktx:2.6.0-beta01")
-    docs("androidx.paging:paging-common:3.2.0-alpha04")
-    docs("androidx.paging:paging-common-ktx:3.2.0-alpha04")
-    docs("androidx.paging:paging-compose:1.0.0-alpha18")
-    samples("androidx.paging:paging-compose-samples:3.0.0-alpha08")
-    docs("androidx.paging:paging-guava:3.2.0-alpha04")
-    docs("androidx.paging:paging-runtime:3.2.0-alpha04")
-    docs("androidx.paging:paging-runtime-ktx:3.2.0-alpha04")
-    docs("androidx.paging:paging-rxjava2:3.2.0-alpha04")
-    docs("androidx.paging:paging-rxjava2-ktx:3.2.0-alpha04")
-    docs("androidx.paging:paging-rxjava3:3.2.0-alpha04")
-    samples("androidx.paging:paging-samples:3.2.0-alpha04")
-    docs("androidx.paging:paging-testing:3.2.0-alpha04")
+    docs("androidx.paging:paging-common:3.2.0-alpha05")
+    docs("androidx.paging:paging-common-ktx:3.2.0-alpha05")
+    docs("androidx.paging:paging-compose:1.0.0-alpha19")
+    samples("androidx.paging:paging-compose-samples:1.0.0-alpha19")
+    docs("androidx.paging:paging-guava:3.2.0-alpha05")
+    docs("androidx.paging:paging-runtime:3.2.0-alpha05")
+    docs("androidx.paging:paging-runtime-ktx:3.2.0-alpha05")
+    docs("androidx.paging:paging-rxjava2:3.2.0-alpha05")
+    docs("androidx.paging:paging-rxjava2-ktx:3.2.0-alpha05")
+    docs("androidx.paging:paging-rxjava3:3.2.0-alpha05")
+    samples("androidx.paging:paging-samples:3.2.0-alpha05")
+    docs("androidx.paging:paging-testing:3.2.0-alpha05")
     docs("androidx.palette:palette:1.0.0")
     docs("androidx.palette:palette-ktx:1.0.0")
     docs("androidx.percentlayout:percentlayout:1.0.1")
@@ -339,10 +339,10 @@
     docs("androidx.test.services:storage:1.5.0-alpha01")
     docs("androidx.test.uiautomator:uiautomator:2.3.0-alpha03")
     docs("androidx.textclassifier:textclassifier:1.0.0-alpha04")
-    docs("androidx.tracing:tracing:1.2.0-beta03")
-    docs("androidx.tracing:tracing-ktx:1.2.0-beta03")
-    docs("androidx.tracing:tracing-perfetto:1.0.0-alpha14")
-    docs("androidx.tracing:tracing-perfetto-common:1.0.0-alpha14")
+    docs("androidx.tracing:tracing:1.2.0-beta04")
+    docs("androidx.tracing:tracing-ktx:1.2.0-beta04")
+    docs("androidx.tracing:tracing-perfetto:1.0.0-alpha15")
+    docs("androidx.tracing:tracing-perfetto-common:1.0.0-alpha15")
     docs("androidx.transition:transition:1.4.1")
     docs("androidx.transition:transition-ktx:1.4.1")
     docs("androidx.tv:tv-foundation:1.0.0-alpha06")
diff --git a/fragment/CHANGELOG.md b/fragment/CHANGELOG.md
new file mode 100644
index 0000000..55e45de
--- /dev/null
+++ b/fragment/CHANGELOG.md
@@ -0,0 +1,11 @@
+# Log for changes in the Fragment library
+#
+# `Added`: for new features
+# `Changed`: for changes in existing functionality
+# `Deprecated`: for soon to be removed functionality
+# `Removed`: for now removed feature
+# `Fixed`: for any bug fixes
+# `Security`: in case of vulnerabilities
+
+# Unreleased
+
diff --git a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/StrictModeTest.kt b/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/StrictModeTest.kt
index a4ccfdc..6a3e51f 100644
--- a/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/StrictModeTest.kt
+++ b/glance/glance-appwidget/src/androidAndroidTest/kotlin/androidx/glance/appwidget/StrictModeTest.kt
@@ -63,8 +63,10 @@
             StrictMode.VmPolicy.Builder()
                 .detectAll()
                 .penaltyListener(executor) {
+                    Log.e("StrictModeTest", "Logging violation:")
+                    Log.e("StrictModeTest", "$it")
+                    Log.e("StrictModeTest", "Stack trace: ${it.stackTrace}", it.cause)
                     fail("Received violation: $it")
-                    Log.e("WIDGET", "$it")
                 }.build()
         )
     }
@@ -166,4 +168,4 @@
         Truth.assertThat(CallbackTest.latch.await(5, TimeUnit.SECONDS)).isTrue()
         Truth.assertThat(CallbackTest.received.get()).containsExactly(1, 2)
     }
-}
+}
\ No newline at end of file
diff --git a/graphics/graphics-core/src/androidTest/java/androidx/graphics/lowlatency/SingleBufferedCanvasRendererV29Test.kt b/graphics/graphics-core/src/androidTest/java/androidx/graphics/lowlatency/SingleBufferedCanvasRendererV29Test.kt
index 5ecc43e..60cf00d 100644
--- a/graphics/graphics-core/src/androidTest/java/androidx/graphics/lowlatency/SingleBufferedCanvasRendererV29Test.kt
+++ b/graphics/graphics-core/src/androidTest/java/androidx/graphics/lowlatency/SingleBufferedCanvasRendererV29Test.kt
@@ -41,7 +41,6 @@
 import org.junit.Assert.assertFalse
 import org.junit.Assert.assertNotNull
 import org.junit.Assert.assertTrue
-import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
 
@@ -229,7 +228,11 @@
                     bufferReadyLatch.countDown()
                     drawCancelledRequestLatch?.countDown()
                 }
-            })
+            }).apply {
+                // See: b/236394768 Workaround for ANGLE issue where FBOs with HardwareBuffer
+                // attachments are not executed until a glReadPixels call is made
+                forceFlush.set(true)
+            }
         try {
             renderer.render(Color.RED)
             assertTrue(initialDrawLatch.await(3000, TimeUnit.MILLISECONDS))
@@ -280,7 +283,11 @@
                 ) {
                     // NO-OP
                 }
-            })
+            }).apply {
+                // See: b/236394768 Workaround for ANGLE issue where FBOs with HardwareBuffer
+                // attachments are not executed until a glReadPixels call is made
+                forceFlush.set(true)
+            }
         try {
             val latch = CountDownLatch(1)
             renderer.release(true) {
@@ -330,7 +337,11 @@
                     syncFenceCompat?.awaitForever()
                     drawLatch?.countDown()
                 }
-            })
+            }).apply {
+                // See: b/236394768 Workaround for ANGLE issue where FBOs with HardwareBuffer
+                // attachments are not executed until a glReadPixels call is made
+                forceFlush.set(true)
+            }
         try {
             renderer.isVisible = false
             drawLatch = CountDownLatch(1)
@@ -353,7 +364,6 @@
         }
     }
 
-    @Ignore("b/274099885")
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.Q)
     @Test
     fun testBatchedRenders() {
@@ -378,7 +388,11 @@
                 ) {
                     // NO-OP
                 }
-            })
+            }).apply {
+                // See: b/236394768 Workaround for ANGLE issue where FBOs with HardwareBuffer
+                // attachments are not executed until a glReadPixels call is made
+                forceFlush.set(true)
+            }
         try {
             renderer.render(Color.RED)
             renderer.render(Color.BLUE)
@@ -431,7 +445,11 @@
                     buffer = hardwareBuffer
                     renderLatch.countDown()
                 }
-            })
+            }).apply {
+                // See: b/236394768 Workaround for ANGLE issue where FBOs with HardwareBuffer
+                // attachments are not executed until a glReadPixels call is made
+                forceFlush.set(true)
+            }
         try {
             renderer.render(0)
             assertTrue(renderLatch.await(3000, TimeUnit.MILLISECONDS))
diff --git a/graphics/graphics-core/src/androidTest/java/androidx/graphics/opengl/GLRendererTest.kt b/graphics/graphics-core/src/androidTest/java/androidx/graphics/opengl/GLRendererTest.kt
index a03d42d..43f1de6 100644
--- a/graphics/graphics-core/src/androidTest/java/androidx/graphics/opengl/GLRendererTest.kt
+++ b/graphics/graphics-core/src/androidTest/java/androidx/graphics/opengl/GLRendererTest.kt
@@ -987,6 +987,8 @@
                     width.toFloat(),
                     height.toFloat()
                 )
+                // See: b/236394768 Workaround for ANGLE issue where FBOs with HardwareBuffer
+                GLES20.glFinish()
                 supportsFence = eglManager.supportsNativeAndroidFence()
                 quadRenderer.release()
                 surface.release()
@@ -1125,6 +1127,8 @@
                     width.toFloat(),
                     height.toFloat()
                 )
+                // See: b/236394768 Workaround for ANGLE issue where FBOs with HardwareBuffer
+                GLES20.glFinish()
                 supportsFence = eglManager.supportsNativeAndroidFence()
                 quadRenderer.release()
                 deleteTexture(texId)
diff --git a/graphics/integration-tests/testapp-compose/src/main/java/androidx/graphics/shapes/testcompose/ShapeEditor.kt b/graphics/integration-tests/testapp-compose/src/main/java/androidx/graphics/shapes/testcompose/ShapeEditor.kt
index c739eb8..7df2d10 100644
--- a/graphics/integration-tests/testapp-compose/src/main/java/androidx/graphics/shapes/testcompose/ShapeEditor.kt
+++ b/graphics/integration-tests/testapp-compose/src/main/java/androidx/graphics/shapes/testcompose/ShapeEditor.kt
@@ -53,6 +53,7 @@
 import androidx.graphics.shapes.star
 import kotlin.math.cos
 import kotlin.math.max
+import kotlin.math.min
 import kotlin.math.roundToInt
 import kotlin.math.sin
 
@@ -199,7 +200,7 @@
                         PointF(sx, sy),
                         PointF(-sx, sy),
                     ),
-                    rounding = CornerRounding(this.roundness.value, this.smooth.value),
+                    rounding = CornerRounding(min(sx, sy), this.smooth.value),
                     center = PointZero
                 )
             },
diff --git a/lifecycle/lifecycle-runtime-compose/api/current.txt b/lifecycle/lifecycle-runtime-compose/api/current.txt
index 0686666..5b19f2b 100644
--- a/lifecycle/lifecycle-runtime-compose/api/current.txt
+++ b/lifecycle/lifecycle-runtime-compose/api/current.txt
@@ -8,6 +8,10 @@
     method @androidx.compose.runtime.Composable public static <T> androidx.compose.runtime.State<T> collectAsStateWithLifecycle(kotlinx.coroutines.flow.Flow<? extends T>, T initialValue, androidx.lifecycle.Lifecycle lifecycle, optional androidx.lifecycle.Lifecycle.State minActiveState, optional kotlin.coroutines.CoroutineContext context);
   }
 
+  public final class LifecycleEffectKt {
+    method @androidx.compose.runtime.Composable public static void LifecycleEventEffect(androidx.lifecycle.Lifecycle.Event event, optional androidx.lifecycle.LifecycleOwner lifecycleOwner, kotlin.jvm.functions.Function0<kotlin.Unit> onEvent);
+  }
+
   public final class LifecycleExtKt {
     method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.lifecycle.Lifecycle.State> currentStateAsState(androidx.lifecycle.Lifecycle);
   }
diff --git a/lifecycle/lifecycle-runtime-compose/api/public_plus_experimental_current.txt b/lifecycle/lifecycle-runtime-compose/api/public_plus_experimental_current.txt
index 0686666..5b19f2b 100644
--- a/lifecycle/lifecycle-runtime-compose/api/public_plus_experimental_current.txt
+++ b/lifecycle/lifecycle-runtime-compose/api/public_plus_experimental_current.txt
@@ -8,6 +8,10 @@
     method @androidx.compose.runtime.Composable public static <T> androidx.compose.runtime.State<T> collectAsStateWithLifecycle(kotlinx.coroutines.flow.Flow<? extends T>, T initialValue, androidx.lifecycle.Lifecycle lifecycle, optional androidx.lifecycle.Lifecycle.State minActiveState, optional kotlin.coroutines.CoroutineContext context);
   }
 
+  public final class LifecycleEffectKt {
+    method @androidx.compose.runtime.Composable public static void LifecycleEventEffect(androidx.lifecycle.Lifecycle.Event event, optional androidx.lifecycle.LifecycleOwner lifecycleOwner, kotlin.jvm.functions.Function0<kotlin.Unit> onEvent);
+  }
+
   public final class LifecycleExtKt {
     method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.lifecycle.Lifecycle.State> currentStateAsState(androidx.lifecycle.Lifecycle);
   }
diff --git a/lifecycle/lifecycle-runtime-compose/api/restricted_current.txt b/lifecycle/lifecycle-runtime-compose/api/restricted_current.txt
index 0686666..5b19f2b 100644
--- a/lifecycle/lifecycle-runtime-compose/api/restricted_current.txt
+++ b/lifecycle/lifecycle-runtime-compose/api/restricted_current.txt
@@ -8,6 +8,10 @@
     method @androidx.compose.runtime.Composable public static <T> androidx.compose.runtime.State<T> collectAsStateWithLifecycle(kotlinx.coroutines.flow.Flow<? extends T>, T initialValue, androidx.lifecycle.Lifecycle lifecycle, optional androidx.lifecycle.Lifecycle.State minActiveState, optional kotlin.coroutines.CoroutineContext context);
   }
 
+  public final class LifecycleEffectKt {
+    method @androidx.compose.runtime.Composable public static void LifecycleEventEffect(androidx.lifecycle.Lifecycle.Event event, optional androidx.lifecycle.LifecycleOwner lifecycleOwner, kotlin.jvm.functions.Function0<kotlin.Unit> onEvent);
+  }
+
   public final class LifecycleExtKt {
     method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.lifecycle.Lifecycle.State> currentStateAsState(androidx.lifecycle.Lifecycle);
   }
diff --git a/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/CollectAsStateWithLifecycleTests.kt b/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/CollectAsStateWithLifecycleTests.kt
index 54b6553c..e9387cd 100644
--- a/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/CollectAsStateWithLifecycleTests.kt
+++ b/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/CollectAsStateWithLifecycleTests.kt
@@ -19,6 +19,8 @@
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.testing.TestLifecycleOwner
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableSharedFlow
@@ -27,7 +29,10 @@
 import kotlinx.coroutines.runBlocking
 import org.junit.Rule
 import org.junit.Test
+import org.junit.runner.RunWith
 
+@MediumTest
+@RunWith(AndroidJUnit4::class)
 class CollectAsStateWithLifecycleTests {
 
     @get:Rule
diff --git a/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/LifecycleEffectTest.kt b/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/LifecycleEffectTest.kt
new file mode 100644
index 0000000..3d7e9fe
--- /dev/null
+++ b/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/LifecycleEffectTest.kt
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.lifecycle.compose
+
+import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.ui.platform.LocalLifecycleOwner
+import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.testing.TestLifecycleOwner
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.LargeTest
+import com.google.common.truth.Truth.assertWithMessage
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
+import kotlinx.coroutines.test.setMain
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@LargeTest
+@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
+@RunWith(AndroidJUnit4::class)
+class LifecycleEffectTest {
+
+    private val dispatcher = UnconfinedTestDispatcher()
+    private lateinit var lifecycleOwner: TestLifecycleOwner
+
+    @get:Rule
+    val composeTestRule = createComposeRule()
+
+    @Before
+    fun setup() {
+        lifecycleOwner = TestLifecycleOwner(coroutineDispatcher = dispatcher)
+        Dispatchers.setMain(dispatcher)
+    }
+
+    @Test
+    fun lifecycleEventEffectTest_noEvent() {
+        var stopCount = 0
+
+        composeTestRule.waitForIdle()
+        composeTestRule.setContent {
+            CompositionLocalProvider(LocalLifecycleOwner provides lifecycleOwner) {
+                LifecycleEventEffect(Lifecycle.Event.ON_STOP) {
+                    stopCount++
+                }
+            }
+        }
+
+        composeTestRule.runOnIdle {
+            assertWithMessage("Lifecycle should not have been stopped")
+                .that(stopCount)
+                .isEqualTo(0)
+        }
+    }
+
+    @Test
+    fun lifecycleEventEffectTest_localLifecycleOwner() {
+        val expectedEvent = Lifecycle.Event.ON_STOP
+        var stopCount = 0
+
+        composeTestRule.waitForIdle()
+        composeTestRule.setContent {
+            CompositionLocalProvider(LocalLifecycleOwner provides lifecycleOwner) {
+                LifecycleEventEffect(expectedEvent) {
+                    stopCount++
+                }
+            }
+        }
+
+        composeTestRule.runOnIdle {
+            lifecycleOwner.handleLifecycleEvent(expectedEvent)
+            assertWithMessage("Lifecycle should have been stopped")
+                .that(stopCount)
+                .isEqualTo(1)
+        }
+    }
+
+    @Test
+    fun lifecycleEventEffectTest_customLifecycleOwner() {
+        val expectedEvent = Lifecycle.Event.ON_STOP
+        var stopCount = 0
+
+        composeTestRule.waitForIdle()
+        composeTestRule.setContent {
+            LifecycleEventEffect(expectedEvent, lifecycleOwner) {
+                stopCount++
+            }
+        }
+
+        composeTestRule.runOnIdle {
+            lifecycleOwner.handleLifecycleEvent(expectedEvent)
+            assertWithMessage("Lifecycle should have been stopped")
+                .that(stopCount)
+                .isEqualTo(1)
+        }
+    }
+}
\ No newline at end of file
diff --git a/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/LifecycleExtTest.kt b/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/LifecycleExtTest.kt
index 255d06a..a9e7d4e 100644
--- a/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/LifecycleExtTest.kt
+++ b/lifecycle/lifecycle-runtime-compose/src/androidTest/java/androidx/lifecycle/compose/LifecycleExtTest.kt
@@ -19,14 +19,16 @@
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.testing.TestLifecycleOwner
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.test.UnconfinedTestDispatcher
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
 
-@RunWith(JUnit4::class)
+@MediumTest
+@RunWith(AndroidJUnit4::class)
 class LifecycleExtTest {
 
     @OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
@@ -52,9 +54,12 @@
             assertThat(realStateValue).isEqualTo(Lifecycle.State.INITIALIZED)
         }
 
+        // TODO(b/280362188): commenting this portion out until bug is fixed
+        /*
         lifecycleOwner.currentState = Lifecycle.State.RESUMED
         rule.runOnIdle {
             assertThat(realStateValue).isEqualTo(Lifecycle.State.RESUMED)
         }
+        */
     }
 }
\ No newline at end of file
diff --git a/lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/LifecycleEffect.kt b/lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/LifecycleEffect.kt
new file mode 100644
index 0000000..c9e47ae
--- /dev/null
+++ b/lifecycle/lifecycle-runtime-compose/src/main/java/androidx/lifecycle/compose/LifecycleEffect.kt
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.lifecycle.compose
+
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.DisposableEffect
+import androidx.compose.runtime.MutableState
+import androidx.compose.runtime.State
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.rememberUpdatedState
+import androidx.compose.ui.platform.LocalLifecycleOwner
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleEventObserver
+import androidx.lifecycle.LifecycleOwner
+
+/**
+ * Schedule an effect to run when the [Lifecycle] receives a specific [Lifecycle.Event].
+ *
+ * Using a [LifecycleEventObserver] to listen for when [LifecycleEventEffect] enters
+ * the composition, [onEvent] will be launched when receiving the specified [event].
+ *
+ * This function should **not** be used to listen for [Lifecycle.Event.ON_DESTROY] because
+ * Compose stops recomposing after receiving a [Lifecycle.Event.ON_STOP] and will never be
+ * aware of an ON_DESTROY to launch [onEvent].
+ *
+ * This function should also **not** be used to launch tasks in response to callback
+ * events by way of storing callback data as a [Lifecycle.State] in a [MutableState].
+ * Instead, see [currentStateAsState] to obtain a [State<Lifecycle.State>][State]
+ * that may be used to launch jobs in response to state changes.
+ *
+ * @param event The [Lifecycle.Event] to listen for
+ * @param lifecycleOwner The lifecycle owner to attach an observer
+ * @param onEvent The effect to be launched when we receive an [event] callback
+ *
+ * @throws IllegalArgumentException if attempting to listen for [Lifecycle.Event.ON_DESTROY]
+ */
+@Composable
+fun LifecycleEventEffect(
+    event: Lifecycle.Event,
+    lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current,
+    onEvent: () -> Unit
+) {
+    if (event == Lifecycle.Event.ON_DESTROY) {
+        throw IllegalArgumentException("LifecycleEventEffect cannot be used to " +
+            "listen for Lifecycle.Event.ON_DESTROY, since Compose disposes of the " +
+            "composition before ON_DESTROY observers are invoked.")
+    }
+
+    // Safely update the current `onEvent` lambda when a new one is provided
+    val currentOnEvent by rememberUpdatedState(onEvent)
+    DisposableEffect(lifecycleOwner) {
+        val observer = LifecycleEventObserver { _, e ->
+            if (e == event) {
+                currentOnEvent()
+            }
+        }
+
+        lifecycleOwner.lifecycle.addObserver(observer)
+
+        onDispose {
+            lifecycleOwner.lifecycle.removeObserver(observer)
+        }
+    }
+}
\ No newline at end of file
diff --git a/lint-checks/src/main/java/androidx/com/android/tools/idea/lang/aidl/AidlLanguage.java b/lint-checks/src/main/java/androidx/com/android/tools/idea/lang/aidl/AidlLanguage.java
index 7c2d47d..0a10e27 100644
--- a/lint-checks/src/main/java/androidx/com/android/tools/idea/lang/aidl/AidlLanguage.java
+++ b/lint-checks/src/main/java/androidx/com/android/tools/idea/lang/aidl/AidlLanguage.java
@@ -22,14 +22,20 @@
  * Android IDL Language.
  */
 public class AidlLanguage extends Language {
+  private static final Object INSTANCE_LOCK = new Object();
+
   public static final Language INSTANCE = getOrCreate();
 
   private static Language getOrCreate() {
-    Language lang = Language.findLanguageByID(ID);
-    if (lang != null) {
-      return lang;
+    // The Language class is not thread-safe, so this is a best-effort to avoid a race condition
+    // during our own access across multiple lint worker threads.
+    synchronized (INSTANCE_LOCK) {
+      Language lang = Language.findLanguageByID(ID);
+      if (lang != null) {
+        return lang;
+      }
+      return new AidlLanguage();
     }
-    return new AidlLanguage();
   }
 
   @NonNls private static final String ID = "AIDL";
diff --git a/navigation/CHANGELOG.md b/navigation/CHANGELOG.md
new file mode 100644
index 0000000..0f9c1e1
--- /dev/null
+++ b/navigation/CHANGELOG.md
@@ -0,0 +1,11 @@
+# Log for changes in the Navigation library
+#
+# `Added`: for new features
+# `Changed`: for changes in existing functionality
+# `Deprecated`: for soon to be removed functionality
+# `Removed`: for now removed feature
+# `Fixed`: for any bug fixes
+# `Security`: in case of vulnerabilities
+
+# Unreleased
+
diff --git a/navigation/navigation-dynamic-features-runtime/src/androidTest/java/androidx/navigation/dynamicfeatures/DynamicActivityNavigatorTest.kt b/navigation/navigation-dynamic-features-runtime/src/androidTest/java/androidx/navigation/dynamicfeatures/DynamicActivityNavigatorTest.kt
index 4dc1246..a8e6f2d 100644
--- a/navigation/navigation-dynamic-features-runtime/src/androidTest/java/androidx/navigation/dynamicfeatures/DynamicActivityNavigatorTest.kt
+++ b/navigation/navigation-dynamic-features-runtime/src/androidTest/java/androidx/navigation/dynamicfeatures/DynamicActivityNavigatorTest.kt
@@ -31,7 +31,6 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.Mockito.mock
-/* ktlint-disable no-unused-imports */ // https://github.com/pinterest/ktlint/issues/937
 import org.mockito.Mockito.`when` as mockWhen
 
 /* ktlint-enable unused-imports */
diff --git a/navigation/navigation-dynamic-features-runtime/src/test/java/androidx/navigation/dynamicfeatures/DynamicInstallManagerTest.kt b/navigation/navigation-dynamic-features-runtime/src/test/java/androidx/navigation/dynamicfeatures/DynamicInstallManagerTest.kt
index deda0ab..9e0ac66 100644
--- a/navigation/navigation-dynamic-features-runtime/src/test/java/androidx/navigation/dynamicfeatures/DynamicInstallManagerTest.kt
+++ b/navigation/navigation-dynamic-features-runtime/src/test/java/androidx/navigation/dynamicfeatures/DynamicInstallManagerTest.kt
@@ -22,11 +22,9 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
-/* ktlint-disable no-unused-imports */ // https://github.com/pinterest/ktlint/issues/937
-import org.mockito.Mockito.`when` as mockWhen
-/* ktlint-enable unused-imports */
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.spy
+import org.mockito.Mockito.`when` as mockWhen
 
 @RunWith(JUnit4::class)
 public class DynamicInstallManagerTest {
diff --git a/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt b/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
index dcc0f5c..8b35f7b 100644
--- a/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
+++ b/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
@@ -610,6 +610,23 @@
 
     @UiThreadTest
     @Test
+    fun testNavigateNullGraph() {
+        val navController = createNavController()
+        val deepLinkRequest = NavDeepLinkRequest.Builder.fromUri(
+            Uri.parse("android-app://androidx.navigation.test/destination")
+        ).build()
+
+        val expected = assertFailsWith<IllegalArgumentException> {
+            navController.navigate(deepLinkRequest)
+        }
+        assertThat(expected.message).isEqualTo(
+            "Cannot navigate to $deepLinkRequest. Navigation graph has not " +
+                "been set for NavController $navController."
+        )
+    }
+
+    @UiThreadTest
+    @Test
     fun testInvalidNavigateViaDeepLink() {
         val navController = createNavController()
         navController.setGraph(R.navigation.nav_simple)
diff --git a/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt b/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
index 8486793..be6eafb 100644
--- a/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
+++ b/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
@@ -1772,6 +1772,10 @@
         navOptions: NavOptions?,
         navigatorExtras: Navigator.Extras?
     ) {
+        requireNotNull(_graph) {
+            "Cannot navigate to $request. Navigation graph has not been set for " +
+                "NavController $this."
+        }
         val deepLinkMatch = _graph!!.matchDeepLink(request)
         if (deepLinkMatch != null) {
             val destination = deepLinkMatch.destination
diff --git a/paging/paging-common/src/main/kotlin/androidx/paging/PagingData.kt b/paging/paging-common/src/main/kotlin/androidx/paging/PagingData.kt
index c14bb57..8ff3d51 100644
--- a/paging/paging-common/src/main/kotlin/androidx/paging/PagingData.kt
+++ b/paging/paging-common/src/main/kotlin/androidx/paging/PagingData.kt
@@ -115,6 +115,15 @@
             ),
             uiReceiver = NOOP_UI_RECEIVER,
             hintReceiver = NOOP_HINT_RECEIVER,
+            cachedPageEvent = {
+                PageEvent.Insert.Refresh(
+                    pages = listOf(TransformablePage(0, data)),
+                    placeholdersBefore = 0,
+                    placeholdersAfter = 0,
+                    sourceLoadStates = LoadStates.IDLE,
+                    mediatorLoadStates = null
+                )
+            }
         )
 
         /**
@@ -143,6 +152,15 @@
             ),
             uiReceiver = NOOP_UI_RECEIVER,
             hintReceiver = NOOP_HINT_RECEIVER,
+            cachedPageEvent = {
+                PageEvent.Insert.Refresh(
+                    pages = listOf(TransformablePage(0, data)),
+                    placeholdersBefore = 0,
+                    placeholdersAfter = 0,
+                    sourceLoadStates = sourceLoadStates,
+                    mediatorLoadStates = mediatorLoadStates
+                )
+            }
         )
     }
 
diff --git a/paging/paging-compose/build.gradle b/paging/paging-compose/build.gradle
index 918280d..d31e914 100644
--- a/paging/paging-compose/build.gradle
+++ b/paging/paging-compose/build.gradle
@@ -32,6 +32,7 @@
     api("androidx.compose.runtime:runtime:1.2.1")
 
     androidTestImplementation(projectOrArtifact(":compose:ui:ui-test-junit4"))
+    androidTestImplementation projectOrArtifact(":compose:ui:ui-tooling")
     androidTestImplementation(project(":compose:test-utils"))
     androidTestImplementation(projectOrArtifact(":internal-testutils-paging"))
     androidTestImplementation(libs.testRunner)
diff --git a/paging/paging-compose/samples/build.gradle b/paging/paging-compose/samples/build.gradle
index 243f2c3..6fd15b4 100644
--- a/paging/paging-compose/samples/build.gradle
+++ b/paging/paging-compose/samples/build.gradle
@@ -29,6 +29,7 @@
     compileOnly(projectOrArtifact(":annotation:annotation-sampled"))
     implementation(projectOrArtifact(":compose:foundation:foundation"))
     implementation(projectOrArtifact(":compose:material:material"))
+    implementation projectOrArtifact(":compose:ui:ui-tooling")
     implementation(project(":paging:paging-compose"))
 }
 
diff --git a/paging/paging-compose/samples/src/main/java/androidx/paging/compose/samples/PagingPreviewSample.kt b/paging/paging-compose/samples/src/main/java/androidx/paging/compose/samples/PagingPreviewSample.kt
new file mode 100644
index 0000000..c05f075
--- /dev/null
+++ b/paging/paging-compose/samples/src/main/java/androidx/paging/compose/samples/PagingPreviewSample.kt
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.paging.compose.samples
+
+import androidx.annotation.Sampled
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.sp
+import androidx.paging.PagingData
+import androidx.paging.compose.collectAsLazyPagingItems
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableStateFlow
+
+@Sampled
+@Preview
+@Composable
+fun PagingPreview() {
+    /**
+     * The composable that displays data from LazyPagingItems.
+     *
+     * This composable is inlined only for the purposes of this sample. In production code,
+     * this function should be its own top-level function.
+     */
+    @Composable
+    fun DisplayPaging(flow: Flow<PagingData<String>>) {
+        // Flow of real data i.e. flow from a ViewModel, or flow of fake data i.e. from a Preview.
+        val lazyPagingItems = flow.collectAsLazyPagingItems()
+        LazyColumn(modifier = Modifier
+            .fillMaxSize()
+            .background(Color.Red)) {
+            items(count = lazyPagingItems.itemCount) { index ->
+                val item = lazyPagingItems[index]
+                Text(text = "$item", fontSize = 35.sp, color = Color.Black)
+            }
+        }
+    }
+
+    /**
+     * The preview function should be responsible for creating the fake data and passing it to the
+     * function that displays it.
+     */
+    // create list of fake data for preview
+    val fakeData = List(10) { "preview item $it" }
+    // create pagingData from a list of fake data
+    val pagingData = PagingData.from(fakeData)
+    // pass pagingData containing fake data to a MutableStateFlow
+    val fakeDataFlow = MutableStateFlow(pagingData)
+    // pass flow to composable
+    DisplayPaging(flow = fakeDataFlow)
+}
\ No newline at end of file
diff --git a/paging/paging-compose/src/androidTest/java/androidx/paging/compose/LazyPagingItemsPreviewTest.kt b/paging/paging-compose/src/androidTest/java/androidx/paging/compose/LazyPagingItemsPreviewTest.kt
new file mode 100644
index 0000000..7cfba6e
--- /dev/null
+++ b/paging/paging-compose/src/androidTest/java/androidx/paging/compose/LazyPagingItemsPreviewTest.kt
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.paging.compose
+
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalInspectionMode
+import androidx.compose.ui.platform.testTag
+import androidx.compose.ui.test.assertIsDisplayed
+import androidx.compose.ui.test.junit4.createAndroidComposeRule
+import androidx.compose.ui.test.onNodeWithTag
+import androidx.compose.ui.tooling.PreviewActivity
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import androidx.paging.PagingData
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.test.StandardTestDispatcher
+import org.junit.Rule
+import org.junit.Test
+
+class LazyPagingItemsPreviewTest {
+
+    @get:Rule
+    val composeTestRule = createAndroidComposeRule<PreviewActivity>()
+
+    @Test
+    fun pagingPreviewTest() {
+        composeTestRule.setContent {
+            PagingPreview()
+        }
+        for (i in 0..9) {
+            composeTestRule.onNodeWithTag("$i")
+                .assertIsDisplayed()
+        }
+    }
+
+    @Test
+    fun emptyPreview() {
+        composeTestRule.setContent {
+            EmptyPreview()
+        }
+        composeTestRule.onNodeWithTag("0")
+            .assertDoesNotExist()
+    }
+}
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@Preview
+@Composable
+fun PagingPreview() {
+    val data = List(50) { it }
+    val flow = MutableStateFlow(PagingData.from(data))
+    CompositionLocalProvider(
+        LocalInspectionMode provides true,
+    ) {
+        // Use StandardTestDispatcher so we don't start collecting on PagingData
+        val lazyPagingItems = flow.collectAsLazyPagingItems(StandardTestDispatcher())
+        LazyColumn(Modifier.height(500.dp)) {
+            items(count = lazyPagingItems.itemCount) { index ->
+                val item = lazyPagingItems[index]
+                Spacer(Modifier.height(50.dp).fillParentMaxWidth().testTag("$item"))
+            }
+        }
+    }
+}
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@Preview
+@Composable
+fun EmptyPreview() {
+    val data = emptyList<Int>()
+    val flow = MutableStateFlow(PagingData.from(data))
+    CompositionLocalProvider(
+        LocalInspectionMode provides true,
+    ) {
+        // Use StandardTestDispatcher so we don't start collecting on PagingData
+        val lazyPagingItems = flow.collectAsLazyPagingItems(StandardTestDispatcher())
+        LazyColumn(Modifier.height(500.dp)) {
+            items(count = lazyPagingItems.itemCount) { index ->
+                val item = lazyPagingItems[index]
+                Spacer(Modifier.height(50.dp).fillParentMaxWidth().testTag("$item"))
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/paging/paging-compose/src/main/java/androidx/paging/compose/LazyPagingItems.kt b/paging/paging-compose/src/main/java/androidx/paging/compose/LazyPagingItems.kt
index 81a6901..0c0082d 100644
--- a/paging/paging-compose/src/main/java/androidx/paging/compose/LazyPagingItems.kt
+++ b/paging/paging-compose/src/main/java/androidx/paging/compose/LazyPagingItems.kt
@@ -52,6 +52,11 @@
  * This instance can be used for Lazy foundations such as [LazyListScope.items] to display data
  * received from the [Flow] of [PagingData].
  *
+ * Previewing [LazyPagingItems] is supported on a list of mock data. See sample for how to preview
+ * mock data.
+ *
+ * @sample androidx.paging.compose.samples.PagingPreview
+ *
  * @param T the type of value used by [PagingData].
  */
 public class LazyPagingItems<T : Any> internal constructor(
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/parser/ApiStubParserTest.kt b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/parser/ApiStubParserTest.kt
index 3c40caa0..4c4c071 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/parser/ApiStubParserTest.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/parser/ApiStubParserTest.kt
@@ -225,7 +225,7 @@
                     class NonAnnotatedClass
                 """
             ), Source.java(
-                "com/mysdk/NonAnnotatedJavaClass.java", """
+                "com/mysdk/NonAnnotatedJavaClass", """
                     package com.mysdk;
                     class NonAnnotatedJavaClass {}
                 """
@@ -265,7 +265,7 @@
     @Test
     fun nonKotlinAnnotatedInterface_throws() {
         val source = Source.java(
-            "com/mysdk/MySdk.java", """
+            "com/mysdk/MySdk", """
                     package com.mysdk;
                     import androidx.privacysandbox.tools.PrivacySandboxService;
                     @PrivacySandboxService
diff --git a/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/Source.kt b/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/Source.kt
index c62cfab..4860763 100644
--- a/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/Source.kt
+++ b/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/Source.kt
@@ -79,6 +79,9 @@
             @Language("java")
             code: String
         ): Source {
+            require(!qName.endsWith(".java")) {
+                "Please exclude extension `.java` for Java sources."
+            }
             return JavaSource(
                 qName,
                 code
@@ -90,6 +93,9 @@
             @Language("kotlin")
             code: String
         ): Source {
+            require(filePath.endsWith(".kt")) {
+                "Please include extension `.kt` for Kotlin sources."
+            }
             return KotlinSource(
                 filePath,
                 code
diff --git a/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/compiler/TestKotlinCompiler.kt b/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/compiler/TestKotlinCompiler.kt
index 81e443e..8287cfd 100644
--- a/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/compiler/TestKotlinCompiler.kt
+++ b/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/compiler/TestKotlinCompiler.kt
@@ -101,7 +101,7 @@
     if (hasKotlinSource) return this
     return copy(
         sources = sources + Source.kotlin(
-            "SyntheticSource",
+            "SyntheticSource.kt",
             code = """
                 package xprocessing.generated
                 class SyntheticKotlinSource
diff --git a/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/DiagnosticsTest.kt b/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/DiagnosticsTest.kt
index 7ded92a..cf0ef44 100644
--- a/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/DiagnosticsTest.kt
+++ b/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/DiagnosticsTest.kt
@@ -185,7 +185,7 @@
     @Test
     fun cleanKotlinCompilationHasNoWarnings() {
         val kotlinSource = Source.kotlin(
-            "Subject",
+            "Subject.kt",
             """
             package foo.bar
             class Subject {
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/KspClassFileUtilityTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/KspClassFileUtilityTest.kt
index 21395f6..a2b2895 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/KspClassFileUtilityTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/KspClassFileUtilityTest.kt
@@ -66,8 +66,8 @@
 
     @Test
     fun outOfOrderJava_fields() {
-        val libSource = Source.kotlin(
-            "JavaClass.java",
+        val libSource = Source.java(
+            "JavaClass",
             """
             class JavaClass {
                 String b;
@@ -116,8 +116,8 @@
 
     @Test
     fun outOfOrderJava_methods() {
-        val libSource = Source.kotlin(
-            "JavaClass.java",
+        val libSource = Source.java(
+            "JavaClass",
             """
             class JavaClass {
                 String b() { return ""; }
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationBoxTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationBoxTest.kt
index ad37a87..7a761a0 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationBoxTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationBoxTest.kt
@@ -436,7 +436,7 @@
             """.trimIndent()
         )
         val javaSrc = Source.java(
-            "JavaClass.java",
+            "JavaClass",
             """
             import androidx.room.compiler.processing.testcode.JavaAnnotationWithDefaults;
             @JavaAnnotationWithDefaults
@@ -499,7 +499,7 @@
     @Test
     fun javaPrimitiveArray() {
         val javaSrc = Source.java(
-            "JavaSubject.java",
+            "JavaSubject",
             """
             import androidx.room.compiler.processing.testcode.*;
             class JavaSubject {
@@ -592,7 +592,7 @@
     @Test
     fun javaEnum() {
         val javaSrc = Source.java(
-            "JavaSubject.java",
+            "JavaSubject",
             """
             import androidx.room.compiler.processing.testcode.*;
             class JavaSubject {
@@ -632,7 +632,7 @@
     @Test
     fun javaEnumArray() {
         val javaSrc = Source.java(
-            "JavaSubject.java",
+            "JavaSubject",
             """
             import androidx.room.compiler.processing.testcode.*;
             class JavaSubject {
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationTest.kt
index 973e82a..976ab4f 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationTest.kt
@@ -598,7 +598,7 @@
             """.trimIndent()
         )
         val javaSrc = Source.java(
-            "JavaClass.java",
+            "JavaClass",
             """
             import androidx.room.compiler.processing.testcode.JavaAnnotationWithDefaults;
             @JavaAnnotationWithDefaults
@@ -681,7 +681,7 @@
     fun javaPrimitiveArray() {
         // TODO: expand this test for other primitive types: 179081610
         val javaSrc = Source.java(
-            "JavaSubject.java",
+            "JavaSubject",
             """
             import androidx.room.compiler.processing.testcode.*;
             class JavaSubject {
@@ -720,7 +720,7 @@
     @Test
     fun javaEnum() {
         val javaSrc = Source.java(
-            "JavaSubject.java",
+            "JavaSubject",
             """
             import androidx.room.compiler.processing.testcode.*;
             class JavaSubject {
@@ -759,7 +759,7 @@
     @Test
     fun javaEnumArray() {
         val javaSrc = Source.java(
-            "JavaSubject.java",
+            "JavaSubject",
             """
             import androidx.room.compiler.processing.testcode.*;
             class JavaSubject {
@@ -1151,7 +1151,7 @@
             """.trimIndent()
         )
         val javaSource = Source.java(
-            "foo.bar.Subject.java",
+            "foo.bar.Subject",
             """
             package foo.bar;
             import java.lang.annotation.ElementType;
@@ -1232,7 +1232,7 @@
             """.trimIndent()
         )
         val javaSource = Source.java(
-            "foo.bar.Subject.java",
+            "foo.bar.Subject",
             """
             package foo.bar;
             import java.lang.annotation.ElementType;
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XExecutableTypeTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XExecutableTypeTest.kt
index bc037bc..4c88042 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XExecutableTypeTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XExecutableTypeTest.kt
@@ -44,7 +44,7 @@
                     """.trimIndent()
                 ),
                 Source.java(
-                    "JavaClass.java",
+                    "JavaClass",
                     """
                     abstract class JavaClass<T> {
                         JavaClass(T t) {}
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XMessagerTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XMessagerTest.kt
index 4091a00..c540af4 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XMessagerTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XMessagerTest.kt
@@ -31,7 +31,7 @@
         runProcessorTest(
             sources = listOf(
                 Source.java(
-                    "Foo.java",
+                    "Foo",
                     """
                     class Foo {}
                     """.trimIndent()
@@ -56,7 +56,7 @@
         runProcessorTest(
             sources = listOf(
                 Source.java(
-                    "Foo.java",
+                    "Foo",
                     """
                     class Foo {}
                     """.trimIndent()
@@ -80,7 +80,7 @@
         runProcessorTest(
             sources = listOf(
                 Source.java(
-                    "Foo.java",
+                    "Foo",
                     """
                     class Foo {}
                     """.trimIndent()
@@ -104,7 +104,7 @@
         runProcessorTest(
             sources = listOf(
                 Source.java(
-                    "Foo.java",
+                    "Foo",
                     """
                     class Foo {}
                     """.trimIndent()
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XNullabilityTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XNullabilityTest.kt
index 4786cff..313e735c 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XNullabilityTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XNullabilityTest.kt
@@ -385,7 +385,7 @@
     @Test
     fun makeNullable_void() {
         val src = Source.java(
-            "Foo.java",
+            "Foo",
             """
             class Foo {
                 void subject() {}
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XProcessingEnvTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XProcessingEnvTest.kt
index 0d60682..33ff8fc 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XProcessingEnvTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XProcessingEnvTest.kt
@@ -223,7 +223,7 @@
     @Test
     fun errorLogFailsCompilation() {
         val src = Source.java(
-            "Foo.java",
+            "Foo",
             """
             class Foo {}
             """.trimIndent()
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt
index 134a9c2..0e44884 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt
@@ -426,7 +426,7 @@
             """.trimIndent()
         )
         val javaSrc = Source.java(
-            "Bar.java",
+            "Bar",
             """
             class JavaClass {}
             interface JavaInterface {}
@@ -728,7 +728,7 @@
         runTest(
             listOf(
                 Source.java(
-                    "JavaSubject.java",
+                    "JavaSubject",
                     """
                     class JavaSubject {
                         int myField;
@@ -752,7 +752,7 @@
                 )
             ),
         ) { invocation ->
-            listOf("JavaSubject", "KotlinSubject",).map {
+            listOf("JavaSubject", "KotlinSubject").map {
                 invocation.processingEnv.requireTypeElement(it)
             }.forEach { subject ->
                 val methods = subject.getDeclaredMethods()
@@ -2075,6 +2075,272 @@
         }
     }
 
+    @Test
+    fun javaFieldDescriptors() {
+        runTest(
+            sources = listOf(
+                Source.java(
+                    "TestClassA",
+                    """
+                    import java.util.List;
+                    class TestClassA<T> {
+                        int field1;
+                        String field2;
+                        T field3;
+                        List<String> field4;
+                    }
+                    """.trimIndent()
+                )
+            )
+        ) { invocation ->
+            val foo = invocation.processingEnv.requireTypeElement("TestClassA")
+            assertThat(foo.getDeclaredFields().map { it.jvmDescriptor }.toList())
+                .containsExactly(
+                    "field1:I",
+                    "field2:Ljava/lang/String;",
+                    "field3:Ljava/lang/Object;",
+                    "field4:Ljava/util/List;"
+                )
+        }
+    }
+
+    @Test
+    fun javaMethodDescriptorsPrimitives() {
+        runTest(
+            sources = listOf(
+                Source.java(
+                    "TestClassB",
+                    """
+                    class TestClassB<T> {
+                        void method1(boolean yesOrNo, int number) {}
+
+                        byte method2(char letter) {
+                          return 0;
+                        }
+
+                        void method3(double realNumber1, float realNummber2) {}
+
+                        void method4(long bigNumber, short littlerNumber) {}
+                    }
+                    """.trimIndent()
+                )
+            )
+        ) { invocation ->
+            val foo = invocation.processingEnv.requireTypeElement("TestClassB")
+            assertThat(foo.getDeclaredMethods().map { it.jvmDescriptor }.toList())
+                .containsExactly(
+                    "method1(ZI)V", "method2(C)B", "method3(DF)V", "method4(JS)V"
+                )
+        }
+    }
+
+    @Test
+    fun javaMethodDescriptorsJavaTypes() {
+        runTest(
+            sources = listOf(
+                Source.java(
+                    "TestClassC",
+                    """
+                    import java.util.*;
+                    class TestClassC<T> {
+                        void method1(Object something) {}
+
+                        Object method2() {
+                          return null;
+                        }
+
+                        List<String> method3(ArrayList<Integer> list) {
+                          return null;
+                        }
+
+                        Map<String, Object> method4() {
+                          return null;
+                        }
+                    }
+                    """.trimIndent()
+                )
+            )
+        ) { invocation ->
+            val foo = invocation.processingEnv.requireTypeElement("TestClassC")
+            assertThat(foo.getDeclaredMethods().map { it.jvmDescriptor }.toList())
+                .containsExactly(
+                    "method1(Ljava/lang/Object;)V",
+                    "method2()Ljava/lang/Object;",
+                    "method3(Ljava/util/ArrayList;)Ljava/util/List;",
+                    "method4()Ljava/util/Map;"
+                )
+        }
+    }
+
+    @Test
+    fun javaMethodDescriptorsTestTypes() {
+        runTest(
+            sources = listOf(
+                Source.java(
+                    "TestClassD",
+                    """
+                    class TestDataClass {}
+                    class TestClassD<T> {
+                        void method1(TestDataClass data) {}
+
+                        TestDataClass method2() {
+                          return null;
+                        }
+                    }
+                    """.trimIndent()
+                )
+            )
+        ) { invocation ->
+            val foo = invocation.processingEnv.requireTypeElement("TestClassD")
+            assertThat(foo.getDeclaredMethods().map { it.jvmDescriptor }.toList())
+                .containsExactly(
+                    "method1(LTestDataClass;)V",
+                    "method2()LTestDataClass;"
+                )
+        }
+    }
+
+    @Test
+    fun javaMethodDescriptorsArrays() {
+        runTest(
+            sources = listOf(
+                Source.java(
+                    "TestClassE",
+                    """
+                    class TestDataClass {}
+                    class TestClassE<T> {
+                        void method1(TestDataClass[] data) {}
+
+                        TestDataClass[] method2() {
+                          return null;
+                        }
+
+                        void method3(int[] array) {}
+
+                        void method4(int... array) {}
+                    }
+                    """.trimIndent()
+                )
+            )
+        ) { invocation ->
+            val foo = invocation.processingEnv.requireTypeElement("TestClassE")
+            assertThat(foo.getDeclaredMethods().map { it.jvmDescriptor }.toList())
+                .containsExactly(
+                    "method1([LTestDataClass;)V",
+                    "method2()[LTestDataClass;",
+                    "method3([I)V",
+                    "method4([I)V"
+                )
+        }
+    }
+
+    @Test
+    fun javaMethodDescriptorsInnerTestType() {
+        runTest(
+            // KSP can't see nested types if the filename does not match the name of the
+            // enclosing class.
+            sources = listOf(
+                Source.java(
+                    "TestDataClass",
+                    """
+                    public class TestDataClass {
+                        class MemberInnerData {}
+
+                        static class StaticInnerData {}
+
+                        enum EnumData {
+                          VALUE1,
+                          VALUE2
+                        }
+                    }
+                    """.trimIndent()
+                ),
+                Source.java(
+                    "TestClassF",
+                    """
+                    class TestClassF<T> {
+                        void method1(TestDataClass.MemberInnerData data) {}
+
+                        void method2(TestDataClass.StaticInnerData data) {}
+
+                        void method3(TestDataClass.EnumData enumData) {}
+
+                        TestDataClass.StaticInnerData method4() {
+                          return null;
+                        }
+                    }
+                    """.trimIndent()
+                )
+            )
+        ) { invocation ->
+            val foo = invocation.processingEnv.requireTypeElement("TestClassF")
+            assertThat(foo.getDeclaredMethods().map { it.jvmDescriptor }.toList())
+                .containsExactly(
+                    "method1(LTestDataClass\$MemberInnerData;)V",
+                    "method2(LTestDataClass\$StaticInnerData;)V",
+                    "method3(LTestDataClass\$EnumData;)V",
+                    "method4()LTestDataClass\$StaticInnerData;"
+                )
+        }
+    }
+
+    @Test
+    fun methodDescriptorsErasure() {
+        runTest(
+            sources = listOf(
+                Source.java(
+                    "TestClassG",
+                    """
+                    import java.util.*;
+                    class TestClassG<T> {
+                        void method1(T something) {}
+                        T method2() {
+                          return null;
+                        }
+                        List<? extends String> method3() {
+                          return null;
+                        }
+                        Map<T, String> method4() {
+                          return null;
+                        }
+                        ArrayList<Map<T, String>> method5() {
+                          return null;
+                        }
+                        static <I, O extends I> O method6(I input) {
+                          return null;
+                        }
+                        static <I, O extends String> O method7(I input) {
+                          return null;
+                        }
+                        static <P extends Collection<String> & Comparable<String>> P method8() {
+                          return null;
+                        }
+                        static <P extends String & List<Character>> P method9() {
+                          return null;
+                        }
+                    }
+                    """.trimIndent()
+                )
+            )
+        ) { invocation ->
+            val foo = invocation.processingEnv.requireTypeElement("TestClassG")
+            if (!invocation.isKsp) {
+                assertThat(foo.getDeclaredMethods().map { it.jvmDescriptor }.toList())
+                    .containsExactly(
+                        "method1(Ljava/lang/Object;)V",
+                        "method2()Ljava/lang/Object;",
+                        "method3()Ljava/util/List;",
+                        "method4()Ljava/util/Map;",
+                        "method5()Ljava/util/ArrayList;",
+                        "method6(Ljava/lang/Object;)Ljava/lang/Object;",
+                        "method7(Ljava/lang/Object;)Ljava/lang/String;",
+                        "method8()Ljava/util/Collection;",
+                        "method9()Ljava/lang/String;"
+                    )
+            }
+        }
+    }
+
     /**
      * it is good to exclude methods coming from Object when testing as they differ between KSP
      * and KAPT but irrelevant for Room.
diff --git a/settings.gradle b/settings.gradle
index aa1e705..9abd3a2 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -195,7 +195,8 @@
     WEAR,
     GLANCE,
     TOOLS,
-    KMP,
+    KMP, // All projects built as Kotlin Multi Platform (compose, datastore, collections, etc).
+    INFRAROGUE, // Projects built by playground team, mostly non-compose kmp.
     CAMERA,
     NATIVE,
     WINDOW,
@@ -255,6 +256,9 @@
             case "KMP":
                 filter.add(BuildType.KMP)
                 break
+            case "INFRAROGUE":
+                filter.add(BuildType.INFRAROGUE)
+                break
             case "CAMERA":
                 filter.add(BuildType.CAMERA)
                 break
@@ -449,10 +453,10 @@
 includeProject(":autofill:autofill", [BuildType.MAIN])
 includeProject(":benchmark:benchmark-benchmark", "benchmark/benchmark", [BuildType.MAIN, BuildType.COMPOSE])
 includeProject(":benchmark:benchmark-common")
-includeProject(":benchmark:benchmark-darwin", [BuildType.KMP])
-includeProject(":benchmark:benchmark-darwin-core", [BuildType.KMP])
-includeProject(":benchmark:benchmark-darwin-samples", [BuildType.KMP])
-includeProject(":benchmark:benchmark-darwin-gradle-plugin", [BuildType.KMP])
+includeProject(":benchmark:benchmark-darwin", [BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":benchmark:benchmark-darwin-core", [BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":benchmark:benchmark-darwin-samples", [BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":benchmark:benchmark-darwin-gradle-plugin", [BuildType.INFRAROGUE, BuildType.KMP])
 includeProject(":benchmark:benchmark-gradle-plugin", "benchmark/gradle-plugin", [BuildType.MAIN])
 includeProject(":benchmark:benchmark-baseline-profile-gradle-plugin", "benchmark/baseline-profile-gradle-plugin",[BuildType.MAIN])
 includeProject(":benchmark:benchmark-junit4")
@@ -521,11 +525,11 @@
 includeProject(":car:app:app-samples:showcase-mobile", "car/app/app-samples/showcase/mobile", [BuildType.MAIN])
 includeProject(":car:app:app-testing", [BuildType.MAIN])
 includeProject(":cardview:cardview", [BuildType.MAIN])
-includeProject(":collection:collection", [BuildType.MAIN, BuildType.KMP])
-includeProject(":collection:collection-benchmark", [BuildType.MAIN, BuildType.KMP])
-includeProject(":collection:collection-benchmark-kmp", [BuildType.MAIN, BuildType.KMP])
-includeProject(":collection:collection-ktx", [BuildType.MAIN, BuildType.KMP])
-includeProject(":collection:integration-tests:testapp", [BuildType.MAIN, BuildType.KMP])
+includeProject(":collection:collection", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":collection:collection-benchmark", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":collection:collection-benchmark-kmp", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":collection:collection-ktx", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":collection:integration-tests:testapp", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
 includeProject(":compose:animation", [BuildType.COMPOSE])
 includeProject(":compose:animation:animation", [BuildType.COMPOSE])
 includeProject(":compose:animation:animation-lint", [BuildType.COMPOSE])
@@ -549,9 +553,9 @@
 includeProject(":compose:compiler:compiler-daemon:integration-tests", [BuildType.COMPOSE])
 
 if (isMultiplatformEnabled()) {
-    includeProject(":compose:desktop", [BuildType.COMPOSE])
-    includeProject(":compose:desktop:desktop", [BuildType.COMPOSE])
-    includeProject(":compose:desktop:desktop:desktop-samples", "compose/desktop/desktop/samples", [BuildType.COMPOSE])
+    includeProject(":compose:desktop", [BuildType.COMPOSE, BuildType.KMP])
+    includeProject(":compose:desktop:desktop", [BuildType.COMPOSE, BuildType.KMP])
+    includeProject(":compose:desktop:desktop:desktop-samples", "compose/desktop/desktop/samples", [BuildType.COMPOSE, BuildType.KMP])
 }
 includeProject(":compose:foundation", [BuildType.COMPOSE])
 includeProject(":compose:foundation:foundation", [BuildType.COMPOSE])
@@ -601,7 +605,7 @@
 includeProject(":compose:material:material:material-samples", "compose/material/material/samples", [BuildType.COMPOSE])
 includeProject(":compose:material3:material3:material3-samples", "compose/material3/material3/samples", [BuildType.COMPOSE])
 includeProject(":compose:runtime", [BuildType.COMPOSE])
-includeProject(":compose:runtime:runtime", [BuildType.COMPOSE])
+includeProject(":compose:runtime:runtime", [BuildType.COMPOSE, BuildType.KMP])
 includeProject(":compose:runtime:runtime-lint", [BuildType.COMPOSE])
 includeProject(":compose:runtime:runtime-livedata", [BuildType.COMPOSE])
 includeProject(":compose:runtime:runtime-livedata:runtime-livedata-samples", "compose/runtime/runtime-livedata/samples", [BuildType.COMPOSE])
@@ -687,20 +691,20 @@
 includeProject(":cursoradapter:cursoradapter", [BuildType.MAIN])
 includeProject(":customview:customview", [BuildType.MAIN])
 includeProject(":customview:customview-poolingcontainer", [BuildType.MAIN, BuildType.COMPOSE])
-includeProject(":datastore:datastore", [BuildType.MAIN, BuildType.KMP])
-includeProject(":datastore:datastore-benchmark", [BuildType.MAIN, BuildType.KMP])
-includeProject(":datastore:datastore-core", [BuildType.MAIN, BuildType.KMP])
-includeProject(":datastore:datastore-core-okio", [BuildType.MAIN, BuildType.KMP])
+includeProject(":datastore:datastore", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":datastore:datastore-benchmark", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":datastore:datastore-core", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":datastore:datastore-core-okio", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
 includeProject(":datastore:datastore-compose-samples", [BuildType.COMPOSE])
-includeProject(":datastore:datastore-preferences", [BuildType.MAIN, BuildType.KMP])
-includeProject(":datastore:datastore-preferences-core", [BuildType.MAIN, BuildType.KMP])
-includeProject(":datastore:datastore-preferences-proto", [BuildType.MAIN, BuildType.KMP])
-includeProject(":datastore:datastore-preferences-rxjava2", [BuildType.MAIN, BuildType.KMP])
-includeProject(":datastore:datastore-preferences-rxjava3", [BuildType.MAIN, BuildType.KMP])
-includeProject(":datastore:datastore-proto", [BuildType.MAIN, BuildType.KMP])
-includeProject(":datastore:datastore-rxjava2", [BuildType.MAIN, BuildType.KMP])
-includeProject(":datastore:datastore-rxjava3", [BuildType.MAIN, BuildType.KMP])
-includeProject(":datastore:datastore-sampleapp", [BuildType.MAIN, BuildType.KMP])
+includeProject(":datastore:datastore-preferences", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":datastore:datastore-preferences-core", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":datastore:datastore-preferences-proto", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":datastore:datastore-preferences-rxjava2", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":datastore:datastore-preferences-rxjava3", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":datastore:datastore-proto", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":datastore:datastore-rxjava2", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":datastore:datastore-rxjava3", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":datastore:datastore-sampleapp", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
 includeProject(":documentfile:documentfile", [BuildType.MAIN])
 includeProject(":draganddrop:draganddrop", [BuildType.MAIN])
 includeProject(":draganddrop:integration-tests:sampleapp", [BuildType.MAIN])
@@ -1119,14 +1123,14 @@
 /////////////////////////////
 
 includeProject(":internal-testutils-common", "testutils/testutils-common", [BuildType.MAIN, BuildType.COMPOSE, BuildType.FLAN])
-includeProject(":internal-testutils-datastore", "testutils/testutils-datastore", [BuildType.MAIN, BuildType.KMP])
-includeProject(":internal-testutils-runtime", "testutils/testutils-runtime", [BuildType.MAIN, BuildType.FLAN, BuildType.COMPOSE, BuildType.MEDIA])
+includeProject(":internal-testutils-datastore", "testutils/testutils-datastore", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP])
+includeProject(":internal-testutils-runtime", "testutils/testutils-runtime", [BuildType.MAIN, BuildType.FLAN, BuildType.COMPOSE, BuildType.MEDIA, BuildType.WEAR])
 includeProject(":internal-testutils-appcompat", "testutils/testutils-appcompat", [BuildType.MAIN])
 includeProject(":internal-testutils-espresso", "testutils/testutils-espresso", [BuildType.MAIN, BuildType.COMPOSE])
 includeProject(":internal-testutils-fonts", "testutils/testutils-fonts", [BuildType.MAIN, BuildType.GLANCE, BuildType.MEDIA, BuildType.FLAN, BuildType.COMPOSE])
 includeProject(":internal-testutils-truth", "testutils/testutils-truth")
 includeProject(":internal-testutils-ktx", "testutils/testutils-ktx")
-includeProject(":internal-testutils-kmp", "testutils/testutils-kmp", [BuildType.MAIN, BuildType.KMP, BuildType.COMPOSE])
+includeProject(":internal-testutils-kmp", "testutils/testutils-kmp", [BuildType.MAIN, BuildType.INFRAROGUE, BuildType.KMP, BuildType.COMPOSE])
 includeProject(":internal-testutils-macrobenchmark", "testutils/testutils-macrobenchmark", [BuildType.MAIN, BuildType.COMPOSE])
 includeProject(":internal-testutils-navigation", "testutils/testutils-navigation", [BuildType.MAIN, BuildType.COMPOSE, BuildType.FLAN])
 includeProject(":internal-testutils-paging", "testutils/testutils-paging", [BuildType.MAIN, BuildType.COMPOSE])
@@ -1180,7 +1184,7 @@
     includeProject(":docs-public")
 }
 
-includeProject(":docs-kmp", [BuildType.KMP])
+includeProject(":docs-kmp", [BuildType.KMP, BuildType.INFRAROGUE])
 // placeholder test project that has a test for each size to ensure that at least one test is run
 // for each size and test runner is happy when there is nothing to test.
 includeProject(":placeholder-tests")
diff --git a/slice/slice-view/src/main/res/values-da/strings.xml b/slice/slice-view/src/main/res/values-da/strings.xml
index 1491d22..379bfdb 100644
--- a/slice/slice-view/src/main/res/values-da/strings.xml
+++ b/slice/slice-view/src/main/res/values-da/strings.xml
@@ -30,8 +30,8 @@
       <item quantity="other">For <xliff:g id="ID_2">%d</xliff:g> år siden</item>
     </plurals>
     <plurals name="abc_slice_duration_days" formatted="false" msgid="8356547162075064530">
-      <item quantity="one">For <xliff:g id="ID_2">%d</xliff:g> dag siden</item>
-      <item quantity="other">For <xliff:g id="ID_2">%d</xliff:g> dage siden</item>
+      <item quantity="one"><xliff:g id="ID_2">%d</xliff:g> dag siden</item>
+      <item quantity="other"><xliff:g id="ID_2">%d</xliff:g> dage siden</item>
     </plurals>
     <string name="abc_slice_error" msgid="1794214973158263497">"Der kunne ikke oprettes forbindelse"</string>
 </resources>
diff --git a/text/text/src/main/java/androidx/compose/ui/text/android/LayoutCompat.kt b/text/text/src/main/java/androidx/compose/ui/text/android/LayoutCompat.kt
index 02496f3..fc177b9 100644
--- a/text/text/src/main/java/androidx/compose/ui/text/android/LayoutCompat.kt
+++ b/text/text/src/main/java/androidx/compose/ui/text/android/LayoutCompat.kt
@@ -59,12 +59,17 @@
     const val HYPHENATION_FREQUENCY_NONE = Layout.HYPHENATION_FREQUENCY_NONE
     const val HYPHENATION_FREQUENCY_NORMAL = Layout.HYPHENATION_FREQUENCY_NORMAL
     const val HYPHENATION_FREQUENCY_NORMAL_FAST = Layout.HYPHENATION_FREQUENCY_NORMAL_FAST
+    const val HYPHENATION_FREQUENCY_FULL = Layout.HYPHENATION_FREQUENCY_FULL
+    const val HYPHENATION_FREQUENCY_FULL_FAST = Layout.HYPHENATION_FREQUENCY_FULL_FAST
 
     @Retention(AnnotationRetention.SOURCE)
     @IntDef(
+        HYPHENATION_FREQUENCY_NONE,
         HYPHENATION_FREQUENCY_NORMAL,
         HYPHENATION_FREQUENCY_NORMAL_FAST,
-        HYPHENATION_FREQUENCY_NONE
+        HYPHENATION_FREQUENCY_FULL,
+        HYPHENATION_FREQUENCY_FULL_FAST
+
     )
     internal annotation class HyphenationFrequency
 
diff --git a/tv/integration-tests/playground/src/main/java/androidx/tv/integration/playground/FeaturedCarousel.kt b/tv/integration-tests/playground/src/main/java/androidx/tv/integration/playground/FeaturedCarousel.kt
index 6f6d535..855ac02 100644
--- a/tv/integration-tests/playground/src/main/java/androidx/tv/integration/playground/FeaturedCarousel.kt
+++ b/tv/integration-tests/playground/src/main/java/androidx/tv/integration/playground/FeaturedCarousel.kt
@@ -16,6 +16,13 @@
 
 package androidx.tv.integration.playground
 
+import androidx.compose.animation.ExperimentalAnimationApi
+import androidx.compose.animation.core.tween
+import androidx.compose.animation.fadeIn
+import androidx.compose.animation.fadeOut
+import androidx.compose.animation.slideInVertically
+import androidx.compose.animation.slideOutHorizontally
+import androidx.compose.animation.togetherWith
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
 import androidx.compose.foundation.focusable
@@ -88,7 +95,7 @@
     }
 }
 
-@OptIn(ExperimentalTvMaterial3Api::class)
+@OptIn(ExperimentalTvMaterial3Api::class, ExperimentalAnimationApi::class)
 @Composable
 internal fun FeaturedCarousel(modifier: Modifier = Modifier) {
     val backgrounds = listOf(
@@ -117,33 +124,31 @@
                     .align(Alignment.BottomEnd)
                     .padding(16.dp),
             )
-        }
+        },
+        contentTransformStartToEnd =
+            fadeIn(tween(1000)).togetherWith(fadeOut(tween(1000))),
+        contentTransformEndToStart =
+            fadeIn(tween(1000)).togetherWith(fadeOut(tween(1000)))
     ) { itemIndex ->
-        CarouselItem(
-            modifier = Modifier.semantics {
-                contentDescription = "Featured Content"
-            },
-            background = {
-                Box(
-                    modifier = Modifier
-                        .background(backgrounds[itemIndex])
-                        .fillMaxSize()
-                )
-            },
+        Box(
+            modifier = Modifier
+                .background(backgrounds[itemIndex])
+                .fillMaxSize()
+                .semantics { contentDescription = "Featured Content" }
         ) {
-            Box(
+            Column(
                 modifier = Modifier
-                    .fillMaxSize()
-                    .padding(20.dp),
-                contentAlignment = Alignment.BottomStart
+                    .padding(start = 50.dp, top = 100.dp)
+                    .animateEnterExit(
+                        enter = slideInVertically(animationSpec = tween(1000)),
+                        exit = slideOutHorizontally(animationSpec = tween(1000))
+                    )
             ) {
-                Column {
-                    Text(text = "This is sample text content.", color = Color.Yellow)
-                    Text(text = "Sample description.", color = Color.Yellow)
-                    Row {
-                        OverlayButton(text = "Play")
-                        OverlayButton(text = "Add to Watchlist")
-                    }
+                Text(text = "This is sample text content.", color = Color.Yellow)
+                Text(text = "Sample description of slide ${itemIndex + 1}.", color = Color.Yellow)
+                Row {
+                    OverlayButton(text = "Play")
+                    OverlayButton(text = "Add to Watchlist")
                 }
             }
         }
diff --git a/tv/integration-tests/presentation/README.md b/tv/integration-tests/presentation/README.md
index eb86b24..9c46867 100644
--- a/tv/integration-tests/presentation/README.md
+++ b/tv/integration-tests/presentation/README.md
@@ -3,12 +3,11 @@
 ## Setup
 
 * Uncomment the `coil` and `gson` libraries dependency additions from the `build.gradle` file.
+* Uncomment the function content and imports from
+  `presentation/src/main/java/androidx/tv/integration/presentation/ExternalLibs.kt` file
 * Create the `data.json` file in `presentation/src/main/assets` directory and add the content from
   this link: go/compose-tv-presentation-app-data
 
 > If you are not a Googler and want to use this app for
 > testing, you will have to create the `data.json` file by following the schema mentioned in the
 `Data.kt` file
-
-* Uncomment the function content and imports from
-  `presentation/src/main/java/androidx/tv/integration/presentation/ExternalLibs.kt` file
diff --git a/tv/integration-tests/presentation/src/main/java/androidx/tv/integration/presentation/FeaturedCarousel.kt b/tv/integration-tests/presentation/src/main/java/androidx/tv/integration/presentation/FeaturedCarousel.kt
index 33e5b16..94df400 100644
--- a/tv/integration-tests/presentation/src/main/java/androidx/tv/integration/presentation/FeaturedCarousel.kt
+++ b/tv/integration-tests/presentation/src/main/java/androidx/tv/integration/presentation/FeaturedCarousel.kt
@@ -16,6 +16,15 @@
 
 package androidx.tv.integration.presentation
 
+import androidx.compose.animation.AnimatedContentScope
+import androidx.compose.animation.ExperimentalAnimationApi
+import androidx.compose.animation.core.tween
+import androidx.compose.animation.fadeIn
+import androidx.compose.animation.fadeOut
+import androidx.compose.animation.slideInHorizontally
+import androidx.compose.animation.slideOutHorizontally
+import androidx.compose.animation.togetherWith
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
@@ -32,7 +41,6 @@
 import androidx.compose.ui.unit.sp
 import androidx.tv.material3.Carousel
 import androidx.tv.material3.CarouselDefaults
-import androidx.tv.material3.CarouselScope
 import androidx.tv.material3.CarouselState
 import androidx.tv.material3.ExperimentalTvMaterial3Api
 import androidx.tv.material3.Text
@@ -60,7 +68,11 @@
                     .align(Alignment.BottomEnd)
                     .padding(end = 58.dp, bottom = 16.dp),
             )
-        }
+        },
+        contentTransformEndToStart =
+            fadeIn(tween(1000)).togetherWith(fadeOut(tween(1000))),
+        contentTransformStartToEnd =
+            fadeIn(tween(1000)).togetherWith(fadeOut(tween(1000)))
     ) { itemIndex ->
         val movie = movies[itemIndex]
 
@@ -80,22 +92,23 @@
     }
 }
 
-@OptIn(ExperimentalTvMaterial3Api::class)
+@OptIn(ExperimentalAnimationApi::class)
 @Composable
-private fun CarouselScope.CarouselSlide(
+private fun AnimatedContentScope.CarouselSlide(
     title: String,
     description: String,
     background: @Composable () -> Unit,
     actions: @Composable () -> Unit
 ) {
-    CarouselItem(
-        background = {
-            background()
-        },
-        modifier = Modifier
-    ) {
+    Box {
+        background()
         Column(
-            modifier = Modifier.padding(start = 58.dp, top = 150.dp)
+            modifier = Modifier
+                .padding(start = 58.dp, top = 150.dp)
+                .animateEnterExit(
+                    enter = slideInHorizontally(animationSpec = tween(1000)) { it / 2 },
+                    exit = slideOutHorizontally(animationSpec = tween(1000))
+                )
         ) {
             Text(
                 text = title,
diff --git a/tv/samples/src/main/java/androidx/tv/samples/CarouselSamples.kt b/tv/samples/src/main/java/androidx/tv/samples/CarouselSamples.kt
index aba7109..b356829 100644
--- a/tv/samples/src/main/java/androidx/tv/samples/CarouselSamples.kt
+++ b/tv/samples/src/main/java/androidx/tv/samples/CarouselSamples.kt
@@ -17,6 +17,13 @@
 package androidx.tv.samples
 
 import androidx.annotation.Sampled
+import androidx.compose.animation.ExperimentalAnimationApi
+import androidx.compose.animation.core.tween
+import androidx.compose.animation.fadeIn
+import androidx.compose.animation.fadeOut
+import androidx.compose.animation.slideInHorizontally
+import androidx.compose.animation.slideOutHorizontally
+import androidx.compose.animation.togetherWith
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
 import androidx.compose.foundation.layout.Box
@@ -44,7 +51,7 @@
 import androidx.tv.material3.CarouselState
 import androidx.tv.material3.ExperimentalTvMaterial3Api
 
-@OptIn(ExperimentalTvMaterial3Api::class)
+@OptIn(ExperimentalTvMaterial3Api::class, ExperimentalAnimationApi::class)
 @Sampled
 @Composable
 fun SimpleCarousel() {
@@ -59,16 +66,16 @@
         modifier = Modifier
             .height(300.dp)
             .fillMaxWidth(),
+        contentTransformEndToStart =
+        fadeIn(tween(1000)).togetherWith(fadeOut(tween(1000))),
+        contentTransformStartToEnd =
+        fadeIn(tween(1000)).togetherWith(fadeOut(tween(1000)))
     ) { itemIndex ->
-        CarouselItem(
-            background = {
-                Box(
-                    modifier = Modifier
-                        .background(backgrounds[itemIndex])
-                        .border(2.dp, Color.White.copy(alpha = 0.5f))
-                        .fillMaxSize()
-                )
-            }
+        Box(
+            modifier = Modifier
+                .background(backgrounds[itemIndex])
+                .border(2.dp, Color.White.copy(alpha = 0.5f))
+                .fillMaxSize()
         ) {
             var isFocused by remember { mutableStateOf(false) }
 
@@ -82,6 +89,13 @@
                         color = if (isFocused) Color.Red else Color.Transparent,
                         shape = RoundedCornerShape(50)
                     )
+                    // Duration of animation here should be less than or equal to carousel's
+                    // contentTransform duration to ensure the item below does not disappear
+                    // abruptly.
+                    .animateEnterExit(
+                        enter = slideInHorizontally(animationSpec = tween(1000)) { it / 2 },
+                        exit = slideOutHorizontally(animationSpec = tween(1000))
+                    )
                     .padding(vertical = 2.dp, horizontal = 5.dp)
             ) {
                 Text(text = "Play")
@@ -90,7 +104,7 @@
     }
 }
 
-@OptIn(ExperimentalTvMaterial3Api::class)
+@OptIn(ExperimentalTvMaterial3Api::class, ExperimentalAnimationApi::class)
 @Sampled
 @Composable
 fun CarouselIndicatorWithRectangleShape() {
@@ -127,24 +141,30 @@
                     )
                 }
             )
-        }
+        },
+        contentTransformEndToStart =
+        fadeIn(tween(1000)).togetherWith(fadeOut(tween(1000))),
+        contentTransformStartToEnd =
+        fadeIn(tween(1000)).togetherWith(fadeOut(tween(1000)))
     ) { itemIndex ->
-        CarouselItem(
-            background = {
-                Box(
-                    modifier = Modifier
-                        .background(backgrounds[itemIndex])
-                        .border(2.dp, Color.White.copy(alpha = 0.5f))
-                        .fillMaxSize()
-                )
-            }
+        Box(
+            modifier = Modifier
+                .background(backgrounds[itemIndex])
+                .border(2.dp, Color.White.copy(alpha = 0.5f))
+                .fillMaxSize()
         ) {
             var isFocused by remember { mutableStateOf(false) }
-
             Button(
                 onClick = { },
                 modifier = Modifier
                     .onFocusChanged { isFocused = it.isFocused }
+                    // Duration of animation here should be less than or equal to carousel's
+                    // contentTransform duration to ensure the item below does not disappear
+                    // abruptly.
+                    .animateEnterExit(
+                        enter = slideInHorizontally(animationSpec = tween(1000)) { it / 2 },
+                        exit = slideOutHorizontally(animationSpec = tween(1000))
+                    )
                     .padding(40.dp)
                     .border(
                         width = 2.dp,
diff --git a/tv/tv-foundation/build.gradle b/tv/tv-foundation/build.gradle
index c193d0d..a53a44ee 100644
--- a/tv/tv-foundation/build.gradle
+++ b/tv/tv-foundation/build.gradle
@@ -30,7 +30,7 @@
 dependencies {
     api(libs.kotlinStdlib)
 
-    def composeVersion = '1.4.0-rc01'
+    def composeVersion = '1.4.2'
 
     implementation(libs.kotlinStdlibCommon)
     implementation("androidx.profileinstaller:profileinstaller:1.3.0")
diff --git a/tv/tv-material/api/public_plus_experimental_current.txt b/tv/tv-material/api/public_plus_experimental_current.txt
index 12488a4..093044e 100644
--- a/tv/tv-material/api/public_plus_experimental_current.txt
+++ b/tv/tv-material/api/public_plus_experimental_current.txt
@@ -114,24 +114,8 @@
     field public static final long TimeToDisplayItemMillis = 5000L; // 0x1388L
   }
 
-  @androidx.tv.material3.ExperimentalTvMaterial3Api public final class CarouselItemDefaults {
-    method @androidx.compose.runtime.Composable public androidx.compose.animation.ContentTransform getContentTransformEndToStart();
-    method @androidx.compose.runtime.Composable public androidx.compose.animation.ContentTransform getContentTransformLeftToRight();
-    method @androidx.compose.runtime.Composable public androidx.compose.animation.ContentTransform getContentTransformRightToLeft();
-    method @androidx.compose.runtime.Composable public androidx.compose.animation.ContentTransform getContentTransformStartToEnd();
-    property @androidx.compose.runtime.Composable public final androidx.compose.animation.ContentTransform contentTransformEndToStart;
-    property @androidx.compose.runtime.Composable public final androidx.compose.animation.ContentTransform contentTransformLeftToRight;
-    property @androidx.compose.runtime.Composable public final androidx.compose.animation.ContentTransform contentTransformRightToLeft;
-    property @androidx.compose.runtime.Composable public final androidx.compose.animation.ContentTransform contentTransformStartToEnd;
-    field public static final androidx.tv.material3.CarouselItemDefaults INSTANCE;
-  }
-
   public final class CarouselKt {
-    method @androidx.compose.runtime.Composable @androidx.tv.material3.ExperimentalTvMaterial3Api public static void Carousel(int itemCount, optional androidx.compose.ui.Modifier modifier, optional androidx.tv.material3.CarouselState carouselState, optional long autoScrollDurationMillis, optional androidx.compose.animation.ContentTransform contentTransformStartToEnd, optional androidx.compose.animation.ContentTransform contentTransformEndToStart, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> carouselIndicator, kotlin.jvm.functions.Function2<? super androidx.tv.material3.CarouselScope,? super java.lang.Integer,kotlin.Unit> content);
-  }
-
-  @androidx.tv.material3.ExperimentalTvMaterial3Api public final class CarouselScope {
-    method @androidx.compose.runtime.Composable @androidx.tv.material3.ExperimentalTvMaterial3Api public void CarouselItem(optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit> background, optional androidx.compose.animation.ContentTransform contentTransformStartToEnd, optional androidx.compose.animation.ContentTransform contentTransformEndToStart, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable @androidx.tv.material3.ExperimentalTvMaterial3Api public static void Carousel(int itemCount, optional androidx.compose.ui.Modifier modifier, optional androidx.tv.material3.CarouselState carouselState, optional long autoScrollDurationMillis, optional androidx.compose.animation.ContentTransform contentTransformStartToEnd, optional androidx.compose.animation.ContentTransform contentTransformEndToStart, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> carouselIndicator, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super java.lang.Integer,kotlin.Unit> content);
   }
 
   @androidx.compose.runtime.Stable @androidx.tv.material3.ExperimentalTvMaterial3Api public final class CarouselState {
diff --git a/tv/tv-material/build.gradle b/tv/tv-material/build.gradle
index 0b86754..334a3f1 100644
--- a/tv/tv-material/build.gradle
+++ b/tv/tv-material/build.gradle
@@ -27,19 +27,10 @@
 dependencies {
     api(libs.kotlinStdlib)
 
-    def composeVersion = '1.4.0-rc01'
-
-    api("androidx.annotation:annotation:1.5.0")
-    api("androidx.compose.runtime:runtime:$composeVersion")
+    def composeVersion = '1.4.2'
 
     api(project(":compose:animation:animation"))
-    api("androidx.compose.ui:ui:$composeVersion")
-    api("androidx.compose.foundation:foundation:$composeVersion")
-    api("androidx.compose.foundation:foundation-layout:$composeVersion")
     api("androidx.compose.material:material-icons-core:$composeVersion")
-    api("androidx.compose.ui:ui-graphics:$composeVersion")
-    api(project(":compose:ui:ui-text"))
-    api("androidx.compose.ui:ui-util:$composeVersion")
     api(project(":tv:tv-foundation"))
 
     implementation(libs.kotlinStdlibCommon)
diff --git a/tv/tv-material/src/androidTest/java/androidx/tv/material3/CarouselScopeTest.kt b/tv/tv-material/src/androidTest/java/androidx/tv/material3/CarouselScopeTest.kt
deleted file mode 100644
index 2f80311..0000000
--- a/tv/tv-material/src/androidTest/java/androidx/tv/material3/CarouselScopeTest.kt
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.tv.material3
-
-import androidx.compose.foundation.background
-import androidx.compose.foundation.border
-import androidx.compose.foundation.focusable
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.size
-import androidx.compose.foundation.text.BasicText
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
-import androidx.compose.runtime.setValue
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.focus.onFocusChanged
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.input.key.NativeKeyEvent
-import androidx.compose.ui.platform.testTag
-import androidx.compose.ui.semantics.SemanticsActions
-import androidx.compose.ui.test.assertIsFocused
-import androidx.compose.ui.test.junit4.createComposeRule
-import androidx.compose.ui.test.onNodeWithTag
-import androidx.compose.ui.test.performSemanticsAction
-import androidx.compose.ui.unit.dp
-import androidx.test.platform.app.InstrumentationRegistry
-import org.junit.Rule
-import org.junit.Test
-
-const val sampleButtonTag = "sample-button"
-
-class CarouselScopeTest {
-    @get:Rule
-    val rule = createComposeRule()
-
-    @OptIn(ExperimentalTvMaterial3Api::class)
-    @Test
-    fun carouselItem_parentContainerGainsFocused_onBackPress() {
-        val containerBoxTag = "container-box"
-        val carouselItemTag = "carousel-item"
-
-        rule.setContent {
-            val carouselState = remember { CarouselState() }
-            var isContainerBoxFocused by remember { mutableStateOf(false) }
-            Box(
-                modifier = Modifier
-                    .testTag(containerBoxTag)
-                    .fillMaxSize()
-                    .onFocusChanged { isContainerBoxFocused = it.isFocused }
-                    .border(10.dp, if (isContainerBoxFocused) Color.Green else Color.Transparent)
-                    .focusable()
-            ) {
-                CarouselScope(carouselState = carouselState)
-                    .CarouselItem(
-                        modifier = Modifier
-                            .testTag(carouselItemTag),
-                        background = {
-                            Box(
-                                modifier = Modifier
-                                    .size(300.dp)
-                                    .background(Color.Cyan))
-                        },
-                        content = { SampleButton() },
-                    )
-            }
-        }
-
-        // Request focus for Carousel Item on start
-        rule.onNodeWithTag(carouselItemTag)
-            .performSemanticsAction(SemanticsActions.RequestFocus)
-        rule.waitForIdle()
-
-        // Check if overlay button in carousel item is focused
-        rule.onNodeWithTag(sampleButtonTag, useUnmergedTree = true)
-            .assertIsFocused()
-
-        // Trigger back press
-        performKeyPress(NativeKeyEvent.KEYCODE_BACK)
-        rule.waitForIdle()
-
-        // Check if carousel item loses focus and parent container gains focus
-        rule.onNodeWithTag(containerBoxTag).assertIsFocused()
-    }
-
-    private fun performKeyPress(keyCode: Int, count: Int = 1) {
-        repeat(count) {
-            InstrumentationRegistry.getInstrumentation().sendKeyDownUpSync(keyCode)
-        }
-    }
-}
-
-@Composable
-private fun SampleButton(text: String = sampleButtonTag) {
-    var isFocused by remember { mutableStateOf(false) }
-    BasicText(
-        text = text,
-        modifier = Modifier
-            .testTag(text)
-            .size(100.dp, 20.dp)
-            .background(Color.Yellow)
-            .onFocusChanged { isFocused = it.isFocused }
-            .border(2.dp, if (isFocused) Color.Green else Color.Transparent)
-            .focusable()
-    )
-}
diff --git a/tv/tv-material/src/androidTest/java/androidx/tv/material3/CarouselTest.kt b/tv/tv-material/src/androidTest/java/androidx/tv/material3/CarouselTest.kt
index 1c863ef..b6c31ca8 100644
--- a/tv/tv-material/src/androidTest/java/androidx/tv/material3/CarouselTest.kt
+++ b/tv/tv-material/src/androidTest/java/androidx/tv/material3/CarouselTest.kt
@@ -18,8 +18,10 @@
 
 import android.os.SystemClock
 import android.view.KeyEvent
-import androidx.compose.animation.ContentTransform
+import androidx.compose.animation.AnimatedContentScope
 import androidx.compose.animation.ExperimentalAnimationApi
+import androidx.compose.animation.slideInHorizontally
+import androidx.compose.animation.slideOutHorizontally
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
 import androidx.compose.foundation.focusable
@@ -75,7 +77,7 @@
 private const val delayBetweenItems = 2500L
 private const val animationTime = 900L
 
-@OptIn(ExperimentalTvMaterial3Api::class)
+@OptIn(ExperimentalTvMaterial3Api::class, ExperimentalAnimationApi::class)
 class CarouselTest {
     @get:Rule
     val rule = createComposeRule()
@@ -433,7 +435,13 @@
                         autoScrollDurationMillis = delayBetweenItems
                     ) {
                         SampleCarouselItem(index = it) {
-                            Box {
+                            Box(
+                                modifier = Modifier
+                                    .animateEnterExit(
+                                        enter = slideInHorizontally(),
+                                        exit = slideOutHorizontally()
+                                    )
+                            ) {
                                 Column(modifier = Modifier.align(Alignment.BottomStart)) {
                                     BasicText(text = "carousel-frame")
                                     Row {
@@ -829,7 +837,7 @@
     carouselState: CarouselState = remember { CarouselState() },
     itemCount: Int = 3,
     timeToDisplayItemMillis: Long = delayBetweenItems,
-    content: @Composable CarouselScope.(index: Int) -> Unit
+    content: @Composable AnimatedContentScope.(index: Int) -> Unit
 ) {
     Carousel(
         modifier = Modifier
@@ -856,24 +864,16 @@
 
 @OptIn(ExperimentalTvMaterial3Api::class, ExperimentalAnimationApi::class)
 @Composable
-private fun CarouselScope.SampleCarouselItem(
+private fun AnimatedContentScope.SampleCarouselItem(
     index: Int,
     modifier: Modifier = Modifier,
-    contentTransformStartToEnd: ContentTransform =
-        CarouselItemDefaults.contentTransformStartToEnd,
-    content: (@Composable () -> Unit) = { SampleButton("Play $index") },
+    content: (@Composable AnimatedContentScope.() -> Unit) = { SampleButton("Play $index") },
 ) {
-    CarouselItem(
-        modifier = modifier,
-        contentTransformStartToEnd = contentTransformStartToEnd,
-        background = {
-            Box(
-                modifier = Modifier
-                    .fillMaxSize()
-                    .background(Color.Red)
-                    .border(2.dp, Color.Blue)
-            )
-        }
+    Box(
+        modifier = modifier
+            .fillMaxSize()
+            .background(Color.Red)
+            .border(2.dp, Color.Blue)
     ) {
         content()
     }
diff --git a/tv/tv-material/src/main/java/androidx/tv/material3/Carousel.kt b/tv/tv-material/src/main/java/androidx/tv/material3/Carousel.kt
index c8b28a0..001aed4 100644
--- a/tv/tv-material/src/main/java/androidx/tv/material3/Carousel.kt
+++ b/tv/tv-material/src/main/java/androidx/tv/material3/Carousel.kt
@@ -17,6 +17,7 @@
 package androidx.tv.material3
 
 import androidx.compose.animation.AnimatedContent
+import androidx.compose.animation.AnimatedContentScope
 import androidx.compose.animation.AnimatedVisibilityScope
 import androidx.compose.animation.ContentTransform
 import androidx.compose.animation.ExperimentalAnimationApi
@@ -113,7 +114,7 @@
                 .padding(16.dp),
         )
     },
-    content: @Composable CarouselScope.(index: Int) -> Unit
+    content: @Composable AnimatedContentScope.(index: Int) -> Unit
 ) {
     CarouselStateUpdater(carouselState, itemCount)
     var focusState: FocusState? by remember { mutableStateOf(null) }
@@ -176,8 +177,7 @@
             // IndexOutOfBoundsException. Guarding against this by checking against itemCount
             // before invoking.
             if (itemCount > 0) {
-                CarouselScope(carouselState = carouselState)
-                    .content(if (activeItemIndex < itemCount) activeItemIndex else 0)
+                content(if (activeItemIndex < itemCount) activeItemIndex else 0)
             }
         }
         this.carouselIndicator()
diff --git a/tv/tv-material/src/main/java/androidx/tv/material3/CarouselItem.kt b/tv/tv-material/src/main/java/androidx/tv/material3/CarouselItem.kt
deleted file mode 100644
index d0b896a..0000000
--- a/tv/tv-material/src/main/java/androidx/tv/material3/CarouselItem.kt
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.tv.material3
-
-import android.content.Context
-import android.view.accessibility.AccessibilityManager
-import androidx.compose.animation.AnimatedVisibility
-import androidx.compose.animation.ContentTransform
-import androidx.compose.animation.ExperimentalAnimationApi
-import androidx.compose.animation.slideInHorizontally
-import androidx.compose.animation.slideOutHorizontally
-import androidx.compose.animation.togetherWith
-import androidx.compose.foundation.clickable
-import androidx.compose.foundation.focusable
-import androidx.compose.foundation.layout.Box
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.DisposableEffect
-import androidx.compose.runtime.LaunchedEffect
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
-import androidx.compose.runtime.setValue
-import androidx.compose.ui.ExperimentalComposeUiApi
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.focus.FocusDirection
-import androidx.compose.ui.focus.FocusState
-import androidx.compose.ui.focus.onFocusChanged
-import androidx.compose.ui.input.key.onKeyEvent
-import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.platform.LocalFocusManager
-import androidx.compose.ui.platform.LocalLayoutDirection
-import androidx.compose.ui.semantics.CollectionItemInfo
-import androidx.compose.ui.semantics.collectionItemInfo
-import androidx.compose.ui.semantics.isContainer
-import androidx.compose.ui.semantics.semantics
-import androidx.compose.ui.unit.LayoutDirection
-import androidx.tv.material3.KeyEventPropagation.ContinuePropagation
-
-/**
- * This composable is intended for use in Carousel.
- * A composable that has
- * - a [background] layer that is rendered as soon as the composable is visible.
- * - a [content] layer that is rendered on top of the [background]
- *
- * @param background composable defining the background of the item
- * @param itemIndex current active item index of the carousel
- * @param modifier modifier applied to the CarouselItem
- * @param contentTransform content transform to be applied to the content of the item when
- * scrolling
- * @param content composable defining the content displayed on top of the background
- */
-@Suppress("IllegalExperimentalApiUsage")
-@OptIn(ExperimentalAnimationApi::class, ExperimentalComposeUiApi::class)
-@ExperimentalTvMaterial3Api
-@Composable
-internal fun CarouselItem(
-    itemIndex: Int,
-    modifier: Modifier = Modifier,
-    background: @Composable () -> Unit = {},
-    contentTransform: ContentTransform =
-        CarouselItemDefaults.contentTransformStartToEnd,
-    content: @Composable () -> Unit,
-) {
-    val context = LocalContext.current
-    val accessibilityManager = remember {
-        context.getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager
-    }
-    var containerBoxFocusState: FocusState? by remember { mutableStateOf(null) }
-    val focusManager = LocalFocusManager.current
-    var exitFocus by remember { mutableStateOf(false) }
-
-    var isVisible by remember { mutableStateOf(false) }
-
-    DisposableEffect(itemIndex) {
-        isVisible = true
-        onDispose { isVisible = false }
-    }
-
-    // This box holds the focus until the overlay animation completes
-    Box(
-        modifier = modifier
-            .semantics(mergeDescendants = true) {
-                @Suppress("DEPRECATION")
-                isContainer = true
-                collectionItemInfo =
-                    CollectionItemInfo(
-                        rowIndex = 0,
-                        rowSpan = 1,
-                        columnIndex = itemIndex,
-                        columnSpan = 1
-                    )
-            }
-            .onKeyEvent {
-                exitFocus = it.isBackPress() && it.isTypeKeyDown()
-                ContinuePropagation
-            }
-            .onFocusChanged {
-                containerBoxFocusState = it
-                if (it.isFocused && exitFocus) {
-                    focusManager.moveFocus(FocusDirection.Exit)
-                    exitFocus = false
-                }
-            }
-            .then(
-                if (accessibilityManager.isEnabled)
-                    Modifier.clickable {
-                        focusManager.moveFocus(FocusDirection.Enter)
-                    }
-                else
-                    Modifier.focusable()
-            )
-    ) {
-        background()
-
-        AnimatedVisibility(
-            visible = isVisible,
-            enter = contentTransform.targetContentEnter,
-            exit = contentTransform.initialContentExit,
-        ) {
-            LaunchedEffect(transition.isRunning, containerBoxFocusState?.isFocused) {
-                if (!transition.isRunning &&
-                    containerBoxFocusState?.isFocused == true &&
-                    !accessibilityManager.isEnabled
-                ) {
-                    focusManager.moveFocus(FocusDirection.Enter)
-                }
-            }
-            content.invoke()
-        }
-    }
-}
-
-@ExperimentalTvMaterial3Api
-object CarouselItemDefaults {
-    /**
-     * Transform the content from right to left
-     */
-    // Keeping this as public so that users can access it directly without the isLTR helper
-    val contentTransformRightToLeft: ContentTransform
-        @Composable get() =
-            slideInHorizontally { it * 4 }
-                .togetherWith(slideOutHorizontally { it * 4 })
-
-    /**
-     * Transform the content from left to right
-     */
-    // Keeping this as public so that users can access it directly without the isLTR helper
-    val contentTransformLeftToRight: ContentTransform
-        @Composable get() =
-            slideInHorizontally()
-                .togetherWith(slideOutHorizontally())
-
-    /**
-     * Content transform applied when moving forward taking isLTR into account
-     */
-    val contentTransformStartToEnd
-        @Composable get() =
-            if (isLtr())
-                contentTransformRightToLeft
-            else
-                contentTransformLeftToRight
-
-    /**
-     * Content transform applied when moving backward taking isLTR into account
-     */
-    val contentTransformEndToStart
-        @Composable get() =
-            if (isLtr())
-                contentTransformLeftToRight
-            else
-                contentTransformRightToLeft
-}
-
-@Composable
-private fun isLtr() = LocalLayoutDirection.current == LayoutDirection.Ltr
diff --git a/tv/tv-material/src/main/java/androidx/tv/material3/CarouselScope.kt b/tv/tv-material/src/main/java/androidx/tv/material3/CarouselScope.kt
deleted file mode 100644
index 665ceb9..0000000
--- a/tv/tv-material/src/main/java/androidx/tv/material3/CarouselScope.kt
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.tv.material3
-
-import androidx.compose.animation.ContentTransform
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-
-/**
- * CarouselScope provides a [CarouselScope.CarouselItem] function which you can use to
- * provide the carousel item's animation, background and the inner content.
- */
-@ExperimentalTvMaterial3Api
-class CarouselScope @OptIn(ExperimentalTvMaterial3Api::class)
-internal constructor(private val carouselState: CarouselState) {
-    /**
-     * [CarouselScope.CarouselItem] can be used to define a item's animation, background, and
-     * content. Using this is optional and you can choose to define your own CarouselItem from
-     * scratch
-     *
-     * @param modifier modifier applied to the CarouselItem
-     * @param background composable defining the background of the item
-     * @param contentTransformStartToEnd content transform to be applied to the content of the item
-     * when scrolling forward in the carousel
-     * @param contentTransformEndToStart content transform to be applied to the content of the item
-     * when scrolling backward in the carousel
-     * @param content composable defining the content displayed on top of the background
-     */
-    @Composable
-    @ExperimentalTvMaterial3Api
-    fun CarouselItem(
-        modifier: Modifier = Modifier,
-        background: @Composable () -> Unit = {},
-        contentTransformStartToEnd: ContentTransform =
-            CarouselItemDefaults.contentTransformStartToEnd,
-        contentTransformEndToStart: ContentTransform =
-            CarouselItemDefaults.contentTransformEndToStart,
-        content: @Composable () -> Unit
-    ) {
-        CarouselItem(
-            background = background,
-            itemIndex = carouselState.activeItemIndex,
-            contentTransform =
-            if (carouselState.isMovingBackward)
-                contentTransformEndToStart
-            else
-                contentTransformStartToEnd,
-            modifier = modifier,
-            content = content,
-        )
-    }
-}
diff --git a/wear/compose/compose-material-core/src/commonMain/kotlin/androidx/wear/compose/materialcore/Text.kt b/wear/compose/compose-material-core/src/commonMain/kotlin/androidx/wear/compose/materialcore/Text.kt
index c258ffa..2b96e52 100644
--- a/wear/compose/compose-material-core/src/commonMain/kotlin/androidx/wear/compose/materialcore/Text.kt
+++ b/wear/compose/compose-material-core/src/commonMain/kotlin/androidx/wear/compose/materialcore/Text.kt
@@ -99,23 +99,20 @@
     onTextLayout: (TextLayoutResult) -> Unit,
     style: TextStyle
 ) {
-    val mergedStyle = style.merge(
-        TextStyle(
-            color = color,
-            fontSize = fontSize,
-            fontWeight = fontWeight,
-            textAlign = textAlign,
-            lineHeight = lineHeight,
-            fontFamily = fontFamily,
-            textDecoration = textDecoration,
-            fontStyle = fontStyle,
-            letterSpacing = letterSpacing
-        )
-    )
     BasicText(
         text = text,
         modifier = modifier,
-        style = mergedStyle,
+        style = style.merge(
+                color = color,
+                fontSize = fontSize,
+                fontWeight = fontWeight,
+                textAlign = textAlign,
+                lineHeight = lineHeight,
+                fontFamily = fontFamily,
+                textDecoration = textDecoration,
+                fontStyle = fontStyle,
+                letterSpacing = letterSpacing
+        ),
         onTextLayout = onTextLayout,
         overflow = overflow,
         softWrap = softWrap,
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/BoolNodes.java b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/BoolNodes.java
index afe4be6..c95560c 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/BoolNodes.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/main/java/androidx/wear/protolayout/expression/pipeline/BoolNodes.java
@@ -35,8 +35,7 @@
         private final DynamicTypeValueReceiverWithPreUpdate<Boolean> mDownstream;
 
         FixedBoolNode(
-                FixedBool protoNode,
-                DynamicTypeValueReceiverWithPreUpdate<Boolean> downstream) {
+                FixedBool protoNode, DynamicTypeValueReceiverWithPreUpdate<Boolean> downstream) {
             mValue = protoNode.getValue();
             mDownstream = downstream;
         }
@@ -171,6 +170,10 @@
                                 return a && b;
                             case LOGICAL_OP_TYPE_OR:
                                 return a || b;
+                            case LOGICAL_OP_TYPE_EQUAL:
+                                return a.equals(b);
+                            case LOGICAL_OP_TYPE_NOT_EQUAL:
+                                return !a.equals(b);
                             default:
                                 Log.e(TAG, "Unknown operation type in LogicalBoolOp");
                                 return false;
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/BoolNodesTest.java b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/BoolNodesTest.java
new file mode 100644
index 0000000..e5f987c
--- /dev/null
+++ b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/BoolNodesTest.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.protolayout.expression.pipeline;
+
+import static androidx.wear.protolayout.expression.proto.DynamicProto.LogicalOpType.LOGICAL_OP_TYPE_AND;
+import static androidx.wear.protolayout.expression.proto.DynamicProto.LogicalOpType.LOGICAL_OP_TYPE_EQUAL;
+import static androidx.wear.protolayout.expression.proto.DynamicProto.LogicalOpType.LOGICAL_OP_TYPE_NOT_EQUAL;
+import static androidx.wear.protolayout.expression.proto.DynamicProto.LogicalOpType.LOGICAL_OP_TYPE_OR;
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.wear.protolayout.expression.pipeline.BoolNodes.FixedBoolNode;
+import androidx.wear.protolayout.expression.pipeline.BoolNodes.StateBoolNode;
+import androidx.wear.protolayout.expression.proto.DynamicProto;
+import androidx.wear.protolayout.expression.proto.DynamicProto.LogicalBoolOp;
+import androidx.wear.protolayout.expression.proto.DynamicProto.StateBoolSource;
+import androidx.wear.protolayout.expression.proto.FixedProto.FixedBool;
+import androidx.wear.protolayout.expression.proto.StateEntryProto.StateEntryValue;
+import com.google.common.collect.ImmutableMap;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class BoolNodesTest {
+  @Test
+  public void fixedBoolNodeTest() {
+    List<Boolean> results = new ArrayList<>();
+
+    FixedBool protoNode = FixedBool.newBuilder().setValue(false).build();
+    FixedBoolNode node = new FixedBoolNode(protoNode, new AddToListCallback<>(results));
+
+    node.preInit();
+    node.init();
+
+    assertThat(results).containsExactly(false);
+  }
+
+  @Test
+  public void stateBoolNodeTest() {
+    List<Boolean> results = new ArrayList<>();
+    StateStore oss =
+        new StateStore(
+            ImmutableMap.of(
+                "foo",
+                StateEntryValue.newBuilder()
+                    .setBoolVal(FixedBool.newBuilder().setValue(true))
+                    .build()));
+
+    StateBoolSource protoNode = StateBoolSource.newBuilder().setSourceKey("foo").build();
+    StateBoolNode node = new StateBoolNode(oss, protoNode, new AddToListCallback<>(results));
+
+    node.preInit();
+    node.init();
+
+    assertThat(results).containsExactly(true);
+  }
+
+  @Test
+  public void stateBoolUpdatesWithStateChanges() {
+    List<Boolean> results = new ArrayList<>();
+    StateStore oss =
+        new StateStore(
+            ImmutableMap.of(
+                "foo",
+                StateEntryValue.newBuilder()
+                    .setBoolVal(FixedBool.newBuilder().setValue(true))
+                    .build()));
+
+    StateBoolSource protoNode = StateBoolSource.newBuilder().setSourceKey("foo").build();
+    StateBoolNode node = new StateBoolNode(oss, protoNode, new AddToListCallback<>(results));
+
+    node.preInit();
+    node.init();
+
+    results.clear();
+
+    oss.setStateEntryValuesProto(
+        ImmutableMap.of(
+            "foo",
+            StateEntryValue.newBuilder()
+                .setBoolVal(FixedBool.newBuilder().setValue(false))
+                .build()));
+
+    assertThat(results).containsExactly(false);
+  }
+
+  @Test
+  public void stateBoolNoUpdatesAfterDestroy() {
+    List<Boolean> results = new ArrayList<>();
+    StateStore oss =
+        new StateStore(
+            ImmutableMap.of(
+                "foo",
+                StateEntryValue.newBuilder()
+                    .setBoolVal(FixedBool.newBuilder().setValue(false))
+                    .build()));
+
+    StateBoolSource protoNode = StateBoolSource.newBuilder().setSourceKey("foo").build();
+    StateBoolNode node = new StateBoolNode(oss, protoNode, new AddToListCallback<>(results));
+
+    node.preInit();
+    node.init();
+    assertThat(results).containsExactly(false);
+
+    results.clear();
+    node.destroy();
+    oss.setStateEntryValuesProto(
+        ImmutableMap.of(
+            "foo",
+            StateEntryValue.newBuilder()
+                .setBoolVal(FixedBool.newBuilder().setValue(true))
+                .build()));
+    assertThat(results).isEmpty();
+  }
+
+  @Test
+  public void logicalBoolOpTest() {
+    assertThat(evaluateLogicalOperation(LOGICAL_OP_TYPE_AND, true, true)).isTrue();
+    assertThat(evaluateLogicalOperation(LOGICAL_OP_TYPE_AND, true, false)).isFalse();
+
+    assertThat(evaluateLogicalOperation(LOGICAL_OP_TYPE_OR, true, false)).isTrue();
+    assertThat(evaluateLogicalOperation(LOGICAL_OP_TYPE_OR, false, false)).isFalse();
+
+    assertThat(evaluateLogicalOperation(LOGICAL_OP_TYPE_EQUAL, true, true)).isTrue();
+    assertThat(evaluateLogicalOperation(LOGICAL_OP_TYPE_EQUAL, true, false)).isFalse();
+
+    assertThat(evaluateLogicalOperation(LOGICAL_OP_TYPE_NOT_EQUAL, true, false)).isTrue();
+    assertThat(evaluateLogicalOperation(LOGICAL_OP_TYPE_NOT_EQUAL, false, false)).isFalse();
+  }
+
+  private static boolean evaluateLogicalOperation(
+      DynamicProto.LogicalOpType logicalOpType, boolean lhs, boolean rhs) {
+    List<Boolean> results = new ArrayList<>();
+
+    LogicalBoolOp protoNode = LogicalBoolOp.newBuilder().setOperationType(logicalOpType).build();
+    BoolNodes.LogicalBoolOp node =
+        new BoolNodes.LogicalBoolOp(protoNode, new AddToListCallback<>(results));
+
+    FixedBool lhsProtoNode = FixedBool.newBuilder().setValue(lhs).build();
+    FixedBoolNode lhsNode = new FixedBoolNode(lhsProtoNode, node.getLhsIncomingCallback());
+    lhsNode.init();
+
+    FixedBool rhsProtoNode = FixedBool.newBuilder().setValue(rhs).build();
+    FixedBoolNode rhsNode = new FixedBoolNode(rhsProtoNode, node.getRhsIncomingCallback());
+    rhsNode.init();
+
+    return results.get(0);
+  }
+}
diff --git a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/ParametrizedDynamicTypeEvaluatorTest.java b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/ParametrizedDynamicTypeEvaluatorTest.java
index 7632f30..2f62ea9 100644
--- a/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/ParametrizedDynamicTypeEvaluatorTest.java
+++ b/wear/protolayout/protolayout-expression-pipeline/src/test/java/androidx/wear/protolayout/expression/pipeline/ParametrizedDynamicTypeEvaluatorTest.java
@@ -132,6 +132,10 @@
             test(DynamicFloat.constant(0.6f).gte(0.4f), true),
             test(DynamicFloat.constant(0.1234568f).gte(0.1234562f), true),
             test(DynamicBool.constant(true), true),
+            test(DynamicBool.constant(true).eq(DynamicBool.constant(true)), true),
+            test(DynamicBool.constant(true).eq(DynamicBool.constant(false)), false),
+            test(DynamicBool.constant(true).ne(DynamicBool.constant(true)), false),
+            test(DynamicBool.constant(true).ne(DynamicBool.constant(false)), true),
             test(DynamicBool.constant(true).negate(), false),
             test(DynamicBool.constant(false).negate(), true),
             test(DynamicBool.constant(true).and(DynamicBool.constant(true)), true),
diff --git a/wear/protolayout/protolayout-expression/api/current.txt b/wear/protolayout/protolayout-expression/api/current.txt
index 973a583..b4f26d0 100644
--- a/wear/protolayout/protolayout-expression/api/current.txt
+++ b/wear/protolayout/protolayout-expression/api/current.txt
@@ -97,8 +97,10 @@
   public static interface DynamicBuilders.DynamicBool extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool and(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool constant(boolean);
+    method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool eq(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool fromByteArray(byte[]);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool fromState(String);
+    method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool ne(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool negate();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool or(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default byte[] toDynamicBoolByteArray();
diff --git a/wear/protolayout/protolayout-expression/api/public_plus_experimental_current.txt b/wear/protolayout/protolayout-expression/api/public_plus_experimental_current.txt
index 0864423..adf05da 100644
--- a/wear/protolayout/protolayout-expression/api/public_plus_experimental_current.txt
+++ b/wear/protolayout/protolayout-expression/api/public_plus_experimental_current.txt
@@ -97,8 +97,10 @@
   public static interface DynamicBuilders.DynamicBool extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool and(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool constant(boolean);
+    method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool eq(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool fromByteArray(byte[]);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool fromState(String);
+    method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool ne(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool negate();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool or(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default byte[] toDynamicBoolByteArray();
diff --git a/wear/protolayout/protolayout-expression/api/restricted_current.txt b/wear/protolayout/protolayout-expression/api/restricted_current.txt
index 973a583..b4f26d0 100644
--- a/wear/protolayout/protolayout-expression/api/restricted_current.txt
+++ b/wear/protolayout/protolayout-expression/api/restricted_current.txt
@@ -97,8 +97,10 @@
   public static interface DynamicBuilders.DynamicBool extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType {
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool and(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool constant(boolean);
+    method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool eq(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool fromByteArray(byte[]);
     method public static androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool fromState(String);
+    method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool ne(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool negate();
     method public default androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool or(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
     method public default byte[] toDynamicBoolByteArray();
diff --git a/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicBuilders.java b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicBuilders.java
index debe91bc..9374277 100644
--- a/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicBuilders.java
+++ b/wear/protolayout/protolayout-expression/src/main/java/androidx/wear/protolayout/expression/DynamicBuilders.java
@@ -265,7 +265,13 @@
      * @since 1.2
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
-    @IntDef({LOGICAL_OP_TYPE_UNDEFINED, LOGICAL_OP_TYPE_AND, LOGICAL_OP_TYPE_OR})
+    @IntDef({
+        LOGICAL_OP_TYPE_UNDEFINED,
+        LOGICAL_OP_TYPE_AND,
+        LOGICAL_OP_TYPE_OR,
+        LOGICAL_OP_TYPE_EQUAL,
+        LOGICAL_OP_TYPE_NOT_EQUAL
+    })
     @Retention(RetentionPolicy.SOURCE)
     @interface LogicalOpType {}
 
@@ -291,6 +297,20 @@
     static final int LOGICAL_OP_TYPE_OR = 2;
 
     /**
+     * Equal check.
+     *
+     * @since 1.2
+     */
+    static final int LOGICAL_OP_TYPE_EQUAL = 3;
+
+    /**
+     * Not Equal check.
+     *
+     * @since 1.2
+     */
+    static final int LOGICAL_OP_TYPE_NOT_EQUAL = 4;
+
+    /**
      * The duration part to retrieve using {@link GetDurationPartOp}.
      *
      * @since 1.2
@@ -2334,8 +2354,8 @@
 
                 /**
                  * Sets minimum number of integer digits for the formatter. Defaults to one if not
-                 * specified. If minIntegerDigits is zero and the -1 < input < 1, the Integer
-                 * part will not appear.
+                 * specified. If minIntegerDigits is zero and the -1 < input < 1, the Integer part
+                 * will not appear.
                  */
                 @NonNull
                 public Builder setMinIntegerDigits(@IntRange(from = 0) int minIntegerDigits) {
@@ -2643,7 +2663,6 @@
             return fromProto(proto, null);
         }
 
-
         @NonNull
         DynamicProto.StateStringSource toProto() {
             return mImpl;
@@ -4780,8 +4799,8 @@
 
                 /**
                  * Sets minimum number of integer digits for the formatter. Defaults to one if not
-                 * specified. If minIntegerDigits is zero and the -1 < input < 1, the Integer
-                 * part will not appear.
+                 * specified. If minIntegerDigits is zero and the -1 < input < 1, the Integer part
+                 * will not appear.
                  */
                 @NonNull
                 public Builder setMinIntegerDigits(@IntRange(from = 0) int minIntegerDigits) {
@@ -5607,6 +5626,32 @@
                     .build();
         }
 
+        /**
+         * Returns a {@link DynamicBool} that is true if the value of this {@link DynamicBool} and
+         * {@code other} are equal, otherwise it's false.
+         */
+        @NonNull
+        default DynamicBool eq(@NonNull DynamicBool other) {
+            return new LogicalBoolOp.Builder()
+                    .setInputLhs(this)
+                    .setInputRhs(other)
+                    .setOperationType(DynamicBuilders.LOGICAL_OP_TYPE_EQUAL)
+                    .build();
+        }
+
+        /**
+         * Returns a {@link DynamicBool} that is true if the value of this {@link DynamicBool} and
+         * {@code other} are not equal, otherwise it's false.
+         */
+        @NonNull
+        default DynamicBool ne(@NonNull DynamicBool other) {
+            return new LogicalBoolOp.Builder()
+                    .setInputLhs(this)
+                    .setInputRhs(other)
+                    .setOperationType(DynamicBuilders.LOGICAL_OP_TYPE_NOT_EQUAL)
+                    .build();
+        }
+
         /** Get the fingerprint for this object or null if unknown. */
         @RestrictTo(Scope.LIBRARY_GROUP)
         @Nullable
@@ -5622,7 +5667,6 @@
         }
     }
 
-
     /** Creates a new wrapper instance from the proto. */
     @RestrictTo(Scope.LIBRARY_GROUP)
     @NonNull
@@ -6366,7 +6410,6 @@
         }
     }
 
-
     /** Creates a new wrapper instance from the proto. */
     @RestrictTo(Scope.LIBRARY_GROUP)
     @NonNull
diff --git a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicBoolTest.java b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicBoolTest.java
index b9bf7e3..beb1207 100644
--- a/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicBoolTest.java
+++ b/wear/protolayout/protolayout-expression/src/test/java/androidx/wear/protolayout/expression/DynamicBoolTest.java
@@ -17,107 +17,143 @@
 package androidx.wear.protolayout.expression;
 
 import static androidx.wear.protolayout.expression.proto.DynamicProto.LogicalOpType.LOGICAL_OP_TYPE_AND;
+import static androidx.wear.protolayout.expression.proto.DynamicProto.LogicalOpType.LOGICAL_OP_TYPE_EQUAL;
+import static androidx.wear.protolayout.expression.proto.DynamicProto.LogicalOpType.LOGICAL_OP_TYPE_NOT_EQUAL;
 import static androidx.wear.protolayout.expression.proto.DynamicProto.LogicalOpType.LOGICAL_OP_TYPE_OR;
+
 import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.assertThrows;
 
 import androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
 
 @RunWith(RobolectricTestRunner.class)
 public final class DynamicBoolTest {
-  private static final String STATE_KEY = "state-key";
+    private static final String STATE_KEY = "state-key";
 
-  @Test
-  public void constantBool() {
-    DynamicBool falseBool = DynamicBool.constant(false);
-    DynamicBool trueBool = DynamicBool.constant(true);
+    @Test
+    public void constantBool() {
+        DynamicBool falseBool = DynamicBool.constant(false);
+        DynamicBool trueBool = DynamicBool.constant(true);
 
-    assertThat(falseBool.toDynamicBoolProto().getFixed().getValue()).isFalse();
-    assertThat(trueBool.toDynamicBoolProto().getFixed().getValue()).isTrue();
-  }
+        assertThat(falseBool.toDynamicBoolProto().getFixed().getValue()).isFalse();
+        assertThat(trueBool.toDynamicBoolProto().getFixed().getValue()).isTrue();
+    }
 
-  @Test
-  public void constantToString() {
-    assertThat(DynamicBool.constant(true).toString()).isEqualTo("FixedBool{value=true}");
-  }
+    @Test
+    public void constantToString() {
+        assertThat(DynamicBool.constant(true).toString()).isEqualTo("FixedBool{value=true}");
+    }
 
-  @Test
-  public void stateEntryValueBool() {
-    DynamicBool stateBool = DynamicBool.fromState(STATE_KEY);
+    @Test
+    public void stateEntryValueBool() {
+        DynamicBool stateBool = DynamicBool.fromState(STATE_KEY);
 
-    assertThat(stateBool.toDynamicBoolProto().getStateSource().getSourceKey()).isEqualTo(STATE_KEY);
-  }
+        assertThat(stateBool.toDynamicBoolProto().getStateSource().getSourceKey())
+                .isEqualTo(STATE_KEY);
+    }
 
-  @Test
-  public void stateToString() {
-    assertThat(DynamicBool.fromState("key").toString()).isEqualTo("StateBoolSource{sourceKey=key}");
-  }
+    @Test
+    public void stateToString() {
+        assertThat(DynamicBool.fromState("key").toString())
+                .isEqualTo("StateBoolSource{sourceKey=key}");
+    }
 
-  @Test
-  public void andOpBool() {
-    DynamicBool firstBool = DynamicBool.constant(false);
-    DynamicBool secondBool = DynamicBool.constant(true);
+    @Test
+    public void andOpBool() {
+        DynamicBool firstBool = DynamicBool.constant(false);
+        DynamicBool secondBool = DynamicBool.constant(true);
 
-    DynamicBool result = firstBool.and(secondBool);
-    assertThat(result.toDynamicBoolProto().getLogicalOp().getOperationType())
-        .isEqualTo(LOGICAL_OP_TYPE_AND);
-    assertThat(result.toDynamicBoolProto().getLogicalOp().getInputLhs())
-        .isEqualTo(firstBool.toDynamicBoolProto());
-    assertThat(result.toDynamicBoolProto().getLogicalOp().getInputRhs())
-        .isEqualTo(secondBool.toDynamicBoolProto());
-  }
+        DynamicBool result = firstBool.and(secondBool);
+        assertThat(result.toDynamicBoolProto().getLogicalOp().getOperationType())
+                .isEqualTo(LOGICAL_OP_TYPE_AND);
+        assertThat(result.toDynamicBoolProto().getLogicalOp().getInputLhs())
+                .isEqualTo(firstBool.toDynamicBoolProto());
+        assertThat(result.toDynamicBoolProto().getLogicalOp().getInputRhs())
+                .isEqualTo(secondBool.toDynamicBoolProto());
+    }
 
-  @Test
-  public void orOpBool() {
-    DynamicBool firstBool = DynamicBool.constant(false);
-    DynamicBool secondBool = DynamicBool.constant(true);
+    @Test
+    public void orOpBool() {
+        DynamicBool firstBool = DynamicBool.constant(false);
+        DynamicBool secondBool = DynamicBool.constant(true);
 
-    DynamicBool result = firstBool.or(secondBool);
-    assertThat(result.toDynamicBoolProto().getLogicalOp().getOperationType())
-        .isEqualTo(LOGICAL_OP_TYPE_OR);
-    assertThat(result.toDynamicBoolProto().getLogicalOp().getInputLhs())
-        .isEqualTo(firstBool.toDynamicBoolProto());
-    assertThat(result.toDynamicBoolProto().getLogicalOp().getInputRhs())
-        .isEqualTo(secondBool.toDynamicBoolProto());
-  }
+        DynamicBool result = firstBool.or(secondBool);
+        assertThat(result.toDynamicBoolProto().getLogicalOp().getOperationType())
+                .isEqualTo(LOGICAL_OP_TYPE_OR);
+        assertThat(result.toDynamicBoolProto().getLogicalOp().getInputLhs())
+                .isEqualTo(firstBool.toDynamicBoolProto());
+        assertThat(result.toDynamicBoolProto().getLogicalOp().getInputRhs())
+                .isEqualTo(secondBool.toDynamicBoolProto());
+    }
 
-  @Test
-  public void logicalOpToString() {
-    assertThat(DynamicBool.constant(true).and(DynamicBool.constant(false)).toString())
-        .isEqualTo(
-            "LogicalBoolOp{"
-                + "inputLhs=FixedBool{value=true}, "
-                + "inputRhs=FixedBool{value=false}, "
-                + "operationType=1}");
-  }
+    @Test
+    public void boolComparison_equalOp() {
+        DynamicBool firstBool = DynamicBool.constant(false);
+        DynamicBool secondBool = DynamicBool.constant(true);
 
-  @Test
-  public void negateOpBool() {
-    DynamicBool firstBool = DynamicBool.constant(true);
+        DynamicBool result = firstBool.eq(secondBool);
+        assertThat(result.toDynamicBoolProto().getLogicalOp().getOperationType())
+                .isEqualTo(LOGICAL_OP_TYPE_EQUAL);
+        assertThat(result.toDynamicBoolProto().getLogicalOp().getInputLhs())
+                .isEqualTo(firstBool.toDynamicBoolProto());
+        assertThat(result.toDynamicBoolProto().getLogicalOp().getInputRhs())
+                .isEqualTo(secondBool.toDynamicBoolProto());
+    }
 
-    assertThat(firstBool.negate().toDynamicBoolProto().getNotOp().getInput())
-        .isEqualTo(firstBool.toDynamicBoolProto());
-  }
+    @Test
+    public void boolComparison_notEqualOp() {
+        DynamicBool firstBool = DynamicBool.constant(false);
+        DynamicBool secondBool = DynamicBool.constant(true);
 
-  @Test
-  public void logicalToString() {
-    assertThat(DynamicBool.constant(true).negate().toString())
-        .isEqualTo("NotBoolOp{input=FixedBool{value=true}}");
-  }
+        DynamicBool result = firstBool.ne(secondBool);
+        assertThat(result.toDynamicBoolProto().getLogicalOp().getOperationType())
+                .isEqualTo(LOGICAL_OP_TYPE_NOT_EQUAL);
+        assertThat(result.toDynamicBoolProto().getLogicalOp().getInputLhs())
+                .isEqualTo(firstBool.toDynamicBoolProto());
+        assertThat(result.toDynamicBoolProto().getLogicalOp().getInputRhs())
+                .isEqualTo(secondBool.toDynamicBoolProto());
+    }
 
-  @Test
-  public void validProto() {
-    DynamicBool from = DynamicBool.constant(true);
-    DynamicBool to = DynamicBool.fromByteArray(from.toDynamicBoolByteArray());
+    @Test
+    public void logicalOpToString() {
+        assertThat(DynamicBool.constant(true).and(DynamicBool.constant(false)).toString())
+                .isEqualTo(
+                        "LogicalBoolOp{"
+                                + "inputLhs=FixedBool{value=true}, "
+                                + "inputRhs=FixedBool{value=false}, "
+                                + "operationType=1}");
+    }
 
-    assertThat(to.toDynamicBoolProto().getFixed().getValue()).isTrue();
-  }
+    @Test
+    public void negateOpBool() {
+        DynamicBool firstBool = DynamicBool.constant(true);
 
-  @Test
-  public void invalidProto() {
-    assertThrows(IllegalArgumentException.class, () -> DynamicBool.fromByteArray(new byte[] {1}));
-  }
+        assertThat(firstBool.negate().toDynamicBoolProto().getNotOp().getInput())
+                .isEqualTo(firstBool.toDynamicBoolProto());
+    }
+
+    @Test
+    public void logicalToString() {
+        assertThat(DynamicBool.constant(true).negate().toString())
+                .isEqualTo("NotBoolOp{input=FixedBool{value=true}}");
+    }
+
+    @Test
+    public void validProto() {
+        DynamicBool from = DynamicBool.constant(true);
+        DynamicBool to = DynamicBool.fromByteArray(from.toDynamicBoolByteArray());
+
+        assertThat(to.toDynamicBoolProto().getFixed().getValue()).isTrue();
+    }
+
+    @Test
+    public void invalidProto() {
+        assertThrows(
+                IllegalArgumentException.class, () -> DynamicBool.fromByteArray(new byte[] {1}));
+    }
 }
diff --git a/wear/protolayout/protolayout-proto/src/main/proto/dynamic.proto b/wear/protolayout/protolayout-proto/src/main/proto/dynamic.proto
index b12923b..b0729ce 100644
--- a/wear/protolayout/protolayout-proto/src/main/proto/dynamic.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/dynamic.proto
@@ -446,6 +446,12 @@
 
   // Logical OR.
   LOGICAL_OP_TYPE_OR = 2;
+
+  // Equal check
+  LOGICAL_OP_TYPE_EQUAL = 3;
+
+  // Not Equal check.
+  LOGICAL_OP_TYPE_NOT_EQUAL = 4;
 }
 
 // A logical boolean operator, implementing "boolean result = LHS <op> RHS",
diff --git a/wear/protolayout/protolayout-proto/src/main/proto/trigger.proto b/wear/protolayout/protolayout-proto/src/main/proto/trigger.proto
index f9cc1c5..24e5132 100644
--- a/wear/protolayout/protolayout-proto/src/main/proto/trigger.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/trigger.proto
@@ -23,7 +23,7 @@
 // condition is true initially, that will fire the trigger on load.
 message OnConditionMetTrigger {
   // Dynamic boolean used as trigger.
-  androidx.wear.protolayout.expression.proto.DynamicBool trigger = 1;
+  androidx.wear.protolayout.expression.proto.DynamicBool condition = 1;
 }
 
 // The triggers that can be fired.
diff --git a/wear/protolayout/protolayout-renderer/src/main/java/androidx/wear/protolayout/renderer/inflater/ProtoLayoutInflater.java b/wear/protolayout/protolayout-renderer/src/main/java/androidx/wear/protolayout/renderer/inflater/ProtoLayoutInflater.java
index a50e95d..cc1b1a1 100644
--- a/wear/protolayout/protolayout-renderer/src/main/java/androidx/wear/protolayout/renderer/inflater/ProtoLayoutInflater.java
+++ b/wear/protolayout/protolayout-renderer/src/main/java/androidx/wear/protolayout/renderer/inflater/ProtoLayoutInflater.java
@@ -2446,7 +2446,7 @@
                         pipelineMaker
                                 .get()
                                 .addResolvedAnimatedImageWithBoolTrigger(
-                                        avd, trigger, posId, conditionTrigger.getTrigger());
+                                        avd, trigger, posId, conditionTrigger.getCondition());
                     } else {
                         // Use default trigger if it's not set.
                         if (trigger == null
diff --git a/wear/protolayout/protolayout-renderer/src/test/java/androidx/wear/protolayout/renderer/dynamicdata/ProtoLayoutDynamicDataPipelineTest.java b/wear/protolayout/protolayout-renderer/src/test/java/androidx/wear/protolayout/renderer/dynamicdata/ProtoLayoutDynamicDataPipelineTest.java
index f8c0a3d..9b7d7ac 100644
--- a/wear/protolayout/protolayout-renderer/src/test/java/androidx/wear/protolayout/renderer/dynamicdata/ProtoLayoutDynamicDataPipelineTest.java
+++ b/wear/protolayout/protolayout-renderer/src/test/java/androidx/wear/protolayout/renderer/dynamicdata/ProtoLayoutDynamicDataPipelineTest.java
@@ -1041,7 +1041,7 @@
     private static Trigger conditionTrigger(DynamicBool dynamicBool) {
         return Trigger.newBuilder()
                 .setOnConditionMetTrigger(
-                        OnConditionMetTrigger.newBuilder().setTrigger(dynamicBool).build())
+                        OnConditionMetTrigger.newBuilder().setCondition(dynamicBool).build())
                 .build();
     }
 
diff --git a/wear/protolayout/protolayout/api/current.txt b/wear/protolayout/protolayout/api/current.txt
index 208a7d4..506910e9 100644
--- a/wear/protolayout/protolayout/api/current.txt
+++ b/wear/protolayout/protolayout/api/current.txt
@@ -939,20 +939,6 @@
     field public static final int IMAGE_FORMAT_UNDEFINED = 0; // 0x0
   }
 
-  public static final class ResourceBuilders.AndroidAnimatedImageResourceByResId {
-    method public int getAnimatedImageFormat();
-    method @DrawableRes public int getResourceId();
-    method public androidx.wear.protolayout.TriggerBuilders.Trigger? getStartTrigger();
-  }
-
-  public static final class ResourceBuilders.AndroidAnimatedImageResourceByResId.Builder {
-    ctor public ResourceBuilders.AndroidAnimatedImageResourceByResId.Builder();
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId build();
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId.Builder setAnimatedImageFormat(int);
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId.Builder setResourceId(@DrawableRes int);
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId.Builder setStartTrigger(androidx.wear.protolayout.TriggerBuilders.Trigger);
-  }
-
   public static final class ResourceBuilders.AndroidImageResourceByResId {
     method @DrawableRes public int getResourceId();
   }
@@ -963,33 +949,15 @@
     method public androidx.wear.protolayout.ResourceBuilders.AndroidImageResourceByResId.Builder setResourceId(@DrawableRes int);
   }
 
-  public static final class ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId {
-    method public int getAnimatedImageFormat();
-    method public androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat? getProgress();
-    method @DrawableRes public int getResourceId();
-  }
-
-  public static final class ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId.Builder {
-    ctor public ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId.Builder();
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId build();
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId.Builder setAnimatedImageFormat(int);
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId.Builder setProgress(androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat);
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId.Builder setResourceId(@DrawableRes int);
-  }
-
   public static final class ResourceBuilders.ImageResource {
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId? getAndroidAnimatedResourceByResId();
     method public androidx.wear.protolayout.ResourceBuilders.AndroidImageResourceByResId? getAndroidResourceByResId();
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId? getAndroidSeekableAnimatedResourceByResId();
     method public androidx.wear.protolayout.ResourceBuilders.InlineImageResource? getInlineResource();
   }
 
   public static final class ResourceBuilders.ImageResource.Builder {
     ctor public ResourceBuilders.ImageResource.Builder();
     method public androidx.wear.protolayout.ResourceBuilders.ImageResource build();
-    method public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setAndroidAnimatedResourceByResId(androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId);
     method public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setAndroidResourceByResId(androidx.wear.protolayout.ResourceBuilders.AndroidImageResourceByResId);
-    method public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setAndroidSeekableAnimatedResourceByResId(androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId);
     method public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setInlineResource(androidx.wear.protolayout.ResourceBuilders.InlineImageResource);
   }
 
@@ -1075,26 +1043,8 @@
   }
 
   public final class TriggerBuilders {
-    method public static androidx.wear.protolayout.TriggerBuilders.OnConditionMetTrigger createOnConditionMetTrigger(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
-    method public static androidx.wear.protolayout.TriggerBuilders.OnLoadTrigger createOnLoadTrigger();
-  }
-
-  public static final class TriggerBuilders.OnConditionMetTrigger implements androidx.wear.protolayout.TriggerBuilders.Trigger {
-    method public androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool? getTrigger();
-  }
-
-  public static final class TriggerBuilders.OnConditionMetTrigger.Builder {
-    ctor public TriggerBuilders.OnConditionMetTrigger.Builder();
-    method public androidx.wear.protolayout.TriggerBuilders.OnConditionMetTrigger build();
-    method public androidx.wear.protolayout.TriggerBuilders.OnConditionMetTrigger.Builder setTrigger(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
-  }
-
-  public static final class TriggerBuilders.OnLoadTrigger implements androidx.wear.protolayout.TriggerBuilders.Trigger {
-  }
-
-  public static final class TriggerBuilders.OnLoadTrigger.Builder {
-    ctor public TriggerBuilders.OnLoadTrigger.Builder();
-    method public androidx.wear.protolayout.TriggerBuilders.OnLoadTrigger build();
+    method public static androidx.wear.protolayout.TriggerBuilders.Trigger createOnConditionMetTrigger(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
+    method public static androidx.wear.protolayout.TriggerBuilders.Trigger createOnLoadTrigger();
   }
 
   public static interface TriggerBuilders.Trigger {
diff --git a/wear/protolayout/protolayout/api/public_plus_experimental_current.txt b/wear/protolayout/protolayout/api/public_plus_experimental_current.txt
index 4a1e57f..ce4acaa 100644
--- a/wear/protolayout/protolayout/api/public_plus_experimental_current.txt
+++ b/wear/protolayout/protolayout/api/public_plus_experimental_current.txt
@@ -1125,7 +1125,7 @@
     field public static final int IMAGE_FORMAT_UNDEFINED = 0; // 0x0
   }
 
-  public static final class ResourceBuilders.AndroidAnimatedImageResourceByResId {
+  @androidx.wear.protolayout.expression.ProtoLayoutExperimental public static final class ResourceBuilders.AndroidAnimatedImageResourceByResId {
     method public int getAnimatedImageFormat();
     method @DrawableRes public int getResourceId();
     method public androidx.wear.protolayout.TriggerBuilders.Trigger? getStartTrigger();
@@ -1149,7 +1149,7 @@
     method public androidx.wear.protolayout.ResourceBuilders.AndroidImageResourceByResId.Builder setResourceId(@DrawableRes int);
   }
 
-  public static final class ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId {
+  @androidx.wear.protolayout.expression.ProtoLayoutExperimental public static final class ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId {
     method public int getAnimatedImageFormat();
     method public androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat? getProgress();
     method @DrawableRes public int getResourceId();
@@ -1164,18 +1164,18 @@
   }
 
   public static final class ResourceBuilders.ImageResource {
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId? getAndroidAnimatedResourceByResId();
+    method @androidx.wear.protolayout.expression.ProtoLayoutExperimental public androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId? getAndroidAnimatedResourceByResId();
     method public androidx.wear.protolayout.ResourceBuilders.AndroidImageResourceByResId? getAndroidResourceByResId();
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId? getAndroidSeekableAnimatedResourceByResId();
+    method @androidx.wear.protolayout.expression.ProtoLayoutExperimental public androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId? getAndroidSeekableAnimatedResourceByResId();
     method public androidx.wear.protolayout.ResourceBuilders.InlineImageResource? getInlineResource();
   }
 
   public static final class ResourceBuilders.ImageResource.Builder {
     ctor public ResourceBuilders.ImageResource.Builder();
     method public androidx.wear.protolayout.ResourceBuilders.ImageResource build();
-    method public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setAndroidAnimatedResourceByResId(androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId);
+    method @androidx.wear.protolayout.expression.ProtoLayoutExperimental public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setAndroidAnimatedResourceByResId(androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId);
     method public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setAndroidResourceByResId(androidx.wear.protolayout.ResourceBuilders.AndroidImageResourceByResId);
-    method public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setAndroidSeekableAnimatedResourceByResId(androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId);
+    method @androidx.wear.protolayout.expression.ProtoLayoutExperimental public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setAndroidSeekableAnimatedResourceByResId(androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId);
     method public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setInlineResource(androidx.wear.protolayout.ResourceBuilders.InlineImageResource);
   }
 
@@ -1261,26 +1261,8 @@
   }
 
   public final class TriggerBuilders {
-    method public static androidx.wear.protolayout.TriggerBuilders.OnConditionMetTrigger createOnConditionMetTrigger(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
-    method public static androidx.wear.protolayout.TriggerBuilders.OnLoadTrigger createOnLoadTrigger();
-  }
-
-  public static final class TriggerBuilders.OnConditionMetTrigger implements androidx.wear.protolayout.TriggerBuilders.Trigger {
-    method public androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool? getTrigger();
-  }
-
-  public static final class TriggerBuilders.OnConditionMetTrigger.Builder {
-    ctor public TriggerBuilders.OnConditionMetTrigger.Builder();
-    method public androidx.wear.protolayout.TriggerBuilders.OnConditionMetTrigger build();
-    method public androidx.wear.protolayout.TriggerBuilders.OnConditionMetTrigger.Builder setTrigger(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
-  }
-
-  public static final class TriggerBuilders.OnLoadTrigger implements androidx.wear.protolayout.TriggerBuilders.Trigger {
-  }
-
-  public static final class TriggerBuilders.OnLoadTrigger.Builder {
-    ctor public TriggerBuilders.OnLoadTrigger.Builder();
-    method public androidx.wear.protolayout.TriggerBuilders.OnLoadTrigger build();
+    method public static androidx.wear.protolayout.TriggerBuilders.Trigger createOnConditionMetTrigger(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
+    method public static androidx.wear.protolayout.TriggerBuilders.Trigger createOnLoadTrigger();
   }
 
   public static interface TriggerBuilders.Trigger {
diff --git a/wear/protolayout/protolayout/api/restricted_current.txt b/wear/protolayout/protolayout/api/restricted_current.txt
index 208a7d4..506910e9 100644
--- a/wear/protolayout/protolayout/api/restricted_current.txt
+++ b/wear/protolayout/protolayout/api/restricted_current.txt
@@ -939,20 +939,6 @@
     field public static final int IMAGE_FORMAT_UNDEFINED = 0; // 0x0
   }
 
-  public static final class ResourceBuilders.AndroidAnimatedImageResourceByResId {
-    method public int getAnimatedImageFormat();
-    method @DrawableRes public int getResourceId();
-    method public androidx.wear.protolayout.TriggerBuilders.Trigger? getStartTrigger();
-  }
-
-  public static final class ResourceBuilders.AndroidAnimatedImageResourceByResId.Builder {
-    ctor public ResourceBuilders.AndroidAnimatedImageResourceByResId.Builder();
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId build();
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId.Builder setAnimatedImageFormat(int);
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId.Builder setResourceId(@DrawableRes int);
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId.Builder setStartTrigger(androidx.wear.protolayout.TriggerBuilders.Trigger);
-  }
-
   public static final class ResourceBuilders.AndroidImageResourceByResId {
     method @DrawableRes public int getResourceId();
   }
@@ -963,33 +949,15 @@
     method public androidx.wear.protolayout.ResourceBuilders.AndroidImageResourceByResId.Builder setResourceId(@DrawableRes int);
   }
 
-  public static final class ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId {
-    method public int getAnimatedImageFormat();
-    method public androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat? getProgress();
-    method @DrawableRes public int getResourceId();
-  }
-
-  public static final class ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId.Builder {
-    ctor public ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId.Builder();
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId build();
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId.Builder setAnimatedImageFormat(int);
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId.Builder setProgress(androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat);
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId.Builder setResourceId(@DrawableRes int);
-  }
-
   public static final class ResourceBuilders.ImageResource {
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId? getAndroidAnimatedResourceByResId();
     method public androidx.wear.protolayout.ResourceBuilders.AndroidImageResourceByResId? getAndroidResourceByResId();
-    method public androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId? getAndroidSeekableAnimatedResourceByResId();
     method public androidx.wear.protolayout.ResourceBuilders.InlineImageResource? getInlineResource();
   }
 
   public static final class ResourceBuilders.ImageResource.Builder {
     ctor public ResourceBuilders.ImageResource.Builder();
     method public androidx.wear.protolayout.ResourceBuilders.ImageResource build();
-    method public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setAndroidAnimatedResourceByResId(androidx.wear.protolayout.ResourceBuilders.AndroidAnimatedImageResourceByResId);
     method public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setAndroidResourceByResId(androidx.wear.protolayout.ResourceBuilders.AndroidImageResourceByResId);
-    method public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setAndroidSeekableAnimatedResourceByResId(androidx.wear.protolayout.ResourceBuilders.AndroidSeekableAnimatedImageResourceByResId);
     method public androidx.wear.protolayout.ResourceBuilders.ImageResource.Builder setInlineResource(androidx.wear.protolayout.ResourceBuilders.InlineImageResource);
   }
 
@@ -1075,26 +1043,8 @@
   }
 
   public final class TriggerBuilders {
-    method public static androidx.wear.protolayout.TriggerBuilders.OnConditionMetTrigger createOnConditionMetTrigger(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
-    method public static androidx.wear.protolayout.TriggerBuilders.OnLoadTrigger createOnLoadTrigger();
-  }
-
-  public static final class TriggerBuilders.OnConditionMetTrigger implements androidx.wear.protolayout.TriggerBuilders.Trigger {
-    method public androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool? getTrigger();
-  }
-
-  public static final class TriggerBuilders.OnConditionMetTrigger.Builder {
-    ctor public TriggerBuilders.OnConditionMetTrigger.Builder();
-    method public androidx.wear.protolayout.TriggerBuilders.OnConditionMetTrigger build();
-    method public androidx.wear.protolayout.TriggerBuilders.OnConditionMetTrigger.Builder setTrigger(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
-  }
-
-  public static final class TriggerBuilders.OnLoadTrigger implements androidx.wear.protolayout.TriggerBuilders.Trigger {
-  }
-
-  public static final class TriggerBuilders.OnLoadTrigger.Builder {
-    ctor public TriggerBuilders.OnLoadTrigger.Builder();
-    method public androidx.wear.protolayout.TriggerBuilders.OnLoadTrigger build();
+    method public static androidx.wear.protolayout.TriggerBuilders.Trigger createOnConditionMetTrigger(androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool);
+    method public static androidx.wear.protolayout.TriggerBuilders.Trigger createOnLoadTrigger();
   }
 
   public static interface TriggerBuilders.Trigger {
diff --git a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/ResourceBuilders.java b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/ResourceBuilders.java
index f552d96..2fa280a 100644
--- a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/ResourceBuilders.java
+++ b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/ResourceBuilders.java
@@ -25,11 +25,13 @@
 import androidx.annotation.IntDef;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.OptIn;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
 import androidx.wear.protolayout.TriggerBuilders.Trigger;
 import androidx.wear.protolayout.expression.DynamicBuilders;
 import androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat;
+import androidx.wear.protolayout.expression.ProtoLayoutExperimental;
 import androidx.wear.protolayout.proto.ResourceProto;
 import androidx.wear.protolayout.protobuf.ByteString;
 
@@ -333,6 +335,7 @@
      *
      * @since 1.2
      */
+    @ProtoLayoutExperimental
     public static final class AndroidAnimatedImageResourceByResId {
         private final ResourceProto.AndroidAnimatedImageResourceByResId mImpl;
 
@@ -463,6 +466,7 @@
      *
      * @since 1.2
      */
+    @ProtoLayoutExperimental
     public static final class AndroidSeekableAnimatedImageResourceByResId {
         private final ResourceProto.AndroidSeekableAnimatedImageResourceByResId mImpl;
 
@@ -649,6 +653,7 @@
          * @since 1.2
          */
         @Nullable
+        @ProtoLayoutExperimental
         public AndroidAnimatedImageResourceByResId getAndroidAnimatedResourceByResId() {
             if (mImpl.hasAndroidAnimatedResourceByResId()) {
                 return AndroidAnimatedImageResourceByResId.fromProto(
@@ -665,6 +670,7 @@
          * @since 1.2
          */
         @Nullable
+        @ProtoLayoutExperimental
         public AndroidSeekableAnimatedImageResourceByResId
                 getAndroidSeekableAnimatedResourceByResId() {
             if (mImpl.hasAndroidSeekableAnimatedResourceByResId()) {
@@ -696,6 +702,7 @@
 
         @Override
         @NonNull
+        @OptIn(markerClass = ProtoLayoutExperimental.class)
         public String toString() {
             return "ImageResource{"
                     + "androidResourceByResId="
@@ -746,6 +753,7 @@
              * @since 1.2
              */
             @NonNull
+            @ProtoLayoutExperimental
             public Builder setAndroidAnimatedResourceByResId(
                     @NonNull AndroidAnimatedImageResourceByResId androidAnimatedResourceByResId) {
                 mImpl.setAndroidAnimatedResourceByResId(androidAnimatedResourceByResId.toProto());
@@ -759,6 +767,7 @@
              * @since 1.2
              */
             @NonNull
+            @ProtoLayoutExperimental
             public Builder setAndroidSeekableAnimatedResourceByResId(
                     @NonNull
                             AndroidSeekableAnimatedImageResourceByResId
diff --git a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/TriggerBuilders.java b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/TriggerBuilders.java
index 4f544da..f5cb3c8 100644
--- a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/TriggerBuilders.java
+++ b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/TriggerBuilders.java
@@ -31,17 +31,20 @@
 public final class TriggerBuilders {
   private TriggerBuilders() {}
 
-  /** Shortcut for building an {@link OnLoadTrigger}. */
+  /** Creates a {@link Trigger} that fires immediately when the layout is loaded / reloaded.. */
   @NonNull
-  public static OnLoadTrigger createOnLoadTrigger() {
+  public static Trigger createOnLoadTrigger() {
     return new OnLoadTrigger.Builder().build();
   }
 
-  /** Shortcut for building an {@link OnConditionMetTrigger}. */
+  /**
+   * Creates a {@link Trigger} that fires *every time* the condition switches from false to true.
+   * If the condition is true initially, that will fire the trigger on load.
+   */
   @NonNull
-  public static OnConditionMetTrigger createOnConditionMetTrigger(
+  public static Trigger createOnConditionMetTrigger(
           @NonNull DynamicBool dynamicBool) {
-    return new OnConditionMetTrigger.Builder().setTrigger(dynamicBool).build();
+    return new OnConditionMetTrigger.Builder().setCondition(dynamicBool).build();
   }
 
   /**
@@ -49,7 +52,7 @@
    *
    * @since 1.2
    */
-  public static final class OnLoadTrigger implements Trigger {
+  static final class OnLoadTrigger implements Trigger {
     private final TriggerProto.OnLoadTrigger mImpl;
     @Nullable private final Fingerprint mFingerprint;
 
@@ -104,7 +107,7 @@
    *
    * @since 1.2
    */
-  public static final class OnConditionMetTrigger implements Trigger {
+  static final class OnConditionMetTrigger implements Trigger {
     private final TriggerProto.OnConditionMetTrigger mImpl;
     @Nullable private final Fingerprint mFingerprint;
 
@@ -119,9 +122,9 @@
      * @since 1.2
      */
     @Nullable
-    public DynamicBool getTrigger() {
-      if (mImpl.hasTrigger()) {
-        return DynamicBuilders.dynamicBoolFromProto(mImpl.getTrigger());
+    public DynamicBool getCondition() {
+      if (mImpl.hasCondition()) {
+        return DynamicBuilders.dynamicBoolFromProto(mImpl.getCondition());
       } else {
         return null;
       }
@@ -165,8 +168,8 @@
        * @since 1.2
        */
       @NonNull
-      public Builder setTrigger(@NonNull DynamicBool dynamicBool) {
-        mImpl.setTrigger(dynamicBool.toDynamicBoolProto());
+      public Builder setCondition(@NonNull DynamicBool dynamicBool) {
+        mImpl.setCondition(dynamicBool.toDynamicBoolProto());
         mFingerprint.recordPropertyUpdate(
             1, checkNotNull(dynamicBool.getFingerprint()).aggregateValueAsInt());
         return this;
diff --git a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/TriggerBuildersTest.java b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/TriggerBuildersTest.java
index cf36e4f..6230a66 100644
--- a/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/TriggerBuildersTest.java
+++ b/wear/protolayout/protolayout/src/test/java/androidx/wear/protolayout/TriggerBuildersTest.java
@@ -29,7 +29,7 @@
 
     @Test
     public void onLoadTrigger() {
-        TriggerBuilders.OnLoadTrigger onLoadTrigger = TriggerBuilders.createOnLoadTrigger();
+        TriggerBuilders.Trigger onLoadTrigger = TriggerBuilders.createOnLoadTrigger();
 
         assertThat(onLoadTrigger.toTriggerProto().hasOnLoadTrigger()).isTrue();
     }
@@ -39,12 +39,12 @@
     public void onConditionTrigger() {
         DynamicBuilders.DynamicBool condition = DynamicBuilders.DynamicBool.fromState("state");
 
-        TriggerBuilders.OnConditionMetTrigger onConditionMetTrigger =
+        TriggerBuilders.Trigger onConditionMetTrigger =
                 TriggerBuilders.createOnConditionMetTrigger(
                 condition);
 
         assertThat(
-                onConditionMetTrigger.toTriggerProto().getOnConditionMetTrigger().getTrigger())
+                onConditionMetTrigger.toTriggerProto().getOnConditionMetTrigger().getCondition())
                 .isEqualTo(condition.toDynamicBoolProto());
     }
 }
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/HeadlessWatchFaceClient.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/HeadlessWatchFaceClient.kt
index 8a04d54..307c757 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/HeadlessWatchFaceClient.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/HeadlessWatchFaceClient.kt
@@ -118,8 +118,7 @@
 
     /** Whether or not the watch face supports [renderWatchFaceToSurface]. */
     public val isRenderWatchFaceToSurfaceSupported: Boolean
-        @get:JvmName("isRenderWatchFaceToSurfaceSupported")
-        get() = false
+        @get:JvmName("isRenderWatchFaceToSurfaceSupported") get() = false
 
     /**
      * Renders the [androidx.wear.watchface.ComplicationSlot] to a shared memory backed [Bitmap]
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/InteractiveWatchFaceClient.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/InteractiveWatchFaceClient.kt
index 17261be..93d8ddca 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/InteractiveWatchFaceClient.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/InteractiveWatchFaceClient.kt
@@ -88,10 +88,10 @@
 }
 
 /**
- * Intended for use by watch face editors, a RemoteWatchFaceViewHost allows the watch face to send
- * a [SurfaceControlViewHost.SurfacePackage] to the client, which the client can attach to a
- * [SurfaceView] with [SurfaceView.setChildSurfacePackage]. The client can request an updated
- * screen shot by calling [renderWatchFace].
+ * Intended for use by watch face editors, a RemoteWatchFaceViewHost allows the watch face to send a
+ * [SurfaceControlViewHost.SurfacePackage] to the client, which the client can attach to a
+ * [SurfaceView] with [SurfaceView.setChildSurfacePackage]. The client can request an updated screen
+ * shot by calling [renderWatchFace].
  */
 public interface RemoteWatchFaceViewHost : AutoCloseable {
     /**
@@ -161,8 +161,7 @@
 
     /** Whether or not the watch face supports [RemoteWatchFaceViewHost]. */
     public val isRemoteWatchFaceViewHostSupported: Boolean
-        @get:JvmName("isRemoteWatchFaceViewHostSupported")
-        get() = false
+        @get:JvmName("isRemoteWatchFaceViewHostSupported") get() = false
 
     /**
      * Constructs a [RemoteWatchFaceViewHost] whose [RemoteWatchFaceViewHost.surfacePackage] can be
@@ -180,7 +179,7 @@
      * @param width The width of the view in pixels
      * @param height The height of the view in pixels
      * @return The [RemoteWatchFaceViewHost] or null if the client has already been closed or if the
-     * watch face is not compatible.
+     *   watch face is not compatible.
      */
     @Throws(RemoteException::class)
     @RequiresApi(Build.VERSION_CODES.R)
@@ -217,9 +216,7 @@
     /**
      * Renames this instance to [newInstanceId] (must be unique, usually this would be different
      * from the old ID but that's not a requirement). Sets the current [UserStyle] represented as a
-     * [UserStyleData> and clears any complication data. Setting the new UserStyle may have a side
-     * effect of enabling or disabling complicationSlots, which will be visible via
-     * [ComplicationSlotState.isEnabled].
+     * [UserStyleData> and clears any complication data. Setting the new UserStyle may have a side effect of enabling or disabling complicationSlots, which will be visible via [ComplicationSlotState.isEnabled].
      */
     @Throws(RemoteException::class)
     public fun updateWatchFaceInstance(newInstanceId: String, userStyle: UserStyleData)
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceControlClient.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceControlClient.kt
index aba23ca..32d97b9 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceControlClient.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceControlClient.kt
@@ -23,9 +23,9 @@
 import android.os.IBinder
 import android.os.RemoteException
 import android.util.Log
-import androidx.core.util.Consumer
 import androidx.annotation.Px
 import androidx.annotation.RestrictTo
+import androidx.core.util.Consumer
 import androidx.wear.watchface.Renderer
 import androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy
 import androidx.wear.watchface.complications.data.ComplicationData
diff --git a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchUiState.kt b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchUiState.kt
index 3fdeefa..9a1f229 100644
--- a/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchUiState.kt
+++ b/wear/watchface/watchface-client/src/main/java/androidx/wear/watchface/client/WatchUiState.kt
@@ -20,10 +20,7 @@
 import androidx.annotation.IntDef
 import androidx.annotation.RestrictTo
 
-/**
- * The InterruptionFilter.
- *
- */
+/** The InterruptionFilter. */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @IntDef(
     value =
diff --git a/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/HeadlessWatchFaceClientTest.kt b/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/HeadlessWatchFaceClientTest.kt
index 663fb70..11e4d9c 100644
--- a/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/HeadlessWatchFaceClientTest.kt
+++ b/wear/watchface/watchface-client/src/test/java/androidx/wear/watchface/client/HeadlessWatchFaceClientTest.kt
@@ -47,4 +47,4 @@
 
         Assert.assertTrue(client.isRenderWatchFaceToSurfaceSupported)
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ImmediateDataSourceService.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ImmediateDataSourceService.kt
index 5194d6f..eb96145 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ImmediateDataSourceService.kt
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/ImmediateDataSourceService.kt
@@ -48,12 +48,15 @@
                             ComplicationText.EMPTY
                         )
                         .build()
-                ComplicationType.MONOCHROMATIC_IMAGE -> MonochromaticImageComplicationData.Builder(
-                    MonochromaticImage.Builder(
-                        Icon.createWithResource(this, R.drawable.heart)
-                    ).build(),
-                    ComplicationText.EMPTY
-                ).build()
+                ComplicationType.MONOCHROMATIC_IMAGE ->
+                    MonochromaticImageComplicationData.Builder(
+                            MonochromaticImage.Builder(
+                                    Icon.createWithResource(this, R.drawable.heart)
+                                )
+                                .build(),
+                            ComplicationText.EMPTY
+                        )
+                        .build()
                 else -> null
             }
         )
@@ -67,12 +70,13 @@
             ComplicationType.LONG_TEXT ->
                 LongTextComplicationData.Builder(plainText("hello 123"), ComplicationText.EMPTY)
                     .build()
-            ComplicationType.MONOCHROMATIC_IMAGE -> MonochromaticImageComplicationData.Builder(
-                MonochromaticImage.Builder(
-                    Icon.createWithResource(this, R.drawable.heart)
-                ).build(),
-                ComplicationText.EMPTY
-            ).build()
+            ComplicationType.MONOCHROMATIC_IMAGE ->
+                MonochromaticImageComplicationData.Builder(
+                        MonochromaticImage.Builder(Icon.createWithResource(this, R.drawable.heart))
+                            .build(),
+                        ComplicationText.EMPTY
+                    )
+                    .build()
             else -> null
         }
 }
diff --git a/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceService.kt b/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceService.kt
index daae481..8adf5fc 100644
--- a/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceService.kt
+++ b/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceService.kt
@@ -184,17 +184,13 @@
  *   android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST.
  * - A ComplicationDataSourceService must include a `meta-data` tag with
  *   android.support.wearable.complications.SUPPORTED_TYPES in its manifest entry. The value of this
- *   tag should be a comma separated list of types supported by the data source, from this table:
- * | Androidx class                       | Tag name          |
- * |--------------------------------------|-------------------|
- * | [GoalProgressComplicationData]       | GOAL_PROGRESS     |
- * | [LongTextComplicationData]           | LONG_TEXT         |
- * | [MonochromaticImageComplicationData] | ICON              |
- * | [PhotoImageComplicationData]         | LARGE_IMAGE       |
- * | [RangedValueComplicationData]        | RANGED_TEXT       |
- * | [ShortTextComplicationData]          | SHORT_TEXT        |
- * | [SmallImageComplicationData]         | SMALL_IMAGE       |
- * | [WeightedElementsComplicationData]   | WEIGHTED_ELEMENTS |
+ *   tag should be a comma separated list of types supported by the data source, from this table: |
+ *   Androidx class | Tag name | |--------------------------------------|-------------------| |
+ *   [GoalProgressComplicationData] | GOAL_PROGRESS | | [LongTextComplicationData] | LONG_TEXT | |
+ *   [MonochromaticImageComplicationData] | ICON | | [PhotoImageComplicationData] | LARGE_IMAGE | |
+ *   [RangedValueComplicationData] | RANGED_TEXT | | [ShortTextComplicationData] | SHORT_TEXT | |
+ *   [SmallImageComplicationData] | SMALL_IMAGE | | [WeightedElementsComplicationData] |
+ *   WEIGHTED_ELEMENTS |
  *
  * The order in which types are listed has no significance. In the case where a watch face supports
  * multiple types in a single complication slot, the watch face will determine which types it
diff --git a/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceUpdateRequester.kt b/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceUpdateRequester.kt
index 6188e69..13b3f52 100644
--- a/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceUpdateRequester.kt
+++ b/wear/watchface/watchface-complications-data-source/src/main/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceUpdateRequester.kt
@@ -53,10 +53,7 @@
     public fun requestUpdate(vararg complicationInstanceIds: Int)
 
     public companion object {
-        /**
-         * The package of the service that accepts complication data source requests.
-         *
-         */
+        /** The package of the service that accepts complication data source requests. */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
         public const val UPDATE_REQUEST_RECEIVER_PACKAGE = "com.google.android.wearable.app"
 
diff --git a/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceServiceTest.kt b/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceServiceTest.kt
index f16d472..720ff58 100644
--- a/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceServiceTest.kt
+++ b/wear/watchface/watchface-complications-data-source/src/test/java/androidx/wear/watchface/complications/datasource/ComplicationDataSourceServiceTest.kt
@@ -15,13 +15,13 @@
  */
 package androidx.wear.watchface.complications.datasource
 
-import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.content.Intent
 import android.content.res.Resources
 import android.os.Bundle
 import android.os.Handler
 import android.os.HandlerThread
 import android.os.RemoteException
+import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.support.wearable.complications.IComplicationManager
 import android.support.wearable.complications.IComplicationProvider
 import android.util.Log
diff --git a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationData.kt b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationData.kt
index 2e5e3c8..8887171d 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationData.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/android/support/wearable/complications/ComplicationData.kt
@@ -435,6 +435,7 @@
 
         companion object {
             private const val VERSION_NUMBER = 20
+
             internal fun putIfNotNull(fields: Bundle, field: String, value: Parcelable?) {
                 if (value != null) {
                     fields.putParcelable(field, value)
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluator.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluator.kt
index 89fbc08..94db677 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluator.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataExpressionEvaluator.kt
@@ -16,10 +16,10 @@
 
 package androidx.wear.watchface.complications.data
 
-import android.support.wearable.complications.ComplicationData as WireComplicationData
-import android.support.wearable.complications.ComplicationText as WireComplicationText
 import android.icu.util.ULocale
+import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.support.wearable.complications.ComplicationData
+import android.support.wearable.complications.ComplicationText as WireComplicationText
 import androidx.annotation.MainThread
 import androidx.annotation.RestrictTo
 import androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Data.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Data.kt
index e34d53c..1215a97 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Data.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Data.kt
@@ -907,6 +907,20 @@
         displayPolicy = displayPolicy,
         fallback = fallback,
     ) {
+
+    init {
+        require(min <= max) { "min must be lower than or equal to max" }
+        require(value == PLACEHOLDER || value in min..max) { "value must be between min and max" }
+        require(max != Float.MAX_VALUE) { "Float.MAX_VALUE is reserved and can't be used for max" }
+        require(monochromaticImage != null || smallImage != null || text != null || title != null) {
+            "At least one of monochromaticImage, smallImage, text or title must be set"
+        }
+        if (valueType == TYPE_PERCENTAGE) {
+            require(min == 0f)
+            require(max == 100f)
+        }
+    }
+
     /**
      * The [DynamicFloat] optionally set by the data source. If present the system will dynamically
      * evaluate this and store the result in [value]. Watch faces can typically ignore this field.
@@ -988,16 +1002,6 @@
 
         @RangedValueType private var valueType: Int = TYPE_UNDEFINED
 
-        init {
-            require(min <= max) { "min must be lower than or equal to max" }
-            require(value == PLACEHOLDER || value in min..max) {
-                "value must be between min and max"
-            }
-            require(max != Float.MAX_VALUE) {
-                "Float.MAX_VALUE is reserved and can't be used for max"
-            }
-        }
-
         /** Sets optional pending intent to be invoked when the complication is tapped. */
         public fun setTapAction(tapAction: PendingIntent?): Builder = apply {
             this.tapAction = tapAction
@@ -1043,17 +1047,8 @@
         }
 
         /** Builds the [RangedValueComplicationData]. */
-        public override fun build(): RangedValueComplicationData {
-            require(
-                monochromaticImage != null || smallImage != null || text != null || title != null
-            ) {
-                "At least one of monochromaticImage, smallImage, text or title must be set"
-            }
-            if (valueType == TYPE_PERCENTAGE) {
-                require(min == 0f)
-                require(max == 100f)
-            }
-            return RangedValueComplicationData(
+        public override fun build() =
+            RangedValueComplicationData(
                 value,
                 valueExpression,
                 min,
@@ -1073,7 +1068,6 @@
                 displayPolicy,
                 fallback,
             )
-        }
     }
 
     override fun fillWireComplicationDataBuilder(builder: WireComplicationDataBuilder) {
@@ -1273,6 +1267,16 @@
         displayPolicy = displayPolicy,
         fallback = fallback,
     ) {
+
+    init {
+        require(targetValue != Float.MAX_VALUE) {
+            "Float.MAX_VALUE is reserved and can't be used for target"
+        }
+        require(monochromaticImage != null || smallImage != null || text != null || title != null) {
+            "At least one of monochromaticImage, smallImage, text or title must be set"
+        }
+    }
+
     /**
      * The [DynamicFloat] optionally set by the data source. If present the system will dynamically
      * evaluate this and store the result in [value]. Watch faces can typically ignore this field.
@@ -1345,12 +1349,6 @@
         private var text: ComplicationText? = null
         private var colorRamp: ColorRamp? = null
 
-        init {
-            require(targetValue != Float.MAX_VALUE) {
-                "Float.MAX_VALUE is reserved and can't be used for target"
-            }
-        }
-
         /** Sets optional pending intent to be invoked when the complication is tapped. */
         public fun setTapAction(tapAction: PendingIntent?): Builder = apply {
             this.tapAction = tapAction
@@ -1387,13 +1385,8 @@
         }
 
         /** Builds the [GoalProgressComplicationData]. */
-        public override fun build(): GoalProgressComplicationData {
-            require(
-                monochromaticImage != null || smallImage != null || text != null || title != null
-            ) {
-                "At least one of monochromaticImage, smallImage, text or title must be set"
-            }
-            return GoalProgressComplicationData(
+        public override fun build() =
+            GoalProgressComplicationData(
                 value,
                 valueExpression,
                 targetValue,
@@ -1411,7 +1404,6 @@
                 displayPolicy,
                 fallback = fallback,
             )
-        }
     }
 
     override fun fillWireComplicationDataBuilder(builder: WireComplicationDataBuilder) {
@@ -1585,6 +1577,12 @@
         displayPolicy = displayPolicy,
         fallback = fallback,
     ) {
+
+    init {
+        require(monochromaticImage != null || smallImage != null || text != null || title != null) {
+            "At least one of monochromaticImage, smallImage, text or title must be set"
+        }
+    }
     /**
      * Describes a single value within a [WeightedElementsComplicationData].
      *
@@ -1710,13 +1708,8 @@
         public fun setText(text: ComplicationText?): Builder = apply { this.text = text }
 
         /** Builds the [GoalProgressComplicationData]. */
-        public override fun build(): WeightedElementsComplicationData {
-            require(
-                monochromaticImage != null || smallImage != null || text != null || title != null
-            ) {
-                "At least one of monochromaticImage, smallImage, text or title must be set"
-            }
-            return WeightedElementsComplicationData(
+        public override fun build() =
+            WeightedElementsComplicationData(
                 elements,
                 elementBackgroundColor,
                 monochromaticImage,
@@ -1732,7 +1725,6 @@
                 displayPolicy,
                 fallback,
             )
-        }
     }
 
     override fun fillWireComplicationDataBuilder(builder: WireComplicationDataBuilder) {
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Text.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Text.kt
index de0c253..9d2d48f 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Text.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Text.kt
@@ -516,6 +516,7 @@
     override fun isPlaceholder(): Boolean = delegate.isPlaceholder()
 
     override fun isAlwaysEmpty() = delegate.isAlwaysEmpty
+
     override fun getTimeDependentText(): TimeDependentText = delegate.timeDependentText
 
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) override fun toWireComplicationText() = delegate
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Type.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Type.kt
index 2ed2aba..86183f0 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Type.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/Type.kt
@@ -48,7 +48,6 @@
      * Converts this value to the integer value used for serialization.
      *
      * This is only needed internally to convert to the underlying communication protocol.
-     *
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY) public fun toWireComplicationType(): Int = wireType
 
@@ -59,7 +58,6 @@
          * Converts the integer value used for serialization into a [ComplicationType].
          *
          * This is only needed internally to convert to the underlying communication protocol.
-         *
          */
         @OptIn(ComplicationExperimental::class)
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -89,7 +87,6 @@
          * This is only needed internally to convert to the underlying communication protocol.
          *
          * Needed to access this conveniently in Java.
-         *
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
         @JvmStatic
@@ -102,7 +99,6 @@
          * This is only needed internally to convert to the underlying communication protocol.
          *
          * Needed to access this conveniently in Java.
-         *
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
         @JvmStatic
@@ -112,7 +108,6 @@
         /**
          * Converts an array of integer values used for serialization into the corresponding list of
          * [ComplicationType].
-         *
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
         @JvmStatic
@@ -126,7 +121,6 @@
  * types.
  *
  * This is only needed internally to convert to the underlying communication protocol.
- *
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public fun Collection<ComplicationType>.toWireTypes(): IntArray =
@@ -137,7 +131,6 @@
  * [ComplicationType] to .
  *
  * This is only needed internally to convert to the underlying communication protocol.
- *
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public fun IntArray.toApiComplicationTypes(): Array<ComplicationType> =
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/IconKt.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/IconKt.kt
index b55837b..88d4d32 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/IconKt.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/IconKt.kt
@@ -24,10 +24,7 @@
 import androidx.annotation.RestrictTo
 import java.util.Objects
 
-/**
- * Returns true if the [Icon]s are equal.
- *
- */
+/** Returns true if the [Icon]s are equal. */
 infix fun Icon?.iconEquals(other: Icon?): Boolean =
     this === other ||
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
@@ -36,10 +33,7 @@
             this == other
         }
 
-/**
- * Creates a hash code for the [Icon].
- *
- */
+/** Creates a hash code for the [Icon]. */
 fun Icon.iconHashCode(): Int =
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
         IconP.hashCode(this)
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/TraceEvent.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/TraceEvent.kt
index 7239b5e..18e1f0f 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/TraceEvent.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/utility/TraceEvent.kt
@@ -29,7 +29,6 @@
 /**
  * Wrapper around [Trace.beginSection] and [Trace.endSection] which helps reduce boilerplate by
  * taking advantage of RAII like [Closeable] in a try block.
- *
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class TraceEvent(traceName: String) : Closeable {
@@ -45,7 +44,6 @@
 /**
  * Wrapper around [Trace.beginAsyncSection] which helps reduce boilerplate by taking advantage of
  * RAII like [Trace.endAsyncSection] in a try block, and by dealing with API version support.
- *
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class AsyncTraceEvent(private val traceName: String) : Closeable {
@@ -86,10 +84,7 @@
     }
 }
 
-/**
- * Wrapper around [CoroutineScope.launch] with an async trace event.
- *
- */
+/** Wrapper around [CoroutineScope.launch] with an async trace event. */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public fun CoroutineScope.launchWithTracing(
     traceEventName: String,
diff --git a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationStyle.kt b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationStyle.kt
index b771fdb..95542cf 100644
--- a/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationStyle.kt
+++ b/wear/watchface/watchface-complications-rendering/src/main/java/androidx/wear/watchface/complications/rendering/ComplicationStyle.kt
@@ -27,10 +27,7 @@
 
 /** Defines attributes to customize appearance of rendered [ ]. */
 public class ComplicationStyle {
-    /**
-     * Constants used to define border styles for complicationSlots.
-     *
-     */
+    /** Constants used to define border styles for complicationSlots. */
     @Retention(AnnotationRetention.SOURCE)
     @IntDef(BORDER_STYLE_NONE, BORDER_STYLE_SOLID, BORDER_STYLE_DASHED)
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -194,6 +191,7 @@
                 }
             isDirty = true
         }
+
     /** The dash width to be used when drawing borders of type [.BORDER_STYLE_DASHED]. */
     public var borderDashWidth: Int
         @Px get() = mBorderDashWidth
@@ -209,6 +207,7 @@
             mBorderDashGap = borderDashGap
             isDirty = true
         }
+
     /**
      * The border radius to be applied to the corners of the bounds of the complication in active
      * mode. Border radius will be limited to the half of width or height, depending on which one is
@@ -282,10 +281,7 @@
         isDirty = true
     }
 
-    /**
-     * Returns a copy of the ComplicationStyle [tint]ed by [tintColor].
-     *
-     */
+    /** Returns a copy of the ComplicationStyle [tint]ed by [tintColor]. */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     fun asTinted(tintColor: Int): ComplicationStyle =
         ComplicationStyle(this).apply {
diff --git a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetriever.kt b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetriever.kt
index 873ef14..af4e203 100644
--- a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetriever.kt
+++ b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetriever.kt
@@ -397,10 +397,7 @@
         return result
     }
 
-    /**
-     * Converts this value to [WireComplicationProviderInfo] object used for serialization.
-     *
-     */
+    /** Converts this value to [WireComplicationProviderInfo] object used for serialization. */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public fun toWireComplicationProviderInfo(): WireComplicationProviderInfo =
         WireComplicationProviderInfo(
diff --git a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationSlotBounds.kt b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationSlotBounds.kt
index ec9b539..d3770b2 100644
--- a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationSlotBounds.kt
+++ b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/ComplicationSlotBounds.kt
@@ -129,7 +129,6 @@
          * RectF>, backfilling with empty [RectF]s. This method is necessary because there can be a
          * skew between the version of the library between the watch face and the system which would
          * otherwise be problematic if new complication types have been introduced.
-         *
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
         fun createFromPartialMap(
diff --git a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/SystemDataSources.kt b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/SystemDataSources.kt
index a50594f..b3d620f 100644
--- a/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/SystemDataSources.kt
+++ b/wear/watchface/watchface-complications/src/main/java/androidx/wear/watchface/complications/SystemDataSources.kt
@@ -179,10 +179,7 @@
         public const val DATA_SOURCE_DAY_AND_DATE: Int = 16
     }
 
-    /**
-     * System complication data source id as defined in [SystemDataSources].
-     *
-     */
+    /** System complication data source id as defined in [SystemDataSources]. */
     @IntDef(
         NO_DATA_SOURCE,
         DATA_SOURCE_WATCH_BATTERY,
diff --git a/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetrieverTest.kt b/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetrieverTest.kt
index 4108ebf..f40e087 100644
--- a/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetrieverTest.kt
+++ b/wear/watchface/watchface-complications/src/test/java/androidx/wear/watchface/complications/ComplicationDataSourceInfoRetrieverTest.kt
@@ -33,11 +33,11 @@
 import androidx.wear.watchface.complications.data.SmallImageComplicationData
 import com.google.common.truth.Truth.assertThat
 import kotlin.jvm.java
-import org.mockito.Mockito
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.ArgumentMatchers.any
 import org.mockito.ArgumentMatchers.eq
+import org.mockito.Mockito
 
 @RunWith(SharedRobolectricTestRunner::class)
 public class ComplicationDataSourceInfoRetrieverTest {
@@ -58,16 +58,16 @@
 
             val testData: ComplicationData =
                 LongTextComplicationData.Builder(
-                    PlainComplicationText.Builder("Test Text").build(),
-                    ComplicationText.Companion.EMPTY
-                )
+                        PlainComplicationText.Builder("Test Text").build(),
+                        ComplicationText.Companion.EMPTY
+                    )
                     .build()
 
             Mockito.doAnswer {
-                val callback = it.arguments[2] as IPreviewComplicationDataCallback
-                callback.updateComplicationData(testData.asWireComplicationData())
-                true
-            }
+                    val callback = it.arguments[2] as IPreviewComplicationDataCallback
+                    callback.updateComplicationData(testData.asWireComplicationData())
+                    true
+                }
                 .`when`(mockService)
                 .requestPreviewComplicationData(
                     eq(component),
@@ -82,13 +82,13 @@
                 )!!
             assertThat(previewData.type).isEqualTo(type)
             assertThat(
-                (previewData as LongTextComplicationData)
-                    .text
-                    .getTextAt(
-                        ApplicationProvider.getApplicationContext<Context>().resources,
-                        java.time.Instant.EPOCH
-                    )
-            )
+                    (previewData as LongTextComplicationData)
+                        .text
+                        .getTextAt(
+                            ApplicationProvider.getApplicationContext<Context>().resources,
+                            java.time.Instant.EPOCH
+                        )
+                )
                 .isEqualTo("Test Text")
         }
     }
@@ -103,10 +103,10 @@
             Mockito.`when`(mockService.asBinder()).thenReturn(mockBinder)
 
             Mockito.doAnswer {
-                val callback = it.arguments[2] as IPreviewComplicationDataCallback
-                callback.updateComplicationData(null)
-                true
-            }
+                    val callback = it.arguments[2] as IPreviewComplicationDataCallback
+                    callback.updateComplicationData(null)
+                    true
+                }
                 .`when`(mockService)
                 .requestPreviewComplicationData(
                     eq(component),
@@ -115,11 +115,11 @@
                 )
 
             assertThat(
-                complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
-                    component,
-                    type
+                    complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
+                        component,
+                        type
+                    )
                 )
-            )
                 .isNull()
         }
     }
@@ -134,11 +134,11 @@
             Mockito.`when`(mockService.asBinder()).thenReturn(mockBinder)
 
             assertThat(
-                complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
-                    component,
-                    type
+                    complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
+                        component,
+                        type
+                    )
                 )
-            )
                 .isNull()
         }
     }
@@ -160,11 +160,11 @@
                 )
 
             assertThat(
-                complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
-                    component,
-                    type
+                    complicationDataSourceInfoRetriever.retrievePreviewComplicationData(
+                        component,
+                        type
+                    )
                 )
-            )
                 .isNull()
         }
     }
@@ -192,21 +192,21 @@
         val icon = android.graphics.drawable.Icon.createWithContentUri("icon")
         val shortTextPreviewData =
             ComplicationDataSourceInfo(
-                "applicationName",
-                "complicationName",
-                icon,
-                ComplicationType.SHORT_TEXT,
-                componentName = null
-            )
+                    "applicationName",
+                    "complicationName",
+                    icon,
+                    ComplicationType.SHORT_TEXT,
+                    componentName = null
+                )
                 .fallbackPreviewData as ShortTextComplicationData
         assertThat(shortTextPreviewData.text.getTextAt(resources, java.time.Instant.EPOCH))
             .isEqualTo("complic")
         assertThat(
-            shortTextPreviewData.contentDescription!!.getTextAt(
-                resources,
-                java.time.Instant.EPOCH
+                shortTextPreviewData.contentDescription!!.getTextAt(
+                    resources,
+                    java.time.Instant.EPOCH
+                )
             )
-        )
             .isEqualTo("complicationName")
         assertThat(shortTextPreviewData.monochromaticImage!!.image).isEqualTo(icon)
     }
@@ -216,21 +216,21 @@
         val icon = android.graphics.drawable.Icon.createWithContentUri("icon")
         val longTextPreviewData =
             ComplicationDataSourceInfo(
-                "applicationName",
-                "complicationName",
-                icon,
-                ComplicationType.LONG_TEXT,
-                componentName = null
-            )
+                    "applicationName",
+                    "complicationName",
+                    icon,
+                    ComplicationType.LONG_TEXT,
+                    componentName = null
+                )
                 .fallbackPreviewData as LongTextComplicationData
         assertThat(longTextPreviewData.text.getTextAt(resources, java.time.Instant.EPOCH))
             .isEqualTo("complicationName")
         assertThat(
-            longTextPreviewData.contentDescription!!.getTextAt(
-                resources,
-                java.time.Instant.EPOCH
+                longTextPreviewData.contentDescription!!.getTextAt(
+                    resources,
+                    java.time.Instant.EPOCH
+                )
             )
-        )
             .isEqualTo("complicationName")
         assertThat(longTextPreviewData.monochromaticImage!!.image).isEqualTo(icon)
     }
@@ -240,20 +240,20 @@
         val icon = android.graphics.drawable.Icon.createWithContentUri("icon")
         val smallImagePreviewData =
             ComplicationDataSourceInfo(
-                "applicationName",
-                "complicationName",
-                icon,
-                ComplicationType.SMALL_IMAGE,
-                componentName = null
-            )
+                    "applicationName",
+                    "complicationName",
+                    icon,
+                    ComplicationType.SMALL_IMAGE,
+                    componentName = null
+                )
                 .fallbackPreviewData as SmallImageComplicationData
         assertThat(smallImagePreviewData.smallImage.image).isEqualTo(icon)
         assertThat(
-            smallImagePreviewData.contentDescription!!.getTextAt(
-                resources,
-                java.time.Instant.EPOCH
+                smallImagePreviewData.contentDescription!!.getTextAt(
+                    resources,
+                    java.time.Instant.EPOCH
+                )
             )
-        )
             .isEqualTo("complicationName")
     }
 
@@ -262,20 +262,20 @@
         val icon = android.graphics.drawable.Icon.createWithContentUri("icon")
         val photoImagePreviewData =
             ComplicationDataSourceInfo(
-                "applicationName",
-                "complicationName",
-                icon,
-                ComplicationType.PHOTO_IMAGE,
-                componentName = null
-            )
+                    "applicationName",
+                    "complicationName",
+                    icon,
+                    ComplicationType.PHOTO_IMAGE,
+                    componentName = null
+                )
                 .fallbackPreviewData as PhotoImageComplicationData
         assertThat(photoImagePreviewData.photoImage).isEqualTo(icon)
         assertThat(
-            photoImagePreviewData.contentDescription!!.getTextAt(
-                resources,
-                java.time.Instant.EPOCH
+                photoImagePreviewData.contentDescription!!.getTextAt(
+                    resources,
+                    java.time.Instant.EPOCH
+                )
             )
-        )
             .isEqualTo("complicationName")
     }
 
@@ -284,20 +284,20 @@
         val icon = android.graphics.drawable.Icon.createWithContentUri("icon")
         val monochromaticImagePreviewData =
             ComplicationDataSourceInfo(
-                "applicationName",
-                "complicationName",
-                icon,
-                ComplicationType.MONOCHROMATIC_IMAGE,
-                componentName = null
-            )
+                    "applicationName",
+                    "complicationName",
+                    icon,
+                    ComplicationType.MONOCHROMATIC_IMAGE,
+                    componentName = null
+                )
                 .fallbackPreviewData as MonochromaticImageComplicationData
         assertThat(monochromaticImagePreviewData.monochromaticImage.image).isEqualTo(icon)
         assertThat(
-            monochromaticImagePreviewData.contentDescription!!.getTextAt(
-                resources,
-                java.time.Instant.EPOCH
+                monochromaticImagePreviewData.contentDescription!!.getTextAt(
+                    resources,
+                    java.time.Instant.EPOCH
+                )
             )
-        )
             .isEqualTo("complicationName")
     }
 
@@ -306,12 +306,12 @@
         val icon = android.graphics.drawable.Icon.createWithContentUri("icon")
         val rangedValuePreviewData =
             ComplicationDataSourceInfo(
-                "applicationName",
-                "complicationName",
-                icon,
-                ComplicationType.RANGED_VALUE,
-                componentName = null
-            )
+                    "applicationName",
+                    "complicationName",
+                    icon,
+                    ComplicationType.RANGED_VALUE,
+                    componentName = null
+                )
                 .fallbackPreviewData as RangedValueComplicationData
         assertThat(rangedValuePreviewData.min).isEqualTo(0.0f)
         assertThat(rangedValuePreviewData.max).isEqualTo(100.0f)
@@ -320,11 +320,11 @@
             .isEqualTo("complicationName")
         assertThat(rangedValuePreviewData.monochromaticImage!!.image).isEqualTo(icon)
         assertThat(
-            rangedValuePreviewData.contentDescription!!.getTextAt(
-                resources,
-                java.time.Instant.EPOCH
+                rangedValuePreviewData.contentDescription!!.getTextAt(
+                    resources,
+                    java.time.Instant.EPOCH
+                )
             )
-        )
             .isEqualTo("complicationName")
     }
 
@@ -332,27 +332,30 @@
     public fun complicationDataSourceInfo_equals() {
         val icon = android.graphics.drawable.Icon.createWithContentUri("icon")
         val icon2 = android.graphics.drawable.Icon.createWithContentUri("icon")
-        val a = ComplicationDataSourceInfo(
+        val a =
+            ComplicationDataSourceInfo(
                 "applicationName",
                 "complicationName",
                 icon,
                 ComplicationType.RANGED_VALUE,
                 componentName = null
             )
-        val b = ComplicationDataSourceInfo(
+        val b =
+            ComplicationDataSourceInfo(
                 "applicationName",
                 "complicationName",
                 icon2,
                 ComplicationType.RANGED_VALUE,
                 componentName = null
             )
-        val c = ComplicationDataSourceInfo(
-            "applicationName2",
-            "complicationName2",
-            icon,
-            ComplicationType.RANGED_VALUE,
-            componentName = null
-        )
+        val c =
+            ComplicationDataSourceInfo(
+                "applicationName2",
+                "complicationName2",
+                icon,
+                ComplicationType.RANGED_VALUE,
+                componentName = null
+            )
 
         // Test two identical ComplicationDataSourceInfo with different references.
         assertThat(a).isEqualTo(b)
diff --git a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/Constants.kt b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/Constants.kt
index d4422b0..217353a 100644
--- a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/Constants.kt
+++ b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/Constants.kt
@@ -19,10 +19,7 @@
 import android.app.WallpaperManager
 import androidx.annotation.RestrictTo
 
-/**
- * Shared constants between client and implementation.
- *
- */
+/** Shared constants between client and implementation. */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class Constants {
     // Not instantiable.
diff --git a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/ParcelableWrapper.kt b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/ParcelableWrapper.kt
index db2f239..16c2957 100644
--- a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/ParcelableWrapper.kt
+++ b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/ParcelableWrapper.kt
@@ -21,10 +21,7 @@
 import android.os.Parcelable
 import androidx.annotation.RestrictTo
 
-/**
- * Wraps a Parcelable.
- *
- */
+/** Wraps a Parcelable. */
 @SuppressLint("BanParcelableUsage")
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 class ParcelableWrapper(val parcelable: Parcelable) : Parcelable {
diff --git a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/SharedMemoryImage.kt b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/SharedMemoryImage.kt
index ad83ad4..4252e0b 100644
--- a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/SharedMemoryImage.kt
+++ b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/SharedMemoryImage.kt
@@ -27,7 +27,6 @@
 /**
  * This class requires API level 27 and is only intended for use in conjunction with
  * wear-watchface-client which also requires API level 27.
- *
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class SharedMemoryImage {
diff --git a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/WatchFaceStyle.kt b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/WatchFaceStyle.kt
index ce40b16..a29c0ce 100644
--- a/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/WatchFaceStyle.kt
+++ b/wear/watchface/watchface-data/src/main/java/android/support/wearable/watchface/WatchFaceStyle.kt
@@ -32,7 +32,6 @@
  * of your [WatchFaceService.Engine.onCreate] override.
  *
  * <p>To construct a WatchFaceStyle use [WatchFaceStyle.Builder].
- *
  */
 @SuppressWarnings("BanParcelableUsage")
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
diff --git a/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/ComplicationConfigFragment.kt b/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/ComplicationConfigFragment.kt
index 8f354ad..cebcf7b 100644
--- a/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/ComplicationConfigFragment.kt
+++ b/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/ComplicationConfigFragment.kt
@@ -59,10 +59,7 @@
     }
 }
 
-/**
- * Configuration view for watch faces with multiple complicationSlots.
- *
- */
+/** Configuration view for watch faces with multiple complicationSlots. */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @SuppressWarnings(
     "ViewConstructor", // Internal view, not intended for use by tools.
@@ -82,8 +79,8 @@
             // TODO(alexclarke): This button is a Rect which makes the tap animation look bad.
             if (
                 entry.value.fixedComplicationDataSource ||
-                !entry.value.isEnabled ||
-                entry.key == watchFaceConfigActivity.editorSession.backgroundComplicationSlotId
+                    !entry.value.isEnabled ||
+                    entry.key == watchFaceConfigActivity.editorSession.backgroundComplicationSlotId
             ) {
                 // Do not create a button for fixed complicationSlots, disabled complicationSlots,
                 // or background complicationSlots.
diff --git a/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/StyleConfigFragment.kt b/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/StyleConfigFragment.kt
index 9d0825c..e66ab3b 100644
--- a/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/StyleConfigFragment.kt
+++ b/wear/watchface/watchface-editor/samples/src/main/java/androidx/wear/watchface/editor/sample/StyleConfigFragment.kt
@@ -40,9 +40,9 @@
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption
 import androidx.wear.watchface.style.UserStyleSetting.CustomValueUserStyleSetting
-import androidx.wear.watchface.style.UserStyleSetting.LargeCustomValueUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.DoubleRangeUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.DoubleRangeUserStyleSetting.DoubleRangeOption
+import androidx.wear.watchface.style.UserStyleSetting.LargeCustomValueUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.ListUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.LongRangeUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.LongRangeUserStyleSetting.LongRangeOption
diff --git a/wear/watchface/watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditorSessionTest.kt b/wear/watchface/watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditorSessionTest.kt
index 32cdbdc..f99c2d7 100644
--- a/wear/watchface/watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditorSessionTest.kt
+++ b/wear/watchface/watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditorSessionTest.kt
@@ -600,24 +600,24 @@
         val mockSurfaceHolder = `mock`(SurfaceHolder::class.java)
         `when`(mockSurfaceHolder.surfaceFrame).thenReturn(screenBounds)
         @Suppress("Deprecation")
-        val fakeRenderer = object : Renderer.CanvasRenderer(
-            mockSurfaceHolder,
-            userStyleRepository,
-            MutableWatchState().asWatchState(),
-            CanvasType.HARDWARE,
-            interactiveDrawModeUpdateDelayMillis = 16,
-            clearWithBackgroundTintBeforeRenderingHighlightLayer = false
-        ) {
-            override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {
-            }
+        val fakeRenderer =
+            object :
+                Renderer.CanvasRenderer(
+                    mockSurfaceHolder,
+                    userStyleRepository,
+                    MutableWatchState().asWatchState(),
+                    CanvasType.HARDWARE,
+                    interactiveDrawModeUpdateDelayMillis = 16,
+                    clearWithBackgroundTintBeforeRenderingHighlightLayer = false
+                ) {
+                override fun render(canvas: Canvas, bounds: Rect, zonedDateTime: ZonedDateTime) {}
 
-            override fun renderHighlightLayer(
-                canvas: Canvas,
-                bounds: Rect,
-                zonedDateTime: ZonedDateTime
-            ) {
+                override fun renderHighlightLayer(
+                    canvas: Canvas,
+                    bounds: Rect,
+                    zonedDateTime: ZonedDateTime
+                ) {}
             }
-        }
 
         val complicationSlotsManager =
             ComplicationSlotsManager(complicationSlots, userStyleRepository, fakeRenderer)
@@ -1835,7 +1835,6 @@
         EditorService.globalEditorService.unregisterObserver(observerId)
     }
 
-    @SdkSuppress(maxSdkVersion = 32) // b/275361339
     @Test
     @Suppress("Deprecation") // userStyleSettings
     public fun commit_headless() {
@@ -1887,7 +1886,6 @@
         EditorService.globalEditorService.unregisterObserver(observerId)
     }
 
-    @SdkSuppress(maxSdkVersion = 32) // b/275361339
     @SuppressLint("NewApi")
     @Suppress("Deprecation") // userStyleSettings
     @Test
diff --git a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/CurrentUserStyleRepository.kt b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/CurrentUserStyleRepository.kt
index 6fd3d02..1eacf82 100644
--- a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/CurrentUserStyleRepository.kt
+++ b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/CurrentUserStyleRepository.kt
@@ -716,10 +716,7 @@
      */
     public val userStyle: StateFlow<UserStyle> by CurrentUserStyleRepository::mutableUserStyle
 
-    /**
-     * The UserStyle options must be from the supplied [UserStyleSchema].
-     *
-     */
+    /** The UserStyle options must be from the supplied [UserStyleSchema]. */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public fun updateUserStyle(newUserStyle: UserStyle) {
         validateUserStyle(newUserStyle)
diff --git a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleSetting.kt b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleSetting.kt
index 8ce3c6c..a79956a 100644
--- a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleSetting.kt
+++ b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleSetting.kt
@@ -242,7 +242,6 @@
      * used.
      *
      * Note this method can be slow.
-     *
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public fun estimateWireSizeInBytesAndValidateIconDimensions(
@@ -1028,6 +1027,7 @@
                 nameResourceId?.let { dos.writeInt(it) }
                 screenReaderNameResourceId?.let { dos.writeInt(it) }
             }
+
             /**
              * Constructs a [ComplicationSlotOverlay].Builder.
              *
diff --git a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleParcelableTest.kt b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleParcelableTest.kt
index 1a449b9..c98331c 100644
--- a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleParcelableTest.kt
+++ b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleParcelableTest.kt
@@ -26,8 +26,8 @@
 import androidx.wear.watchface.style.UserStyleSetting.BooleanUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.CustomValueUserStyleSetting
-import androidx.wear.watchface.style.UserStyleSetting.LargeCustomValueUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.DoubleRangeUserStyleSetting
+import androidx.wear.watchface.style.UserStyleSetting.LargeCustomValueUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.ListUserStyleSetting
 import androidx.wear.watchface.style.UserStyleSetting.ListUserStyleSetting.ListOption
 import androidx.wear.watchface.style.UserStyleSetting.LongRangeUserStyleSetting
@@ -194,10 +194,11 @@
                 listOf(WatchFaceLayer.BASE),
                 true
             )
-        val styleSetting4 = LargeCustomValueUserStyleSetting(
-            listOf(WatchFaceLayer.BASE),
-            "default".encodeToByteArray()
-        )
+        val styleSetting4 =
+            LargeCustomValueUserStyleSetting(
+                listOf(WatchFaceLayer.BASE),
+                "default".encodeToByteArray()
+            )
         val srcSchema =
             UserStyleSchema(listOf(styleSetting1, styleSetting2, styleSetting3, styleSetting4))
 
diff --git a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/ComplicationHelperActivityTest.kt b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/ComplicationHelperActivityTest.kt
index 6550522..dcc2146 100644
--- a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/ComplicationHelperActivityTest.kt
+++ b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/ComplicationHelperActivityTest.kt
@@ -29,14 +29,14 @@
 import androidx.wear.watchface.complications.data.ComplicationType.MONOCHROMATIC_IMAGE
 import androidx.wear.watchface.complications.data.ComplicationType.SHORT_TEXT
 import com.google.common.truth.Truth.assertThat
-import org.mockito.kotlin.doReturn
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.never
-import org.mockito.kotlin.verify
 import java.util.concurrent.CountDownLatch
 import java.util.concurrent.TimeUnit
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
+import org.mockito.kotlin.verify
 
 const val TIME_OUT_MILLIS = 500L
 
diff --git a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/WatchFaceServiceAndroidTest.kt b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/WatchFaceServiceAndroidTest.kt
index eafefe5..8c7e17e 100644
--- a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/WatchFaceServiceAndroidTest.kt
+++ b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/WatchFaceServiceAndroidTest.kt
@@ -21,7 +21,6 @@
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
-import androidx.test.filters.SdkSuppress
 import androidx.wear.watchface.control.InteractiveInstanceManager
 import androidx.wear.watchface.style.UserStyleSchema
 import androidx.wear.watchface.style.UserStyleSetting
@@ -39,7 +38,6 @@
         InteractiveInstanceManager.setParameterlessEngine(null)
     }
 
-    @SdkSuppress(maxSdkVersion = 32) // b/275361339
     @Test
     fun measuresWatchFaceIconsFromCustomContext() {
         val context: Context = ApplicationProvider.getApplicationContext()
diff --git a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceControlServiceTest.kt b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceControlServiceTest.kt
index 53f13686..7bb5522 100644
--- a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceControlServiceTest.kt
+++ b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceControlServiceTest.kt
@@ -543,12 +543,15 @@
 
     @Test
     public fun createWatchFaceService_throwsOnInvalidClass() {
-        assertThat(WatchFaceControlService()
-            .createWatchFaceService(
-                ComponentName(
-                    ApplicationProvider.getApplicationContext(),
-                    WatchFaceControlServiceTest::class.java
-                )
-            )).isNull()
+        assertThat(
+                WatchFaceControlService()
+                    .createWatchFaceService(
+                        ComponentName(
+                            ApplicationProvider.getApplicationContext(),
+                            WatchFaceControlServiceTest::class.java
+                        )
+                    )
+            )
+            .isNull()
     }
 }
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/BroadcastsReceiver.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/BroadcastsReceiver.kt
index 644a68a..a7130b9 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/BroadcastsReceiver.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/BroadcastsReceiver.kt
@@ -28,7 +28,6 @@
 /**
  * This class decouples [BroadcastEventObserver]s from the actual broadcast event receivers to make
  * testing easier.
- *
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class BroadcastsReceiver
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlot.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlot.kt
index 0def254..41de246 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlot.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/ComplicationSlot.kt
@@ -633,8 +633,7 @@
             supportedTypes: List<ComplicationType>,
             defaultDataSourcePolicy: DefaultComplicationDataSourcePolicy,
             bounds: ComplicationSlotBounds,
-            @Suppress("HiddenTypeParameter")
-            boundingArc: BoundingArc,
+            @Suppress("HiddenTypeParameter") boundingArc: BoundingArc,
             complicationTapFilter: ComplicationTapFilter =
                 object : ComplicationTapFilter {
                     override fun hitTest(
@@ -808,25 +807,28 @@
 
         /** Constructs the [ComplicationSlot]. */
         public fun build(): ComplicationSlot {
-            require(defaultDataSourcePolicy.primaryDataSourceDefaultType == null ||
-                defaultDataSourcePolicy.primaryDataSourceDefaultType in supportedTypes
+            require(
+                defaultDataSourcePolicy.primaryDataSourceDefaultType == null ||
+                    defaultDataSourcePolicy.primaryDataSourceDefaultType in supportedTypes
             ) {
                 "defaultDataSourcePolicy.primaryDataSourceDefaultType " +
                     "${defaultDataSourcePolicy.primaryDataSourceDefaultType} must be in the" +
                     " supportedTypes list: $supportedTypes"
             }
 
-            require(defaultDataSourcePolicy.secondaryDataSourceDefaultType == null ||
-                defaultDataSourcePolicy.secondaryDataSourceDefaultType in supportedTypes
+            require(
+                defaultDataSourcePolicy.secondaryDataSourceDefaultType == null ||
+                    defaultDataSourcePolicy.secondaryDataSourceDefaultType in supportedTypes
             ) {
                 "defaultDataSourcePolicy.secondaryDataSourceDefaultType " +
                     "${defaultDataSourcePolicy.secondaryDataSourceDefaultType} must be in the" +
                     " supportedTypes list: $supportedTypes"
             }
 
-            require(defaultDataSourcePolicy.systemDataSourceFallbackDefaultType ==
-                ComplicationType.NOT_CONFIGURED ||
-                defaultDataSourcePolicy.systemDataSourceFallbackDefaultType in supportedTypes
+            require(
+                defaultDataSourcePolicy.systemDataSourceFallbackDefaultType ==
+                    ComplicationType.NOT_CONFIGURED ||
+                    defaultDataSourcePolicy.systemDataSourceFallbackDefaultType in supportedTypes
             ) {
                 "defaultDataSourcePolicy.systemDataSourceFallbackDefaultType " +
                     "${defaultDataSourcePolicy.systemDataSourceFallbackDefaultType} must be in " +
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/Renderer.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/Renderer.kt
index f996759..28a76f1 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/Renderer.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/Renderer.kt
@@ -175,7 +175,7 @@
 ) {
     /** The [SurfaceHolder] that [renderInternal] will draw into. */
     public var surfaceHolder: SurfaceHolder = surfaceHolder
-       protected set
+        protected set
 
     @OptIn(WatchFaceExperimental::class) private var pendingWatchFaceColors: WatchFaceColors? = null
     private var pendingWatchFaceColorsSet = false
@@ -379,7 +379,7 @@
      * @param zonedDateTime The [ZonedDateTime] to use when rendering the watch face
      * @param renderParameters The [RenderParameters] to use when rendering the watch face
      * @param screenShotSurfaceHolder The [SurfaceHolder] containing the [Surface] to render into.
-     * This is assumed to have the same dimensions as the screen.
+     *   This is assumed to have the same dimensions as the screen.
      */
     @Suppress("HiddenAbstractMethod")
     @UiThread
@@ -1448,13 +1448,14 @@
 
             runBlocking {
                 glContextLock.withLock {
-                    val tempEglSurface = EGL14.eglCreateWindowSurface(
-                        eglDisplay,
-                        eglConfig,
-                        surfaceHolder.surface,
-                        eglSurfaceAttribList,
-                        0
-                    )
+                    val tempEglSurface =
+                        EGL14.eglCreateWindowSurface(
+                            eglDisplay,
+                            eglConfig,
+                            surfaceHolder.surface,
+                            eglSurfaceAttribList,
+                            0
+                        )
 
                     if (
                         !EGL14.eglMakeCurrent(
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFace.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFace.kt
index c0cb13a..edb9c49 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFace.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFace.kt
@@ -84,7 +84,6 @@
 /**
  * The type of watch face, whether it's digital or analog. This influences the time displayed for
  * remote previews.
- *
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @IntDef(value = [WatchFaceType.DIGITAL, WatchFaceType.ANALOG])
@@ -158,10 +157,7 @@
             componentNameToEditorDelegate.clear()
         }
 
-        /**
-         * For use by on watch face editors.
-         *
-         */
+        /** For use by on watch face editors. */
         @JvmStatic
         @UiThread
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@@ -180,9 +176,7 @@
         }
 
         @UiThread
-        internal fun createWatchFaceServiceOld(
-            componentName: ComponentName
-        ): WatchFaceService {
+        internal fun createWatchFaceServiceOld(componentName: ComponentName): WatchFaceService {
             // Attempt to construct the class for the specified watchFaceName, failing if it either
             // doesn't exist or isn't a [WatchFaceService].
             val watchFaceServiceClass =
@@ -205,10 +199,13 @@
             context: Context
         ): WatchFaceService {
             // Resolve the WatchFaceControlService and construct WatchFaceService using its API
-            val services = context.packageManager.queryIntentServices(Intent(
-                WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE).apply {
-                setPackage(context.packageName)
-            }, 0)
+            val services =
+                context.packageManager.queryIntentServices(
+                    Intent(WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE).apply {
+                        setPackage(context.packageName)
+                    },
+                    0
+                )
 
             if (services.size != 1)
                 throw IllegalArgumentException(
@@ -218,9 +215,7 @@
 
             val watchFaceControlServiceClass =
                 Class.forName(services[0].serviceInfo.name)
-                    ?: throw IllegalArgumentException(
-                        "Can't find ${services[0].serviceInfo.name}"
-                    )
+                    ?: throw IllegalArgumentException("Can't find ${services[0].serviceInfo.name}")
 
             val watchFaceControlService =
                 watchFaceControlServiceClass.getConstructor().newInstance()
@@ -230,10 +225,7 @@
                 ?: throw IllegalArgumentException("Can't create ${componentName.className}")
         }
 
-        /**
-         * For use by on watch face editors.
-         *
-         */
+        /** For use by on watch face editors. */
         @SuppressLint("NewApi")
         @JvmStatic
         @UiThread
@@ -243,25 +235,21 @@
             params: HeadlessWatchFaceInstanceParams,
             context: Context
         ): EditorDelegate {
-            val watchFaceService = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
-                createWatchFaceService(componentName, context)
-            } else {
-                createWatchFaceServiceOld(componentName)
-            }.apply {
-                setContext(context)
-            }
+            val watchFaceService =
+                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+                        createWatchFaceService(componentName, context)
+                    } else {
+                        createWatchFaceServiceOld(componentName)
+                    }
+                    .apply { setContext(context) }
 
-            val engine =
-                watchFaceService.createHeadlessEngine() as WatchFaceService.EngineWrapper
+            val engine = watchFaceService.createHeadlessEngine() as WatchFaceService.EngineWrapper
             val headlessWatchFaceImpl = engine.createHeadlessInstance(params)
             return engine.deferredWatchFaceImpl.await().WFEditorDelegate(headlessWatchFaceImpl)
         }
     }
 
-    /**
-     * Delegate used by on watch face editors.
-     *
-     */
+    /** Delegate used by on watch face editors. */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public interface EditorDelegate {
         /** The [WatchFace]'s [UserStyleSchema]. */
@@ -306,10 +294,7 @@
         )
     }
 
-    /**
-     * Used to inform EditorSession about changes to [ComplicationSlot.configExtras].
-     *
-     */
+    /** Used to inform EditorSession about changes to [ComplicationSlot.configExtras]. */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public interface ComplicationSlotConfigExtrasChangeCallback {
         public fun onComplicationSlotConfigExtrasChanged()
@@ -557,8 +542,7 @@
     private val watchFaceHostApi: WatchFaceHostApi,
     private val watchState: WatchState,
     internal val currentUserStyleRepository: CurrentUserStyleRepository,
-    @get:VisibleForTesting
-    public var complicationSlotsManager: ComplicationSlotsManager,
+    @get:VisibleForTesting public var complicationSlotsManager: ComplicationSlotsManager,
     internal val broadcastsObserver: BroadcastsObserver,
     internal var broadcastsReceiver: BroadcastsReceiver?
 ) {
@@ -1176,19 +1160,20 @@
         hostToken: IBinder,
         width: Int,
         height: Int
-    ): RemoteWatchFaceView? = TraceEvent("WatchFaceImpl.createRemoteWatchFaceView").use {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
-            return CreateRemoteWatchFaceViewHelper.createRemoteWatchFaceView(
-                watchFaceHostApi,
-                this,
-                hostToken,
-                width,
-                height
-            )
-        } else {
-            return null
+    ): RemoteWatchFaceView? =
+        TraceEvent("WatchFaceImpl.createRemoteWatchFaceView").use {
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+                return CreateRemoteWatchFaceViewHelper.createRemoteWatchFaceView(
+                    watchFaceHostApi,
+                    this,
+                    hostToken,
+                    width,
+                    height
+                )
+            } else {
+                return null
+            }
         }
-    }
 
     @UiThread
     @RequiresApi(27)
@@ -1286,27 +1271,26 @@
         height: Int
     ): RemoteWatchFaceView {
         val context = watchFaceHostApi.getContext()
-        val host = SurfaceControlViewHost(
-            context,
-            context.getSystemService(WindowManager::class.java).defaultDisplay,
-            hostToken
-        )
+        val host =
+            SurfaceControlViewHost(
+                context,
+                context.getSystemService(WindowManager::class.java).defaultDisplay,
+                hostToken
+            )
         val view = SurfaceView(context)
-        view.layoutParams = WindowManager.LayoutParams(
-            WindowManager.LayoutParams.WRAP_CONTENT,
-            WindowManager.LayoutParams.WRAP_CONTENT,
-            WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
-            WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
-            PixelFormat.TRANSLUCENT
-        ).apply {
-            title = "RemoteWatchFaceView"
-        }
+        view.layoutParams =
+            WindowManager.LayoutParams(
+                    WindowManager.LayoutParams.WRAP_CONTENT,
+                    WindowManager.LayoutParams.WRAP_CONTENT,
+                    WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
+                    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
+                    PixelFormat.TRANSLUCENT
+                )
+                .apply { title = "RemoteWatchFaceView" }
         host.setView(view, width, height)
-        return RemoteWatchFaceView(
-            view,
-            host,
-            watchFaceHostApi.getUiThreadCoroutineScope()
-        ) { surfaceHolder, params ->
+        return RemoteWatchFaceView(view, host, watchFaceHostApi.getUiThreadCoroutineScope()) {
+            surfaceHolder,
+            params ->
             val oldStyle = watchFaceImpl.currentUserStyleRepository.userStyle.value
             val instant = Instant.ofEpochMilli(params.calendarTimeMillis)
 
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceHostApi.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceHostApi.kt
index fce93a2..3f160d0 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceHostApi.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceHostApi.kt
@@ -28,10 +28,7 @@
 import java.time.Duration
 import kotlinx.coroutines.CoroutineScope
 
-/**
- * The API [WatchFaceImpl] uses to communicate with the system.
- *
- */
+/** The API [WatchFaceImpl] uses to communicate with the system. */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public interface WatchFaceHostApi {
     /** The [WatchFaceService.SystemTimeProvider]. */
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceService.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceService.kt
index 4cf18b94..0f9a4ba 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceService.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceService.kt
@@ -429,17 +429,13 @@
             }
     }
 
-    /**
-     * The context used to resolve resources. Unlocks future work.
-     *
-     */
+    /** The context used to resolve resources. Unlocks future work. */
     protected open val resourcesContext: Context
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) get() = this
 
     /**
      * Returns the id of the XmlSchemaAndComplicationSlotsDefinition XML resource or 0 if it can't
      * be found.
-     *
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     @Suppress("DEPRECATION")
@@ -618,7 +614,6 @@
     /**
      * Override to force the watchface to be regarded as being visible. This must not be used in
      * production code or significant battery life regressions may occur.
-     *
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) open fun forceIsVisibleForTesting() = false
 
@@ -653,10 +648,7 @@
 
     internal var backgroundThread: HandlerThread? = null
 
-    /**
-     * Interface for getting the current system time.
-     *
-     */
+    /** Interface for getting the current system time. */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public interface SystemTimeProvider {
         /** Returns the current system time in milliseconds. */
@@ -719,6 +711,7 @@
     /** [Choreographer] isn't supposed to be mocked, so we use a thin wrapper. */
     internal interface ChoreographerWrapper {
         fun postFrameCallback(callback: Choreographer.FrameCallback)
+
         fun removeFrameCallback(callback: Choreographer.FrameCallback)
     }
 
@@ -744,10 +737,7 @@
 
     internal open fun cancelCoroutineScopesInOnDestroy() = true
 
-    /**
-     * This is open for use by tests, it allows them to inject a custom [SurfaceHolder].
-     *
-     */
+    /** This is open for use by tests, it allows them to inject a custom [SurfaceHolder]. */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public open fun getWallpaperSurfaceHolderOverride(): SurfaceHolder? = null
 
@@ -1402,10 +1392,11 @@
                     // probably will connect at a later time. In the latter case we should
                     // register a parameterless engine to allow the subsequent connection to
                     // succeed.
-                    pendingWallpaperInstance = InteractiveInstanceManager
-                        .setParameterlessEngineOrTakePendingWallpaperInteractiveWatchFaceInstance(
-                            this
-                        )
+                    pendingWallpaperInstance =
+                        InteractiveInstanceManager
+                            .setParameterlessEngineOrTakePendingWallpaperInteractiveWatchFaceInstance( // ktlint-disable max-line-length
+                                this
+                            )
                 }
 
                 // If there's a pending WallpaperInteractiveWatchFaceInstance then create it.
@@ -1460,7 +1451,7 @@
         @SuppressWarnings("NewApi")
         internal fun attachToParameterlessEngine(
             pendingWallpaperInstance:
-            InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance
+                InteractiveInstanceManager.PendingWallpaperInteractiveWatchFaceInstance
         ) {
             uiThreadCoroutineScope.launch {
                 try {
@@ -2241,12 +2232,7 @@
             watchState: WatchState
         ) {
             val broadcastsObserver =
-                BroadcastsObserver(
-                    watchState,
-                    this,
-                    deferredWatchFaceImpl,
-                    uiThreadCoroutineScope
-                )
+                BroadcastsObserver(watchState, this, deferredWatchFaceImpl, uiThreadCoroutineScope)
 
             // There's no point creating BroadcastsReceiver or listening for Accessibility state
             // changes if this is a headless instance.
@@ -2881,7 +2867,6 @@
 /**
  * If the instance ID for [MutableWatchState.watchFaceInstanceId] begin with this prefix, then the
  * system sends consistent IDs for interactive, headless and editor sessions.
- *
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 const val SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX = "wfId-"
@@ -2889,14 +2874,12 @@
 /**
  * Instance ID to use when either there's no system id or it doesn't start with
  * [SYSTEM_SUPPORTS_CONSISTENT_IDS_PREFIX].
- *
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) const val DEFAULT_INSTANCE_ID = "defaultInstance"
 
 /**
  * This is needed to make the instance id consistent between Interactive, Headless and EditorSession
  * for old versions of the system.
- *
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 fun sanitizeWatchFaceId(instanceId: String?) =
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchState.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchState.kt
index b2ef214..29ebfde 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchState.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchState.kt
@@ -175,6 +175,7 @@
         set(@Px value) {
             field = value
         }
+
     public var isHeadless: Boolean = false
 
     public fun asWatchState(): WatchState =
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/InteractiveInstanceManager.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/InteractiveInstanceManager.kt
index 1dbbc9a..d6e5cdc 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/InteractiveInstanceManager.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/InteractiveInstanceManager.kt
@@ -73,10 +73,10 @@
         }
 
         /**
-         * We either return the pendingWallpaperInteractiveWatchFaceInstance if there is one or
-         * set parameterlessEngine. A parameterless engine, is one that's been created without any
-         * start up params. Typically this can only happen if a WSL watchface is upgraded to an
-         * androidx one, so WallpaperManager knows about it but WearServices/WSL does not.
+         * We either return the pendingWallpaperInteractiveWatchFaceInstance if there is one or set
+         * parameterlessEngine. A parameterless engine, is one that's been created without any start
+         * up params. Typically this can only happen if a WSL watchface is upgraded to an androidx
+         * one, so WallpaperManager knows about it but WearServices/WSL does not.
          */
         @SuppressLint("SyntheticAccessor")
         fun setParameterlessEngineOrTakePendingWallpaperInteractiveWatchFaceInstance(
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/RemoteWatchFaceView.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/RemoteWatchFaceView.kt
index e3abf0a..f2312e1e 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/RemoteWatchFaceView.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/RemoteWatchFaceView.kt
@@ -82,4 +82,4 @@
     override fun close() {
         host.release()
     }
-}
\ No newline at end of file
+}
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/WatchFaceControlService.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/WatchFaceControlService.kt
index b41c5d19..92a7cf0 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/WatchFaceControlService.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/control/WatchFaceControlService.kt
@@ -49,10 +49,7 @@
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.MainScope
 
-/**
- * A service for creating and controlling watch face instances.
- *
- */
+/** A service for creating and controlling watch face instances. */
 @RequiresApi(27)
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public open class WatchFaceControlService : Service() {
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/editor/EditorService.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/editor/EditorService.kt
index 71b0d50..0755492 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/editor/EditorService.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/editor/EditorService.kt
@@ -22,10 +22,7 @@
 import androidx.wear.watchface.IndentingPrintWriter
 import androidx.wear.watchface.editor.data.EditorStateWireFormat
 
-/**
- * Implementation of [IEditorService], intended for use by EditorSession only.
- *
- */
+/** Implementation of [IEditorService], intended for use by EditorSession only. */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class EditorService : IEditorService.Stub() {
     private val lock = Any()
diff --git a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/TestCommon.kt b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/TestCommon.kt
index fa8a2c8..7296865 100644
--- a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/TestCommon.kt
+++ b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/TestCommon.kt
@@ -71,6 +71,7 @@
     /** The ids of the [ComplicationSlot]s that have been tapped. */
     val tappedComplicationSlotIds: List<Int>
         get() = mutableTappedComplicationIds
+
     var complicationSelected: Int? = null
     var mockZoneId: ZoneId = ZoneId.of("UTC")
     var renderer: Renderer? = null
diff --git a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/WatchFaceServiceTest.kt b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/WatchFaceServiceTest.kt
index e7f10f7..bba42d55 100644
--- a/wear/watchface/watchface/src/test/java/androidx/wear/watchface/WatchFaceServiceTest.kt
+++ b/wear/watchface/watchface/src/test/java/androidx/wear/watchface/WatchFaceServiceTest.kt
@@ -23,6 +23,8 @@
 import android.content.ComponentName
 import android.content.Context
 import android.content.Intent
+import android.content.IntentFilter
+import android.content.pm.ServiceInfo
 import android.graphics.Bitmap
 import android.graphics.Canvas
 import android.graphics.Color
@@ -39,8 +41,6 @@
 import android.provider.Settings
 import android.support.wearable.complications.ComplicationData as WireComplicationData
 import android.support.wearable.complications.ComplicationText as WireComplicationText
-import android.content.IntentFilter
-import android.content.pm.ServiceInfo
 import android.support.wearable.watchface.Constants
 import android.support.wearable.watchface.IWatchFaceService
 import android.support.wearable.watchface.WatchFaceStyle
@@ -3760,21 +3760,22 @@
     @Config(sdk = [Build.VERSION_CODES.R])
     public fun directBoot() {
         val instanceId = "DirectBootInstance"
-        val params = WallpaperInteractiveWatchFaceInstanceParams(
-            instanceId,
-            DeviceConfig(false, false, 0, 0),
-            WatchUiState(false, 0),
-            UserStyle(
-                hashMapOf(
-                    colorStyleSetting to blueStyleOption,
-                    watchHandStyleSetting to gothicStyleOption
-                )
+        val params =
+            WallpaperInteractiveWatchFaceInstanceParams(
+                instanceId,
+                DeviceConfig(false, false, 0, 0),
+                WatchUiState(false, 0),
+                UserStyle(
+                        hashMapOf(
+                            colorStyleSetting to blueStyleOption,
+                            watchHandStyleSetting to gothicStyleOption
+                        )
+                    )
+                    .toWireFormat(),
+                null,
+                null,
+                null
             )
-                .toWireFormat(),
-            null,
-            null,
-            null
-        )
         testWatchFaceService =
             TestWatchFaceService(
                 WatchFaceType.ANALOG,
@@ -5215,19 +5216,19 @@
         complicationSlotsManager.selectComplicationDataForInstant(Instant.ofEpochSecond(999))
         assertThat(getLeftShortTextComplicationDataText()).isEqualTo("A")
         assertThat(
-            engineWrapper.contentDescriptionLabels[1]
-                .text
-                .getTextAt(ApplicationProvider.getApplicationContext<Context>().resources, 0)
-        )
+                engineWrapper.contentDescriptionLabels[1]
+                    .text
+                    .getTextAt(ApplicationProvider.getApplicationContext<Context>().resources, 0)
+            )
             .isEqualTo("A")
 
         complicationSlotsManager.selectComplicationDataForInstant(Instant.ofEpochSecond(1000))
         assertThat(getLeftShortTextComplicationDataText()).isEqualTo("B")
         assertThat(
-            engineWrapper.contentDescriptionLabels[1]
-                .text
-                .getTextAt(ApplicationProvider.getApplicationContext<Context>().resources, 0)
-        )
+                engineWrapper.contentDescriptionLabels[1]
+                    .text
+                    .getTextAt(ApplicationProvider.getApplicationContext<Context>().resources, 0)
+            )
             .isEqualTo("B")
 
         complicationSlotsManager.selectComplicationDataForInstant(Instant.ofEpochSecond(1999))
@@ -5236,10 +5237,10 @@
         complicationSlotsManager.selectComplicationDataForInstant(Instant.ofEpochSecond(2000))
         assertThat(getLeftShortTextComplicationDataText()).isEqualTo("C")
         assertThat(
-            engineWrapper.contentDescriptionLabels[1]
-                .text
-                .getTextAt(ApplicationProvider.getApplicationContext<Context>().resources, 0)
-        )
+                engineWrapper.contentDescriptionLabels[1]
+                    .text
+                    .getTextAt(ApplicationProvider.getApplicationContext<Context>().resources, 0)
+            )
             .isEqualTo("C")
 
         complicationSlotsManager.selectComplicationDataForInstant(Instant.ofEpochSecond(2999))
@@ -5248,10 +5249,10 @@
         complicationSlotsManager.selectComplicationDataForInstant(Instant.ofEpochSecond(3000))
         assertThat(getLeftShortTextComplicationDataText()).isEqualTo("B")
         assertThat(
-            engineWrapper.contentDescriptionLabels[1]
-                .text
-                .getTextAt(ApplicationProvider.getApplicationContext<Context>().resources, 0)
-        )
+                engineWrapper.contentDescriptionLabels[1]
+                    .text
+                    .getTextAt(ApplicationProvider.getApplicationContext<Context>().resources, 0)
+            )
             .isEqualTo("B")
 
         complicationSlotsManager.selectComplicationDataForInstant(Instant.ofEpochSecond(3999))
@@ -5260,10 +5261,10 @@
         complicationSlotsManager.selectComplicationDataForInstant(Instant.ofEpochSecond(4000))
         assertThat(getLeftShortTextComplicationDataText()).isEqualTo("A")
         assertThat(
-            engineWrapper.contentDescriptionLabels[1]
-                .text
-                .getTextAt(ApplicationProvider.getApplicationContext<Context>().resources, 0)
-        )
+                engineWrapper.contentDescriptionLabels[1]
+                    .text
+                    .getTextAt(ApplicationProvider.getApplicationContext<Context>().resources, 0)
+            )
             .isEqualTo("A")
     }
 
@@ -6556,13 +6557,14 @@
         lateinit var delegate: WatchFace.EditorDelegate
 
         val shadowPackageManager = shadowOf(context.packageManager)
-        val controlServiceComponent = ComponentName(
-            context, TestWatchFaceControlService::class.java
+        val controlServiceComponent =
+            ComponentName(context, TestWatchFaceControlService::class.java)
+        shadowPackageManager.addOrUpdateService(
+            ServiceInfo().apply {
+                packageName = controlServiceComponent.packageName
+                name = controlServiceComponent.className
+            }
         )
-        shadowPackageManager.addOrUpdateService(ServiceInfo().apply {
-            packageName = controlServiceComponent.packageName
-            name = controlServiceComponent.className
-        })
         shadowPackageManager.addIntentFilterForService(
             controlServiceComponent,
             IntentFilter(WatchFaceControlService.ACTION_WATCHFACE_CONTROL_SERVICE)
@@ -6632,19 +6634,20 @@
         engineWrapper.onSurfaceChanged(surfaceHolder, 0, 100, 100)
         engineWrapper.onVisibilityChanged(true)
 
-        val callback = object : IPendingInteractiveWatchFace.Stub() {
-            override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
+        val callback =
+            object : IPendingInteractiveWatchFace.Stub() {
+                override fun getApiVersion() = IPendingInteractiveWatchFace.API_VERSION
 
-            override fun onInteractiveWatchFaceCreated(
-                iInteractiveWatchFace: IInteractiveWatchFace
-            ) {
-                interactiveWatchFaceInstance = iInteractiveWatchFace
-            }
+                override fun onInteractiveWatchFaceCreated(
+                    iInteractiveWatchFace: IInteractiveWatchFace
+                ) {
+                    interactiveWatchFaceInstance = iInteractiveWatchFace
+                }
 
-            override fun onInteractiveWatchFaceCrashed(exception: CrashInfoParcel?) {
-                fail("WatchFace crashed: $exception")
+                override fun onInteractiveWatchFaceCrashed(exception: CrashInfoParcel?) {
+                    fail("WatchFace crashed: $exception")
+                }
             }
-        }
 
         InteractiveInstanceManager
             .getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance(
diff --git a/webkit/OWNERS b/webkit/OWNERS
index 3852064..93f399a 100644
--- a/webkit/OWNERS
+++ b/webkit/OWNERS
@@ -1,4 +1,5 @@
 # Bug component: 461230
+elabadysayed@google.com
 ntfschr@google.com
 pbirk@google.com
 swestphal@google.com
diff --git a/window/window-testing/api/api_lint.ignore b/window/window-testing/api/api_lint.ignore
index 1789662..f64ca92 100644
--- a/window/window-testing/api/api_lint.ignore
+++ b/window/window-testing/api/api_lint.ignore
@@ -1,9 +1,9 @@
 // Baseline format: 1.0
-InvalidNullabilityOverride: androidx.window.testing.layout.StubWindowMetricsCalculatorRule#apply(org.junit.runners.model.Statement, org.junit.runner.Description) parameter #0:
-    Invalid nullability on parameter `base` in method `apply`. Parameters of overrides cannot be NonNull if the super parameter is unannotated.
-InvalidNullabilityOverride: androidx.window.testing.layout.StubWindowMetricsCalculatorRule#apply(org.junit.runners.model.Statement, org.junit.runner.Description) parameter #1:
-    Invalid nullability on parameter `description` in method `apply`. Parameters of overrides cannot be NonNull if the super parameter is unannotated.
 InvalidNullabilityOverride: androidx.window.testing.layout.WindowLayoutInfoPublisherRule#apply(org.junit.runners.model.Statement, org.junit.runner.Description) parameter #0:
     Invalid nullability on parameter `base` in method `apply`. Parameters of overrides cannot be NonNull if the super parameter is unannotated.
 InvalidNullabilityOverride: androidx.window.testing.layout.WindowLayoutInfoPublisherRule#apply(org.junit.runners.model.Statement, org.junit.runner.Description) parameter #1:
     Invalid nullability on parameter `description` in method `apply`. Parameters of overrides cannot be NonNull if the super parameter is unannotated.
+InvalidNullabilityOverride: androidx.window.testing.layout.WindowMetricsCalculatorRule#apply(org.junit.runners.model.Statement, org.junit.runner.Description) parameter #0:
+    Invalid nullability on parameter `base` in method `apply`. Parameters of overrides cannot be NonNull if the super parameter is unannotated.
+InvalidNullabilityOverride: androidx.window.testing.layout.WindowMetricsCalculatorRule#apply(org.junit.runners.model.Statement, org.junit.runner.Description) parameter #1:
+    Invalid nullability on parameter `description` in method `apply`. Parameters of overrides cannot be NonNull if the super parameter is unannotated.
diff --git a/window/window-testing/api/current.txt b/window/window-testing/api/current.txt
index 12a7d20..0c67563 100644
--- a/window/window-testing/api/current.txt
+++ b/window/window-testing/api/current.txt
@@ -7,6 +7,11 @@
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center, optional int size);
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center);
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds);
   }
 
   public final class WindowLayoutInfoPublisherRule implements org.junit.rules.TestRule {
@@ -20,5 +25,10 @@
     method public static androidx.window.layout.WindowLayoutInfo createWindowLayoutInfo();
   }
 
+  public final class WindowMetricsCalculatorRule implements org.junit.rules.TestRule {
+    ctor public WindowMetricsCalculatorRule();
+    method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
+  }
+
 }
 
diff --git a/window/window-testing/api/public_plus_experimental_current.txt b/window/window-testing/api/public_plus_experimental_current.txt
index 16174f8..bd1d758 100644
--- a/window/window-testing/api/public_plus_experimental_current.txt
+++ b/window/window-testing/api/public_plus_experimental_current.txt
@@ -41,16 +41,11 @@
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center, optional int size);
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center);
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity);
-    method @androidx.window.core.ExperimentalWindowApi public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
-    method @androidx.window.core.ExperimentalWindowApi public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
-    method @androidx.window.core.ExperimentalWindowApi public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size);
-    method @androidx.window.core.ExperimentalWindowApi public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center);
-    method @androidx.window.core.ExperimentalWindowApi public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds);
-  }
-
-  @androidx.window.core.ExperimentalWindowApi public final class StubWindowMetricsCalculatorRule implements org.junit.rules.TestRule {
-    ctor public StubWindowMetricsCalculatorRule();
-    method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds);
   }
 
   public final class WindowLayoutInfoPublisherRule implements org.junit.rules.TestRule {
@@ -64,5 +59,10 @@
     method public static androidx.window.layout.WindowLayoutInfo createWindowLayoutInfo();
   }
 
+  public final class WindowMetricsCalculatorRule implements org.junit.rules.TestRule {
+    ctor public WindowMetricsCalculatorRule();
+    method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
+  }
+
 }
 
diff --git a/window/window-testing/api/restricted_current.txt b/window/window-testing/api/restricted_current.txt
index 12a7d20..0c67563 100644
--- a/window/window-testing/api/restricted_current.txt
+++ b/window/window-testing/api/restricted_current.txt
@@ -7,6 +7,11 @@
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center, optional int size);
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional int center);
     method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center, optional int size);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional int center);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds);
   }
 
   public final class WindowLayoutInfoPublisherRule implements org.junit.rules.TestRule {
@@ -20,5 +25,10 @@
     method public static androidx.window.layout.WindowLayoutInfo createWindowLayoutInfo();
   }
 
+  public final class WindowMetricsCalculatorRule implements org.junit.rules.TestRule {
+    ctor public WindowMetricsCalculatorRule();
+    method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
+  }
+
 }
 
diff --git a/window/window-testing/src/androidTest/java/androidx/window/testing/layout/StubWindowMetricsCalculatorRuleTest.kt b/window/window-testing/src/androidTest/java/androidx/window/testing/layout/WindowMetricsCalculatorRuleTest.kt
similarity index 94%
rename from window/window-testing/src/androidTest/java/androidx/window/testing/layout/StubWindowMetricsCalculatorRuleTest.kt
rename to window/window-testing/src/androidTest/java/androidx/window/testing/layout/WindowMetricsCalculatorRuleTest.kt
index 3e6544d..a663eaf 100644
--- a/window/window-testing/src/androidTest/java/androidx/window/testing/layout/StubWindowMetricsCalculatorRuleTest.kt
+++ b/window/window-testing/src/androidTest/java/androidx/window/testing/layout/WindowMetricsCalculatorRuleTest.kt
@@ -23,7 +23,6 @@
 import androidx.annotation.RequiresApi
 import androidx.test.core.app.ActivityScenario
 import androidx.test.ext.junit.rules.ActivityScenarioRule
-import androidx.window.core.ExperimentalWindowApi
 import androidx.window.layout.WindowMetricsCalculator
 import androidx.window.testing.TestActivity
 import org.junit.Assert.assertEquals
@@ -35,19 +34,18 @@
 import org.junit.runners.model.Statement
 
 /**
- * A test class for [StubWindowMetricsCalculatorRule] that tests using
+ * A test class for [WindowMetricsCalculatorRule] that tests using
  * [StubWindowMetricsCalculator] instead of the actual implementation.
  */
-@OptIn(ExperimentalWindowApi::class)
-class StubWindowMetricsCalculatorRuleTest {
+class WindowMetricsCalculatorRuleTest {
     private val activityRule = ActivityScenarioRule(TestActivity::class.java)
-    private val stubWindowMetricsCalculatorRule = StubWindowMetricsCalculatorRule()
+    private val mWindowMetricsCalculatorRule = WindowMetricsCalculatorRule()
 
     @get:Rule
     val testRule: TestRule
 
     init {
-        testRule = RuleChain.outerRule(stubWindowMetricsCalculatorRule).around(activityRule)
+        testRule = RuleChain.outerRule(mWindowMetricsCalculatorRule).around(activityRule)
     }
 
     @Test
@@ -166,7 +164,7 @@
             WindowMetricsCalculator.reset()
             val expected = WindowMetricsCalculator.getOrCreate()
             try {
-                StubWindowMetricsCalculatorRule().apply(
+                WindowMetricsCalculatorRule().apply(
                     object : Statement() {
                         override fun evaluate() {
                             throw TestException
diff --git a/window/window-testing/src/main/java/androidx/window/testing/layout/DisplayFeatureTesting.kt b/window/window-testing/src/main/java/androidx/window/testing/layout/DisplayFeatureTesting.kt
index b6aa95e..2a065cb 100644
--- a/window/window-testing/src/main/java/androidx/window/testing/layout/DisplayFeatureTesting.kt
+++ b/window/window-testing/src/main/java/androidx/window/testing/layout/DisplayFeatureTesting.kt
@@ -19,7 +19,6 @@
 
 import android.app.Activity
 import android.graphics.Rect
-import androidx.window.core.ExperimentalWindowApi
 import androidx.window.layout.FoldingFeature
 import androidx.window.layout.FoldingFeature.OcclusionType.Companion.FULL
 import androidx.window.layout.FoldingFeature.OcclusionType.Companion.NONE
@@ -96,7 +95,6 @@
  */
 @JvmOverloads
 @JvmName("createFoldingFeature")
-@ExperimentalWindowApi
 fun FoldingFeature(
     windowBounds: Rect,
     center: Int = -1,
diff --git a/window/window-testing/src/main/java/androidx/window/testing/layout/StubMetricDecorator.kt b/window/window-testing/src/main/java/androidx/window/testing/layout/StubMetricDecorator.kt
index 14bf0c7..7a8eeb2 100644
--- a/window/window-testing/src/main/java/androidx/window/testing/layout/StubMetricDecorator.kt
+++ b/window/window-testing/src/main/java/androidx/window/testing/layout/StubMetricDecorator.kt
@@ -16,14 +16,12 @@
 
 package androidx.window.testing.layout
 
-import androidx.window.core.ExperimentalWindowApi
 import androidx.window.layout.WindowMetricsCalculator
 import androidx.window.layout.WindowMetricsCalculatorDecorator
 
 /**
  * A decorator to return [StubWindowMetricsCalculator] instead of the actual implementation.
  */
-@ExperimentalWindowApi
 internal object StubMetricDecorator : WindowMetricsCalculatorDecorator {
     override fun decorate(calculator: WindowMetricsCalculator): WindowMetricsCalculator {
         return StubWindowMetricsCalculator()
diff --git a/window/window-testing/src/main/java/androidx/window/testing/layout/WindowLayoutInfoPublisherRule.kt b/window/window-testing/src/main/java/androidx/window/testing/layout/WindowLayoutInfoPublisherRule.kt
index c9c7aeb..b8d4b070 100644
--- a/window/window-testing/src/main/java/androidx/window/testing/layout/WindowLayoutInfoPublisherRule.kt
+++ b/window/window-testing/src/main/java/androidx/window/testing/layout/WindowLayoutInfoPublisherRule.kt
@@ -45,7 +45,7 @@
  *     <li>A fold in the middle and has horizontal orientation.</li>
  * </ul>
  */
-public class WindowLayoutInfoPublisherRule() : TestRule {
+class WindowLayoutInfoPublisherRule : TestRule {
 
     private val flow = MutableSharedFlow<WindowLayoutInfo>(
         extraBufferCapacity = 1,
@@ -70,7 +70,7 @@
      * Send an arbitrary [WindowLayoutInfo] through
      * [androidx.window.layout.WindowInfoTracker.windowLayoutInfo]. Each event is sent only once.
      */
-    public fun overrideWindowLayoutInfo(info: WindowLayoutInfo) {
+    fun overrideWindowLayoutInfo(info: WindowLayoutInfo) {
         flow.tryEmit(info)
     }
 }
\ No newline at end of file
diff --git a/window/window-testing/src/main/java/androidx/window/testing/layout/StubWindowMetricsCalculatorRule.kt b/window/window-testing/src/main/java/androidx/window/testing/layout/WindowMetricsCalculatorRule.kt
similarity index 93%
rename from window/window-testing/src/main/java/androidx/window/testing/layout/StubWindowMetricsCalculatorRule.kt
rename to window/window-testing/src/main/java/androidx/window/testing/layout/WindowMetricsCalculatorRule.kt
index bfb7c48..10e68f1 100644
--- a/window/window-testing/src/main/java/androidx/window/testing/layout/StubWindowMetricsCalculatorRule.kt
+++ b/window/window-testing/src/main/java/androidx/window/testing/layout/WindowMetricsCalculatorRule.kt
@@ -17,7 +17,6 @@
 package androidx.window.testing.layout
 
 import android.app.Activity
-import androidx.window.core.ExperimentalWindowApi
 import androidx.window.layout.WindowMetricsCalculator
 import org.junit.rules.TestRule
 import org.junit.runner.Description
@@ -32,8 +31,7 @@
  * the Espresso Test framework with an actual [Activity] and use the actual
  * [WindowMetricsCalculator].
  */
-@ExperimentalWindowApi
-class StubWindowMetricsCalculatorRule : TestRule {
+class WindowMetricsCalculatorRule : TestRule {
 
     override fun apply(base: Statement, description: Description): Statement {
         return object : Statement() {
diff --git a/window/window/api/current.txt b/window/window/api/current.txt
index 5617dbb..8fbbb45 100644
--- a/window/window/api/current.txt
+++ b/window/window/api/current.txt
@@ -302,6 +302,7 @@
 
   public interface WindowInfoTracker {
     method public default static androidx.window.layout.WindowInfoTracker getOrCreate(android.content.Context context);
+    method public default kotlinx.coroutines.flow.Flow<androidx.window.layout.WindowLayoutInfo> windowLayoutInfo(@UiContext android.content.Context context);
     method public kotlinx.coroutines.flow.Flow<androidx.window.layout.WindowLayoutInfo> windowLayoutInfo(android.app.Activity activity);
     field public static final androidx.window.layout.WindowInfoTracker.Companion Companion;
   }
diff --git a/window/window/api/public_plus_experimental_current.txt b/window/window/api/public_plus_experimental_current.txt
index 0ac0175..0c1d735 100644
--- a/window/window/api/public_plus_experimental_current.txt
+++ b/window/window/api/public_plus_experimental_current.txt
@@ -330,7 +330,7 @@
 
   public interface WindowInfoTracker {
     method public default static androidx.window.layout.WindowInfoTracker getOrCreate(android.content.Context context);
-    method @androidx.window.core.ExperimentalWindowApi public default kotlinx.coroutines.flow.Flow<androidx.window.layout.WindowLayoutInfo> windowLayoutInfo(@UiContext android.content.Context context);
+    method public default kotlinx.coroutines.flow.Flow<androidx.window.layout.WindowLayoutInfo> windowLayoutInfo(@UiContext android.content.Context context);
     method public kotlinx.coroutines.flow.Flow<androidx.window.layout.WindowLayoutInfo> windowLayoutInfo(android.app.Activity activity);
     field public static final androidx.window.layout.WindowInfoTracker.Companion Companion;
   }
diff --git a/window/window/api/restricted_current.txt b/window/window/api/restricted_current.txt
index 5617dbb..8fbbb45 100644
--- a/window/window/api/restricted_current.txt
+++ b/window/window/api/restricted_current.txt
@@ -302,6 +302,7 @@
 
   public interface WindowInfoTracker {
     method public default static androidx.window.layout.WindowInfoTracker getOrCreate(android.content.Context context);
+    method public default kotlinx.coroutines.flow.Flow<androidx.window.layout.WindowLayoutInfo> windowLayoutInfo(@UiContext android.content.Context context);
     method public kotlinx.coroutines.flow.Flow<androidx.window.layout.WindowLayoutInfo> windowLayoutInfo(android.app.Activity activity);
     field public static final androidx.window.layout.WindowInfoTracker.Companion Companion;
   }
diff --git a/window/window/src/androidTest/java/androidx/window/embedding/SafeActivityEmbeddingComponentProviderTest.kt b/window/window/src/androidTest/java/androidx/window/embedding/SafeActivityEmbeddingComponentProviderTest.kt
index 3b93a9a..1eab9d0 100644
--- a/window/window/src/androidTest/java/androidx/window/embedding/SafeActivityEmbeddingComponentProviderTest.kt
+++ b/window/window/src/androidTest/java/androidx/window/embedding/SafeActivityEmbeddingComponentProviderTest.kt
@@ -18,9 +18,13 @@
 
 import android.util.Log
 import androidx.window.core.ConsumerAdapter
+import androidx.window.core.ExtensionsUtil
 import androidx.window.extensions.WindowExtensions
+import androidx.window.extensions.WindowExtensions.VENDOR_API_LEVEL_1
 import androidx.window.extensions.WindowExtensionsProvider
+import org.junit.Assert.assertNotNull
 import org.junit.Assert.assertNull
+import org.junit.Assert.assertTrue
 import org.junit.Test
 
 /**
@@ -31,14 +35,13 @@
  */
 class SafeActivityEmbeddingComponentProviderTest {
 
+    // TODO(b/267708462) : add a more reliable test
     /**
      * Test that if [WindowExtensionsProvider] is available then
      * use [SafeActivityEmbeddingComponentProvider.activityEmbeddingComponent] to validate.
      * If [WindowExtensions.getActivityEmbeddingComponent] matches contract,
      * return a non-null value.
      * If it doesn't match, it will return a null.
-     *
-     *  TODO(b/267708462) : add a more reliable test
      */
     @Test
     fun activityEmbeddingComponentIsAvailable_ifProviderIsAvailable() {
@@ -50,12 +53,12 @@
             Log.d(TAG, "Device doesn't have WindowExtensions available")
             return
         }
-        val safeComponent = SafeActivityEmbeddingComponentProvider(
+        val safeProvider = SafeActivityEmbeddingComponentProvider(
             loader,
             consumerAdapter,
             windowExtensions
         )
-            .activityEmbeddingComponent
+        val safeComponent = safeProvider.activityEmbeddingComponent
         try {
             val actualComponent = windowExtensions.activityEmbeddingComponent
             if (actualComponent == null) {
@@ -63,8 +66,11 @@
             } else {
                 // TODO(b/267573854) : verify upon each api level
                 // TODO(b/267708462) : more reliable test for testing actual method matching
-                if (safeComponent == null) {
-                    Log.d(TAG, "ActivityEmbeddingComponent on device doesn't match our constraints")
+                assertNotNull(safeComponent)
+                assertTrue(safeProvider.isActivityEmbeddingComponentAccessible())
+                when (ExtensionsUtil.safeVendorApiLevel) {
+                    VENDOR_API_LEVEL_1 -> assertTrue(safeProvider.hasValidVendorApiLevel1())
+                    else -> assertTrue(safeProvider.hasValidVendorApiLevel2())
                 }
             }
         } catch (e: UnsupportedOperationException) {
diff --git a/window/window/src/androidTest/java/androidx/window/layout/SafeWindowLayoutComponentProviderTest.kt b/window/window/src/androidTest/java/androidx/window/layout/SafeWindowLayoutComponentProviderTest.kt
index bc78a38..9855ce8 100644
--- a/window/window/src/androidTest/java/androidx/window/layout/SafeWindowLayoutComponentProviderTest.kt
+++ b/window/window/src/androidTest/java/androidx/window/layout/SafeWindowLayoutComponentProviderTest.kt
@@ -16,10 +16,13 @@
 
 package androidx.window.layout
 
-import android.util.Log
 import androidx.window.core.ConsumerAdapter
+import androidx.window.core.ExtensionsUtil
+import androidx.window.extensions.WindowExtensions.VENDOR_API_LEVEL_1
 import androidx.window.extensions.WindowExtensionsProvider
+import org.junit.Assert.assertNotNull
 import org.junit.Assert.assertNull
+import org.junit.Assert.assertTrue
 import org.junit.Test
 
 /**
@@ -37,8 +40,8 @@
     fun windowLayoutComponentIsAvailable_ifProviderIsAvailable() {
         val loader = SafeWindowLayoutComponentProviderTest::class.java.classLoader!!
         val consumerAdapter = ConsumerAdapter(loader)
-        val safeComponent = SafeWindowLayoutComponentProvider(loader, consumerAdapter)
-            .windowLayoutComponent
+        val safeProvider = SafeWindowLayoutComponentProvider(loader, consumerAdapter)
+        val safeComponent = safeProvider.windowLayoutComponent
 
         try {
             val extensions = WindowExtensionsProvider.getWindowExtensions()
@@ -48,15 +51,16 @@
             } else {
                 // TODO(b/267831038): verify upon each api level
                 // TODO(b/267708462): more reliable test for testing actual method matching
-                Log.d(TAG, "WindowLayoutComponent on device doesn't match our constraints")
+                assertNotNull(safeComponent)
+                assertTrue(safeProvider.isWindowLayoutComponentAccessible())
+                when (ExtensionsUtil.safeVendorApiLevel) {
+                    VENDOR_API_LEVEL_1 -> assertTrue(safeProvider.hasValidVendorApiLevel1())
+                    else -> assertTrue(safeProvider.hasValidVendorApiLevel2())
+                }
             }
         } catch (e: UnsupportedOperationException) {
             // Invalid implementation of extensions
             assertNull(safeComponent)
         }
     }
-
-    companion object {
-        private const val TAG = "SafeWindowLayoutComponentProviderTest"
-    }
 }
\ No newline at end of file
diff --git a/window/window/src/main/java/androidx/window/SafeWindowExtensionsProvider.kt b/window/window/src/main/java/androidx/window/SafeWindowExtensionsProvider.kt
new file mode 100644
index 0000000..2aa82f4
--- /dev/null
+++ b/window/window/src/main/java/androidx/window/SafeWindowExtensionsProvider.kt
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.window
+
+import androidx.window.reflection.ReflectionUtils
+import androidx.window.reflection.ReflectionUtils.doesReturn
+import androidx.window.reflection.ReflectionUtils.isPublic
+import androidx.window.reflection.WindowExtensionsConstants
+
+internal class SafeWindowExtensionsProvider(private val loader: ClassLoader) {
+    internal val windowExtensionsClass: Class<*>
+        get() {
+            return loader.loadClass(WindowExtensionsConstants.WINDOW_EXTENSIONS_CLASS)
+        }
+
+    internal fun isWindowExtensionsValid(): Boolean {
+        return isWindowExtensionsPresent() &&
+            ReflectionUtils.validateReflection(
+                "WindowExtensionsProvider#getWindowExtensions is not valid"
+            ) {
+                val providerClass = windowExtensionsProviderClass
+                val getWindowExtensionsMethod = providerClass
+                    .getDeclaredMethod("getWindowExtensions")
+                val windowExtensionsClass = windowExtensionsClass
+                getWindowExtensionsMethod.doesReturn(windowExtensionsClass) &&
+                    getWindowExtensionsMethod.isPublic
+            }
+    }
+
+    private fun isWindowExtensionsPresent(): Boolean {
+        return ReflectionUtils.checkIsPresent {
+            loader.loadClass(WindowExtensionsConstants.WINDOW_EXTENSIONS_PROVIDER_CLASS)
+        }
+    }
+    private val windowExtensionsProviderClass: Class<*>
+        get() {
+            return loader.loadClass(WindowExtensionsConstants.WINDOW_EXTENSIONS_PROVIDER_CLASS)
+        }
+}
\ No newline at end of file
diff --git a/window/window/src/main/java/androidx/window/embedding/SafeActivityEmbeddingComponentProvider.kt b/window/window/src/main/java/androidx/window/embedding/SafeActivityEmbeddingComponentProvider.kt
index 44699d8..92965c3 100644
--- a/window/window/src/main/java/androidx/window/embedding/SafeActivityEmbeddingComponentProvider.kt
+++ b/window/window/src/main/java/androidx/window/embedding/SafeActivityEmbeddingComponentProvider.kt
@@ -17,6 +17,7 @@
 package androidx.window.embedding
 
 import android.app.Activity
+import androidx.annotation.VisibleForTesting
 import androidx.window.core.ConsumerAdapter
 import androidx.window.core.ExtensionsUtil
 import androidx.window.extensions.WindowExtensions
@@ -26,9 +27,8 @@
 import androidx.window.reflection.ReflectionUtils.doesReturn
 import androidx.window.reflection.ReflectionUtils.isPublic
 import androidx.window.reflection.ReflectionUtils.validateReflection
+import androidx.window.SafeWindowExtensionsProvider
 import androidx.window.reflection.WindowExtensionsConstants.ACTIVITY_EMBEDDING_COMPONENT_CLASS
-import androidx.window.reflection.WindowExtensionsConstants.WINDOW_EXTENSIONS_CLASS
-import androidx.window.reflection.WindowExtensionsConstants.WINDOW_EXTENSIONS_PROVIDER_CLASS
 
 /**
  * Reflection Guard for [ActivityEmbeddingComponent].
@@ -40,6 +40,8 @@
     private val consumerAdapter: ConsumerAdapter,
     private val windowExtensions: WindowExtensions
 ) {
+    private val safeWindowExtensionsProvider = SafeWindowExtensionsProvider(loader)
+
     val activityEmbeddingComponent: ActivityEmbeddingComponent?
         get() {
             return if (canUseActivityEmbeddingComponent()) {
@@ -54,7 +56,7 @@
         }
 
     private fun canUseActivityEmbeddingComponent(): Boolean {
-        if (!isWindowExtensionsValid() || !isActivityEmbeddingComponentValid()) {
+        if (!isActivityEmbeddingComponentAccessible()) {
             return false
         }
         // TODO(b/267573854) : update logic to fallback to lower version
@@ -67,6 +69,11 @@
         }
     }
 
+    @VisibleForTesting
+    internal fun isActivityEmbeddingComponentAccessible(): Boolean =
+        safeWindowExtensionsProvider.isWindowExtensionsValid() &&
+            isActivityEmbeddingComponentValid()
+
     /**
      * [WindowExtensions.VENDOR_API_LEVEL_1] includes the following methods:
      *  - [ActivityEmbeddingComponent.setEmbeddingRules]
@@ -78,7 +85,8 @@
      *  - [androidx.window.extensions.embedding.SplitPlaceholderRule]
      *  - [androidx.window.extensions.embedding.SplitInfo]
      */
-    private fun hasValidVendorApiLevel1(): Boolean {
+    @VisibleForTesting
+    internal fun hasValidVendorApiLevel1(): Boolean {
         return isMethodSetEmbeddingRulesValid() &&
             isMethodIsActivityEmbeddedValid() &&
             isMethodSetSplitInfoCallbackJavaConsumerValid()
@@ -93,7 +101,8 @@
      * and following classes: TODO(b/268583307) : add guard function for those classes
      *  - [androidx.window.extensions.embedding.SplitAttributes]
      */
-    private fun hasValidVendorApiLevel2(): Boolean {
+    @VisibleForTesting
+    internal fun hasValidVendorApiLevel2(): Boolean {
         return hasValidVendorApiLevel1() &&
             isMethodSetSplitInfoCallbackWindowConsumerValid() &&
             isMethodClearSplitInfoCallbackValid() &&
@@ -166,20 +175,9 @@
         }
     }
 
-    private fun isWindowExtensionsValid(): Boolean {
-        return validateReflection("WindowExtensionsProvider#getWindowExtensions is not valid") {
-            val providerClass = windowExtensionsProviderClass
-            val getWindowExtensionsMethod = providerClass.getDeclaredMethod("getWindowExtensions")
-            val windowExtensionsClass = windowExtensionsClass
-            getWindowExtensionsMethod.isPublic && getWindowExtensionsMethod.doesReturn(
-                windowExtensionsClass
-            )
-        }
-    }
-
     private fun isActivityEmbeddingComponentValid(): Boolean {
         return validateReflection("WindowExtensions#getActivityEmbeddingComponent is not valid") {
-            val extensionsClass = windowExtensionsClass
+            val extensionsClass = safeWindowExtensionsProvider.windowExtensionsClass
             val getActivityEmbeddingComponentMethod =
                 extensionsClass.getMethod("getActivityEmbeddingComponent")
             val activityEmbeddingComponentClass = activityEmbeddingComponentClass
@@ -188,16 +186,6 @@
         }
     }
 
-    private val windowExtensionsProviderClass: Class<*>
-        get() {
-            return loader.loadClass(WINDOW_EXTENSIONS_PROVIDER_CLASS)
-        }
-
-    private val windowExtensionsClass: Class<*>
-        get() {
-            return loader.loadClass(WINDOW_EXTENSIONS_CLASS)
-        }
-
     private val activityEmbeddingComponentClass: Class<*>
         get() {
             return loader.loadClass(ACTIVITY_EMBEDDING_COMPONENT_CLASS)
diff --git a/window/window/src/main/java/androidx/window/layout/SafeWindowLayoutComponentProvider.kt b/window/window/src/main/java/androidx/window/layout/SafeWindowLayoutComponentProvider.kt
index bc0dac5..b9dcbef 100644
--- a/window/window/src/main/java/androidx/window/layout/SafeWindowLayoutComponentProvider.kt
+++ b/window/window/src/main/java/androidx/window/layout/SafeWindowLayoutComponentProvider.kt
@@ -19,21 +19,20 @@
 import android.app.Activity
 import android.content.Context
 import android.graphics.Rect
+import androidx.annotation.VisibleForTesting
 import androidx.window.core.ConsumerAdapter
 import androidx.window.core.ExtensionsUtil
 import androidx.window.extensions.WindowExtensions
 import androidx.window.extensions.WindowExtensionsProvider
 import androidx.window.extensions.core.util.function.Consumer
 import androidx.window.extensions.layout.WindowLayoutComponent
-import androidx.window.reflection.ReflectionUtils.checkIsPresent
 import androidx.window.reflection.ReflectionUtils.doesReturn
 import androidx.window.reflection.ReflectionUtils.isPublic
 import androidx.window.reflection.ReflectionUtils.validateReflection
+import androidx.window.SafeWindowExtensionsProvider
 import androidx.window.reflection.WindowExtensionsConstants.FOLDING_FEATURE_CLASS
 import androidx.window.reflection.WindowExtensionsConstants.JAVA_CONSUMER
 import androidx.window.reflection.WindowExtensionsConstants.WINDOW_CONSUMER
-import androidx.window.reflection.WindowExtensionsConstants.WINDOW_EXTENSIONS_CLASS
-import androidx.window.reflection.WindowExtensionsConstants.WINDOW_EXTENSIONS_PROVIDER_CLASS
 import androidx.window.reflection.WindowExtensionsConstants.WINDOW_LAYOUT_COMPONENT_CLASS
 
 /**
@@ -45,6 +44,7 @@
     private val loader: ClassLoader,
     private val consumerAdapter: ConsumerAdapter
 ) {
+    private val safeWindowExtensionsProvider = SafeWindowExtensionsProvider(loader)
 
     val windowLayoutComponent: WindowLayoutComponent?
         get() {
@@ -60,10 +60,7 @@
         }
 
     private fun canUseWindowLayoutComponent(): Boolean {
-        if (!isWindowExtensionsPresent() || !isWindowExtensionsValid() ||
-            !isWindowLayoutProviderValid() ||
-            !isFoldingFeatureValid()
-        ) {
+        if (!isWindowLayoutComponentAccessible()) {
             return false
         }
         // TODO(b/267831038): can fallback to VendorApiLevel1 when level2 is not match
@@ -76,11 +73,11 @@
         }
     }
 
-    private fun isWindowExtensionsPresent(): Boolean {
-        return checkIsPresent {
-            loader.loadClass(WINDOW_EXTENSIONS_PROVIDER_CLASS)
-        }
-    }
+    @VisibleForTesting
+    internal fun isWindowLayoutComponentAccessible(): Boolean =
+        safeWindowExtensionsProvider.isWindowExtensionsValid() &&
+            isWindowLayoutProviderValid() &&
+            isFoldingFeatureValid()
 
     /**
      * [WindowExtensions.VENDOR_API_LEVEL_1] includes the following methods
@@ -88,35 +85,24 @@
      * [java.util.function.Consumer]
      *  - [WindowLayoutComponent.removeWindowLayoutInfoListener] with [java.util.function.Consumer]
      */
-    private fun hasValidVendorApiLevel1(): Boolean {
+    @VisibleForTesting
+    internal fun hasValidVendorApiLevel1(): Boolean {
         return isMethodWindowLayoutInfoListenerJavaConsumerValid()
     }
 
     /**
      * [WindowExtensions.VENDOR_API_LEVEL_2] includes the following methods
-     *  - [WindowLayoutComponent.addWindowLayoutInfoListener] with [Context] and
-     * [java.util.function.Consumer]
      *  - [WindowLayoutComponent.addWindowLayoutInfoListener] with [Context] and [Consumer]
      *  - [WindowLayoutComponent.removeWindowLayoutInfoListener] with [Consumer]
      */
-    private fun hasValidVendorApiLevel2(): Boolean {
-        return hasValidVendorApiLevel1() &&
-            isMethodWindowLayoutInfoListenerWindowConsumerValid()
-    }
-
-    private fun isWindowExtensionsValid(): Boolean {
-        return validateReflection("WindowExtensionsProvider#getWindowExtensions is not valid") {
-            val providerClass = windowExtensionsProviderClass
-            val getWindowExtensionsMethod = providerClass.getDeclaredMethod("getWindowExtensions")
-            val windowExtensionsClass = windowExtensionsClass
-            getWindowExtensionsMethod.doesReturn(windowExtensionsClass) &&
-                getWindowExtensionsMethod.isPublic
-        }
+    @VisibleForTesting
+    internal fun hasValidVendorApiLevel2(): Boolean {
+        return hasValidVendorApiLevel1() && isMethodWindowLayoutInfoListenerWindowConsumerValid()
     }
 
     private fun isWindowLayoutProviderValid(): Boolean {
         return validateReflection("WindowExtensions#getWindowLayoutComponent is not valid") {
-            val extensionsClass = windowExtensionsClass
+            val extensionsClass = safeWindowExtensionsProvider.windowExtensionsClass
             val getWindowLayoutComponentMethod =
                 extensionsClass.getMethod("getWindowLayoutComponent")
             val windowLayoutComponentClass = windowLayoutComponentClass
@@ -178,16 +164,6 @@
         }
     }
 
-    private val windowExtensionsProviderClass: Class<*>
-        get() {
-            return loader.loadClass(WINDOW_EXTENSIONS_PROVIDER_CLASS)
-        }
-
-    private val windowExtensionsClass: Class<*>
-        get() {
-            return loader.loadClass(WINDOW_EXTENSIONS_CLASS)
-        }
-
     private val foldingFeatureClass: Class<*>
         get() {
             return loader.loadClass(FOLDING_FEATURE_CLASS)
diff --git a/window/window/src/main/java/androidx/window/layout/WindowInfoTracker.kt b/window/window/src/main/java/androidx/window/layout/WindowInfoTracker.kt
index 8af11e0..7ecff91 100644
--- a/window/window/src/main/java/androidx/window/layout/WindowInfoTracker.kt
+++ b/window/window/src/main/java/androidx/window/layout/WindowInfoTracker.kt
@@ -24,7 +24,6 @@
 import androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP
 import androidx.annotation.UiContext
 import androidx.window.core.ConsumerAdapter
-import androidx.window.core.ExperimentalWindowApi
 import androidx.window.layout.adapter.WindowBackend
 import androidx.window.layout.adapter.extensions.ExtensionWindowLayoutInfoBackend
 import androidx.window.layout.adapter.sidecar.SidecarWindowBackend
@@ -62,9 +61,9 @@
      * @throws NotImplementedError when [Context] is not an [UiContext] or this method has no
      * supporting implementation.
      */
-    @ExperimentalWindowApi
     fun windowLayoutInfo(@UiContext context: Context): Flow<WindowLayoutInfo> {
-        val windowLayoutInfoFlow: Flow<WindowLayoutInfo>? = windowLayoutInfo((context as Activity))
+        val windowLayoutInfoFlow: Flow<WindowLayoutInfo>? = (context as? Activity)
+            ?.let { activity -> windowLayoutInfo(activity) }
         return windowLayoutInfoFlow
             ?: throw NotImplementedError(
                 message = "Must override windowLayoutInfo(context) and provide an implementation.")
diff --git a/window/window/src/main/java/androidx/window/layout/WindowInfoTrackerImpl.kt b/window/window/src/main/java/androidx/window/layout/WindowInfoTrackerImpl.kt
index 2247c4b..26dd99b 100644
--- a/window/window/src/main/java/androidx/window/layout/WindowInfoTrackerImpl.kt
+++ b/window/window/src/main/java/androidx/window/layout/WindowInfoTrackerImpl.kt
@@ -65,8 +65,4 @@
             }
         }
     }
-
-    internal companion object {
-        private const val BUFFER_CAPACITY = 10
-    }
 }
diff --git a/window/window/src/main/java/androidx/window/layout/WindowMetricsCalculator.kt b/window/window/src/main/java/androidx/window/layout/WindowMetricsCalculator.kt
index b0a0b73..8d8151e 100644
--- a/window/window/src/main/java/androidx/window/layout/WindowMetricsCalculator.kt
+++ b/window/window/src/main/java/androidx/window/layout/WindowMetricsCalculator.kt
@@ -26,7 +26,6 @@
 import androidx.annotation.RestrictTo
 import androidx.annotation.UiContext
 import androidx.core.view.WindowInsetsCompat
-import androidx.window.core.ExperimentalWindowApi
 
 /**
  * An interface to calculate the [WindowMetrics] for an [Activity] or a [UiContext].
@@ -131,14 +130,12 @@
             return decorator(WindowMetricsCalculatorCompat)
         }
 
-        @ExperimentalWindowApi
         @JvmStatic
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
         fun overrideDecorator(overridingDecorator: WindowMetricsCalculatorDecorator) {
             decorator = overridingDecorator::decorate
         }
 
-        @ExperimentalWindowApi
         @JvmStatic
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
         fun reset() {
@@ -159,7 +156,6 @@
     }
 }
 
-@ExperimentalWindowApi
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 interface WindowMetricsCalculatorDecorator {