From 612a70ada130e0fefa6d2c12b7d4e1b38cd34e71 Mon Sep 17 00:00:00 2001 From: Gian <47775302+gpunto@users.noreply.github.com> Date: Fri, 29 May 2026 11:57:06 +0200 Subject: [PATCH 1/3] Add Compose composer autocomplete for enhanced mentions --- .../android/compose/pages/MessageListPage.kt | 2 +- .../compose/sample/ui/chats/ChatsActivity.kt | 1 + .../api/stream-chat-android-compose.api | 94 +++++- .../ui/messages/composer/MessageComposer.kt | 59 +++- .../suggestions/MentionSuggestionItem.kt | 278 ++++++++++++++++++ .../suggestions/UserSuggestionItem.kt | 107 ------- .../suggestions/UserSuggestionList.kt | 63 ++-- .../compose/ui/theme/ChatComponentFactory.kt | 125 +++++++- .../ui/theme/ChatComponentFactoryParams.kt | 53 ++++ .../src/main/res/values-es/strings.xml | 3 + .../src/main/res/values-fr/strings.xml | 3 + .../src/main/res/values-hi/strings.xml | 3 + .../src/main/res/values-in/strings.xml | 3 + .../src/main/res/values-it/strings.xml | 3 + .../src/main/res/values-ja/strings.xml | 3 + .../src/main/res/values-ko/strings.xml | 3 + .../src/main/res/values/strings.xml | 3 + ...stTest.kt => MentionSuggestionListTest.kt} | 17 +- .../messages/MessageComposerViewModelTest.kt | 83 +++++- ...estionListTest_mention_suggestion_list.png | Bin 0 -> 140372 bytes ...Test_fixed_style_with_user_suggestions.png | Bin 37363 -> 47742 bytes ...yle_with_user_suggestions_in_dark_mode.png | Bin 21438 -> 26148 bytes ...le_with_user_suggestions_in_light_mode.png | Bin 26366 -> 33041 bytes .../api/stream-chat-android-core.api | 5 + .../android/models/ChannelCapabilities.kt | 15 + .../compose/messages/MessageComposer.kt | 2 +- .../api/stream-chat-android-ui-common.api | 9 +- .../composer/MessageComposerController.kt | 123 +++++--- .../mention/LocalUserLookupHandler.kt | 8 +- .../composer/mention/MentionLookupHandler.kt | 106 +++++++ .../composer/mention/UserLookupHandler.kt | 3 +- .../query/filter/DefaultUserQueryFilter.kt | 39 ++- .../messages/composer/MessageComposerState.kt | 9 + .../drawable/stream_design_ic_megaphone.xml | 30 ++ .../res/drawable/stream_design_ic_role.xml | 29 ++ .../composer/MessageComposerControllerTest.kt | 61 ++++ .../mention/MentionLookupHandlerTest.kt | 167 +++++++++++ .../filter/DefaultUserQueryFilterTest.kt | 159 ++++++---- .../messages/MessageComposerViewModelTest.kt | 17 +- 39 files changed, 1397 insertions(+), 291 deletions(-) create mode 100644 stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/MentionSuggestionItem.kt delete mode 100644 stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/UserSuggestionItem.kt rename stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/{UserSuggestionListTest.kt => MentionSuggestionListTest.kt} (64%) create mode 100644 stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_MentionSuggestionListTest_mention_suggestion_list.png create mode 100644 stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandler.kt create mode 100644 stream-chat-android-ui-common/src/main/res/drawable/stream_design_ic_megaphone.xml create mode 100644 stream-chat-android-ui-common/src/main/res/drawable/stream_design_ic_role.xml create mode 100644 stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandlerTest.kt diff --git a/stream-chat-android-compose-sample/src/androidTestE2eDebug/kotlin/io/getstream/chat/android/compose/pages/MessageListPage.kt b/stream-chat-android-compose-sample/src/androidTestE2eDebug/kotlin/io/getstream/chat/android/compose/pages/MessageListPage.kt index 1a1b1907fd9..c9fd64b9904 100644 --- a/stream-chat-android-compose-sample/src/androidTestE2eDebug/kotlin/io/getstream/chat/android/compose/pages/MessageListPage.kt +++ b/stream-chat-android-compose-sample/src/androidTestE2eDebug/kotlin/io/getstream/chat/android/compose/pages/MessageListPage.kt @@ -68,7 +68,7 @@ open class MessageListPage { val commandsButton get() = By.res("Stream_ComposerCommandsButton") val commandSuggestionList get() = By.res("Stream_CommandSuggestionList") val commandSuggestionListTitle get() = By.res("Stream_CommandSuggestionListTitle") - val userSuggestion get() = By.res("Stream_UserSuggestionItem") + val userSuggestion get() = By.res("Stream_SuggestionItem") val giphyButton get() = By.res("Stream_SuggestionListGiphyButton") val attachmentsButton get() = By.res("Stream_ComposerAttachmentsButton") val quotedMessage get() = By.res("Stream_QuotedMessage") diff --git a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/chats/ChatsActivity.kt b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/chats/ChatsActivity.kt index 3240b08b71e..1edb2622266 100644 --- a/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/chats/ChatsActivity.kt +++ b/stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/chats/ChatsActivity.kt @@ -258,6 +258,7 @@ class ChatsActivity : ComponentActivity() { ChatListContentMode.Channels, ChatListContentMode.Mentions, -> AppBottomBarOption.CHATS + ChatListContentMode.Threads -> AppBottomBarOption.THREADS } AppBottomBar( diff --git a/stream-chat-android-compose/api/stream-chat-android-compose.api b/stream-chat-android-compose/api/stream-chat-android-compose.api index 161f8f73502..ce3d93b083a 100644 --- a/stream-chat-android-compose/api/stream-chat-android-compose.api +++ b/stream-chat-android-compose/api/stream-chat-android-compose.api @@ -2019,13 +2019,13 @@ public final class io/getstream/chat/android/compose/ui/messages/composer/Compos public final fun getLambda$278788378$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; public final fun getLambda$309759556$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; public final fun getLambda$419456890$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; - public final fun getLambda$562871987$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function3; public final fun getLambda$851409439$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda$974985920$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function3; } public final class io/getstream/chat/android/compose/ui/messages/composer/MessageComposerKt { - public static final fun MessageComposer (Lio/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModel;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function1;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Lkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;III)V - public static final fun MessageComposer (Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Lkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;III)V + public static final fun MessageComposer (Lio/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModel;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function1;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;III)V + public static final fun MessageComposer (Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;III)V } public final class io/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions { @@ -2142,10 +2142,16 @@ public final class io/getstream/chat/android/compose/ui/messages/composer/intern public final fun getLambda$1347000119$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; } +public final class io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/ComposableSingletons$MentionSuggestionItemKt { + public static final field INSTANCE Lio/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/ComposableSingletons$MentionSuggestionItemKt; + public fun ()V + public final fun getLambda$1112457019$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; +} + public final class io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/ComposableSingletons$UserSuggestionListKt { public static final field INSTANCE Lio/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/ComposableSingletons$UserSuggestionListKt; public fun ()V - public final fun getLambda$-2039880804$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda$1850153692$stream_chat_android_compose_release ()Lkotlin/jvm/functions/Function2; } public final class io/getstream/chat/android/compose/ui/messages/header/ChannelHeaderKt { @@ -3531,6 +3537,10 @@ public abstract interface class io/getstream/chat/android/compose/ui/theme/ChatC public fun MessageComposerSaveButton (Lio/getstream/chat/android/compose/ui/theme/MessageComposerSaveButtonParams;Landroidx/compose/runtime/Composer;I)V public fun MessageComposerSendButton (Lio/getstream/chat/android/compose/ui/theme/MessageComposerSendButtonParams;Landroidx/compose/runtime/Composer;I)V public fun MessageComposerSnackbar (Lio/getstream/chat/android/compose/ui/theme/MessageComposerSnackbarParams;Landroidx/compose/runtime/Composer;I)V + public fun MessageComposerSuggestionItem (Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemParams;Landroidx/compose/runtime/Composer;I)V + public fun MessageComposerSuggestionItemCenterContent (Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemCenterContentParams;Landroidx/compose/runtime/Composer;I)V + public fun MessageComposerSuggestionItemLeadingContent (Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemLeadingContentParams;Landroidx/compose/runtime/Composer;I)V + public fun MessageComposerSuggestionItemTrailingContent (Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemTrailingContentParams;Landroidx/compose/runtime/Composer;I)V public fun MessageComposerTrailingContent (Lio/getstream/chat/android/compose/ui/theme/MessageComposerTrailingContentParams;Landroidx/compose/runtime/Composer;I)V public fun MessageComposerUserSuggestionItem (Lio/getstream/chat/android/compose/ui/theme/MessageComposerUserSuggestionItemParams;Landroidx/compose/runtime/Composer;I)V public fun MessageComposerUserSuggestionItemCenterContent (Lio/getstream/chat/android/compose/ui/theme/MessageComposerUserSuggestionItemCenterContentParams;Landroidx/compose/runtime/Composer;I)V @@ -3723,6 +3733,10 @@ public final class io/getstream/chat/android/compose/ui/theme/ChatComponentFacto public static fun MessageComposerSaveButton (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/compose/ui/theme/MessageComposerSaveButtonParams;Landroidx/compose/runtime/Composer;I)V public static fun MessageComposerSendButton (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/compose/ui/theme/MessageComposerSendButtonParams;Landroidx/compose/runtime/Composer;I)V public static fun MessageComposerSnackbar (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/compose/ui/theme/MessageComposerSnackbarParams;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerSuggestionItem (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemParams;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerSuggestionItemCenterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemCenterContentParams;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerSuggestionItemLeadingContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemLeadingContentParams;Landroidx/compose/runtime/Composer;I)V + public static fun MessageComposerSuggestionItemTrailingContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemTrailingContentParams;Landroidx/compose/runtime/Composer;I)V public static fun MessageComposerTrailingContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/compose/ui/theme/MessageComposerTrailingContentParams;Landroidx/compose/runtime/Composer;I)V public static fun MessageComposerUserSuggestionItem (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/compose/ui/theme/MessageComposerUserSuggestionItemParams;Landroidx/compose/runtime/Composer;I)V public static fun MessageComposerUserSuggestionItemCenterContent (Lio/getstream/chat/android/compose/ui/theme/ChatComponentFactory;Lio/getstream/chat/android/compose/ui/theme/MessageComposerUserSuggestionItemCenterContentParams;Landroidx/compose/runtime/Composer;I)V @@ -4849,8 +4863,8 @@ public final class io/getstream/chat/android/compose/ui/theme/MessageComposerLin public final class io/getstream/chat/android/compose/ui/theme/MessageComposerParams { public static final field $stable I - public fun (Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V - public synthetic fun (Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)V + public synthetic fun (Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState; public final fun component10 ()Lkotlin/jvm/functions/Function1; public final fun component11 ()Lkotlin/jvm/functions/Function1; @@ -4863,6 +4877,7 @@ public final class io/getstream/chat/android/compose/ui/theme/MessageComposerPar public final fun component18 ()Lkotlin/jvm/functions/Function1; public final fun component19 ()Lkotlin/jvm/functions/Function0; public final fun component2 ()Lkotlin/jvm/functions/Function4; + public final fun component20 ()Lkotlin/jvm/functions/Function1; public final fun component3 ()Landroidx/compose/ui/Modifier; public final fun component4 ()Z public final fun component5 ()Lkotlin/jvm/functions/Function2; @@ -4870,8 +4885,8 @@ public final class io/getstream/chat/android/compose/ui/theme/MessageComposerPar public final fun component7 ()Ljava/lang/String; public final fun component8 ()Lkotlin/jvm/functions/Function0; public final fun component9 ()Ljava/lang/String; - public final fun copy (Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)Lio/getstream/chat/android/compose/ui/theme/MessageComposerParams; - public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/MessageComposerParams;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/MessageComposerParams; + public final fun copy (Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)Lio/getstream/chat/android/compose/ui/theme/MessageComposerParams; + public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/MessageComposerParams;Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lio/getstream/chat/android/compose/ui/messages/composer/actions/AudioRecordingActions;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/MessageComposerParams; public fun equals (Ljava/lang/Object;)Z public final fun getAttachmentsActionLabel ()Ljava/lang/String; public final fun getInput ()Lkotlin/jvm/functions/Function4; @@ -4885,6 +4900,7 @@ public final class io/getstream/chat/android/compose/ui/theme/MessageComposerPar public final fun getOnCancelLinkPreviewClick ()Lkotlin/jvm/functions/Function0; public final fun getOnCommandSelected ()Lkotlin/jvm/functions/Function1; public final fun getOnLinkPreviewClick ()Lkotlin/jvm/functions/Function1; + public final fun getOnMentionSelected ()Lkotlin/jvm/functions/Function1; public final fun getOnSendMessage ()Lkotlin/jvm/functions/Function2; public final fun getOnUserSelected ()Lkotlin/jvm/functions/Function1; public final fun getOnValueChange ()Lkotlin/jvm/functions/Function1; @@ -4959,6 +4975,68 @@ public final class io/getstream/chat/android/compose/ui/theme/MessageComposerSna public fun toString ()Ljava/lang/String; } +public final class io/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemCenterContentParams { + public static final field $stable I + public fun (Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Landroidx/compose/ui/Modifier;)V + public synthetic fun (Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Landroidx/compose/ui/Modifier;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention; + public final fun component2 ()Landroidx/compose/ui/Modifier; + public final fun copy (Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Landroidx/compose/ui/Modifier;)Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemCenterContentParams; + public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemCenterContentParams;Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Landroidx/compose/ui/Modifier;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemCenterContentParams; + public fun equals (Ljava/lang/Object;)Z + public final fun getMention ()Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention; + public final fun getModifier ()Landroidx/compose/ui/Modifier; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class io/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemLeadingContentParams { + public static final field $stable I + public fun (Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Landroidx/compose/ui/Modifier;)V + public synthetic fun (Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Landroidx/compose/ui/Modifier;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention; + public final fun component2 ()Landroidx/compose/ui/Modifier; + public final fun copy (Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Landroidx/compose/ui/Modifier;)Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemLeadingContentParams; + public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemLeadingContentParams;Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Landroidx/compose/ui/Modifier;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemLeadingContentParams; + public fun equals (Ljava/lang/Object;)Z + public final fun getMention ()Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention; + public final fun getModifier ()Landroidx/compose/ui/Modifier; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class io/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemParams { + public static final field $stable I + public fun (Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Lkotlin/jvm/functions/Function1;Lio/getstream/chat/android/models/User;)V + public synthetic fun (Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Lkotlin/jvm/functions/Function1;Lio/getstream/chat/android/models/User;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention; + public final fun component2 ()Lkotlin/jvm/functions/Function1; + public final fun component3 ()Lio/getstream/chat/android/models/User; + public final fun copy (Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Lkotlin/jvm/functions/Function1;Lio/getstream/chat/android/models/User;)Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemParams; + public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemParams;Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Lkotlin/jvm/functions/Function1;Lio/getstream/chat/android/models/User;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemParams; + public fun equals (Ljava/lang/Object;)Z + public final fun getCurrentUser ()Lio/getstream/chat/android/models/User; + public final fun getMention ()Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention; + public final fun getOnMentionSelected ()Lkotlin/jvm/functions/Function1; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class io/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemTrailingContentParams { + public static final field $stable I + public fun (Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Landroidx/compose/ui/Modifier;)V + public synthetic fun (Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Landroidx/compose/ui/Modifier;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention; + public final fun component2 ()Landroidx/compose/ui/Modifier; + public final fun copy (Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Landroidx/compose/ui/Modifier;)Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemTrailingContentParams; + public static synthetic fun copy$default (Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemTrailingContentParams;Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention;Landroidx/compose/ui/Modifier;ILjava/lang/Object;)Lio/getstream/chat/android/compose/ui/theme/MessageComposerSuggestionItemTrailingContentParams; + public fun equals (Ljava/lang/Object;)Z + public final fun getMention ()Lio/getstream/chat/android/ui/common/feature/messages/composer/mention/Mention; + public final fun getModifier ()Landroidx/compose/ui/Modifier; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + public final class io/getstream/chat/android/compose/ui/theme/MessageComposerTrailingContentParams { public static final field $stable I public fun (Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;)V diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/MessageComposer.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/MessageComposer.kt index 126a65d9f9e..789cfc3b88f 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/MessageComposer.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/MessageComposer.kt @@ -49,8 +49,8 @@ import io.getstream.chat.android.compose.R import io.getstream.chat.android.compose.ui.components.composer.MessageInput import io.getstream.chat.android.compose.ui.messages.composer.actions.AudioRecordingActions import io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.CommandSuggestionList +import io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.MentionSuggestionList import io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.SuggestionsMenu -import io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.UserSuggestionList import io.getstream.chat.android.compose.ui.theme.ChatTheme import io.getstream.chat.android.compose.ui.theme.ComposerConfig import io.getstream.chat.android.compose.ui.theme.LocalChatUiConfig @@ -73,6 +73,7 @@ import io.getstream.chat.android.models.Message import io.getstream.chat.android.models.User import io.getstream.chat.android.previewdata.PreviewCommandData import io.getstream.chat.android.previewdata.PreviewUserData +import io.getstream.chat.android.ui.common.feature.messages.composer.mention.Mention import io.getstream.chat.android.ui.common.state.messages.Edit import io.getstream.chat.android.ui.common.state.messages.Reply import io.getstream.chat.android.ui.common.state.messages.composer.MessageComposerState @@ -99,7 +100,9 @@ import io.getstream.chat.android.ui.common.utils.MediaStringUtil * @param onCancelAction Handler for the cancel button on Message actions, such as Edit and Reply. * @param onLinkPreviewClick Handler when the user taps on a link preview. * @param onCancelLinkPreviewClick Handler when the user taps on the cancel link preview. - * @param onUserSelected Handler when the user taps on a user suggestion item. + * @param onUserSelected Legacy handler that fires only when the user taps a user suggestion item. + * Kept for backward compatibility; new callers should use [onMentionSelected], which receives every + * mention type including users. * @param onCommandSelected Handler for every tap on a command suggestion item, including taps on * disabled items. The default emits [MessageComposerViewEvent.CommandUnavailable] on * [MessageComposerViewModel.events] when the command is not available for the current action; @@ -107,6 +110,8 @@ import io.getstream.chat.android.ui.common.utils.MediaStringUtil * @param onAlsoSendToChannelChange Handler when the "Also send to channel" checkbox is changed. * @param onActiveCommandDismiss Called when the user taps the dismiss button on the active command chip. * @param recordingActions The actions that can be performed on an audio recording. + * @param onMentionSelected Handler when the user taps any mention suggestion item. This is the + * canonical callback for all mention selections. * @param input Customizable composable that represents the input field for the composer, [MessageInput] by default. */ @Composable @@ -124,7 +129,7 @@ public fun MessageComposer( onCancelAction: () -> Unit = { viewModel.dismissMessageActions() }, onLinkPreviewClick: ((LinkPreview) -> Unit)? = null, onCancelLinkPreviewClick: (() -> Unit)? = { viewModel.cancelLinkPreview() }, - onUserSelected: (User) -> Unit = { viewModel.selectMention(it) }, + onUserSelected: (User) -> Unit = {}, onCommandSelected: (Command) -> Unit = viewModel::selectCommand, onAlsoSendToChannelChange: (Boolean) -> Unit = viewModel::setAlsoSendToChannel, onActiveCommandDismiss: () -> Unit = viewModel::clearActiveCommand, @@ -132,6 +137,7 @@ public fun MessageComposer( viewModel = viewModel, sendOnComplete = ChatTheme.config.composer.audioRecordingSendOnComplete, ), + onMentionSelected: (Mention) -> Unit = viewModel::selectMention, input: @Composable RowScope.(MessageComposerState) -> Unit = { state -> val inputFocusRequester = remember { FocusRequester() } LaunchedEffect(Unit) { @@ -189,6 +195,7 @@ public fun MessageComposer( onSendMessage(messageWithData) }, onUserSelected = onUserSelected, + onMentionSelected = onMentionSelected, onCommandSelected = onCommandSelected, onAlsoSendToChannelSelected = onAlsoSendToChannelChange, onActiveCommandDismiss = onActiveCommandDismiss, @@ -235,9 +242,14 @@ internal val LocalMessageComposerSnackbarHostState = * @param onCancelAction Handler for the cancel button on Message actions, such as Edit and Reply. * @param onLinkPreviewClick Handler when the user taps on a link preview. * @param onCancelLinkPreviewClick Handler when the user taps on the cancel link preview. - * @param onUserSelected Handler when the user taps on a user suggestion item. + * @param onUserSelected Legacy handler that fires only when the user taps a user suggestion item. + * Kept for backward compatibility; new callers should use [onMentionSelected], which receives every + * mention type including users. * @param onCommandSelected Handler when the user taps on a command suggestion item, including taps * on disabled items. + * @param onMentionSelected Handler when the user taps any mention suggestion item. Canonical + * callback for all mention selections. Must be wired when any non-user mention kind is enabled — + * otherwise non-user mentions silently no-op on tap. * @param onAlsoSendToChannelChange Handler when the "Also send to channel" checkbox is changed. * @param onActiveCommandDismiss Called when the user taps the dismiss button on the active command chip. * @param recordingActions The actions that can be performed on an audio recording. @@ -264,6 +276,7 @@ public fun MessageComposer( onAlsoSendToChannelChange: (Boolean) -> Unit = {}, onActiveCommandDismiss: () -> Unit = {}, recordingActions: AudioRecordingActions = AudioRecordingActions.None, + onMentionSelected: (Mention) -> Unit = {}, input: @Composable RowScope.(MessageComposerState) -> Unit = { state -> ChatTheme.componentFactory.MessageComposerInput( params = MessageComposerInputParams( @@ -285,7 +298,13 @@ public fun MessageComposer( }, ) { val validationErrors = messageComposerState.validationErrors - val userSuggestions = messageComposerState.mentionSuggestions + // Prefer the list with all mentions but fall back to the legacy user-only field for + // callers that construct MessageComposerState directly without going through the controller. + val suggestedMentions = messageComposerState.suggestedMentions + val legacyMentionSuggestions = messageComposerState.mentionSuggestions + val mentionSuggestions = remember(suggestedMentions, legacyMentionSuggestions) { + suggestedMentions.ifEmpty { legacyMentionSuggestions.map(Mention::User) } + } val commandSuggestions = messageComposerState.commandSuggestions val snackbarHostState = LocalMessageComposerSnackbarHostState.current ?: remember { SnackbarHostState() } @@ -295,12 +314,13 @@ public fun MessageComposer( ) MessageComposerSurface(modifier = modifier) { - if (userSuggestions.isNotEmpty()) { - SuggestionsMenu(contentMaxHeight = UserSuggestionsMaxHeight) { - UserSuggestionList( - users = userSuggestions, + if (mentionSuggestions.isNotEmpty()) { + SuggestionsMenu(contentMaxHeight = MentionSuggestionsMaxHeight) { + MentionSuggestionList( + mentions = mentionSuggestions, currentUser = messageComposerState.currentUser, onUserSelected = onUserSelected, + onMentionSelected = onMentionSelected, ) } } @@ -358,7 +378,7 @@ public fun MessageComposer( } } -private val UserSuggestionsMaxHeight = 176.dp +private val MentionSuggestionsMaxHeight = 176.dp private val CommandSuggestionsMaxHeight = 208.dp @StringRes @@ -368,11 +388,13 @@ private fun MessageComposerViewEvent.messageResOrNull(): Int? = when (this) { is Reply -> R.string.stream_compose_message_composer_command_unavailable_in_reply else -> null } + is MessageComposerViewEvent.CancelCommandRequired -> when (action) { is Edit -> R.string.stream_compose_message_composer_cancel_command_to_edit is Reply -> R.string.stream_compose_message_composer_cancel_command_to_reply else -> null } + else -> null } @@ -380,6 +402,7 @@ private fun MessageComposerViewEvent.snackbarVariant(): StreamSnackbarVariant = is MessageComposerViewEvent.CommandUnavailable, is MessageComposerViewEvent.CancelCommandRequired, -> StreamSnackbarVariant.Error + else -> StreamSnackbarVariant.Default } @@ -516,6 +539,14 @@ internal fun MessageComposerFixedStyleWithUserSuggestions() { PreviewUserData.user1, PreviewUserData.user5, ), + suggestedMentions = listOf( + Mention.Channel, + Mention.Here, + Mention.User(PreviewUserData.userWithOnlineStatus), + Mention.User(PreviewUserData.user1), + Mention.User(PreviewUserData.user5), + Mention.Role("admin"), + ), ), onSendMessage = { _, _ -> }, ) @@ -622,6 +653,14 @@ internal fun MessageComposerFloatingStyleWithUserSuggestions() { PreviewUserData.user1, PreviewUserData.user5, ), + suggestedMentions = listOf( + Mention.Channel, + Mention.Here, + Mention.User(PreviewUserData.userWithOnlineStatus), + Mention.User(PreviewUserData.user1), + Mention.User(PreviewUserData.user5), + Mention.Role("admin"), + ), ), onSendMessage = { _, _ -> }, ) diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/MentionSuggestionItem.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/MentionSuggestionItem.kt new file mode 100644 index 00000000000..ec3e7143097 --- /dev/null +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/MentionSuggestionItem.kt @@ -0,0 +1,278 @@ +/* + * Copyright (c) 2014-2026 Stream.io Inc. All rights reserved. + * + * Licensed under the Stream License; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://github.com/GetStream/stream-chat-android/blob/main/LICENSE + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions + +import androidx.annotation.DrawableRes +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.material3.minimumInteractiveComponentSize +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import io.getstream.chat.android.compose.R +import io.getstream.chat.android.compose.ui.components.avatar.AvatarSize +import io.getstream.chat.android.compose.ui.theme.ChatTheme +import io.getstream.chat.android.compose.ui.theme.MessageComposerSuggestionItemCenterContentParams +import io.getstream.chat.android.compose.ui.theme.MessageComposerSuggestionItemLeadingContentParams +import io.getstream.chat.android.compose.ui.theme.MessageComposerSuggestionItemTrailingContentParams +import io.getstream.chat.android.compose.ui.theme.MessageComposerUserSuggestionItemCenterContentParams +import io.getstream.chat.android.compose.ui.theme.MessageComposerUserSuggestionItemLeadingContentParams +import io.getstream.chat.android.compose.ui.theme.MessageComposerUserSuggestionItemTrailingContentParams +import io.getstream.chat.android.compose.ui.theme.StreamTokens +import io.getstream.chat.android.compose.ui.theme.UserAvatarParams +import io.getstream.chat.android.compose.ui.util.clickable +import io.getstream.chat.android.models.User +import io.getstream.chat.android.ui.common.feature.messages.composer.mention.Mention +import io.getstream.chat.android.ui.common.R as UiCommonR + +/** + * Default impl of [io.getstream.chat.android.compose.ui.theme.ChatComponentFactory.MessageComposerUserSuggestionItem]. + * Wires user-specific factory slots into [SuggestionItemRow]. + */ +@Composable +@Suppress("DEPRECATION") +internal fun UserSuggestionItem( + user: User, + currentUser: User?, + onUserSelected: (User) -> Unit, + modifier: Modifier = Modifier, +) { + SuggestionItemRow( + modifier = modifier, + onClick = { onUserSelected(user) }, + leadingContent = { + ChatTheme.componentFactory.MessageComposerUserSuggestionItemLeadingContent( + params = MessageComposerUserSuggestionItemLeadingContentParams( + user = user, + currentUser = currentUser, + ), + ) + }, + centerContent = { + ChatTheme.componentFactory.MessageComposerUserSuggestionItemCenterContent( + params = MessageComposerUserSuggestionItemCenterContentParams( + modifier = Modifier.weight(1f), + user = user, + ), + ) + }, + trailingContent = { + ChatTheme.componentFactory.MessageComposerUserSuggestionItemTrailingContent( + params = MessageComposerUserSuggestionItemTrailingContentParams( + user = user, + ), + ) + }, + ) +} + +/** + * Default impl of [io.getstream.chat.android.compose.ui.theme.ChatComponentFactory.MessageComposerSuggestionItem]. + * Wires mention-specific factory slots into [SuggestionItemRow]. + */ +@Composable +internal fun MentionSuggestionItem( + mention: Mention, + onMentionSelected: (Mention) -> Unit, + modifier: Modifier = Modifier, +) { + SuggestionItemRow( + modifier = modifier, + onClick = { onMentionSelected(mention) }, + leadingContent = { + ChatTheme.componentFactory.MessageComposerSuggestionItemLeadingContent( + params = MessageComposerSuggestionItemLeadingContentParams( + mention = mention, + ), + ) + }, + centerContent = { + ChatTheme.componentFactory.MessageComposerSuggestionItemCenterContent( + params = MessageComposerSuggestionItemCenterContentParams( + modifier = Modifier.weight(1f), + mention = mention, + ), + ) + }, + trailingContent = { + ChatTheme.componentFactory.MessageComposerSuggestionItemTrailingContent( + params = MessageComposerSuggestionItemTrailingContentParams( + mention = mention, + ), + ) + }, + ) +} + +@Composable +internal fun SuggestionItemRow( + onClick: () -> Unit, + leadingContent: @Composable () -> Unit, + centerContent: @Composable RowScope.() -> Unit, + modifier: Modifier = Modifier, + trailingContent: @Composable () -> Unit = {}, +) { + Row( + modifier = modifier + .fillMaxWidth() + .minimumInteractiveComponentSize() + .clickable { onClick() } + .padding( + vertical = StreamTokens.spacingXs, + horizontal = StreamTokens.spacingSm, + ) + .testTag("Stream_SuggestionItem"), + verticalAlignment = Alignment.CenterVertically, + ) { + leadingContent() + centerContent() + trailingContent() + } +} + +@Composable +internal fun DefaultMentionSuggestionItemLeadingContent( + mention: Mention, + modifier: Modifier = Modifier, +) { + when (mention) { + is Mention.User -> ChatTheme.componentFactory.UserAvatar( + params = UserAvatarParams( + modifier = modifier.size(AvatarSize.Medium), + user = mention.user, + showIndicator = false, + showBorder = true, + ), + ) + Mention.Channel, Mention.Here -> MentionIconAvatar( + modifier = modifier, + iconRes = UiCommonR.drawable.stream_design_ic_megaphone, + ) + is Mention.Role -> MentionIconAvatar( + modifier = modifier, + iconRes = UiCommonR.drawable.stream_design_ic_role, + ) + is Mention.Group -> MentionIconAvatar( + modifier = modifier, + iconRes = R.drawable.stream_design_ic_users, + ) + else -> Spacer(Modifier.size(AvatarSize.Medium)) + } +} + +@Composable +internal fun DefaultMentionSuggestionItemCenterContent( + modifier: Modifier, + mention: Mention, +) { + if (mention is Mention.User) { + Text( + modifier = modifier.padding(start = StreamTokens.spacingSm), + text = mention.user.name, + style = ChatTheme.typography.bodyDefault, + color = ChatTheme.colors.textPrimary, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + return + } + Column( + modifier = modifier.padding(start = StreamTokens.spacingSm), + verticalArrangement = Arrangement.spacedBy(StreamTokens.spacing3xs), + ) { + Text( + text = "@${mention.display}", + style = ChatTheme.typography.bodyDefault, + color = ChatTheme.colors.textPrimary, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + mentionSubtitle(mention)?.let { subtitle -> + Text( + text = subtitle, + style = ChatTheme.typography.metadataDefault, + color = ChatTheme.colors.textTertiary, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + } + } +} + +/** + * Wraps a 16dp icon in the circular surface-subtle "avatar" treatment used for non-user mention + * suggestions, sized to match [AvatarSize.Medium] so the popup row aligns with user mentions. + */ +@Composable +private fun MentionIconAvatar( + @DrawableRes iconRes: Int, + modifier: Modifier = Modifier, +) { + Box( + modifier = modifier + .size(AvatarSize.Medium) + .clip(CircleShape) + .background(ChatTheme.colors.backgroundCoreSurfaceSubtle) + .border(width = 1.dp, color = ChatTheme.colors.borderCoreSubtle, shape = CircleShape), + contentAlignment = Alignment.Center, + ) { + Icon( + modifier = Modifier.size(16.dp), + painter = painterResource(id = iconRes), + contentDescription = null, + tint = ChatTheme.colors.textPrimary, + ) + } +} + +@Composable +private fun mentionSubtitle(mention: Mention): String? = when (mention) { + Mention.Channel -> stringResource( + id = R.string.stream_compose_message_composer_mention_suggestion_channel_subtitle, + ) + + Mention.Here -> stringResource( + id = R.string.stream_compose_message_composer_mention_suggestion_here_subtitle, + ) + + is Mention.Role -> stringResource( + id = R.string.stream_compose_message_composer_mention_suggestion_role_subtitle, + mention.role, + ) + + is Mention.Group -> mention.group.description?.takeIf { it.isNotBlank() } + + else -> null +} diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/UserSuggestionItem.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/UserSuggestionItem.kt deleted file mode 100644 index a25e0e4c1d5..00000000000 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/UserSuggestionItem.kt +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) 2014-2026 Stream.io Inc. All rights reserved. - * - * Licensed under the Stream License; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://github.com/GetStream/stream-chat-android/blob/main/LICENSE - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT 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 io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions - -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.material3.Text -import androidx.compose.material3.minimumInteractiveComponentSize -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.testTag -import androidx.compose.ui.text.style.TextOverflow -import io.getstream.chat.android.compose.ui.components.avatar.AvatarSize -import io.getstream.chat.android.compose.ui.theme.ChatTheme -import io.getstream.chat.android.compose.ui.theme.MessageComposerUserSuggestionItemCenterContentParams -import io.getstream.chat.android.compose.ui.theme.MessageComposerUserSuggestionItemLeadingContentParams -import io.getstream.chat.android.compose.ui.theme.MessageComposerUserSuggestionItemTrailingContentParams -import io.getstream.chat.android.compose.ui.theme.StreamTokens -import io.getstream.chat.android.compose.ui.theme.UserAvatarParams -import io.getstream.chat.android.compose.ui.util.clickable -import io.getstream.chat.android.models.User - -@Composable -internal fun UserSuggestionItem( - user: User, - currentUser: User?, - onUserSelected: (User) -> Unit, - modifier: Modifier = Modifier, -) { - Row( - modifier = modifier - .fillMaxWidth() - .minimumInteractiveComponentSize() - .clickable { onUserSelected(user) } - .padding( - vertical = StreamTokens.spacingXs, - horizontal = StreamTokens.spacingSm, - ) - .testTag("Stream_UserSuggestionItem"), - verticalAlignment = Alignment.CenterVertically, - ) { - ChatTheme.componentFactory.MessageComposerUserSuggestionItemLeadingContent( - params = MessageComposerUserSuggestionItemLeadingContentParams( - user = user, - currentUser = currentUser, - ), - ) - ChatTheme.componentFactory.MessageComposerUserSuggestionItemCenterContent( - params = MessageComposerUserSuggestionItemCenterContentParams( - modifier = Modifier.weight(1f), - user = user, - ), - ) - ChatTheme.componentFactory.MessageComposerUserSuggestionItemTrailingContent( - params = MessageComposerUserSuggestionItemTrailingContentParams( - user = user, - ), - ) - } -} - -@Composable -internal fun DefaultUserSuggestionItemLeadingContent( - user: User, - modifier: Modifier = Modifier, -) { - ChatTheme.componentFactory.UserAvatar( - params = UserAvatarParams( - modifier = modifier.size(AvatarSize.Medium), - user = user, - showIndicator = false, - showBorder = true, - ), - ) -} - -@Composable -internal fun DefaultUserSuggestionItemCenterContent( - modifier: Modifier, - user: User, -) { - Text( - modifier = modifier.padding(start = StreamTokens.spacingSm), - text = user.name, - style = ChatTheme.typography.bodyDefault, - color = ChatTheme.colors.textPrimary, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - ) -} diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/UserSuggestionList.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/UserSuggestionList.kt index 95327c0dd94..91f8df8a1d0 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/UserSuggestionList.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/UserSuggestionList.kt @@ -19,60 +19,71 @@ package io.getstream.chat.android.compose.ui.messages.composer.internal.suggesti import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.compose.ui.tooling.preview.Preview import io.getstream.chat.android.compose.ui.theme.ChatPreviewTheme import io.getstream.chat.android.compose.ui.theme.ChatTheme -import io.getstream.chat.android.compose.ui.theme.MessageComposerUserSuggestionItemParams +import io.getstream.chat.android.compose.ui.theme.MessageComposerSuggestionItemParams import io.getstream.chat.android.compose.ui.theme.StreamTokens import io.getstream.chat.android.models.User import io.getstream.chat.android.previewdata.PreviewUserData +import io.getstream.chat.android.ui.common.feature.messages.composer.mention.Mention @Composable -internal fun UserSuggestionList( - users: List, +internal fun MentionSuggestionList( + mentions: List, currentUser: User? = null, onUserSelected: (User) -> Unit = {}, + onMentionSelected: (Mention) -> Unit = {}, ) { LazyColumn( modifier = Modifier .fillMaxWidth() - .testTag("Stream_UserSuggestionList"), + .testTag("Stream_MentionSuggestionList"), contentPadding = PaddingValues(vertical = StreamTokens.spacingXs), ) { - items( - items = users, - key = User::id, - ) { user -> - ChatTheme.componentFactory.MessageComposerUserSuggestionItem( - params = MessageComposerUserSuggestionItemParams( - user = user, + itemsIndexed( + items = mentions, + key = ::mentionKey, + ) { _, mention -> + ChatTheme.componentFactory.MessageComposerSuggestionItem( + params = MessageComposerSuggestionItemParams( + mention = mention, currentUser = currentUser, - onUserSelected = onUserSelected, + onMentionSelected = { selected -> + if (selected is Mention.User) onUserSelected(selected.user) + onMentionSelected(selected) + }, ), ) } } } +private fun mentionKey(index: Int, mention: Mention): String = when (mention) { + is Mention.User -> "user:${mention.user.id}" + is Mention.Channel -> "channel" + is Mention.Here -> "here" + is Mention.Role -> "role:${mention.role}" + is Mention.Group -> "group:${mention.group.id}" + else -> "custom:${mention.type.value}:$index" +} + @Composable @Preview(showBackground = true) -private fun MemberSuggestionListPreview() { +private fun MentionSuggestionListPreview() { ChatPreviewTheme { - UserSuggestionList() + MentionSuggestionList( + mentions = listOf( + Mention.Channel, + Mention.Here, + Mention.User(PreviewUserData.user1), + Mention.User(PreviewUserData.user2), + Mention.Role("admin"), + ), + ) } } - -@Composable -internal fun UserSuggestionList() { - UserSuggestionList( - users = listOf( - PreviewUserData.user1, - PreviewUserData.user2, - PreviewUserData.user3, - ), - ) -} diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactory.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactory.kt index 65879b6f0a4..8fc033c0ed5 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactory.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactory.kt @@ -130,8 +130,9 @@ import io.getstream.chat.android.compose.ui.messages.composer.internal.attachmen import io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.CommandSuggestionItem import io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.DefaultCommandSuggestionItemCenterContent import io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.DefaultCommandSuggestionItemLeadingContent -import io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.DefaultUserSuggestionItemCenterContent -import io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.DefaultUserSuggestionItemLeadingContent +import io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.DefaultMentionSuggestionItemCenterContent +import io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.DefaultMentionSuggestionItemLeadingContent +import io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.MentionSuggestionItem import io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.UserSuggestionItem import io.getstream.chat.android.compose.ui.messages.header.DefaultChannelHeaderCenterContent import io.getstream.chat.android.compose.ui.messages.header.DefaultChannelHeaderLeadingContent @@ -170,6 +171,7 @@ import io.getstream.chat.android.compose.viewmodel.messages.AudioPlayerViewModel import io.getstream.chat.android.models.ConnectionState import io.getstream.chat.android.models.Message import io.getstream.chat.android.models.Reaction +import io.getstream.chat.android.ui.common.feature.messages.composer.mention.Mention import io.getstream.chat.android.ui.common.state.messages.MessageMode import io.getstream.chat.android.ui.common.state.messages.React import io.getstream.chat.android.ui.common.state.messages.composer.RecordingState @@ -1265,6 +1267,7 @@ public interface ChatComponentFactory { onLinkPreviewClick = params.onLinkPreviewClick, onCancelLinkPreviewClick = params.onCancelLinkPreviewClick, onUserSelected = params.onUserSelected, + onMentionSelected = params.onMentionSelected, onCommandSelected = params.onCommandSelected, onAlsoSendToChannelChange = params.onAlsoSendToChannelSelected, onActiveCommandDismiss = params.onActiveCommandDismiss, @@ -1299,10 +1302,13 @@ public interface ChatComponentFactory { /** * The default user suggestion item of the message composer. * - * Used in [io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions.UserSuggestionList]. - * * @param params Parameters for this component. */ + @Deprecated( + message = "Override MessageComposerSuggestionItem, which handles every Mention type, not only user mentions.", + replaceWith = ReplaceWith("MessageComposerSuggestionItem"), + level = DeprecationLevel.WARNING, + ) @Composable public fun MessageComposerUserSuggestionItem(params: MessageComposerUserSuggestionItemParams) { UserSuggestionItem( @@ -1312,6 +1318,80 @@ public interface ChatComponentFactory { ) } + /** + * The default suggestion item of the message composer. Handles every [Mention] type. User + * mentions delegate to [MessageComposerUserSuggestionItem] for backward compatibility. + * + * @param params Parameters for this component. + */ + @Suppress("DEPRECATION") + @Composable + public fun MessageComposerSuggestionItem(params: MessageComposerSuggestionItemParams) { + when (val mention = params.mention) { + is Mention.User -> MessageComposerUserSuggestionItem( + params = MessageComposerUserSuggestionItemParams( + user = mention.user, + currentUser = params.currentUser, + onUserSelected = { params.onMentionSelected(mention) }, + ), + ) + + else -> MentionSuggestionItem( + mention = mention, + onMentionSelected = params.onMentionSelected, + ) + } + } + + /** + * The default leading content for a non-user [Mention] suggestion item. Renders a placeholder + * icon; override to swap in mention-type-specific drawables. + * + * Used as part of [MessageComposerSuggestionItem]. + * + * @param params Parameters for this component. + */ + @Composable + public fun MessageComposerSuggestionItemLeadingContent( + params: MessageComposerSuggestionItemLeadingContentParams, + ) { + DefaultMentionSuggestionItemLeadingContent( + modifier = params.modifier, + mention = params.mention, + ) + } + + /** + * The default center content for a non-user [Mention] suggestion item. Renders `@`. + * + * Used as part of [MessageComposerSuggestionItem]. + * + * @param params Parameters for this component. + */ + @Composable + public fun MessageComposerSuggestionItemCenterContent( + params: MessageComposerSuggestionItemCenterContentParams, + ) { + DefaultMentionSuggestionItemCenterContent( + modifier = params.modifier, + mention = params.mention, + ) + } + + /** + * The default trailing content for a non-user [Mention] suggestion item. Empty by default; + * override to add a trailing element. + * + * Used as part of [MessageComposerSuggestionItem]. + * + * @param params Parameters for this component. + */ + @Composable + public fun MessageComposerSuggestionItemTrailingContent( + params: MessageComposerSuggestionItemTrailingContentParams, + ) { + } + /** * The default leading content of the user suggestion item of the message composer. * @@ -1319,13 +1399,20 @@ public interface ChatComponentFactory { * * @param params Parameters for this component. */ + @Deprecated( + message = "Override MessageComposerSuggestionItemLeadingContent, which handles every Mention type.", + replaceWith = ReplaceWith("MessageComposerSuggestionItemLeadingContent"), + level = DeprecationLevel.WARNING, + ) @Composable public fun MessageComposerUserSuggestionItemLeadingContent( params: MessageComposerUserSuggestionItemLeadingContentParams, ) { - DefaultUserSuggestionItemLeadingContent( - modifier = params.modifier, - user = params.user, + MessageComposerSuggestionItemLeadingContent( + params = MessageComposerSuggestionItemLeadingContentParams( + mention = Mention.User(params.user), + modifier = params.modifier, + ), ) } @@ -1336,13 +1423,20 @@ public interface ChatComponentFactory { * * @param params Parameters for this component. */ + @Deprecated( + message = "Override MessageComposerSuggestionItemCenterContent, which handles every Mention type.", + replaceWith = ReplaceWith("MessageComposerSuggestionItemCenterContent"), + level = DeprecationLevel.WARNING, + ) @Composable public fun MessageComposerUserSuggestionItemCenterContent( params: MessageComposerUserSuggestionItemCenterContentParams, ) { - DefaultUserSuggestionItemCenterContent( - modifier = params.modifier, - user = params.user, + MessageComposerSuggestionItemCenterContent( + params = MessageComposerSuggestionItemCenterContentParams( + mention = Mention.User(params.user), + modifier = params.modifier, + ), ) } @@ -1353,10 +1447,21 @@ public interface ChatComponentFactory { * * @param params Parameters for this component. */ + @Deprecated( + message = "Override MessageComposerSuggestionItemTrailingContent, which handles every Mention type.", + replaceWith = ReplaceWith("MessageComposerSuggestionItemTrailingContent"), + level = DeprecationLevel.WARNING, + ) @Composable public fun MessageComposerUserSuggestionItemTrailingContent( params: MessageComposerUserSuggestionItemTrailingContentParams, ) { + MessageComposerSuggestionItemTrailingContent( + params = MessageComposerSuggestionItemTrailingContentParams( + mention = Mention.User(params.user), + modifier = params.modifier, + ), + ) } /** diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactoryParams.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactoryParams.kt index 725d37ea607..7f6c59b291a 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactoryParams.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/theme/ChatComponentFactoryParams.kt @@ -993,6 +993,7 @@ public class SwipeToReplyContentParams * @param recordingActions The actions to control the audio recording. * @param onLinkPreviewClick Action invoked when a link preview is clicked. * @param onCancelLinkPreviewClick Action invoked when the cancel link preview button is clicked. + * @param onMentionSelected Action invoked when a [Mention] is selected. */ public data class MessageComposerParams( val messageComposerState: MessageComposerState, @@ -1007,6 +1008,11 @@ public data class MessageComposerParams( val onValueChange: (String) -> Unit = {}, val onAttachmentRemoved: (Attachment) -> Unit = {}, val onCancelAction: () -> Unit = {}, + @Deprecated( + message = "Use onMentionSelected, which receives every mention type.", + replaceWith = ReplaceWith("onMentionSelected"), + level = DeprecationLevel.WARNING, + ) val onUserSelected: (User) -> Unit = {}, val onCommandSelected: (Command) -> Unit = {}, val onAlsoSendToChannelSelected: (Boolean) -> Unit = {}, @@ -1014,6 +1020,7 @@ public data class MessageComposerParams( val recordingActions: AudioRecordingActions = AudioRecordingActions.None, val onLinkPreviewClick: ((LinkPreview) -> Unit)? = null, val onCancelLinkPreviewClick: (() -> Unit)? = null, + val onMentionSelected: (Mention) -> Unit = {}, ) /** @@ -1044,6 +1051,52 @@ public data class MessageComposerUserSuggestionItemParams( val onUserSelected: (User) -> Unit, ) +/** + * Parameters for [ChatComponentFactory.MessageComposerSuggestionItem]. + * + * @param mention The [Mention] for which the suggestion is rendered. + * @param onMentionSelected Action invoked when the mention is selected. + * @param currentUser The currently logged in user, used when rendering a [Mention.User]. + */ +public data class MessageComposerSuggestionItemParams( + val mention: Mention, + val onMentionSelected: (Mention) -> Unit, + val currentUser: User? = null, +) + +/** + * Parameters for [ChatComponentFactory.MessageComposerSuggestionItemLeadingContent]. + * + * @param mention The mention for which the leading content is rendered. + * @param modifier Modifier for styling. + */ +public data class MessageComposerSuggestionItemLeadingContentParams( + val mention: Mention, + val modifier: Modifier = Modifier, +) + +/** + * Parameters for [ChatComponentFactory.MessageComposerSuggestionItemCenterContent]. + * + * @param mention The mention for which the center content is rendered. + * @param modifier Modifier for styling. + */ +public data class MessageComposerSuggestionItemCenterContentParams( + val mention: Mention, + val modifier: Modifier = Modifier, +) + +/** + * Parameters for [ChatComponentFactory.MessageComposerSuggestionItemTrailingContent]. + * + * @param mention The mention for which the trailing content is rendered. + * @param modifier Modifier for styling. + */ +public data class MessageComposerSuggestionItemTrailingContentParams( + val mention: Mention, + val modifier: Modifier = Modifier, +) + /** * Parameters for [ChatComponentFactory.MessageComposerUserSuggestionItemLeadingContent]. * diff --git a/stream-chat-android-compose/src/main/res/values-es/strings.xml b/stream-chat-android-compose/src/main/res/values-es/strings.xml index ae1b4efe6b7..5e0dbd750ed 100644 --- a/stream-chat-android-compose/src/main/res/values-es/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-es/strings.xml @@ -64,6 +64,9 @@ "Cancelar" "silenciado" "fijado" + "Notificar a todos en esta conversación" + "Notificar a todos los miembros conectados en esta conversación" + "Notificar a todos los miembros %1$s" "Abrir conversación" "Abrir opciones de conversación" "Botón de reproducción" diff --git a/stream-chat-android-compose/src/main/res/values-fr/strings.xml b/stream-chat-android-compose/src/main/res/values-fr/strings.xml index b12540c68c1..6b50bae2322 100644 --- a/stream-chat-android-compose/src/main/res/values-fr/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-fr/strings.xml @@ -64,6 +64,9 @@ "Annuler" "en sourdine" "épinglé" + "Notifier tout le monde dans cette conversation" + "Notifier tous les membres en ligne dans cette conversation" + "Notifier tous les membres %1$s" "Ouvrir la conversation" "Ouvrir les options de conversation" "Bouton de lecture" diff --git a/stream-chat-android-compose/src/main/res/values-hi/strings.xml b/stream-chat-android-compose/src/main/res/values-hi/strings.xml index 7516cc9e540..62cd97ddb35 100644 --- a/stream-chat-android-compose/src/main/res/values-hi/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-hi/strings.xml @@ -124,6 +124,9 @@ "रद्द करें" "म्यूट किया गया" "पिन किया गया" + "इस बातचीत में सभी को सूचित करें" + "इस बातचीत के सभी ऑनलाइन सदस्यों को सूचित करें" + "सभी %1$s सदस्यों को सूचित करें" "बातचीत खोलें" "बातचीत के विकल्प खोलें" "चलाएँ बटन" diff --git a/stream-chat-android-compose/src/main/res/values-in/strings.xml b/stream-chat-android-compose/src/main/res/values-in/strings.xml index b56b5f6ec30..53e1cf8a0b4 100644 --- a/stream-chat-android-compose/src/main/res/values-in/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-in/strings.xml @@ -64,6 +64,9 @@ "Batal" "dibisukan" "disematkan" + "Beri tahu semua orang di percakapan ini" + "Beri tahu semua anggota online di percakapan ini" + "Beri tahu semua anggota %1$s" "Buka percakapan" "Buka opsi percakapan" "Tombol putar" diff --git a/stream-chat-android-compose/src/main/res/values-it/strings.xml b/stream-chat-android-compose/src/main/res/values-it/strings.xml index d4ae7911b63..304f63db0c9 100644 --- a/stream-chat-android-compose/src/main/res/values-it/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-it/strings.xml @@ -124,6 +124,9 @@ "Annulla" "silenziato" "fissato" + "Notifica tutti in questa conversazione" + "Notifica tutti i membri online in questa conversazione" + "Notifica tutti i membri %1$s" "Apri conversazione" "Apri opzioni conversazione" "Pulsante riproduci" diff --git a/stream-chat-android-compose/src/main/res/values-ja/strings.xml b/stream-chat-android-compose/src/main/res/values-ja/strings.xml index 59a7fb5d065..1d879dfc251 100644 --- a/stream-chat-android-compose/src/main/res/values-ja/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-ja/strings.xml @@ -64,6 +64,9 @@ "キャンセル" "ミュート中" "ピン留め中" + "この会話の全員に通知します" + "この会話のオンラインメンバー全員に通知します" + "%1$s メンバー全員に通知します" "会話を開く" "会話のオプションを開く" "再生ボタン" diff --git a/stream-chat-android-compose/src/main/res/values-ko/strings.xml b/stream-chat-android-compose/src/main/res/values-ko/strings.xml index 0812fee37f0..aa45c1710a9 100644 --- a/stream-chat-android-compose/src/main/res/values-ko/strings.xml +++ b/stream-chat-android-compose/src/main/res/values-ko/strings.xml @@ -64,6 +64,9 @@ "취소" "음소거됨" "고정됨" + "이 대화의 모든 사람에게 알립니다" + "이 대화의 모든 온라인 멤버에게 알립니다" + "모든 %1$s 멤버에게 알립니다" "대화 열기" "대화 옵션 열기" "재생 버튼" diff --git a/stream-chat-android-compose/src/main/res/values/strings.xml b/stream-chat-android-compose/src/main/res/values/strings.xml index e616cb40364..3fc27571f4d 100644 --- a/stream-chat-android-compose/src/main/res/values/strings.xml +++ b/stream-chat-android-compose/src/main/res/values/strings.xml @@ -204,6 +204,9 @@ Commands not available while editing Cancel command to edit Cancel command to reply + Notify everyone in this channel + Notify every online member in this channel + Notify all %1$s members Also send in Channel File type is not supported Unsupported attachment diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/UserSuggestionListTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/MentionSuggestionListTest.kt similarity index 64% rename from stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/UserSuggestionListTest.kt rename to stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/MentionSuggestionListTest.kt index deb5b77ebfd..3efe5e79647 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/UserSuggestionListTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/ui/messages/composer/internal/suggestions/MentionSuggestionListTest.kt @@ -20,10 +20,12 @@ import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.Paparazzi import com.android.ide.common.rendering.api.SessionParams import io.getstream.chat.android.compose.ui.PaparazziComposeTest +import io.getstream.chat.android.previewdata.PreviewUserData +import io.getstream.chat.android.ui.common.feature.messages.composer.mention.Mention import org.junit.Rule import org.junit.Test -internal class UserSuggestionListTest : PaparazziComposeTest { +internal class MentionSuggestionListTest : PaparazziComposeTest { @get:Rule override val paparazzi = Paparazzi( @@ -32,9 +34,18 @@ internal class UserSuggestionListTest : PaparazziComposeTest { ) @Test - fun `user suggestion list`() { + fun `mention suggestion list`() { snapshotWithDarkModeRow { - UserSuggestionList() + MentionSuggestionList( + mentions = listOf( + Mention.Channel, + Mention.Here, + Mention.User(PreviewUserData.user1), + Mention.User(PreviewUserData.user2), + Mention.User(PreviewUserData.user3), + Mention.Role("admin"), + ), + ) } } } diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModelTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModelTest.kt index eded2f7c056..373e71c9678 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModelTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModelTest.kt @@ -29,6 +29,7 @@ import io.getstream.chat.android.models.App import io.getstream.chat.android.models.AppSettings import io.getstream.chat.android.models.Attachment import io.getstream.chat.android.models.Channel +import io.getstream.chat.android.models.ChannelCapabilities import io.getstream.chat.android.models.ChannelData import io.getstream.chat.android.models.Command import io.getstream.chat.android.models.Config @@ -36,7 +37,9 @@ import io.getstream.chat.android.models.FileUploadConfig import io.getstream.chat.android.models.InitializationState import io.getstream.chat.android.models.Member import io.getstream.chat.android.models.Message +import io.getstream.chat.android.models.Role import io.getstream.chat.android.models.User +import io.getstream.chat.android.models.UserGroup import io.getstream.chat.android.positiveRandomLong import io.getstream.chat.android.randomString import io.getstream.chat.android.test.TestCoroutineExtension @@ -60,7 +63,11 @@ import org.amshove.kluent.`should be equal to` import org.amshove.kluent.`should be instance of` import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.Arguments +import org.junit.jupiter.params.provider.MethodSource import org.mockito.kotlin.any +import org.mockito.kotlin.anyOrNull import org.mockito.kotlin.argumentCaptor import org.mockito.kotlin.doAnswer import org.mockito.kotlin.doReturn @@ -367,7 +374,10 @@ internal class MessageComposerViewModelTest { val viewModel = Fixture() .givenCurrentUser() .givenChannelQuery() - .givenChannelState(members = listOf(Member(user = user1), Member(user = user2))) + .givenChannelState( + channelData = channelDataWith(ChannelCapabilities.CREATE_MENTION), + members = listOf(Member(user = user1), Member(user = user2)), + ) .get() // Handling mentions on input changes is debounced so we advance time until idle to make sure @@ -384,7 +394,10 @@ internal class MessageComposerViewModelTest { val viewModel = Fixture() .givenCurrentUser() .givenChannelQuery() - .givenChannelState(members = listOf(Member(user = user1), Member(user = user2))) + .givenChannelState( + channelData = channelDataWith(ChannelCapabilities.CREATE_MENTION), + members = listOf(Member(user = user1), Member(user = user2)), + ) .get() // Handling mentions on input changes is debounced so we advance time until idle to make sure @@ -399,6 +412,30 @@ internal class MessageComposerViewModelTest { viewModel.messageInput.value.text `should be equal to` "@Jc Miñarro " } + @ParameterizedTest + @MethodSource("nonUserMentionCases") + fun `Given message composer When typing mention query Should surface the matching non-user Mention`( + capability: String, + query: String, + expectedMention: Mention, + roles: List, + groups: List, + ) = runTest { + val viewModel = Fixture() + .givenCurrentUser() + .givenChannelQuery() + .givenChannelState(channelData = channelDataWith(capability)) + .givenRoleSearchResult(roles) + .givenGroupSearchResult(groups) + .get() + + viewModel.setMessageInput(query) + advanceUntilIdle() + + viewModel.messageComposerState.value.suggestedMentions `should be equal to` listOf(expectedMention) + viewModel.messageComposerState.value.mentionSuggestions.size `should be equal to` 0 + } + @Test fun `Given message composer When selecting a custom mention Should populate the input with the mention`() = runTest { @@ -515,6 +552,16 @@ internal class MessageComposerViewModelTest { whenever(chatClient.markMessageRead(any(), any(), any())) doReturn Unit.asCall() } + fun givenRoleSearchResult(roles: List) = apply { + whenever(chatClient.searchRoles(any(), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())) + .doReturn(roles.asCall()) + } + + fun givenGroupSearchResult(groups: List) = apply { + whenever(chatClient.searchUserGroups(any(), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())) + .doReturn(groups.asCall()) + } + fun get(): MessageComposerViewModel { return MessageComposerViewModel( messageComposerController = MessageComposerController( @@ -536,6 +583,38 @@ internal class MessageComposerViewModelTest { companion object { + private fun channelDataWith(vararg capabilities: String) = ChannelData( + type = "messaging", + id = "123", + ownCapabilities = capabilities.toSet(), + ) + + @JvmStatic + fun nonUserMentionCases(): List { + val role = Role(name = "admin") + val group = UserGroup(id = "g1", name = "platform") + val noRoles = emptyList() + val noGroups = emptyList() + return listOf( + Arguments.of(ChannelCapabilities.NOTIFY_CHANNEL, "@", Mention.Channel, noRoles, noGroups), + Arguments.of(ChannelCapabilities.NOTIFY_HERE, "@", Mention.Here, noRoles, noGroups), + Arguments.of( + ChannelCapabilities.NOTIFY_ROLE, + "@admin", + Mention.Role(role.name), + listOf(role), + noGroups, + ), + Arguments.of( + ChannelCapabilities.NOTIFY_GROUP, + "@plat", + Mention.Group(group), + noRoles, + listOf(group), + ), + ) + } + val user1 = User( id = "Jc", name = "Jc Miñarro", diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_MentionSuggestionListTest_mention_suggestion_list.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages.composer.internal.suggestions_MentionSuggestionListTest_mention_suggestion_list.png new file mode 100644 index 0000000000000000000000000000000000000000..f1fcc13be17119a5f27c42a6117b6280f8ce51c5 GIT binary patch literal 140372 zcmeGDWmHt}9|wxgkRk#qN{2zHq#`xcAR+=1(jg&8w{#;0A|)lw45D;M$Bi;L# z<;$1YTVQV0ZapKEk8OnzWxS_sQVJDL|1scp`$Y`TiJ|BD zW%Ub}y_b^>aj?@teCX*SH^GAg>7OaW5dQsQkYSGm6pRCQ@?oPNqnO7&(lU=7?J?`2 z8}>|eM}`WMMjw+#nz~OodUi62iL&JXt->YvYTVgwO6%w?`XCF>L2;bI`B7Zs0orMd zPI3nB+PKE&J?&Cgct`n5!FT1TBE(jUDaL;_>)6eFH8^(BZ)h59pB_7rCekY}o>Ur?EZMo>1CE`V++vrT63Y(!VyvYi@a8vk;#3>l|AnI~Z8A)% z{R+niGwKSWm__$H)N_){Y_ziD#qYL82m(R}?$@gLBr>kfJM}IAQpNDZP>0p`= z7`A_YMpSSiNqqT8vN%6Z84o?%gB@%&ZOU!}i&!oX^RbWfX%@tXo=ng27|3<+!C9`xq)7Opybw+wk4`)zQ+il)JnRc(#lW`g*AB~iIr9%*UivGO@R zxzj&lCK(b=r9)XV{EUlYuQiJF%U#NK7rTXcN1s0ZaSIHg!OV=mooB^Mj=PgDQMKLG zC*K0eY$sC~<9zF!q@e%(DUE)kmjhuX!>x$fBIu>u;rx3X_xWK& zxge|r|AB^4&(X1HoLBuDwli!OwIyPsQR_TqRX+0dwh{$OS()}KJaIt7w4c*5Wcc+I zRmsTflUIC~kcGpsRKCS#)`h;mA*A`5YES0NBywvtwIWE+QUSWfIv-uVrb607{kzNd znM7frs@jVi(JC$|E^ko88(NGRI5?1DTTV*ye-`@Al2GRPA`kQ#wWzPfhl8+hjHthA zyp>%19nvpUXYc1@(&ec>C_V{l8^h4x_Gz{AVIS9S#~Yom3}zIwirLx=tj6C}8LhDH z8QodzA!wb=HV4+F%lMW#PLyRe5@!P`QOdxjO#2X?_?k1SfiZTZUADJ2R)zde2c=KR z>SoI}x`Fm1?Wh(^zO*|I_QP@f*g)=>;tIrGjKhBP2n{&)tk3T;d!IZvt+q}W+^8L&se^>&P-a8J2v~uO&@hrAn)CM zVPQ>Pe*WU5q#Nu%nv#gp!t(Ow8tIQ!VIpC|4}i<09wc|4S3D}}XzlRnMtC-}HrMlt zq7jC=sNe)bfMSYuPi%3SSzw{em)Y_&!dAwZ!nt=YosN0Hpn_X5Lnn_v`KeqVFb!p1$a0GVthD3gvDl+VCo;T!3CM zi7;_Q)=h>b!(Ieae*vD?cjGgrf6BJD&y?=>WQlY69)_nr6&?%EV-;I1=uwliQ#{fD z0#t)C#@+fQVY@>MU%z?nZg&x|jm1FdEnFM1D~!+WF5=TLEnLkO$#rd6=E5JX8_=2Z zs>$crnrtkotk;1Wfo1;;3g8N#w@ER}t16LM98m3B;TQE45I)qb^F8CU_EY?o$7nrd zt4iF&jP)k+*C=yH9{BIA7@u<}=!cT<7Voo>0WCn(c3k=sk3;1sv8`)mL4KlZT{2d8 zPX4b6-L(|58F`LcseaLeUte1dD&9vnq(L2~%~+-dw7CK&miZQTt~nu?on`$}aCYz}b6lTl%L7{wyz zGYvc+6`imSksFUh>Yw*poLwJT&Y85dJfq9Brktzy$SpE&4v1|#$nu?i+5b&QH!?C3 zoiJPNpzD3KoI(qa0&0>kOt+xa6dHG=?1XmrAxo=4X30$#F+*cbA>3^5z9*?{=LCS{+hDas!vdv8h&$=tbXk2iV4>851LfxGnx-48|)EzG`=w|{=ptHth^nl6q4^J@F}fP*Q! zyG7*4nSpe1^^UVzmubC*x674dT*S+sY6;NAnl{o97Ji(a-`JE|6H(*NWWRG7a=g##G!s#}W9q^! zRj{z288P$tFRUs_4`G&1e4l1GZa3FL3UKXZZj*ZZC}ezLAk7aEM_sy8HANl-Z2#vQ z+R)X1+@hkr^C0rX9Jz1vGxz3~KB#mnvsM~a{a8$=mnHvOUqfEi=KllUDJy%r-Qh^U zjj;{$Yi1TGig8$W3H$@T^s&vI&bmcgWM2FJ+K7I+dGn|Wckqu@IYihHzP#nQ$Z@Lj zr{)_KI#;jL!<{14L_S=@YBp{EFhgq9%k9%WB;N1z+TCXb(w-|={6MyxX$+T~$ym9C z1@bP<)%P{ZGSQ4KDEPYv#+5(J88-`&3g@o~8`Fk^nbNvK=1oQx*4y*#MQ@k;j!95x zFi^4;IgS-gZL|P&%(2n@S!vzu@YF&6i?r`d!mkQekg)RZXx7|48rieM#n*vszf_^z zMp5#?$5_Gh{dkSEe;pCU=o+Wu9e5k3ue)BWVu|{udeCS^J|q8BKt-3aCV23w3TIeTavr0h zKNs@8glM=%_tBCp$#-p72|wT7A^sSq5Nh7B`C*G6{~>U!q`~@Bzva|K+yQM8!zuZf z4F6uS-FH8A#|Kfuk5?Rm`R_3mX=Wjc(`#BrtjqNZ8;{G(8O7b_Ma>{_P7!x!xc9wx zmmG?0iVunc2oRiDah!f>gX?5L1Doud4=t`bZ!0enoFbW57**8wipsPE8>p+`?*_(U z)`%%D%OE3R>-&6J@>&@Z8sx*VoHC=-+(Ga~oRV>EMcX5vl9nc>OJ@ov>tZfx3hwh^ z1Z1v`HeRxg3QArd!N5(QDxDqrf~REBsJtZr3?ZO_%F2P1JA$obYcHp|_^G@pRRv^Czh=se8m)G_tDfsWc(J#`w zkCdpeJm2nMIM@Lywvh~8a%%cf{MCZiVuR9QJh#1E78f&j$YD;4+aIy{F)juzr}2`P zb0H_C2U6Fd%r}Lk!eUJWXVTQad8!pH>#tSM2=so-Tf}C4^V-#WCJ|tr}Ypl z2*)el6Hc()S?MN=N!}kVlp-leqVk@mj}47Fh>gh+<$tJGYh+4^W2vazFYS+?<+VIG znr95?XcMqL#rUR--fD85x{QpW5P{A$2bNRy@@ET{_TXIi8u3vDkII{i`Hb6GuM9WL z9&E_yAr8z&_e7fVC+*({=Su(y(?jcKm?PRB$&OUt)5VOhl-q8L!aEweBH*`~@ zz}=0coby`@ro+8^bbJw7I&Z;sWjLIwDl*A^>btrhWwP6FME4jCv)Yx6s!=~}J>6BO z3xDJ2Hj)=}+@o-I?dpJs1z(2@lP<__eX;`mUE`T=_a>0T0SL8z1+QgDxD2yja&21?x0FZ8b*x;OI;wNU6iqK?R@otO zN3SZZJ`%p}Sm*7CO_Z9{48s_~UN8SnQhPaOX1ukbq#Pnwge=N(->n(;aLVhJ{_2f) zAr=Xn1>&|=pq8;Vf$Q~K`Xnk1@lorWJprq2gt-<(Gv<}@@s>)3A zneuP`D*UNps8_h1)iK0Ya0#I|-+Xl5DQt7uaCVsKpLUpe(dZs-?~6X6p_=q37g;o6 z9*TsVyXco3-c1W5?eLpx14og-L0j%J+oY^dD$2_ii9JV#y1k4u4es2VA3?T^l7486 zaMdgTQ|3ekw$Wfmlgf>D1n4H5HQj~3o*%Q@j8!3<9ToRE(eRx!oESE4>c4a?(!V@~DG`Kw`syL!K? z4QJA$xa5ul$`BWUBN`0RUVL$hx}dXhS@tUe5vfY8b~kcvNWjL-otrxLSGGK1R5$yZ zIf%u+%L-TPyeAVm51KcrakQzB&!}`cO>BP>Gwlm+#Is8{|C*-kmhr~@=u5hv%N4x; zvh=5V%D4?CmP6VqC5(J_%~upEc{z1qmjpEb#r&`!9T;(^hug{5_t9+nqSQqHm!ZbW z-ZmwM9!?pb7YKOk*)blM6TziJ#Q4Gjmf}@LPqtd!kj3|m6V%7XfHKv`#x4BI4WPRxULlrbw}NZDKrc6BJrDUOCy z!r2HKcS+)Dn4>2{$*Tq({X!jOB)?}{=7PB5IbECBR@2IC{dFMN#0WuK{dV}hyW_9Y z*KLQBt!h5^ZA4Uo+v`cfP;ud*w!ax}$-3;4uJo5y@#8M2p4oHgeRlZE5Rnk>^A7o! z*4>(at_KdxfiN19b2f^vjWL?=mZbZ8Wv+~tL5J~ndOfk2(eGXAH9uJ>=Mi2TKh^6! zIIhy#yG~UK-GgUXS7iHcjH?ToRO|6qnpXKVr$f9y&Dw)L4OSSXd&v3r|F!PX&+Qf( zjgiFsj6-alspwa&xQzb(s9tiOEHj!d7wD~!uaV(EIzJw!nhT7Q`|*j6dwDHwp2F++ z^D--~KV|WG?z1>u0fVyfvW5D723E)u^6Cv$cjSA=g&&2t!K4+_&2jf3r{+KgZS`-b z@Nu`v0)uk%{Fd{OFD>6#8PP3D6JfLDVs?XL8I;|KoRXT&`VleM02qHl>bxJI)aINw zPxr7Z-Hvz&^mtFLE}_6OcK5|+3TfFgWo~15VwG5ZH4|KylPljrjUUf+9Z`n~_`o}D z+oTO%g+*Ccw8XNBtG(wKHzuz$QpY@;04a!mrex`N{CN4M?Bc!y63WfwV3i8gKR7|p z=a~vn`>+Jqdn&r&ZI&x2;`&r>PZZ_k6c_Z8(RCS@G6ugy_V(t#6rahbR~p;oQJX$A zt42_7Or!S!!9$h*#vK-TuF+tmgUHM8PnqDn^4Y0wi^^?Uzri!Ai!))dl_AdV_13?o ziEH_=arVcyr(vxVw!Zw(Bj^0ptxnr2&13u;^&)k z=Zd2FSD7I-B;5Wjbsg{L1-0KzjHorJDZ34;4*82S8%)T6$+xL`ZR0tZsJ2;EgD+Skze%LTF%uP*h#sY0 z=`ccRox-0<_xhJ^WPV+PGGNZGM;7JgjF@~us1s>09pg8Wb!=pHQmlW@M?2aG=Cm37 zT%qOD^K{s<=F}&N>_6(GEikY{&1q)pO`TlCex82<&P_2VrTMfJi zLoC@ZolTb9DrDc>>`u@KLhP{|D_xg7Gqze@Nr(FVdg=mdV*CmQ0(gtpnhv3joPi>m zoPQ--6l53F%pTMX${LJ>nsbId;yoB(6Ah7NntA;IXcVi>7SaUz)+p0;(Qm}Mo$cMZ zg55vSUqGte^l)9sps`vh{G$5G;+?#{TYu*3^Wj`IONNNr>CloRC4ABnxy{P<&E*#D zRkyjED4%zH8B$x|1fy=Spw*y1M(E9D{ya92+gyt})ALRed+|e;U&g3P!`~wyG z!)skOr*uKZ})q+_Si_70XH_+t;3_4az`)Z%79FK2m&y%OLjl#Sx*uBvkY4B-~KrrKWb3 z^FX2WrJD+#pDp8t2!hFSmg6Is-$?mBIaXE4J0A5sD{0kmcxd$roExW5#v=Nx(d=Z1 zZSr30_zzV9mv*1a-&X48R3ikf(wi&4k#88yNUuz9vDsBm zZA6|rN(97p1%=GkxP<0nztL%%vB)g^Dzl6IgB@D}F2`u-J?{v4fCpY;Lyk1i@3=O+ z3`E%6IC%z|!Yl~!SDc91vA5X+;T!OXzCH#2KCk9>t5^VF(EX;7lrG*{!}vSi3>J7V z6)4@*gI}Eu+di3VdH=|z2{?hDJ3(;kNO6zVdr$+Giw4uGJC+jdR<>EfkU?!!JVoL| zG)!x-^4?}M@E{-Rj6}q>zm3U2yi>+G1oAT7^_g*|0{t8!-Y44JqBC@wnN*5-hez?L zMLt#wpd|CMf;V@sj!Mo2i7^T$1j{B!caz0-O{V2wT#|jsA+CER$_2FuZ~V93M_aLY z;0`-W4w{DvllCvm`Cy1hqw7AT1$4CUZ4th11F4fCc9l{=8TTkWAd^z_e=S5+_L+uXH8aJVLqIs}qs;`}HdU&O4=yh* zN1_q&lx2D3N@uer*iP!_&@U8FZx{$n{VP=Dx`cuSAKY{SGw|_zy1SDmZHL}Ziw~v} zgy-vJI>a6NF08!=A8P<2|awR zoJXuUTcmQE<$h@O0!4TE!!eeCldM4&&cTiOoLVnxsVku4n})Amn<712L|(YNj!K8D zbhzzYbdRIjUJIQxX6Syr)XbE}#uMr*Ec5qcAq({?p?iapKF>S^i-(Aj zW|9xbjBM|6TEHRL_MseudPXJ>e+D1f3}K_jLhD#@Sn84OVEP)}dwNbt0npRoD&A0| zJlNev3ts-&dATr1gDp`Mh1!`tsZqTy$q!G&%pJ-19%n}GvxsDfwI>~VsUf5%+S9r$ zfUbM=JWR9jpkj zdRv-`;GSun>qO0x>ZC-#zF*di%Thr_z~bU{cq=?{gp%B=uZNCZ;=vUtx3|MyJK4U= zbS*XI{#J_*&?vVKwpl@7aE*7OfTUJ51Ve*)J3GZKu+ zs%idJUyC51oyuz#x9)#jPG%8mz2WqzV!r#4X34J;mYIh8X*PlgP`V*Nkr2KKH`vTn zHJ23e&~+?0R)!=d4YFQ-U9x|AmkfwzSflRy$`R_M^{J|jmWW{^DldtjhK8`sQUUsK)vlJnH%n{3;&p+Kf_}i1M@3}IBe0v3|ZY5cQ z9zC9|>_V&@^d&ouiXnfz7xM0IE}08+K0kX;c(~lBkAmVq`0C0>e{gd_d+m$E$-ma` zh#1uyjTM<$+yt;oBn0akV*_0klXE?N+HA}?WJJCe!5#AL{>$wDEkG8FjkO$~tGLN8 z^*|m*0i7Su2i}D9`!kbl<(m@nms1k#2kNy8`ulQgs*WxTE-6Z89aZ}+(?bb{#J*RZpKS`!r zn9-1)j9a{83I<*{nD1r+SI>)ZDK)c09(JQk_r>&&E+>n7jULs;r`K6VLOgKMTlhkLsq5Vj zMM4T=hF0tVw(0SWX6<8fvuA@sVzvXdV#S6>yZA7dYv(Swgv9kh0by1F|G5@&7urU~ zdq;DAG^i-tTelEOuSXdZWoBB4g+*gfnC=#b8--f^#$c0k25X4Mf+Quy zYjkHhzAW+L#D#(}4sz7bbN}(l+s)p|`YDr$*wz&(D#M%$m_|Ir#JcHZP*CIU1{xk1@0 z&K=0bY8~D{`G3woO{&P=3;f|uyHscY_qSN~P5kDs*BxF5E(+w3J0k2hxrWP-b8k6nj{g^}K;hmkL~bagX{XCzpL_gWparlxsQI=6ui zyWg-`N4G(A8ZF4B=a#=-?M6w7if`CsDzNI}{=0>Fi4F4t%k`nH51_j81wNrx4d>1y4c#L+&w0Ee9IorUf&el0w_803Hyn+)tXt5 zw4q))C_fQwvy>^`{N85OZX}E@Dx3@(Cx2X!Rm$CEmSwViL7!1Fpe|GZLvNA{qN22- zznmPkkVohzi#Sa&Z1a5^qrqv(6B2M3J2<)_5GDf7@)zY@J@nr^rL?H8mvkPLZH_&N za>Kq@cXgPmY|d%|@}I}7lk28Sfcng$Kw>v z{Pe8ma%r%9!my*;S8la(pHA|y$OqMD%YbO4yt$PsC9D-0l8l?5MqYOW2z8%fQHeWE z(By#ml4}*XPDe!ZrP+`Z7a1j~ujqOYYnONQ5}&jbNTcSV302aJm}M$>mCprAG)JA# zyTTn$?GzPU1~Z+jPt5FehZ&aGDzxcF zA=XcBI;Ys@cB+LQzEs{gXz?N0Hou(bf3A@6&$#WBCx4|iLuM`u#NsCoUZ}~$z0-_1%dO5LkAjx#cA!N6z zLYC;*cYA z)D`FzzxkAyFGiGJZE3@Aogb(A+f|j=|NRc$vYXEoJRe|(smeNKW{6#!^)qrW%Lfmo zmv!FO-|PB_05=afZ58(F+7lq?qoKwNfuR8#E{8k#+6&O@+g4-4nm-NRKRFPBT-$935KE&rWVWvdQ&z z3yWr#d}-I(y2QGjY4Xd`V}K0OKsov9b>hIA@_bv;zYZ1hStLlx^$ez0P{P>xFk;C1 z;(G|Xgl%Kjwp1%tF20h^3}+M>tZ{GH7%$Dps_v)3h4C_+jpS*Jz-d^(*N>95V~;G& zSs2E>%3rMd7k1Kz?sPHx2!=KX5M=Qg)`S(7$`YA(bj*YY`bF5cRzv7XZ~XWm#cv~= z^d|OiF5A+M`}Tv5PgY<_r^sb4Y&UvSP%FYoo?T>=TQY~f+6(}%Uoa7YxGlj`pOTq2 z0M>hZ3-o=3Wnt+4>(zr@%TvG0oe$s{ugFLz#5yJJRC094Rx|O@M_2dIYuQg&K*UQ< zU6T(CN>bPU*HD2W%lQjp2{~O^swj_%21;zdVVQpZBID>M4O2ZcTG=z-jg7RDwJ->w zx?;nAr19q5KHIY5i}n7`QAJ zy7!k7i;SyQZOKp$Beo{clS<(_o0X8?A9~XkdfqJnAVH^a;&a#eww!F^*?9fp@uEAv zGx^gEo5y#U!a{9H+~(g3%OIpY3qa+faY1v}c4f6lwTnoCvglS?NK{iyOF$Y@57sZO zz2M)>OkyisDmVL?gwVF(W=X9c{&D(H$zT_BNzKrLYh^>|nZLf%#`v4Y{CDdYtZvA7 z(93RyR1t&I*W%XQnJ@5waO2K`610cR5%f5H8QBEltTWk@pP*>D&uUxJtVwwVl-nFg zbiCT8oXuksc0qqs+4sb9)^stX%-HiZcs4dz58BCgK0;Xk+B3NjAQcC0H5(#X&kI0( z0_9DQMjq~abbYz$L+3P4SLY|VmBhB_2B&5AU74ttTl@!g-VG*V@&V04u~1nFxzmSb z8KYOSP`ftvtxIJU&Qp)ftm0nm`l+}Jd0x4t6?D3sVv)^nGyW^p8Y9``9^4%f0p{YY zZ`%UIAMXV`ZJ|udL?9_WM+TRWLB`#hc8642+{ss} zg9z^6XTi2$<>dz!#SbjTM->DzVBaL1M|A-5Qq=|1B2ZK_o~Scqyk|8tQ@V9neOewF zD+6&K;utF;n0@neJPT=^$p>=nz90PQ{jny0c5&y!dxQ<&m}+kp60X>!aiuQOj@s+! zOx_BNhPQWk(@2D|r^*E_*=rkO+m${|yAqNfk+0AB6YpkCHG3o)pcBrakv$t4tbJAB zLCw!dA*daBm=UScMxi3^U$%fNA%1T*0Fim{4D|M$ui#1Dtigc%fh}I1hc-x%9O4P( zJXA||!bYF0;k^R8A;Bf-k6nJ6)ZpMnMljyCOcdiL?EGxYz)U>sk++p1^R=CaaB_|$ z26Fj|bTIW_vS}!j*Xl!~uHMVB%2_(*d3?UNC{GW6@9DJRMhkV(IKyHCA&hHvcQ_&b z==BRw3H#`-Nm|`KE6IX*D+P~~)q0JKf`rJ%ddqEUN23I_0K@wUpr z3J}MJ!cHgSZLvvfA-CD426OU!6$%%3jr>(2_3>? z@^M^~RF!Z9rY8<2TPopOZnZw3n8r=1aDL*$5e4l{ppZ-#QkQeygb zG%^L;-zkf*6h!D)6Yl!Rns{Ib7_7-+m3S5VUAmsoTe6GplRdgc>R?c)Hp67mAPbb- zuFqD)zaxxtx`ON(SVY^z{9pYVnAMUaBngwRQh4X{ve62SuR}99fLLp*`32CCsh>V{ z+dPY>28)nOyf$*HoX8;B4y49+Mco<)VH!03GPVH)M!35x92Ef+T}FYE&zXELps;{| zQ~x3}Jp0u_4XDLGGOs#;qj+onv8%L}&#i7=8CAL;rntU-_Fm;XQ$)xEa@163eJaue z>-^~^pI&ifF`nyD|F%G3r{7T+DOLyNdw}D-H`nyu`;CX*)NnYe%y58 zGBWl=ZX9SI`q!_mAoRPwSgcvUxD=K$aUr_<90$sxcGNxR zNZGS*{1gGyjd@1LpKJI|9&b(zU3W1GsMuwb^I1>zIr8av1_;1vrb8YtqTUfssjj_> z*@1xWvGUtYfYd~=l)pZU0X$%N4Xq4`A!)1`X#9!*@C$dLhS@oY-;ehX1Qb@@>u&)P z(EExc(J+L6N=(fH%Wb_P9|&Y>T3*Xa#SZjWH_)$D;<|GmpsqhANA(V8eNA2Xte`ch zOB*1HX(ong-Xs2`v?r$AOYS9$Vt*w3=b7r~PhAsfewq^-XSMMVR$smc1e68`#2B;3 z{?u|hhF#KW(l#@>cvM@3tR4=N@ilju{M8$fZBj5^hJk}o>QdalGGu(;xn{griGTj& z$#()rt*#PR+Po@9L^4L?w=AlaS3RYe`&&8c=WNKXQqGAiQ(x&ztGF7ArZ;Kk`4{i{ z`ST$Ksvf1Y?u)AzwL#Lv7 z`0`fyImWIWKMu=(wu|8&RyQSSkWZC?LCXxc_yrwFx)v3M42D|7(?NY5NuLHc4sE^K zzuTnEDtIl`r$6@pRP^TE17UQxGBbXDU~2C!wU^y@DW{fQnU|ThL4f>Htc3AybWPy) z*K5WL4a!e}ahV2g;WK69L-rW-*o1W^_q8Ge6}G%-_sgn>QU87Jm1xdxWyo-+?*OfV za^iClZHc`mdM$V+tLtzcU%*tQ4I#acyt1I6!2TcE{vMNk_CwYgA&^G2PI$e&5lRdk zK+X&od4= zX&-yLkm#2Z1TTcrI$_|f^=T?u5APV;`&CWVaGB(KOEr7e6hEK5yQPJ$2~!XGR-#O% zLi{du1~)&8Ve>iNIVRw}{i}-08v7*6mj0(jZxC4(M9Ff7(#R&hWknf2rA3)B?GH@I z74&^8wnTJVD=XY&=6(nlQ?R|eIMYDe;&mq!&^ns*sFX`dr#adC4p(@%E);P91 z`#4J3ut#**q?0=ynbH7HHhhg7qB_FDxR*RvgKEB>{gUa5q^~UXpWhmTTRt1;wHGrY zP21rC*qjJ2WATKoWIOxptiOgh=7#MAj?UhO@Fb^hD>pxu3dpQUJ}PP z`9?H(ewhC_Z%*LXyuSRBKDbVb`|T?CV2k_ z3=H{wzWk9kr2vq-7oTw7`{@*@J95%a4bv-cKFdCy@6gi!csY42AEy73J7m8hfD}^+ zp*{7UVE)@PUO26t;>LJk42o2Q_B2n85{2(Ec~#by8&`D?Ew%V=&3^9bI^s*?+FO>S zZLD(U5h=nAU_uXzMFVGk#35f$Y?rdQ#AmLVF~RbZdF`2_-lf|@Yn zOTCFT?1;aBIMQBpuExobPs#$&7sVoCso*CMqXO&IFg_ADpR+~m%8VaeI2Cq9g@BiR zU_9fA2@g4alNk#<>Eyhud8u+}Zp>-4h7hGTHdbsi3uHxwBB73zdb{jk<&BwU5lC2e zd>5%YuChKtz^FS?L`zfiZ?=2k_?FT1|3WF?UGe7JcNfIge>E&M(Z5h=x}d97CmsXx zs(wiN*ROC3vA(%u?&OY-Cx7Da;s_HKaeaB@d%sUpwLz+Rd>5~Un}A?Pk2Lq+QD*t= zD85%Ix(qXT$sl)H{orj6iS6P!YR=;2@mFJDry3kJBOgx=?sSc1`qSz^(Q)jwer>+M z!Optcb@RU+?$io9L(Gvh%>p-SB;bpD+1yNCR!tRNiQYj#+Rkpv;xwyqOpeu!8~4i$ z3&D6#tobKKX#ZzoX$2hvmYo_WzkuK^isaPHbP*;m!BL~ejK@y7n?eV__}%SPU;!&O z8&uq-oxYk-ekM}55$wNZIHkb09u2xZ?o6M=%}{yeQ*z$3^9&nU1T@Th6fPwzVU6tL zV82&WSq6l~p15M5-Y)KrVaM0w>}`Kgqclq7Jv*Cvm4E{e3=0rxp$n$>aPjBMY6gfo|&pbV)#PZM}a7D%ICfItnRX(_GAAUA)OP_$BnBZ-h zv1tX!!@R|zcW(vpoq^PS3ul1;#I~})7mK=WIL~3T7%u&!P*S*e?7#AXM1g(&Rt^2r z1j`h(!Uq>2y-r5ED0;05H;QEq8IQ7yyCw^`$MPBNS@r#WXz|~Y-f1E8(xt_88tSSEnxxHO!eURPE#+VTrnt$> zoI*2nq2O5=$|_Ema4E_Ln5wTf`;)sEFWIC(E> z_)e{UE7vwAZ}o`bKRca_)NNo24bfRZ?)4ztr`0AP#C~a|JyH%n-RVJl%VyTfA1yJ~_->hNp{PeqYn{`aHaGG# zW%tMh`#S8F*q`J;Pqadh69eYoQC~P2^nhkyY{DY6REfpUY(@LA$Y%TLFn_k+lV-qJ zR`eq6k@UfMd`!u2I&2}+rL0E=3-^-wI?%F?0~9X2zIK)(Cn1#LA-`{UFO07JLbJ() zBs896Q_CrGYr9PqDV24>dhGm|MHTKBF3fTjf~In$WTbiZOQ-8KVzM5q5V$2?61X0l z({YMv@bc&Xq4=`YE0=0f`KAjZ{u(DM?mceRte8Bq6M4f5+PYrZ?|hXPi18j+;#_De zo2X?NBBxLuKJyn}iSX}p%jsmdS+Yf1l&uJx6#A^sa*vbyTj^Aq z?01+1&#sgrMghywZqrsoEQeukE9~bpjnto-#-6y1!T9gCL#BCbwYb8Tf~i-*2F-=z zeKn@Iho3(`z2k>|ky#6!d#@4)+ci6f9B|}q5pi=hx-^kfh`9?2M`607N5hadr7Rw) z{+iMY9%tkPz2WOxGWQqs>egw?$)@gwIN%tY8~51nb>vXwM=oYh!NTcUm#Tl6^J(uO5kh`!X z37HzamzXC3u%RE<9!iO!P}r=|{`uP9+=x$f5_cwzzV7;bkAFbC24mlB_nixtv}kd9 zAN=eN*h``g0Go0>L#tgeCZTqH>CE!bh^;?*t}`>a`V3i<2b_olY&4#cPg8e~S$OR0 zw?sM+yjrXEcG1&berG9uVNS_occGp5`Z_Tt1(rMz{z%=Rkd1&YPN##|;~xP+oh9r} zVv#CB{s>vff96t8d| z7njN${0V1%22}w%M78Nb(zvNx%$JP7>SP|5H~!_Ob!DHVpkj57u-wiXcH+T>uc*au zn;f;nBKmDv@jaD8)I9gucEs0j9f0F%%@aV~Z+QE9gte+AKe%wbumv?8?*Zx$2Pn6= zW0KFZcPmo*<^w&{_G73qC{5KYG~qb zzj=?ml#y&s^x_E{vik)HosUle6C-|0#CY#FHTLFWQNH5LlpfK@s>gmc;eT;N%<)-UTi`K!3Dbis}%PS*r*@bfdDi3voEc#=V)T02hO^B zRem~iuCK8>J2>J^JFNiRI*TFi39WfdR{;)H=9iCWR-eLk%XNO+t{kQbm;xYQ4tnZ9RL<_Z& zi=(pXj@50i_a`S&A}!ndR*?X9F;Er%8KC4Wj;?jz!7)Hv4@b0on#9w;CgEhDtrWN& z^qm)(ftzFUS~aWT_(R^Z5jw2>`)_h%p9W=iZ=#TVJVmw}$GC&QeeTkCastpFMMBfW zf>Ie`z;7Dwtw4H?;%WOi>jH?!Znf-M)KlNPkHj@LCTlEQFcp%9P0zyvD>8LrruWB* zM0k9nTsb!le2=q>uWiKzG1lJEv&$Q;+{qsn3%JumYt+B&jFg9EGdr$;@zSdMr@Qm3 zlvpEjfV0j4w;{tey>!psf{-q{EVnDiz)-u~B76NNY; zePlM*ZY6EF-KFyCRu8`)miE-YJz+5|deRjNm<#=BlN2*1Qi%YHftUDPN{zzwL}a{^ z8GeEBOR|jlp>=v?N%7j?*?b=oveQ8OIP@Jlw-t12^};tlkld0cn&_@R>tD*Lt;XH! zAD{Ij>R*}45968U*+sFg#%;`>;B3rEUv=*(pvytR5kewRJGm)Yn{~hB50%jo(+Vpv zq!hlr=6j7pJ7EeghJVGx#$0}*rpK%YWbg`30895+5IWU!(lBS`n#D&CnZ_#M{cMxE+ibLUW7;&4P9 z1G7v>Uw4K1lO`G7*;L68^LqE&3-}KZ;f)z-?}ay+*~A~BYR9A{+*Yq{{@AtRR-Wt8 z2e0B^a>RY=P>IDS_)0sZ?EEm&?mK)w{w*t}+wizlV8F-J3^1)N(aJ~-o2L4p>z0KpCh} z{$KgJVF$nZWEN+fCdx|9&feX$JE{Lp&Ip*K2HuQuOE{;7kO0kjo#J~6v;B7yz1waj z!KXt`o%u4;^NmfhWHz1XJ(;gcf*!w~T5|N%9LmX9f`hJe54=j3p0@*ZKV$4}O*xC7 z2M;}X`Tns)UXCnh7!}Uo&=Y}cbzVZWGj4y6=5R@?NW>QF7aQQ>Rk(U9*M56z1nND# zl?{`AND9Uk=6`==IOC-E@RlpOxdo_JMkCLfZZYyca137I%y z_u(XK;z*X=sS)f|Wby0YE?^bI?=^4_5E|xE8Hs%K!Y4ts4tsz}Y3%b`d0 zgiu7ls3@I)O0m#;C&;5%Xf}H9NGJ3fL_nkpN)1I(5$U~!-b;$~5_$;;1TYloXYqXZ zdtGP0?>YM)*!-4&%eBUwYtAv}9QWr&u9N6oO$+oyhkrcFQFmzBeA(-BdO$>=XG1VT)vE@Ym_g?j`yvM9-c$rI*;S9i=PG{d z=1o0sIz6d4kivghFN__gG2x%A2$6d7b9*9rrlNOH~?*^W1KSrDhKU=2mq*txK)R^4;wQ=P|1HnLiLfWBo z=2yx+Ql+u~r4<4NX}9C5`gL%_l?AsZjf~1ifex6b8GObskH;x1{by7*IOqENah_^{ z%1?1x*_e0h1!^*_1PRBf7pDH0L&4PPN$=TryZXO#UrVq5ST-0{2olqbNtaM7jv`Mu z)iaDZ1kYLcJf<@=$kHm(-KeihU5*FZ(N=FkWW)oq!qFGr{W?ERP=0qba;ASbb#$CA z*>?Q)X9lsFL7VEJoT1OR^b^&}LiQJ`jDK1do69}RT%~K0c9_u>G^o;Xp|%>Oz|9$D z9hF+=g1v$@sKPTLoxj(pC*arMxFvTzzEd_jck>XB&K{qbT@;O1lj7f6a0WfGnG(8$ zrdIbIb^xl!_3|~2rJ-v)1HXae{&28a2#s@*d3HZ)G+PD2V6oG20LNDPoB%TJQt$~z zdZywA%5j4lADIP+L@sE725BZ1JwKj)*m=LdN=Lhj{{0U`!;y{U9?up#iC~dor2xkR zNQRfVOvPOe5vD;Gc&MH)l5$Lhw#yX*eOaAWaMU^2LK}uM1%M9>lhKjBHjTA>2ympU>j~jp+DTEx zQhk-plT)P&X--M0;w9@ow&gEfb4)O)IOEdtZ(Z9@S+Yg z1y}PU59r;MHpH@)gDe$Uxn`jKfnMAh3>Csn#{)$J&3d)EcIkk)0NuH-W?u5+=rLB# z;unsGhxx9IcjsIe|KDQu5A1lNA)fB`hm5J_>SPC>+wiz@?2TIihi!g{SAB1;mHilX znt0I03MDA~#ii}5^4+`1pn;yeQahc5F)-TH28R4#^&U^lT>!`OocJm zQ?HFDtay+Jp2kEiL?OZC)z9JQ`(ajwCP}gdF&lNzUrs|mMm0I*0uot;94!sp_kKxS3HBR(x=#H& z)1(F(&m%O=EX8~Q`{)8fyWae;X4kg(nJoiq?$M-B=&s^A0r~lCS^WN=f26a?r`@#T zyS9-yDg^HDDwG^jMmxWAe^xw(7+EWPi9;@p3ad{yu^ce5WMbLB6N7{8_s2hbvEye& z^Q(uhb^oH1Ztvgq0ig}@RQs+^%w|z*{MIjBWGrucyBXxSLJhOWBin%J!H=)nqPU9_ zA1whHo!+w-93sTIG#WpFAI?u-iNJ|1ut#Fh6*v?Wb98Ta2CNRp!?|@HSq?7+F8{RZ zNnn$+BWlmyfk`Lq%PmpEpn`Wx(kA!Il3J5thZ&h4T@bF4;}(#09K?svng)om5U7kzu>ht zwTR|w`|sg= z2feSG1Yuoc&rkf>=}H!_cpc=DJkSbbdgn@d=PWNhhujBpxocMh;c6ikQfeSK5}5|( z1BZxMexE6DkQx1EJd%cssXZIVn{)bR)QVe5Bb}w{O5P%12;9koFv{jpP*r)7|82PU zv~IkOk87}z>fhypIO&YOsq<}GGY`!27(ouu)UXz}9 z)9f^1?043ZQ^&)mBMO@iDd4>~GO05a8WEe9;eY9eCzETiJ(zW)nk1&}^w%vSh_l+^ z1q?%nzXHm%WEL_mWUF5NHsdl-6=%?Js&*pRYhWfyndXu7TXS0fXJlJ(rg@&DEhoEB zjVPD#VRVTKh0H{wLz5Ty)NRsPa_mjg@7;mI?i_w>RfuKv~Q8IE?(xVEW@7%gxia z*DVRJCdjHT>H(8FhE>9H0t2$fadu$2iyvPs$E|_u*$e&aaI@Qf4JpZ_k-EADcC^)5 z%dJD0NtJu(25)O8B=a&_(?VL@3$kL9lm9g9!|#Ys?7Jwp;L^E{IuYUM(1Q!icEnjLlZ>81vVl2ns$;GDbpN4A>(;* zP6Fxhc>mB)7BeYPBr|egDAV><)aY1^Spex2q|8T3@s%!KsKd;38lxB(yfeH>Pq|ZN zXX7+b3SuVfbfY;h&R@zjXF6u4hT zW;$9pVfP(Vw&h00)TCmu4^xT;4{3khXWWYaF$eh&IIOomfLXvUu(y=q+}_Htj4@EH zoXcX!9Y>BIYmA4+W#+`4r7qW;wX!nr-*VtsLG&3g3bl(8`W%b?-r2TMq4BU(LA1VB ziBr>hq={La$eMp~FOE6;7M#%;r%5I+vO}Sbrbd6v(Um(&1O_Z#AGDdH-<-N{xo$N`^l^-U{A4hzA7{_>9J91BOl&@B!mc72*Gem!=C}w^R1@wp zRF_NbU%eaDk%rlm>D0>1pIW+g-dFuJ9I#{mxazWl48}_yap?+kCc}#Ujb<-(*d%+n zZ+7(O?e6SrpF^g!kxGvJ5{jnirb)}TaQ{@YPm{yUGyM^P_<|X0W9f*k>&RlP zjrdRVhb+`H$|PJBfac+eUQn3=WdEx@m@=D#JOzThA~lk>$wuW85urUF5DQC;mEsqwm4G0M zDdkRwHyFmmr#B{$*zb^;2PPX^<8u=n0CHk;d}Lo6so8juq`Ewuf1hG4nm42IgDO&E zLfdlQKSF8NxXl|Hxc44IM6@*YpG?=dEl`-|OvNRvJW2|G!1+$_ool9D%snBcUmrMx zJF1~UAs|lfbSeKxh6%m)7aX9=fR4G4#L8sCEsj@}O)>+qvn=vLI$Fq!`Dx*_s8LPLC0$RR7uXn$1ByFlsi`zZ0z>W z3Pf9E)9;ydJ%Hs)IY@TY1!ZIIT6|@;g*{-jYrx?L6SPaD)*KF z^3ri)JmzVqW?D|%L6NVt6BSTrW~))P0kAzTt%Y9CSkU8QqyrSAJ-1o{-|2=kb1zJ7 zhf4DAIQ14h&_~}?P?jfR^JrfX?Q!h)&9@tyt-JaYv=q+vycNZZuWwgoR8b>xW+`+LXN6Sf5?5l=wqI# z2b~rl(ZiZM$wbu5!$DCNs}jvNSAWTZIq$h-w;Rf)-Xqajr294?h**_{f>OQ(3g?1F z8%PVoN=U&Z+F4+iQ2kc*pE}qt3Xg2@_#?UfQd&W?MDF6gf;mA;fsva1^v!$#TagmI zltE@Go>WC{29OL%d9G4-4zQx5R^`0fd1@0&WX!{h`}L-ZA1{h!ljDP>wy%E8s^XRs zl`TZJ_@>DP?p;NRPe&;UJ-c=RFDasr9I|X?nH-)<Z3&jZgUqNIjT{X}4c1hM=J5)!MWJM5f$D2n&}%q4OG>pMt*lyD`t;TpYm+O9~_Ym1)h zjj{AQo#;(GtsEaSvlpZe)i%Mh@1ej#(F1J%?Yf!jH!C2fq57bVzk6`~285Vy%{{Hm z+S^l3GjFU2b)mlF(diPSRebVso)muEYf{Asr&usdW9sPNKBE-Wix!~05_9>9nbB;> z5&^VhW<651K9eVPJk2F(o}~Gnc!|L*H2f$jKEbtB_1&vY zMIV$i&z4g{oROA;(SslR9hzvGo=XVc?}vHsxSj}(N_w!6~Q z@sXPO>{*C4V9r_km+k`mhz?XD4mld~KzgxuvjZsI_nnT?gxfOquLYRcu5*M+&Vc-Q z);<8kAR9Y8c;}ZInFD_SlS0NyDjUIx^~k;Pzh)51>`q9iHchs2J?nN1GiB}7{_h#O zZ=U3ZlDK{?#bEiyi)M~9KRy@X&iMC#g&fe{RUL09QNE2pq8a_D~<@R z?#ux9zDe*sO9ow}T7i!*rqXS^b!woFDL0X4zKjP8Ow8>*D5@&cQy0u$u@CteneJ7m zL%g1yYxoH|Zr$O!t=WB>&id*SII5>7&m6ak3hNX9gu18(b|H?H-W)V0u7s$FA$=*rjlRh@&>!*cF%YW$b zwag)}Y{T7WWA$83atidkmOmayl-5>&jl!SXVq6I!Zj(y^MnxJ8K7?}n{0}wvu z6I;G~Jlk(S9%_F;Dp}63GM;hIC=M+7qE+Cs5qq_@f)u^BMPv+hwptyGVr3dhIu0@` z=%-?rd|Oijwld3*oKvDD9^q58EECrhfv6|ep<6?-%fCnO_@CTSSMkP1rg_w>c9;445jklIlCH1S^8)7${MjEpw>MY}? zZ@0AOm!tMM0pTe~d|I5F`fGUIbo(lu<5O>->(wJ35F|;!l^ba$%h8hV zNev4|gkg>Ky)*{H*1GSJ%-BoWw%$c42+Jv#nZS2Ko7dM(jMA<=#Wk$-`(CEaRGLO;nu?t0(Czl;8q=;|PLa0Xy>7@$&>gsK*u8@5Uy}yh_x* z%vx0*S)=uy(LpH%1>9ux(x+oA4=)7Zy$R`EiuuM?0~QF;8CnFp8W3ptFI0xN^csZG zoxe3wP<3A^&_@ocmisXEJQ<_@j1u77>)$&Uhsb4lE15?B>SM^*gaZmQ3~T4Z3)(+K zuOOV!Dz2W;Ygb$LFK(HXSv?NSy5{lJzu*Fi#K$+KH)#1yQ|?5<1SGe7?D!? zs_raZyWsdnA3T_t@GTkH8)+uXA?jRL^##hJ^tcN(S~`-enTXYg)9U3Gq;l3bI674o zefqa^UEy*`$Oh*-gz~6BL}ENME4vWfY)DuPFsR|^SI}K@95Oxxq`m0Tj zz8hCwSNwPxq1ow=wRbWmKLW+kNx>HiHm4cVtMfN>&gkmy9pfxk=R#?8VSDr|Y-79P zD0%7YKF!uIS~h9tfMa(=fp5I`Pe#12YmrGqUAPbOcKk5I1@0=&=FaPTAvCb=MNg1A ziw`j8FRBO5>5{;*cAzgW~Jgv<=SUzY#3{b_t= zrkUXQs4L7xab51{>6x$*ngsz3nxm+bt$Iv-Ie_$T)RRIk77`fo)s~Is9mTMxO;KZ( zl<6p@bJr(>Y7BcYh@4j11ZAA2yX*2{(`TBpc4<<^)_>Qj zX08EqH?u8$N9I0s8dzv7{ikj!X#DborHVLfCD;$d&r;&rh$t#Q@1OY?L+>>V$Kk_3 zciXC@OsX%#?vzuxM2KTmTzmun{?NLKK) zJv-t}8UQWECcFv(_8)86lWk%1;QO#L@MBnWE#EedPhLSkeTr0!Oo)8Y!2n~KGs^Y8 zF9Dt!YLO}lD{E;E4c1h+S;7Y415sLcsgH&B3}H8;S+m;>)?dj*`(ye;R-u7AcPAsR zGdl2&@?6T0wANUuPxZzw$XSi^3la2`{(bU$osrC-zy%JY`H)wG(#sUHU-oKip>7M_ zRab!b(?Ri=dPVPthE6b{Wwj}F5GZ>Tm_mvop4?YnP9ygR3_!0^CL}foKxZ3a*qXmV zk_)ZxH7Bu^t(I>sQ-n$K3L5aaLi_0 zN<&^K`m;LT5Mle%HwI+8A!bw;;`qcyvGGHYoZ&hT+*iaHfaciW# zKeh3@Cu}rt=1cu=S+fF$W`NJRj=f%l0r8v%ZE;Yn6|TL^dq;LS+(B3v`3R(Fur?rn7!s7 z*i{0n=xM;!#k(d{QuG6`ZW-xo>W|gjZ?Jg#FXMTd7v=8| z2oQ>u&tVbYzkci&o#HEE7r_?0I~pa&P}ri;k*WODiaPU{9PkQ~p0=~G1PLsL#W{yw zd>@h89Ci7nDyUaB;b%8pT;({E^YqP?a{7{IN515d0v$118}}!Eb0iH%Np{LS*3!XW z)E)&V8UAr4T~r_2mrD8>O9sB-E^r3-8A-a#Xz~A=s3c}nL5@7{0K=v)G{00A<^LRj z-0O8J*jKyc$H1+7)gL+)siuE?29({P4a$`Qu_ZnhbDa|m>eVY_GuR)QjOUq-s8VyX z!zds(9{QW=cZ>|rYC`pJ9^0M|W2L<_>B;U$yl+M>F@8v)-kA9O`3ovMB8Q$G zWQN3oM4@(QY^aa3;jn$y+T~5Ue|(%+@LEmD&!VKV(<2OW0gloNpZPUzY?~N#RWnK+ z+Jn*YDUp-#Qw1d;I6-!g*J$-pwu_iE7bI;BxC99TcB1Mx}U$LHeRbd zvpEk%jit29jBa5WY_WmxW&A>OLuC>bj9UBIEN19otW@@3+^-p2S#emtQ%z4RnlfLC zblUv3zMnZs4Vf4pGQ1W%1X|?<85YumzPi{lCcJUJ2%6{gryqpt{3?yKSk4%o>X~q- zI8WF{5N$wR+(eDM{HTOtu?m9IRM}(aC9Z$!1BGA3NShW?lT}UOE`2xP!61Tfc6FwZ zLr8QOcuUP*c;%M-(^A7hYUM{0S1e`E^d|3OPB!}1G|V}Uv$J=Zt7wBzk7XF3V(L!c z%`QWJ0FF(@4}@6OI=Q@8Mxh*X-w`$?r_n8exC_~8vLUER_n0th`0`xxehJ0HzA{bu z3flxOH{;yC1~7t9Y{}W50UfVNhe$NL$Rw#k-qbusz(xdxWh`TnVj$S<_TGzQ3%$|S zDG>{1<0Sh;^=S?lY)6?59CDk6dnHtt{%%phCYl@@)C3gZn)CWYF8aKq0hJs+{LL9s znU!GQ9tO#^;i%DvWb~_uuvq21TVR18U_X`nWle5JGtZ8ZU+o?^eQ$GELC z8;E9Y4I2b{)@6nv@W4)FBd{KU>Wsp-XZml9SRAt4E|)HDI)_uU1o?H$0qaI*>qZbj zNx_=oyf03J&|PB`P5~)6t}MoagYnv?n%t1*Xb1}(qIZT5mJtJ<;FC4sUK5$IN6L1U zs@N(e_FvDEHX)LKPj89rvo9_12%(v@bOuWBrx-R4HtD+c31EmJuwK(;l2P;FQ^`LcY0FR!O!E6?`J_> zqSp6Z)4$^Bkz4G5eP;r0&0bV{MnOKwDE|8+n=cx*b!5kTpMm3{|1w*P%N_yR0#NYYy77Dfw?&4PZa zuim${uR6}W2O9WzN1}AlcSAN|bnQd>XB9^SQKn^yri52zZauaik76WaMov2GO7g54 zl__{xJ*Lx5W<(v)u0{2xa9J{uIFLg1xJ1EMe@L>xu=oR2ri?3OJ+jB%pg~|`SrQQq zcE>6w#($ke+^==BCLZPyvG+cp!i3DOFU_$&Wul#FT{7X^i$@jUz6HGCVcLk_Pu(qv zeZ@j&JldEez#W+>$&kO8`nNoJnOl~3RP`1}KSY~>R?@&#lhW^Jy_p% zFOR1=%Q0}KUYQ2&`(}7QN=ft2LHQeMUj-wuuL9Cy+pQ}v{i{1jYSa8#M+|cZo2C(; zGR6UobK}@lKU|I$rkU`aU92ljqtuiLSZZv&_|8ElsqGPA(z*!Hv{2z2mMk7l?X+7J zOg`2(Q{?ynSy_oK~A;)P2(>KHW&j+zuU@$V$H|Y{Tj;piw)e&u@@`kxsLb0$_Q`E&1_*#+zj0h3 zdL~}aT#$_;+ehqCN?nX78{x^jC6vzMnBegt{=LtntGH&LQIAn1;P<4a_DJc0x(qxc z`lxQBEVH0+2`#2Rl^rsq8JpwiWwAIrt*|D>kR z`dY4RE4@(B|Ed4ex!Z@3{-|467bj#*T8>q6% zTlPNDEzOY(z*L9Q<;x!5Lh#>5cr|l*i?-7Ni_5h?3N-13_sD2G7P^`dDXF*o8A$pD8^4Z~LbSlq=^^N~Fc}{vRG4 zDRlnJ1d#E+K}!W0{~OZ(6~zAp?Y}P6L%H(rFKO}C|Nr5Cj1)SL{(rmBe`}5Z{X+l! z4*%1R|8*ht|NRdCKb!Tx?vNHAcmLdsP`v4QNf=WceBwY(pE>S4CV4lBpWCz90#Xa* z6y=jut>v19*mC8Ab8oZBQpKavCK%;;l)!$g6Iv^|S^aZu%BiXm&~!jnlpab0O@(Cc zamlb;JzMsiww154ZOYoAzx{77^IKgZDxcLJY`6qF%pGk8pViAAEGA;^Xo~| z1hCh?ot<*UE!-VF!;f-(a{%0&y(U1^qMHK!?O--F5&()pefNAg_JxBFq7>uI&fEKH zb{Du;(Tn;^`5sq^S;oA|UglyTQ*+e4*u;b+=eWLYsDa*S+voH5h;l`AusCS<9vud7 zGixgJ=192|;ZD4vMnoZEcR%I;NczEJAPD8kQx53OD(fb0y{DXwCAll%5eXavEZQ@D2bWA68Kt3@YhcRAPD z^6poTO}WX z=T@34xV``q{`+(Twi%vDVO~`Sz`d~#0HQLkd)!CoE^H^OCS(`l{dw6-T?;j*WLJ}_ z76;)tzW`6bQz#vP4C-Stk_G{`W?MiS0bssu0RX_n2GEp_^ql}~h_vB+-N~%u^wFln z-}hbsW*9faa_P>8s#q9Y*=HqwSC2o;x1Ux6>f31vT6|_cMYE2QhW_v$?ec^@O+ujn z9CU^mn}nkc%x6{p<^0Cz^G_d{*uto!Kyt|}p zWAi;Q7$}3b*_f#OZi~zG3O*l(21=<`SYg*9LV?E1=e(!o`%GaCrMyxnCRQGM7|{mc zF8za(kNn_4$+ASkQ_QL@$^~#y6IbQlU@p$`I`my$N8I(94XU@FX>|AuH~x3vwC2Fm zMp3^#xv}J923{DTAV10`3E%D7owpa()bqZ{yzIaFExEv3K~PYT65G?$V>3}<{~b_W ze77I`zMQC~B#KFs6bJDC;xmE!8RLzC^;Di!8d_S?fW3`$al>BP`S`xd0`h46(nGcH z|MMWYxke&eA)zJ{J(}YCvdYF%eJ~d%;XQQ{f3TTHOi4W3RnDgquA6w7uhVzrKRrp$ zD%Ki(>W5-gu&P;|&Z*8jXi;09aBvYnJH_cUm7O7;_#()H`#xQ%yyw$$Sq>*Y7#M@~ zws!qc827`~-;eGN5!kvop*-P#kD>zS&m$qDGq2E*EK}U%aC^78J!KD1frH zvPuDviF(4afpc{J1%PaI+;3JE3lQ2hfNqi_WOd=ZH}?WEb=R1?>!&*QK3^GGv2i|w z;+V|EThlv>LlRIEXj)n9sz8GG$vOh@ILx7t2Bp0VfVvr7b={W>TZH*8et4I;V~0FlGd-KY3J&iXmo}fP zJRdYl#de(*v2fp^=g1l*8|uxY&ZW48=M(7L&bE079Y;|Z7g;}k6HN57v^cXY1byat zY|V@h?p<{t72}-|81b@RN|gMwe}qO^&}X(r){={yINzpI2k`TA0ty6CCQ6paYPO*CZ#56XlUrBV0br> z5c=g+tWvziDxV!2U7rA_l~EEkjig66fm)U8)l+)*7iuUoX|0LSqt-AwK@_vJN0x8R z?uelvicEvRXRAoP{*sNnM9=tY8xXsu0wT)v&#Dn=0B9xsSB{mL>W2% zsoDSj^^>g3zUrZg=~F47LZY&%Uq#MUHn39w5!|8XR9X!HwR`)sno9IsNlKdlk<9+C zlJ+<%sMGiRLyX)Nx-KfP95FX+vcg^*W1F=rkrgn|{j!*JB3MYyTg89QPnEELAJ`4YSx@IAIWdjZ*e3&knx^BWR1Az-t~7YGwIvK&5A?-!I~0g zsXG>P?XBHxU@I;ETZN`(tFI4e(fy0XFQzgqA(bj7JFf6e{O8cxBT~K7n$&w7)vH+B zFu(5j8_R%qkFfS%C1R$W=j)>{vtN($1&Y~c4ks}wqBAKcN6>#v?Mfe*y(k!EadH3p zAW~qn;d9$V{guYKPI=5&=>nvhfyM(F(DG(egA@8ixM`j`9S1X!&FuZ-`Flhh@DuCv zj<&a7ov!IjA2lhqz$&cGH$T})HgYe_GiiuTm34^ad{Hwu1ru?7WOoEifGyG6or5Lj z2t-SmZg|m$9nf>C))-5yX-W6}gHO6s9C}yIqTPv;3kg@XKYDor`99L*rXsdy*eer} zofN-RMo-j?ZiB8yCvGQ&(ZKKj1djr;IlWn`XxjQ%%H^frPvYlHIeS7)snfUc(P}`5 zzYNr1S0XM`&h*o~ng;9c(NbtBXCpY_zYFxs1={~?0t~XWPxo{uvVxkIQ+$TDpQy3j zTCfKahaX#ieR-IUGMC52twbdi9ab;0~cP+o_%vI}TD!RzQ``STO46!}d*Jkv6wt7iQV zyLxhwqT@>ac}C11jjR&K%G}b`^Vi=;(fAIW%#lErGPAs2K%`R3t_fwC#f*i@OMgxi zGvPIUO+hCD_``;#<8#Mbrynw(r{;Wzd}4v1+J|@mtmNgYN$04GD?!=-D6YsD1ahWr zPP0H_7u0hMx9OvYrmZ_rv{ z^*RgXJz&kRMJXTfmp`#=^O1^7YinN}QK37rQCd<^;^EIhE+NQg(pwKm4SX&XsyKJj zV0`TgR=42qF933hYZWtFkFdJf`zp_%?Tw#LrT3{6V8z+}W%%BL7G<75_ny$~f#GuGB5n?}rjJHQ1m*V2q-UET-gtTe#1SrmtU3z5S=Rg$Ko zo;w)3rt1$>P^o5m6h$8IWTSlljE0!gOfUMI`YwH{{nM`>&rR6~aOTbvVe4iP* z*RZc>0XP(Y&O1;sCjVu`89t)AyY0F;l|GuTp(#H--zQW*9nEpz*@!%C5*L*;l4xs)UI!-b>IQ;wieI&J z!yhUS^q)e-8q+$D+Q*uYOQRUOxo$Rju1VFG%qg5*=kn=SNBuPh_Bdm4KBfWNG4Z)) zG14=;nIELyy*$rAR*4x|z_Im>Vlk?^UW3ZL`3f^j0y^o(!3yZ6HkRvA^Uk@&DO%?X z7ZSnDb_!5R3}$UaDgL528;=}i3FM2P-_0nr|Fjvd&2v9$!0>*Npce4R-CWa{~>SHMG zOA8sN?1IDWy)8{lgm$alwNk4?_SM^Nzr}r%8Q$SN-yLWjP^_6~kk0+YHasyHrzr!i zG$R9PQ=Rr{MRdF1-lq(M;VHj-7r;81E=J{H<^clNWYf_177=VvT&lkq!ZTazbaZKR z^Y>M{4ERzQv+;En=fFG;%rJ3Iuxla#^1c9U=COEmG3N>wS-?l5#vnXCj}*#p|h%dK zrDm~7(BHQsY7h@J@nF~VoHJ8|-Uig@qN7KkMy`1v(HE9Ma^V)RtTb2q#pN@q0c*eafv#fazpc+;!b$jZkaYc!fdWxsm5C zM%HAfygz}rFNfk#*OVdFPrVb6q9fQ1aC^m#I=rTFK6@4qhvS(us2G@_{|-SzXd*m? zocZGRx?KdK$w)=vWr~g&@4*3{DfZRtS#~W~?WH|{vmv*Lp)zu*nG092G-oHO@O#VK zsZeN1_)a?lWnr#GhUnqhN^%rxLxfe5lCD`0J*SM(SDEk3{d)E$KHx3%P&`s znm9yN)dm_=J9A#ahY*2TP~i9W1ug!~=?zu4hOLzlSGO~5E9{2qT`<*ON`Zfe6o`I8 zpfB;xkytFPjQ5kr@>fT)P-!+-Me%_f6P{A&4D`wbSJ3N*>bWZGzAEkQGQc!`IJ9rq zw`#n?zC3SdE72>RXzC+)nQw4l(CN0!B>Kg-x+(ti8`jJ(JEoWMI-1@1{w;kb9Ljb5 z&p$cC`J>DJ>P2gN@^{1cSVdgz{(4_vw{;Q8XD3==5_Go1R(<*G*uiG_=kOKq37RY{ofSOIKO;)NGdsSa8Um1} zgS&Tw62BMrpJCCrD=^^<>FecBC7cK~JvuMFk0e}vN!`pwU;*!TwT4c>Q*iA4x^q@+ zM&0;@w{`%xpixIQighK7*%WHT@&VZL->IQ{*XFRU(5>b_?aOmzWMdf==XdjZ^sN9i z;LQHHWCt*JYd_8Dhfi#-oB@}|T@+C| z9M}_jK!sdC71srbH;s}mkc;8rm;;&4M(>f;V3G@oylacGCV4Jv3bgk2-(w%VXMBd za~UC!4dh)fVWf>qo1xS9THmOsfHT4Y}e|LsEWF3bU4D5&#i3@aY+xAirwC@9#`_I@>$8gYC-{b}8qtWygIK?y*0 z`&NO4R=YNSep36nrTNNB_XMSVuqEX%hg1qa4L|?{#E$Fu)U^-@4HI4TuV_~B_w*~* zymAcu-HJoVMs6L~DVWYv>Kbcb*WVYv@%k!TLh7eC558KJTaLo~`^yHt3*NDXz2oav z&-T*SKiW^f#91Hyr~1UH1y!hDFLZ5Mvs5hD+P!HmvT5~ueK{Fj?*S!Xp)2S1g8El% z;Y7CEPnf6c3QKiYTo+xv}Bl6yhu z`+D$3g{UR_#la4CyuLb%gq?O#l@lu2b-VQkK%RR*?Qyr}MaWc^VH3b?zHbW2Vzj^d zpJ)FXwyzKuwvXZ<0frK3-am&#KEZ-|0T-Fxe$$%vb&YXdYV?Y}8hT|KEutK0=2N>i z>SFPEo8*5tmG>#xuM1$+T481P#p)S08gGtwKeOx~9wl78o5nOvGX?gGgEeeOY55~z zE>O8(Wz)co3?rvWQp2V>`+HNCO2_e{Za~J>bn0hh=ReVMrBHj!;m5P`B7?&7?w>F^ zbGla@zmNJo-GNc;dU468mcy2RBB%i6VZZS;A9yk&S{&Q*;2fgmq zW(aH40Cu<>Cnc&_6?|OVEk78N{uFE{&{R^k=4*w+P?5HK=1{D-_bq6>Rj$HhntqFtxnb6vfXhPiXu* zfA4&sY{RR9lI~|Cc1A+i^JG|eM%1Cr{ih|MAu7&)S$O4l@TuL>dUwUVo;f%}}CmB}x=6*13J;1#(_MZBLM{4E^ zj(Ww&_7o56J_a8GYRWGZegGm=^}&do=kIIVdd(G+vDyd!4@p-Z&-DMtH)4*M%2gQY zAh}9zV@T;jNsinKxtYwI6C!7&Lar&f&)oNYRA#Pn-)s{$8iqN3AK%~qd+hP~yg%>j z^?F`daWJ7Jd^jNoHeIgv2LrRb7}tgj;Jw63n$wxD`2?8u!EN19civ~+1bbtiS^2## zf%tAT5>-(Yd8wx_S$c8sg8fU`PuBEth04@3=KwD}V_9i=srLO3AU$tT8VpcRq~)(H z9VSj`H|WmUzsiZ~Qzmv?)E6whR57Lb zu0Wg&*~&A_8IM{-Sc)>JP+J0OY&|uV$G@GL*P}}l;w|SSy~5nJeH9z=?Gv%##81Hh zPEsrJ4Z_pDP@b%Y{%(QJQ4)H`yTRKE_aefD2_ zU+T3z5^p$YJ3lsEgDybl+{JNmKivF<)=485?Bt%k@hodATTB!y2knix%8ObzSY|vI zY^-sZ^>BNCiWX^FHs7r_VZd|%^e7yv1q5U-t}FTen(;4rLMk_@^ES2qM%xll_&j1& z;?($~Xu`XK{lo_ICeTp%{HsK1(B5@#Gx-uHsbHi~9tb(Ib>Psv zkOl5ebOYQ433Cy`edQdo%WD0PZ$ec#rP?p+rSkt}@6)=uqi_sNJ^&InT+>zHzpqH} z!F0F)AF-uRPrbg~GFS%!$@C-)K6e=zTYLm=7vh+{`IGNh4h{SXq8c(P(MrWFUl7Ol z!%LijbZA)H#4;m{y~d*1Ga9|Nh0?|#my8rsAi{p49|YFCfxgaX)J%bE)2ha(=k_0i%9IYPDjWy?^a;6k@=ETg=R+D-9N>)c+E2e9-@J$U0)FSqhrHvF zbLdl0obRG@7{8hg#ekSfn)+F;Tgq@8YX@CBsuj#1LPM(3M9 zIqw;vH#xC{FAaI>dCTE{oue;bz778n%W%O?~aI-Bkz!x!1bhG601C4^lvanYQxVGiKvQw6@b=x8puQ_ny3-o( z*u5Ea!zx$+a7qZF|EuR@cs1o$PZT@WaKLZ9|6R5r5k~m*l)}D5t79AEv+{~X?w<2pul9vk2$-0ckal$j{Dp=f^WG%3053oz$Z`{8OeRfe!K~wHgK=Xc{!q$CV|kAT|PZ8jA^?-B74 zLjPuQ=r?v_%u+1<#9j+WAAe$|uldJ(dFo~|^Y9h7*A6>tD5vADbyaE8OL||@Vke(+ zFFa@IoDmuN(JM)Hb_ciPjx@`)aAt1|pJ+g{OG!R;R6k;qa~p$t*6T<5b|^J0fkSi zrz_lsTI>I)u5M3i9GdR}%ccu?f5^T_o1KZ6>Ytal=k|bo?l6jmP@>8P?1)nxmmF|s zm!#K=Y0Q+FuV1Al{=+fuGnMXA3+;?d;Vk`E90}9Sn}hdoK!xRW`F;}DzwJGy#o5La z7lD*?`}VSW?`2zfoo2pqN&1#AgMFFVGY=bbFZ%*`7_ejAc@((b{_6q1Vrh?rTsq;5 zp3?bvVoLf_iv)u%(9n0bNiTIhI^p9WO$?;mZ4kH6{6|L(_y#czYA z8k_B>ZpnG{dr$%E)ubW3l7{~ITEj#Cs@nB01-$_1>q;&$8B^Qu8TuneeW${nj{#y_KK+eehIe2IFu!=LfeWRaxBvIc&0W{=u9WTI6kWYdrigl>=`- z5E`@$bh9g4Mtd3ip1RlL%{`Z52}{P)-}4~7sHN_7d7!n7Gwqpq&ddRGb8G(kMHwi- zdso~aS7t6~^2#6}4a-A8?Xjq(O&&b+GhSY&p!IiaOf$t64%9<><(e}w9R)-crIUTu zRK}X~I+?r)pL0X1XYycmw?il??zPv+&huSV8x`)gql zAT_*i(GORLrU0f~~(EZ3Il>aQd zf&OQ;so`QneCit5#NandOoSD|_Gq_UrVO@JPcDA87o^<3I$o~$8a^PWZ9`s8HvM+E z4nb%fwXOK*rTguDL-=+%liMc2Bjxx!Yw5ZjCxJ|lX>?)=&@D^`%JC$q+UWDcNc)<< ze^aCa-Xr_wdtT&ZIJcfjise@3l0o3Nw}sc!#RwDQOo!s^yd3<{4CN7$*Ke8H#d8$p zZ>V%zHytMLYJ*asd^gM~Mg^xM7Y{G4W>Cu=5lzk1O+%ieDJQ_hVfVu6I?S{T>86HGC8f+R5B{e~WR;ks;MFUT02uFR@z!ng)a|`3@&n4+iX9 z;7d_>S$tbDa49suq8YHh=B+rOYPTwS4eu6ikRM69bwr**4|0I?qXy=R;-BzKrDNih z6pNPAqeHWab&SQ+o5Mm}Bs<~tQmj8Xsw#y;^SrFhD{>sXK>EiB`Q)Mrq zNY(aJM3We#pLPiWQ(>Pw?vQu0KVCQsRh)fm;FGAm=Dj6f{kh3%v)Vcqg`$3v;#L1a z-PV@vqyv8Et_3xat=lrJ2t4y*`!uo*Ch!xQOK<;|X5zbp{d3#?a9<~+b1{mM#D9Kk zpCdzQLzPN+`djNfWiI-*qHT7>sGGjF=e;l`1r)=xKF9oz2bXp>hxDba z2Q$(~ggXA6N$OZ&H-9gIp`~?lwA^TR1W!AtbI}Ze)jZnOtgp#NDTD43Ml4WiLJ)T4 zVR2u8%CzRt#{Weq;u_y}s^&6NYJ?dFUY%Z;CKI(bz)X(1T3p(_g)jP#({;VY&dMxX z=18sJCY``=!LJ~z!;IKERi-&#eQSWqcbBQ3wY4+h?_Nf?KtHftsb_Y(7WwP#9$uL^QlEAe zc_XpzYdGbziUjb_t`q$h=|Q60QQ84ddSzhG)ke54el1Ob#T~PH;D{WAdHz+d#M8lu z3=0qfI(R$d#?Pg>G_~iqifM|jV{XixFq?EBK|!E+t;$X~s+UKgKk%UcN-jzqEON5H z*s3|tA~M%w`K5h7)`l(b6TmL9E^t`EOh(SFk`+f{c3>p=)DQvYXuruHZ?8?{b*Ar+PrT+`w5bv z1G8H-kg8e4@p)|0x_T}2W4gG{oT>&^EGOHa>XSPx4B8+7*;`Rdz5~Mlx|IF5&7p(P z{x#L{&JYCRXa#<)<48RnDoKyVPXJt?W=n1;x@ z!KM4nORLZ#UAdNyP$_EUwwD5)YZbHyh7z{-TI8PaOxlq(k7{flL+h-#(+W}zTh;3S zZtqU>(|GFNt5Vz5u314iFEXD1*eK(ZE?%W)R}%D_9NU`@czTannm#8%Dk8VlUGISX z3e`xD1LLdUOr0!rpNScdc8*SF@8E*Un}1y&^uX7;%x9>8KWZ{yQ}g+rbZr)bot4|* zLU7tO-b*r10g|9ZAR?!8JbiJr+9bLbaAf%!-26;u13We26pOyc zJyGdgy$03${j$ps5C7PU0c*SH?S?Q^gsINPKA)&sQ;4sxh@Sb6B-+Ri?_Wl*X;s_( zW^B9xCjp+Pw`%hfX8^j)_=C!$vUf#pF&XIuG=H z(5TmPqyvozK7X|<%C&pF#(xeOS+`_$C*=KJ4Z&ikNfn2FTa^;o`WZp?T`{KiOZmU; zsh^6b<@)s4H-XUi@`Fa!H-MH8i#|Glx^mJFPY5Lb$FpS@M+|KtfE+9H-r0s5;I#P{ z$3B#6Y0FjJDdv+Kvw8OSd-*b#-fSa!L>YeLy5oi23+m7CLJHj{YX*7&WNw>~EqaL6 z4DAJ?HeKswG3iZHy{G7x?vk30DY}hsF=Vi5F2s)&O=$i*)zOyxqCOChVn~QBpTr^@f4SxKipKvDfthU$$wllhr4GnLEE1~Ie+G} z^qul=%6IhlO=!2Q-xdpz`UxCg_b)^J@<1xeqvZ~G&L!*+t-fZ#HkeoTI4Q{y<{eC- z0+rU_F)ae1gLOzgt&%i0@^1$DB7%T@HygOU6M%RK>8)+g{}`=b&Ss8ZTGj+M{*3Fc z*|pT-2rXq2(aPibeJ$FVu~2f%6FY!YA;$>eke7EFzV@*}IY-CBK%ma>@aeR<-`G~R z*OJ2npyi3HPRPz>YXC<2qYGH+T&t4-h@f}4*ka;_`}CwYd2$R$e(Kzg5UV(jUn69vxP8~zWE*TY2cGtB zzo;h+EB4Wv)30~DkSVNYK^Zcc;kWl3`5EtTNn3c`3A-ms#6r$C)&M|-4R2s`M~sl_ z^d@Ow!oPTq;`?-{5G^oN9Oy8V;~oq&3eMmLzx{gfXwY(ta=c%CKS{b|(b-t4Gmn`E z%zmd%3ad{NjOy*SC^Itz^J=HxKM%8X&t*=q^GWwI5q%>7#@@JX{H2ElHGDT8BZ+>; zoZARqf#WQT(Ey~8A3%72#6x?(j-}|`RX`G@uH&26>y!a7Q@a}oUqU@-WX8GNlMf0q zscu5=eyqmfswbWGR1a8EXS}IX_GABq?HEab(bK@CyF9d4G9A8lx_H^VJo^2+PWcDH z=wHAFvMSEt9W3nKA~zk_&pxl2lfMrHg1At7#Pri$+AA#dDph%Rmma@BiN>e`ltg0| zMI&5>KUsOjREBJl#8>_Hop|7X^mA~XT(IzFW8MqaIn9~xt~qCK_=e#w1kbj1<0?m{ z+yJ_YZHm}h+{?YQ#FV2n^g~^T5A`kkbPb0kwmEfrDx3XI7PG;{$*&%|L$v(?}n|wb`TKM-QispVpnS(NYL#Z1{QYKO@__(h~VpVul$6> z6IckkKSwX+`E=f+cE7ef6*BDu->t>mV`hlLV&E>c03e0;CdFQoT42HEWIKpkJw0ab zzhNSAGb3dmxUT|bc;!uCD0;8xDfq08M)GtG4Gk5ErEObNiFjxwqc%6(e=eM_H~T?~ zRtdmg>@^2!>}#$(#15c69rMQ7So2t9apfK8ASWZ}y8)*!c`W6xrt1&i{*5FVvxZ)^ z!w&Y4QjV-M--D)i6H~e~0tP1i=m)Td3?aW}WFj8-*5)hj7~}O@3+J1WEf{f&d~s>- z0w(=AF#>&;+LD3(Pahy@14Qodi9VJDtCehcS%7Tk?Y3)nRqX zPnJXxAgjQkX{^@2WO=MUgToFQ;l_NBo+>ANh5ntoN%N(C$c6tW#qfz?tZOz9#KH6lmIo*R7S96vAHt!I1vkq1)l9u8(1ZL{!swD=|^=O z1Z!w?FiDlc8@Z;XQh_pf#(Q-b?&RyIgpEIU5Q|KYzK}CO|Wosk$5ec-R#n$q;~01zBKt?3%irrs^uCM2XvL zW92zaL44=*50!Pu^B;rz8fx~DgnLlzrLV`)Eys!tx#R3Nobb`k?Qj1tC2hyhq~zOe zlXj2A-Kc-os*KFCzPKe?`h=oa(*6?Ym#+SUKWW^1;Cf2Ano|GU$#fQ#xdH5vugB^F zjVJ%%QCE)|9bGUx}2JN_GnO*`C!HjS1#_1%fq9=~iQ*c*lp~?q8 za{w+={^LB`pNTS7Si44`s?;}TE zyXkx7|L7er5ySIKvMf26POBZ&_%)u@c=741Qb5D5S3kd8Krd=~|LT#IeQ$c!Gda}U zb-5SgY65vkQh%oCl*9G0hpZ$_{IBw^GY3GYPV6$~UVS+bRg!#6@Jq6+c1zm|ngJ9D z;ZDo1A@#t~U8M+22^p)VNwveB1y9D!a=g0ghl~ssOe93O>(`BeKGZQXIo89DOZJuo?`cxNipuh0z3@v?_Gr?tCxzE#8vj*Y z3HGU~roU$!F{998OsSGPyqih_itcjq8at!gw}1uVT-=C@IUr2b0NvaNI8JvWu@%H6 z{z7#%r2EgBDz3LS8n?Q85BK`P1lx%VzF5A1<~DM*-&FRav%mT*?$}RO%k_@Fkt;M- z^C;^{pWOS)C$pQKozs8I66*?Q{#c@vhiW(!{kPpTk$FLQ*yU?-5f(| zd=BiXTRSi8<7fxEG_rs4Y7&Dt%*jGy)8ut6Qc&bQgBw5#sF*h3ldv4MvjA|`Dp|qI z4bHxV_wRd&8NsmXbss`Uc=ef6EovXPLxrsaf%0p7GX%)sNdoje-Pz)c)xr~?##P!r z6`!K9KL_v`!yu5!44Q7*j4?>^FWk#aC~x##W*Y*c35P15%E)<-I+h2u6GWvz zh31WYH{8eij&E(}l{6YBceBU+D{)mq^$Xn7O&Z+OeXq1cm6kxxpejO+>w}`bwFf1K z7o>Iw4ihNywb+ROH=2M_fR=gw08&_)X)Ni@5Kgu7b8@xQjcY^pQYR+~^ygP`Ik-Br zoxPU&Khp=dlTX=+rOa6cCvvf0{NBOr9i_Crs@T@B5p-cF*9b~&&)@niI|isUNbbS( zl%hwRG4ml&M)EY1C|=iiwSSRJxamg!6u>z9sf?)_p4c|QTJRtYq9O88V!N-rmw`!& z_zy55CEnp?pufG&<%}17ySZA9{|xN?$pGt0W8DuHxcP8}RT#**;?U;|&ImN=SRN_K zU_y(eqlu%zdqWwUvobvV{pb>%XkG%)4C+t4)6I>2ihus+oh+>}Z`qUmtW2B_S?@ZK zcBB9x|2K?g4qCidrY9sV4(%rUh+o)P-0`|^*SC))Xd5#)HuR^Nf{C9obRYYs-%CFR zj<7+h^-u$0;L%z%o-I~qJD0Q)Qtp`RPw%$*ANt@f6Dn!vJ|`oa@lkUvIGQ##Q-c7#9P^9#7{42%jC zgdML@-7A8J^B!SGavE<~NG;ML?=x~_r!jihssUoe*aCn`T;R$*0wfxvk!-w1hx2iZ#v?Mznx&!1W;jUM^x4t9Vw?5rS@=|Bp@tn%K z$X)paM8C!yM7dcX{Eu<-i#IR!GSFT{iILgKhJ=H#GkTHBfo&9_CSyU>@rKh=+7+zq z=9=%W40PcD<>Cgrz@^2mzQcgqqEo1w*VgF}p{r^9r(4%gi4lDV9*X)8EaU|)Cub^S z&jpJ94&7#~<6tV8ngre>r_apsX+kGMKdY%&bs#Oh(f%l8pHG|(Fi>&%Rh5?QIuf+a z4{zd!mAy58a}%(>>rPsqr~dacvG_Q)rCwF4RT4J#_||;K->^3>&Ht|8edU>^ij(fe z?^nOD(HtMfIIYHjp}rM#ISqu&CZ#bW=E2w5J<~-Mk6G*1k}(1QyZQC{gLW#kDkgis z*9Z5L6LsbJeFIU0ma6Xme?v9o{+9r^05N|0c3S-dwuiS)b@jDTil_Y7_U-Lq0%`n* zR$tUi)>{Y-q(ygFG=^-}w~+u@yy>@2WmM4_7H=Y2hi8Nx@Im@Zn)aLkvc2}o$D_Xm zC53)~*dzZ*k(2g8d*;TmXzN(81^6i8d3^A%z$J#0INbT#V+5k2gwd2!OZ;TF^DvLK z73yT)ua!t%R15!+{!_SC(goZAz*Tro%r?x?BLIDW$r~5T`&(^8Qy7D)UJP~l2(R;v zAV;Q(EmT#jbi37-vl3j+F-$Z8X3`-P4S-ppa5bAE&4;h`y49|dLl&fSw~e3mKW_zui0U9 z{0QP_OY{@JUkNgh&Nn)e_i{jKxpfo)~U?#1mIK4iF4=sLYUL_L~$Kj=$(SiO4jM@q|aCjub@ zo}j=}=jDAe$=#w@$`4joBJq&%jZsoBl*Ik8eP|WgY(r!^Sf7 z!NIL3l;Gi?WNrC_bp{XD`hXYgc%!45t#_q#+PQHiMoVF3x9{PKF8^Y7v-Q5lZNKDu zkKbsrsvB&2vei!T`TrMlbpNL=XWw>%e#G(grD8cz=8e+rA)@5>iQg|qTkoe{&+&M> zI&~yR2ymw+zPWF`zyHiFr_cOtK@H4qR!vxO&4s#jVJyAz$M)y3ZK_NJ5gklReMaE&@K?5dN!Smp-5x~$9m5jUWp4+(OI&?+f^yD=&GVVjqQoE**>A$wS)#EqD=2z>{E6olH_HMbJtqq z^0ccG^Wqr&pb&ziN#_3V#>-kZMj*BR;Hb!(yibJz`E* zbQ@~tMSEkRAE@*G_ch!bfpw|t2BwK5p6^UKxj(}MphI1D5 zq%Wb5(ceJz`#um$<|Z=PdJVcKcxGcA=ZsKV|0@IP)>enk_JCEO^JMv!A&dB{r@IwE zk&K%_bh^ajsVOMQWhHJQioXsL*u}N@@PwPmjamMR%?k`)ut@eDpv|QEL7@eGwwdvy zB}7`V1{}&6hiTA-=^^4eA=}MBVkZ)vzMBrNi5bzkDPnvdubDd|ckec%y8ko)Vx%)! zK<==J#M8_-l7j$*Os`ylv*t5+YJvnvJF+Z+1d-?WciZF55?8O+P*j$}R1f0`^L>wzI7LPjEDK0Csr z`8!vYq$fZh|Iq(}_x35q&x}#{DkE3jB>1P_-_gGkTw{1()bRi zpih%xQ>u7;-GwBG+a{F9Ui*$nRw7$XeVx z_{^AH$)Tq}xzk$LE5^DKUGs%M87Uk#>`$yXgdF0J#{D^ZV`^t6sDnl=Qx0Uy+Xs!V zhL5PXJlA(oo5f?_5>HHtWulKe>Mrw+z8)NkL4N1g_bCKR65+tcX6K zsWzegFA(=75e6&g12kjjW34#PB~WXZ)Vl?giJ)~;5|wff61hsxsXGz$%tnL>-98=~`>^2DWx!$Rgn%+QC9S zv*TBa39!Fc+IV430v!F|2bM?-LbZOvtsa-H`ZoG#)Gj{U8uXTtQ*gcZRp4>4&my`W z_Yd$MP91R-02~FeXU_FjN#2-^B?LBv`@TX8&3(L37y8GvAs&^y!k!`A5bQfGbb^~3 z1gZy;E5ogMdKgbALq?*+`lVi}9c&I|K4yTZ`kqOS#;&`o3lKQDykNe(mqE70@05?_ zerO=qtryT!I9s98U&L|D?ljH@Ay6atoIpmKA&T4aM8I{2voHA!A=W<*xlW%4D2-Jf zoQn*jbCxa|*m}JaAgOL^&RUdG(^G2}tNlnOY&{a0;c4}+kvP7QiiCQt^}DXB)z@fIjO(bS$6!m6@3fHC+~dWf^N9`I$=rdzI4Z(W3> zDJE$=(w^L@abO*zMYJIWtKYT@BHgLGvagSMgWejl(rTM?7&2M0?^lz#u*ULq%hpaw z{F;f&Ed7_yezC1)Pi#VGeOuTfdw(=%h%{dyZQ4$3c*=^Old>BU8gUxd|HAl|?xsUy zL>S`5blZ}Gc?}j5C$M`}Ftr!imz(0Jx2r!b#um9H)IXC`f31 zZZ3jU-^;+{! ziA|{{CJQ%I{r+23F>zx9`vnUEjn*=}L@087U+u2^GgRGE{{$d0>%0XFwIbTEbdJ8) zLd7X<;hJ+Z8C&OUi9EU}m~XN3RF{;G8s>D1iq|UlM7sdyrDXu{{bZXpF>aYZ>Mao| zPrSc2Cp#&i>D|a;@dmTTGd|-%qLgV0TSK3--GZDv;?sC-NvEK)W zn6?n>TWUWMC&hq&w}`DD^dsuy%4*|&lj3EXs%^Xs zLmPPS9i^M4-0?^J_TJ7|JH2UE2o?R*TzG-;9^S2*;YBrtua7rm6W>10J;sTI2 z#!~;%(%X8=5r5kuK)NE$lP>IXMyTJSN8&Au5|{lw{xad3FJKkxIj!N1p4a||Aa2-f zS`J@{ayM1DSwxwniLp!)^q!5ht0`NE<&3ziRV5_CbNN{c`k8QXyvM@2d63!;M!^Fd zS;I!f2+1-O8s$H}BJ0)KdU2Mde+m4_S4atRx7{Yr|8&dqKGRJPk-rdckzCu(D704o zg0gXHeBk<9W*xgy@m7Y=`k9^k2beX8H?Ndq8cAQsj;;q(L4YmS^M9yfgEz3J+uuM{=( zd$w1@&m$!6_b9BlsGAGVbFGAF1L0Q|&stS@KNsI?1*<%i z?zP!r5J7hE`_5Ph&*XWu%gy8)&ZO#b1onO^_X&YZVs8R^unpbAOx}eq(nAfN$q^PZJZ$J);JW~@$2uG>-%%m zx%1@76wPi>wneVm3$8L|?=LrB_5GqS@ZKCH6je|E{5aV1CB)g4M3bd=dJ3^XG@XJl zuq&0XXWFIn8JK>j%vxUVnAEw<6+R#2E-RB7O7X~2c6j$5jfA6?WE)t+S`u znlC}B5Vgb8f;SxBtran|y_n&97Bi+Prd-48)ZibX=3bl=t#~|QI{~^Jvj;qx4gPlU zbV2qSilVPe$7fJLb}F>g>|KKKDrB>X@fJkOx`7Zy@0C&l^{Jx7bSBA2id=``y|5N$ ztDOenesHJm+UDz+eFaF?#Mn4X8S|!Y?XL45*Y6K6`UF9O(yo4+Tev(n{gSspv{f;a z${DtM)W)z!keXnuo};2>u2s0T|7oG*J$3o=no*u%b!8d_$6DdMZUIli)|;ISMaCy;d9jJsFYRFrX~xN^n%3Kn zp-4oR4!i91``l3>X9TLVnkDvS|5C)PE~Za3#-Aj%e`CCMgSQ^?vf+7*F!5XfVk1@{A9w)&6}_4 z@ybsM!SF{PPDYE7)i2JBhbYaiIx&@kcwbBg_3ebU*q{@GFW{fjYmahYA-l>I<>B1peZHYEN#KkrTT`WtDm-sd;L^(V2m)?& zTgcgpDTjkE=_#+Cx8ySNH9M4D1WlpERf&sl414>mxZ~fNW8cxlEsYJ@Rac_Iwl*+| z?_FogRBsqB@;d~>Ah;w!efa~DG5z1S5K*n_kjGfwl2ZS)^+4KLl}NVNow!UvPquu3 zIX=CrTT9tUDtIYSP3Se!b}zoAGxdpUjfNDJyX7Y$bb@5XLBAX?HgeW7kPnP7(ulJKBQ<^)hew|hhBpz_H+s5} z!{7!2Wi*Ob@<9(sbE}@lGWwGpAmw`L zh)*NzDmlJqEj(ps!@0;J?+ovoRQy^YG(`Hd=*zckv@k-$iXm83x(VpF)c$&!m*vf3 zzW!Kmy=^3#gx5F0!ykFp`S$X(beos4+%%#)PMr2!AWK=xoW|aEa_%y(qfcgp z3cDkSdo`9-=Ox;79@pGpNxT4CQ{Uj*h~~kTBU(1hBmE3^)G}n6e@(*M59SClkJ&86 zbS@26QiYZRt7jJpxgr>{2Bg_eRLA~QK7}_evKP>biEzPG1pl&fb_~8=a|H5j!EaTS z98w|BOFooEM@*cQ$$n^{l8@0;T7=wbEO5lCY#QJ~kvACsjxR03s!9D~kN1l%g3~0X z5_0g>vayM$OVWOw>S~W2d3!*VHZhx3zSJNX*(LXLw_7juRPLNz6Fa&;PZsv`(oAWm zUp{Lzp`0~5*B?P?dEM|bG5-ED#>|c}%f3In^B2+*)TUO|HnXd)`@s-2kR+gdwkuY; zE`k&QhPJBfM0A?KsqWZ<&RM&Ntdh^v}DsKc^`$kX& zJ#5~mc-E{ClqP;cf?ob0F+KFclOGO2t8l}DWQ&&8o`f8a)S^=Z#l{`Z4(Go;T!Hzh z2C2BCH9=`)hL=cn<1bpGQhTT0B&4Meh?d?90m1t+$t`@)N7BMVB3D)b8GZ&3u*BDf zS31*}4=g~=eXtj&maoC(8;ZabQkQm7)tD8<4=+{EpWh60A&mszeqlX%1@R9`PbF?Z=8K57(XD;HhtYSsUuZb3@pA@ z6cCdF05 z^^d%9_zE!RSBxy1$NYjf<~jM*r?b$+`PPiG_k0g@(Kb=~fvV5-a$mjF{N2OI>%d+6 z^_=oZXt%r+ak51+;}rHphpLi2?8;B$BQijekHwhXxPYJ5 zv{_Jq|5C%&Q!H$5W;Ox3iVUkP1rJS(-U$ZRH8$kh&A=ML1K`x@@ib&2y^)9tJN1`j z%^NRgGxuCxY%08xezl6q1^Xap`Uk)ScG}xHKD={hn*_KV*oMEaKq}L_gCK9dx(9Bh z8r~^*d~9;mV0f}2;SA}S)xRGzz6-GdIvb_yL9?qsOvxv`QDyWDg3q;Je}EZuNrV!W z_0H_=%&y~Zr-Knc0;p7ZPW0Dm2x94)m4yr{8MOtEI7@jK)z2TCKLwgPf{VpBiHzvo zj8%;Q9gx7@u>9+R2dyDyfG>uVp32A?)Op5^-bj%-BLy`1y>60gd|+k6mwmcxNfj*Nr>3ylmYg@{sb8Ps&L z0l_ViMt~6yfBve~A8?xGT5*x!^wO(IvDE|?j9#5)ksu=H?g1ZD&Gy6T$vPxUf4nFH z^*c7in|MdeA>~NM`S(<3@x(^M~Uu>WPQ|t?a9F&CMhmN#7&f-GR4AQJ3Rc9%C z8i`LL>+AVge-TW=J{g9m^BPK5%vjadiHLf&guBW?QWZ6J&$E$0=@>n1XgCnEnS_LI z=F^Pnm-&QzQI>aS%SDLZzdP6&NoDC*M^qa`&XWU1Ced-PxoF3@A2$xc?{7m%7(C(q z$Z9gR+`7H(fo3thA*vn#Tp9OH>CU(V%7u^1ZJxy<<}7^)G*cxF^ILlxyZ}8`T^x8| zvDpTXAMvf{$J7U61eymONPMrPVpYwAauy=1Z3R@Muow(FQ|)9uGmsI^5FMLZ>-H=OY+ zfG!mhod}bix3wmzZ)&h?jqIKjZ|<-f{p4%MFTq~fHZAszl@y&=bVFF7_ptX(hxOd$ zW@jQ@$g~-S>T^RQ(J2Gs<8bZS6?c3 z2LYlvbw=^8X(?#rgjdX<_-Ud{5)-Bjq^Yi`GXXjc%ETHh$^;SFGQcuAyXLu@xF&Nb zQaeOWE6PIHBlz!$432(sR7dUI2__?8p8P>}mQ9*38G|@Vit33ZSp#6Y1Wl9aH*ac7 zHje<>LbmgD6tS7IHp>iPzB72!JU%Xky#93ug{jAfmVF;2PR`tQErI+sr9(fl;?Xu> zA!u>Ir~Be^u$OJg0D*_zcOe`<{&G!tYjRW0M`u2l&GMYieCmKqL*5pHV#WD`MNh_y zzK{zc_bxuI^!b{0LG5cGyUFm?$(ko-ah`B){RKIOSI$A>UAzv|8N0`fN74}W^5~90 zt6U@xbH5$j7-5^MJ8As&tJ{jqX-NO4mx!FUTB*~^DGB_;CCMGni5fA!DVD!B3JHg{);;8X!ci zv1Fj~7!S7tpY!y;3Gi?|d1oWCqIm@=oL3k00@yL-24p7P2bzd(sR3g9%>qoM+rroh zh-89AxXN=YKNjzeTRFbak8e&A%`>Q<9gLmzs~2|iV&FSG-2K<~&eeZ1X(6t_u)wV@ z{FnL)yu z=X|8?!w1>fNoA=80H_{8zCv(9J@Q)jnQj~?q8O~W5`#931!W2_dU($-fO&#XR+&RE z?G>=t8N5Z6B7O0sByEN0`)$yoJ4$vq|g$}^UWA{gdzu!->x zxZ25SD`nx??v=GiY;3@rrC-&WNE1t5VRKLD+RcSg$XBdKg44gVks`TS_y~QY7UP;b zuh^m=Pl{!QUu3}6t1nG5Hbf}GNou{9kUvqWk>G0C$B!_24zbuy#vs1+I%gx&QDeKU zahAU>#!{AX^iexD@n|M7-Q+yQmqyzu9%w_G-4gdMFEq6Q2|ca#3k^pEZ-{AN?V{C8 ze2j8ZDwdNAtg4POn}ecV#GR&_Q0eMF7fq;jTm69Qio5@U$|p=5?sK&gM4_Ayw(};j zT>R9j1+Rb6rny)R-&^+fBBbpd+awN)nKC(d8Ar9H2WoHUR8m=3p$v{)uf-;eypDYS zrkdNV_vH>x^)nu(Tg9<#Wl2k7yZwrDr^#wRGWAD;B5W5_U$Mim+>l1NSf81&;ktZ|(bUH}FgnGypmYIFf`SM}b_2vz9J3*JXN>Bxfsv9r|$ z*ANr()jN+)WAutn5I%|v1$EbsjCEB8Ezmwh>t&T_9AXx~lscx`$H@(ES6vu4<+~lQp34@Ka{`JkKms z7Q;docC&eY@9SLc1t5Dk|BUNgmtW_M`!h{87B+^RR^=B=#cyG?%kP?00gmeRmjbBo z)2kA&`x~{TScVUBlwQ6AeC_47fi%84aSZHN?R?M+VxXQm-`nYIYNGv*??yfYubs9S z)kr=fELjP+-mRGZl*P)8#3FfZOnNhU+h0+FOKCs0h3auJV>2ntQgvfG*P8S-xcjxu zPh{e=HK|y?}{z5UaIv2h$-(~B+^TuO_sg6nMX`@@h zf%^FVuBM$)ZhWph+{VjyV_wZZaeXIcRnO6Dh#$q@)D1&KgTUyE~*I;)z*F zxc^Z3Rp2UH_Q@qx3}@)&H0^w68)gsv5Tf7&bdg+ST%5%5YApRyqrS+Y5q}asXco8T z87$TP)U4Ydn{mzmp@_l8x<1rLYxaQtKCw};I|b&9=ti=itV71~t19<@H8r@Wcc+r* za8hkEqB_l%Q+*x8WTL?hX2!(Oya31odX`VVJH^hRA$k}@=xmOh?^xOTjM@@;Zud@m za^aeBh4a@+^KJ9+DH)1<#mEExox9K$PT|AlT(GwbKrX2l2kSN+T87a(=x%+cH8=31 z_s;ZBX`Op0qB(;cSx942V7s+9Bz>2m|HlgIq2$!wN%lrPmDu_jQ?9Y}p*;?0vj8Kz z$sHYY51>$APUK`c^N36{TQF)5jZox~F)XwO(uUOHer;^%?zN__c!baXR7s+1CVjDO zfhd3Tm1h4AwRGRstO#OzB}ZU!w+7sTq(JYQ<5>K=k)8Xu3Vh=Egh~V^%7rbhqC%D5 zf?UuogmWe>tTP#SZg&j|6=U`GaI$!dr=RCUXgCj5i^qqT4Rl`-0%D8i*u{Z8y0sv7 zpe*WDL=OOv$ypMZ`$2%Hy5TjTjB|mlD*=f)k_a!(*>6}O7F)P+i!99K$Q&Rdsg&{~ zHZ}W|eH#HP+4f$omFQCInbsDC7#@CP36*|AUzP&K9x`2s>x6gvBP7{<4(-%;W<#?9 z?#lLo?x_>z!n?a<^^*)XA|La~zHSG0M0Fc*%#3RI74;tu+9t}xm=i6NVhG6zP`~C& z*uD<-_g^;*{f{c zwOgfN{NL~XkG=N_Yx0TSMH3KFq=HBE6$XS9+0N6#?m0TB4{R)dGU_-mCPE zB1C%cB|<2H01*fQ5(sDb{rA4u`~E!V=3KzTMe^~@%vv*R-nG{I+Hn+kEOJU9<){pH zj~b3_j^_f+CFo^7GFs-CuHPEs5i0+4sFQ@flM3{?gGXpH! zpQW=aEBE}rzcG{1|4izHZlD#(Dmpd$#Y(9E-CcUKC1GC@44axnG8T~G-Q8p^{owEx zv}&lG8m9lga3cDe5QK3d)vFJ%iEh|;5cwi%eLGflrrbU)9&OLV;@HW(zH?@HwBV9B z@cXyT{?H6TEY~d-{v;!8vU%QLlT10OaB4Z(l%l*u7Dk1ZirP1acHF&OvpzDITs+`g zR_|)<`lrBcYwfx>t?UNSgQ}Q3?a%p6&olrLsa-tOG%o30(am)w!w$0y(H*iyf-=KD zr^sv9?)Bf&9rc|)_`3iXrDl3Tb9aU~lzbXD)_h5MIk8G|q;Zcav(f>{Gr#Hg{{5R@ zIm7P#eXMKL8s+Wv+O7X$`o$sMrsqCcwfJVwfB5z3@vr5l+Jx>tv-&x2^lIx`YDsvC zjU|(iS-ivWJA?BFGKkmX9WMQi{h5RD3}I>qG6&SNpvH%1l8ma8<-02OWncs zA2)txQAd7t_4u3~r2RU0=+8w8OKSQIrYmDRL1cX)I(`)cN^EI26hDMHaI~hRFwH@m zPm!dpsn`?19>1s5K<>4Gf;Qg`t4i=i2FfdOWL&Ch|JnL#ur)|!=k9M+H37(b#I-@c z>MRT8j|T1fJ;A@(E(go2%NxF}+rXAU2`+eZr)7SIE?gkq>bL8{is^)7w zGI&=Rxe;FdM?xB1NDIG8kvjIAN3XkTc?{sNNv^5UjNwLYp(tJpH~)MO{a)^ zoV<7HS1nh+`}cPT=Yk8IygXfCY*mP#(i%nIA=2#|9;WP>ezb0h3a(WmWx0{;D%saM zP|u7a+tn$U?uV<=p@V=_TLj~e(gx7B0OxpxV+3s2Xy@)&t;yrHI;TkmMJSXt8ev^Qhg)Is91F|g`k$OZ%KXjiUuTayBNljwmCpRPJhSv1 zF{(i&Ht^H(E>l7+CMjH#iCu|Ore}98)3ViHe`O*o#@?yVZdiTXIgOEwdWJ1 zYQjAWsqi%woOv&k^BC8BebnR&G>3wBm9WVCMLSOXPlD|00yDI`SO!{6aJO0Ex(Y|Y7`Z@PK zwI4tN+s!CQ@^jkM5aIdx=cjLXA!@oLd`GzGcG3F<1+UU3U^=p=OYlgTCyJ43Gr$lr?xEO zxcHaX>IfnrakfaSpJLjtSpqR<a_~NyK!+W5P;zta$sj&1(qQuDc zw+RLRltDJ&n-z$i<+u!9;C~l~A{`Z8SETs-t(Z>s{Zq1YBY^P3UPPL@=glV9%*w;2 zQCATs{Pt$LRQXOTEb!Dra=SXW`^Emm-9Y&PfoK2oW-ZS+_R@j!&(7_=15b(MNPeGx z89}BTH`=;GvChaO$9sW3jSYX_7p^v+4lbC$RXu#%j$`$!1$E};=jU7M13%yD%*|D~ zBq->TsdHqS6Q{?k<-v3N;jMG(?talcw{HfJ_7?i7lP}*lQ^TcXc;y>_<;OLTX9KC3<%B#oC$A2S@KKIW7+%Q>~v74 z{UgI&PPA8MFWs~a6gJot3hNyf$O>6P9-b_EJ=~CFYdeigm*zxS%SJiVVqyR% z(Hqr@bMkb?bX2?%S-cVOH0%7YeNvayT1WbGH4-RBT$3*L(QmoRjq4_9dw%+W(o&-V zO2pLF@wZy&1TMe~Q9(fPoh3@9tP4Rz5BoI3#{Jq7{Ca9fRt84*GjGRhhWX?){bP=Brth!j>xpI#P+$ZRgr1Trt9NgKbhA(q|uN(^kL`y$~Lyo zcdbcZgd$luu~nzlZ2?I3&l#ac6!4W8FX_KaH`iR{ zuF|z#&TG+UP}V)?oqfT)OX9XwgScKk@`0noRy|*7P~%rJl!nq)RPb_num5R;5_AJG z)@;ytQhim=tzDzrDl;@^FfLl+3;5sONtCz>_s?NzKRu7%*6Ds`C;l}2eLUw?*~UOh ze|w~vQP$EHEl$^msMbFDxap}VEae7L>*oFGz&x@>L^B+MP%eC?UKyesl@DuV$dAR- z+#ls8wz=Mqy*MU7QAdg?MS{lqVhn@d8oQd;Sber#7T0n-AkQutT!@Dy>YoTa*`yEnpu*Z0GYx!kU~Wm!0IFPM*j z6)e0qq-)UMA@pQ(@Q9h%uM6J-ks8eM+&!s?KkS~D9vBA1&Ly~FR|U0$AKgj$pP{`_ z98BSAGr(4vOZVMZP8;r`W}Nvt(|hc5eea&alooLAs8<))Zi^8~H%*Xtdy@Yf*Em^# zj(feNIqqxfXU1XRvqfaDCeE!62QLRzG}6Xj%s4uvP>65U26Lxdcx6b$zK8p{Da^H6 z;A}ICyZ+KS-kM{6N&;#B>mq8VrzTb4de!PG4L8^lQa2!SqOy zBCn-7-SzF{gg$%j#s#7Q#ad%!LaX6&8m?A9Rx|C#*4X}@%GncZeH9U{dtsKDLiiM! zBz#Ifx8!6r-hE2H9IFmPGiH_j=N2WbL!-F~bIKS^%tvu5)7htfUre)O)Q1)gnnE8CXX3 zIGJ=n=xl@XcE3vc-YCfy#^>{^K`JLZy=j5x*xfO$jMHs_8i3yvnFE=k;`ve_kX5R>~#*?30)3$fL&aE%)SEnm^<_Ny4D(i$AoR zEcGYauX;2wwj20?SM8C8$_0}6N4&?{RGb2x3a8R^Pyzb}2dh}@$V4`an5nC6_HbaER)O-~Dd-Q=cv2s4xWlE@rMjiV2SIl6yUGmus;iiGO zN>Q*x9`hT}&M`Z^%6W&PBsn+fvj;juy$ysE{4n1)W1`aRkgrYOdd=6n>f1EuF9qy< zFM9ExaT<}M8zRNxxUnuHf5+4f#k2(qw}vgU(xa=RN;Vd}$BeoSbMF1m^NOL~3@S37 z6TJm9t}s5?r(}((zVl67#f@Ca?V}1&eks7#<9r~}S!?k#u%fIk$mj-kI$vFK(!%9k z3%zproJ~xv{IoynZ2vKn%?NuRS-gX<4Q=>ZxGio9(>;??M%h$T~8yVeX&&CQq$|HYM1s7CTl@M_& z|GA>-&w9B5OBIHbO1}$O=`(w|M2YiW&wUhGsIr2OP}&5w)ndM?fd`s6K>oc_Yrd!?VO}lhBCuy;3c)u}hc#lcf+l3vUBDx>yS6>i}eCBB7?dM0gKJQSm3xC69KTmjiO+@A z@nG`q>_FI$?eM0cy2Y|S%MgnsXT+TsTH&OFqhE&d=Drr!TpI<y7Jj&t?!KT`jL2`fuec8;w>Gf>)HZ6JNig=&o!`_-5>@vE{G2(J z34&(Vo|_-0!$`Vx6j_|fJlY%-BLojuSJ#o&U?MXDNFHTx&Noda3UJ)>4-71>>BP#) z$*nAPM(+OoNlyNEvfN6@1ILITb!%7f}#i zrDPJ)Rj+kJ3f{b#sm?--jW5oQx&*@wuThm{3*5f_SR0nymv)2iRzMW$Ls(cZ zPx^o%0*bE8d)_<#>B=1e&Ba?QIlfzY5B&e}Qmh=Z{|#RJm3~`PG;aBk?m1lCQ#Yac ze{zlz`vu;Ki+35rX4F3~baO_h?e;QC!6Y7Uzm8ZGz9iJj+k;=wH7S4CaD-`uP2&}d zVkDFP9u&#;S^5GBWQ*7W)La0|&0<PUc6~@V2^{bb#`3`^ zMpnx)X@{LG(=hHuWelzJBwRBgHEd^?=;;5p}w}}oELmIa_@4HyYjuTQEH}WSU;c2^YK*%8?6+E+_D>r|U z5&z+T-i3`V<@xVGlzkuZ>PkhlMTuRy>}!pg8f>2R-1xqETo@VPZ~A6ZCI3|`HBcR) zCATsl zc`D6oiU@fe!R~429t-t}>H`15Cpd`{A|1uB4~St!hV5>NElf{K4a3Xw%Ml3?mNia> z*QLD+qF5!gs2F%J+u=As^I04pmr2!&I~Bm!PZU1qr=MS5dqONZNZ);0d9tPs#mPRO zDZ+WTdp-(C)IRnsWhj`EGJ&uYhYr%k<=QK}_OAF@VKlw!R20KtM?Qr;TAC%FG~|8f z;vSPX_V9iT4`<4gla>A5J+1s|E2gu)oDGZJ+Tv;r3Gvvr0|5v;?Uh!-y-d&++a3gk`^jqs&>J;Ao{h9fCjxUc}rjxb2<5FW5JS9E|TT%>Fa;SYr5URg>KaLn@ z$(V?Sr#*njkhvWG>V#z%SODp>ntiQ=0%5>zTM*G=LwyWR3hnzDXF&p22AAY(qQ|FA zA75igz?7g`=*Wdga&Q0NeaIC>vVbbAH|~p3i$dI{auWBYjAXsl&@sZMk7q(M9eHV4 zQj-`oAiiin$NY$8qpit%i|c?>_6aU=O2#tpm5-f5VCl@$D?pt=S=Z!D*c^zffOqJ2Ga(-Ha)g`z>YsGBf z6SawF{zXMqQ{SDX&RifXI+CeGxjvE`>2${^TZM)(SL?1M&$*%0l$7P3cmWk?El}gQ z&EL=NxDKdb#JZIBz0J&KK~G1eZD$T3TI->>bS=t5E`ov2mhG#Ml{~7Z@4HBG`0L(p zg1KI610#j{JV4{^GYd}urskbFxx7eqU`NM?GK(e+APSme*%GijAcMXAlG-3@a_!@w zPPtmTfbqRT!{ToQSz&E^@3@9>dEw9jOQ&^YTY|dHP)QYt4bwrW+0ejoqD*35M~zIoI4H zX@i~+2KINx+|HANTxr$t^{K>>!^ zdn7C?i<5+rvg)0@f_9e+O_onPr3&6>Gu3oR9aOhvdVOB|ZOjUpjI05&1>a05OAvqn z*HGfkKX*KT4shnufWAHDg$jemQp_}lYcQMALrea%>%O5;Sr}SF^k@PvJv}r}= z3hOc8%xtN4V_V<6bnWi_n1>NEWt=YKF9y>Dlf_-GP*PF?n$40FDK8Z{=0l(!Y#<%< zh<^lwi8oMYz8z3dRdP@N=+`9ttQ*z8 zohBgt(hb6pWgrIUlm>{LjS#37-9K6iYoP1WP$xQ!4Dh5Gr_-;#^}2S?oEb&DmC9)s zgd0}C}pgH84G|0_@!Se#7`6q*QM3m5S6PAhR!jN&vvpb`CgGQE(-Yc5c(cbv< z5JJD?>Y)dv5A{q#sYTPn6W2dO!z1~Fm)A%A3Y}$69*+nejT>s?wNaybV8Pf88Ri-E9`}J$-N0J*Ln_ruS0Pf7|GOj<8E)7gq*l6CRqxdzx^DNSYGo*;n zhB}lF4lD5axz_kfNLc==y}VV2)Dl-b1$1c)m$Q_=ljP56<=-NbMI2&wMA-s+b!^z%zh72VfRUO# z*f<_NMk>S+4+Qx?GzLg7ccp&u9NoiKMwjd?%FzPm_IQ<(5!P%EP%ZxmC6> zJL$p~ni156bKZ$NO@69Dxi@5M52mcWv`ukIj%=}BGBiiGy5X*V!cUqK{^??tgF3a3 z$xDm>8rwooeqZFd4wz8+$39%M5#CxU)2aMcq}A$yGGerOdQZ_R=gmz>#lz5V8%Rch z@d^00=UW8PZ&u4ET9PS#Lf7VG){Tk#!cZ6uryZMwb$fUMhy0DAx&8UpE@8l;myjYC zsP)DxwehLpZ+U|B;zK1OexAV_L6Q4RiI|O83H>-aUXvYc_5>5NV_Lm=+iLLC@~8VN zx@VVfP7Xe7s#_5-Dhy*BcNUF$Fj(G78jwVEu0-t+@$8MgR9l1>0|bL2qhijL6pBkB zLF;lJ$hVY~*($IM!cT-KEb5IQHTn6Nq3vSvqD|_ETNylGt5!;Hhy|SFwO@sp_WXhb zAEl}4;=fwK*zTpu%Q9jDpAe3Iq%`d<$w5$*T1VX1hjw%_bZ=)&ZdN@3*x?-j!SKhC z4|uneU0!JP(NtE7Ws}M>{jeVRdl7KE3KWEl^REm;gS)@n;V)&SH$L%$^uCLVSAd0x zX}6>weZ0zJPzgleYI84S*a?DTipmN1a`Bry)blnq#e+&-#jvm^ zC(1K;;?$IOTH7OpWN`zGeM_z@=r|0=cH%MuJsG*A=vTiiAP+5M8e(VHF7maLwvOkw zFsu*-lPudIiFoH??}g!3 z9w3EI-qAm=|u*5)hHMmC6MIxMTs4|~(&8XlR z@y<)qYBHzoIovLzQ;}DXal!tG)UX0wkRPC{)tsrpmVSN0HCoTg0f?BZp{Ob?l2uBm zg!8fi%2EqHv)U3egH0|Dg^=dA`s`hh_3$)q$_y@c)*(C~YhzaYc)|6_4VHOOyBsq@ zWOH1bB9DnXii3E|Hn+1tN`Q_=G5!VW4P-SUj2dF%)!r#<8-N6y--X`3!E(c~?6a3X zm4RNKk*Iw{;;Qp|A0Y2MqPe~|44r2i+mZkCKvAY1#9W0ZivjxqUWyV5lyomX?IO#q z6xQdP>O5$pA`T=6k27g&nQuIb3C2t%l%LKwpOT10a;Z`|gGpk&Q=HlWJ26g3uqv2p zQZ{l|*h;WvoU>vaLY~^^J~?t~VJMsFKb%KI`u>)bC*;t5->n)3!`NS%_!+}{9H?Chs0Qs>$R&?X!we_OB2iRKv(qaA0({&D=66Hz5E*k(5(1iBCW;& z2l*I>2U{e1rxHcmO@;;$gx=?Is}K|Zc!5d7Hl@#X@8E1R>Ep%7U(A>2ErQZR@JGgc zWN3eX=ndr=pdKDJmgez_rrr zMoInhCh^~*-MDk`$ny8|hg>WqY@3W#5#?p}As^$B39nz2qxKzLg8W+?d<4J*9Zf$J zofT}jQFt&{zi!32D3R*b?=MtBzdD|&FPC@FSgjX#>oOc`U^4z0fZj%W{y^h+N z2ng|2iAl_@nr%GNY^mf~9=hIkn>?UWUR*D*`r;64>>T%N4e_V(@Yd(O*T{cB=EEb% z(z5b(+khGv)yQR&Nt;W5lM-8&JhmRHzWK2|-&7o4O(MFr9&s<6%udxs$N96xUJ(D= z4A42P2Wo zI0mtagh_S3hYeUn{M=Ob|orRK+ZH2=N;GC!%3cY=-3cr!V8;@ZJ(D7uY4asX}< zK2&TQfTH~)voez>t>`wA^YN{x+=HkVghy^EdHCn7l6-qRq$otF5KaQ2G9OyWexmu= z9N@V{-M#yPSM=62L9*DWR1Xeh3v3vnT6~I##!jPtj*RA)!?!3_2|JKAbUaG;kVfLt zeZ61wE-_ou9&%HxWwBx20kRjsR_!tGUp}?Uay7#)R<39Q;Y+I++zy9!At70;yktz1 zp)4hQ5KGvNH-k*?F_yVVIRKnkp+6f}Y|5->w(tF&hBN;>@F9~nE#8t^7nollntH~+ zbYzGmk5Z*TUpQJ?3)ZXfWJ1lEAYI~>TnBR<4;;H8X!;pKV#NBE-%cDzlN$L{C0Ng!Mf@ZB6TTK&hSl&-%y%O2k(>GibFfJ_4+8WL4 zkMVk9;Ad6;FQ3;C3pn7f3uOS#Xfs2vSm&}~=m{Y5H^4F_SI8r@C0Sf{+*1XN%VMgy zq4G*HP1#OXG6Q@Tc}aJzNDf~%m~|MS7G6IiwsJeDRrPnO=<$5#*UG8T0(jYPjo9>0 zv8VMnnYLTiysYxsjeoz|RJqD#zyFh`3#0ZCOW1K7|I)wXY5fKCBs}P|EY)vvMC7`U zmle_u(PvI%UgUeG#uV#j-p&_8VSjTbVq+eJ)$kk+`ZS>TraMM$l{b~oZZ^Iv)Oz@+ z{~_`;sye9oeEVYtnL7}6`oD)|bS4-4{WH@;rb(SYLU~3E&&ws&6tMr{had9iZF0hzSL?_& zee;;JxauZ#y|OZ1KYyT0dZ2MXIVxlgE-zQKnK|!vL-~IV^If$o!|dpwhmViuh{MJ9 z6Qxk=;AYo(VsU|Y5S(rSl)#F`=nd68yNJchgd?VATpq2 zBP(lthEHBG&j?~Y!+|@=q%)cp{V5$q`b}ai{6DXT?1U76gt&PsC^VK^E0MH#4P8o( z4bTYnpxyAv`OR}FgD&!?gHF3a|3?!P*QwMl zs*17%|Dm_}u+#AOVYoa8J}?^@U=EL|A%d&*RSNW>S-a)Ffny^ z!Dn&@t3JO@e5798i9f2j6%{fxuwzgj?{@$G5%k1ygB&*~pX~6sSa;~|O_!gLiZHs_ zqLu~lyL)Ta?+Z0LeCAfJDP=oAH;ey>=oM5Z$mZ3$s(n-)e+@<%*yhs^=wDE4%LhfD z5NM(g2r(RTnN(ftYm$ z6TLa-b-r!8gI<~EvpM{VltVT`puMNyG0Cc5P&y;K!W6)b**NY={Q_uX_>3y2-QmB* zt`MKOb7v^D29*@SFaKOdw)AUTD7y)?l09+|$~auP)&zvW`3W)dD*%PlFFd`^UzcoL zuYDl{vw!XiIXad@PET-SNt&_~(|0fcBOR?>B=iX@R1b_^LfcR?WN=LlgAi}>D%M)+ z?~tgcQr=?nBR+_< zXE`22ql~38el205KS!7Ii@}e<8oSWa1_kx@456Ydxz!L`V`NZp@y-1r0}i|j=c26Lt*#tBA1j`m!U6qfd`yL z@yGB$=7Yhd{xca|jWsG_Uz1iJbwK?uUI!F0w^_Cbrp#_oL2IT%_V6t~|DW^2-X#Uo5 z?1>IYdGP5p_KDZn77Ontn%A>_=~G@J#e;;ex*^h z$mB$ z2f;cu^TFXu%Se>=I7YKBO~jg&IMmc8Vf9MrL*Zm#^y^`b(vW;Q`|<7Kyn=%UYd)RI ztC7Du$*!Q8jhzEPlOwfxnK3kNp# zL4D3wE>{xOz)sTami7A1`t@~Ur->BP^*e2>(=sjF#5~+V7pEk%PWqU*^E1vGtvR2rwEwB$`4?>4IPkaC)3AwY|!dmds?~fNrb7s{q z>2oy{{&JXcU+_EI>6TYGxm5>=&t4_hxN^0A6U4`kW5VX%=IADPB(>OQ_Xm$_ zlm>M?JYP?jzLUHuzwR9MUEw+iP~YzVl%7uCqo->d8-GEgJInoa_Bx_3weD{Xlu*4c z#H3DK9&J!LePwW8m0rps;ht4IiTnd=dAV5~pTs+Q)(3Lv{qljq>I*Ra+C58BI%_RRFWFJR^6oXw#tOmY( zgyPH{2pmhzE4cxKR*e4QEU-r!`wCyIUkb|nF_Iqe{0!YQry)R7~_3T&Nt(GC~sy&0B9V^wc9 z^Xcc^=6@SP#Jiw^aB326NEL8z{oO5e-#q1Ba=TZ0WbBj$wdVb54v<_vWoyiy$ym2+ zIS430!1jqZ4V(Mf+KpeeUFON~yDn}lJ}oaAbA%3a0cp)k`=$#&ww}*Svf8h{6{PBW zI<%nA7&po(YJD0&qUwgCZJa=!B_`qcx5N!uL#QA1Ur<08W^Qp0{ z?ovmq-vz~kK?PPrPG5F@`uF0ozxfq8UpByF8kPuB@2JiRJ#Ti>YI@9J|n1T#X%?56^I$s<_idAUivoGOAil z%!|BDtTpB*Ak|~=cjN)3!wAM3GUl|R&Db2bC`48;D?Z99kl`9dyY8IeJw;V9V=qPQ z@i3oZCVTn(PWUGgiL}VA1}2v=e8ZteKArY;M0WjLu04Pw>R+;5L>o4Rl$V-)ob*M7 z;jnelV)`3+OBzKNp%2{5rn)&U%VE7au3QMaTMXv&- z8!H0qy*mPFu>+`>ZDOtbf>Ww_8KJu>W0La9lzudWJF{}*l`q$V4z`2In}@DAcYir; zIp+Y;X0PpvNw(F6$As4}5LpY6@K-@}5Yu7#CqlGgMJQforr;pW^WH%THdYOm58FWU z`v>gwrcdmZulMuYz==o?C;eOG%I*OyO{Wb`Pv0u|*;9{|*#%U*#e44b#{ys7k<^bl z)~nod$Xjyw%9hioID1Y>ARy{A_h(s}CoMAQN*Vs0szPn;`Mq90g^>(GXXPZvd(D$d zo+}jSaC@xpuCOH{5c3{&*~F@Tz082aHGLBvyK zLxvLXvpi1naEiDrN%L7>Y!Pz2WLk|86eDxHtixk?acE&q=5ns4n*^ovnjmE9z|8u+ zw9h@%n30>5xLCBr!N!(#Yqe9;z+mmxm+j@vM@88n2=O31na+Lkb%#oJR?AOsC{^dB z;K-~>ZURWziSf5SA>ZMD@hM6;pA?{MUPhrTg{1jA599+%ESijRv%pxhe;fe}GD?06#D@-XR9IhMU%f)TT;}X% zaO4zBlqubd65U~w^878$F+vy~8Mp#rzaKMbsX&?j5R{{#EUu1SR$L7Y;lNK~f-#_E zo8&|_{%mz*9zv1U#5Ui#8swhU?z1t;nq$3kPd9@QDg`U1+8_uYVkrc+ay67u6IYVw{tEPUWOb`HR!s{#*= z9zo|jI`kiA7ux!hAK5Hw|3D+GatzjsHvB+7&am)UINGfn9)rVk$em{{2N!w68so^P z{*cPu!8Sp%p`D|_^iyy}!w-SPm%xJ9Lsq$x)DVuDzX0D4Gf<@;`nn7X`E=s_a>psd zZUts?8m^-+QcOa<<_*TZy>wc$pfW{8usTvqP|Ip<$;|2FpA8G=pT<_(mHU4TQN2Qg z4*!(ic6IkkhTHH$RVPC}F9IOO?Kjdfc4=PlzHaG+jv%|^>S{)mD88&?t$XwR?8;s`o)=v< z<*ycpe*H!x_4$q|PfeXnC1B2w>WZXAvs1$E&Biq4Lo!r>av&(5?cG9@*HIEc>VUe! zakSPs#ia>{`xpBH=9)5EsjuzfDSb5Jfwn2DYvDI3iYSWWup%6PysEYFtfk-R35uI3 zgWMEmeq5|eUFLxj*EKD+5ej%RY*q}xrIANZ0{E8Q!RXvbk3-+_)GY`*-KAG9u|;ov zB`L@8J5q^E>w)WRE>E>3B^{kdeieNDH;WZm>OXgOg(piX)}bksvCh@yEwgWXhgDKd zt|}+B=0;R~?|5L%_IY1`?iWK;a+~iY*P{?n#8smxU@H#HjQu<=nKP_qYp?osT)6nb zGQ``U)=hGt`m~vpG5)3L4<;IS^Ouw5KNk?B>JmPvO2E})qfn=!;F4dOA<6Cj%b73* z{x%HEv}0xZ9Ej7L9F2q4p{3IF;I!yhlVz#8D{RCtW$_xhBbMc zW$#Ky-EzCSdMrrPBC1{&$b{2!X}E>3WgU*TE*$DH62P#d8nAKYrs>&h&7FH<#_kH9 zzZc-Vk7FG`hHpzV_GuuV?UUzxp(Q-5s(M%6b$ zY{=3;g{>yMNd#0Ha^*(ENl$={FoR(SEPLdr!Hem3-r7YFSxlBAb%NLSCsmszv|N!5 ztb3@~=K26vtyoj;wu)L#~l62fKxou1(2 zSsfAeK;ph&;n?<7{dfKmc3JpL%=jErNn7!)HR0T}WFi6Oegx3inu9r6M!8D(0&%ZO z7vIX+#(YC*H9c^>9*mhGyrZ#z%p-MGqf25Tq*Nkg$}0rFX+oZJ`KP=$`qK<7`j_o$ zU^1{uzJ-N_uF8U>XexB&&&x&c?S$%R&ERbfUTge+#E=S6->l(xcvmo$lhO|ccE;@&>2<4+YY2id8o{R zjXcf${X3O#49)2uQ9rsGq_i+3vieXvWG?do##Td4LV^IwxNM^dY4R+Bdg;uHR(^-B zaV^-I*;dZnTS1;=(o}0U78UZK7DC+}joBKfu7AwG6Pe{E_Iza7#B*XlWh2*xHZS~1 z7H>+(tI-!*)mRc&rAim4e9&DVjF^aZvB@6okLSI<`@t?8-6|B@HXRER{KW~pCMHDJ zs=!=~I&X%OynO2nhO=et(s8oewW3K|RwRHvk;uqvC$k>Q-i~&vbhhczI-QZu zZP$GyW+|#(A7l(a-_!N0s7`(5%>Pz=jC99eD?BhHL`8i1b#pb3h1bK8#6xGye!;=m4bUWeRY zN0g>~odW4i-pnLqS)#~Swu6YeZuhuw-{W)R=Eep;DDyL@UA=kJ;NonfW?vrI=aLh*W62V{$gFMK=H;W}tlI4Cuf8BK8i9#=HKcIUp3 zK|?W)rAjdr9m&7JF?s|BxasUR3#%cIRY&u7himk-hyXU zfDeGon?XR6RKd*%i+op+^=ao%{3+*$L}2XWwLp1|(QQWhhDNL&CL?CzMYf9eCpzu{ z9f}t3`;#rMC#%M-X}=-T9JDvMZct^2J33ceRDtTif%GU+G*d%gK>8ym@;$Pa*OTZuq`Cvl9#LGj^5w0)7*CCXO9Sbk^E(Dr)S?*#c z%Zp!@N*O3~G7T~6D<8&@c?Z+gzSgY?2Gjk`Yl0f>kABMw3jFi!EWCocAPf7L$>Iq7 zD&5PWg}$KE6BrFzIw$+^FDTMpI%)bDr1Q62?enew%0>DDHdy(6UGv0kiQ2@ECoBJq z-+Jr+mU{A&(36^A=!WwN+is2N?Y6EEdSQzDWS{6b7s}SNLcaMM$R_-c||T|c1PmBkzCDOz!+W0kq*ikzbn96 zrLXBaK-}<~({^$k!CfFJ?HCn10VF&31{d9_n=A2e=6~w zCn=dqVO;@tYwsKb<{SQvs6jdmO=4%q71`g+60RvlDKVuNz@!RyJw8u9(%rAn29o&K z%TXtkv~0|7FH~l0U824INsKr7VIMpAWmwM(wH;@1a4cfa?@gY%{)3!*PipkR*@dJZ7@cpzib`WCK$Ur1WiAyV2+v$qrRS-8hCeMkWHsNT_os`2;gG7 zECp>@MU&cBx!zb|#isMXhAj5|M)jTt-#y$`HPpOO2$KMiNNjde;CF760gHq+gJEwZ zjyuDc0hjn06yfGCL6 z&@G@yw{%E@G^jL44>hEMqDZF_!yw(#4Jy(CLw8Bd&@q4vbsl`*^Ig|_uJiZ&IQ(Vi zdG@Tm_u6Z%ec$(Dmu~)3R!{kX^;N6~pz^$Fg!b3syvW8IS*Tn91ya8G04MhN)gE zZxsWJv*fMW6l?I&dYMg8luKV>Qw4GS%WYnxiXv4(Fz;IUajXAPUB<+VtGUJ_o}BM9 z6Ld6zq25N5UYpssAUrMV6i)%HQ~N97Q~a=NJzdQGM268oN`_&tQrwB0;cp>qzVS0H z2REcmJ_xe)qQfBB^In`_WQ@~E4+nB|R{HX%-=rEq`!kV26li4W_6c3e-S8#V(GYJT zO6;UJmYzq^ZX zuCq(Bnw7KXbHa)v;a0bwn3hb#kH;q74SNBP?28031eAW7WaM_?m@Y(lTvm3E0yr%? z=i<2qA7Juc3r)N_g#!?5pla|S2bESKODOaeb*_DuuO`>+y)}Hqdy4z+$G;~vfh-K6 z0!*auOP}jvPM&1sUA$-p7-=^U>1K5N@DT+ayVu~`mgRqgBSvN;;s`5aqrUDz{diOc zBXYULx{v=ffl(@hFtrzi2N?jBwn|#D&e!e_EI9+lK+ZOz`m%v_gjd%qG>veoHrwAE%TXw%!9u6Z*hPGD)Fhw@q$$NC83 zJ;^oRlT;Qx;fxh*+)TO3P^Q3nkvHOopH_kg6$2=|BQ}_m9*3&Lv7qY)%AHIJW`;>a z``?v4V?Oqd5_SOVdA+7{QicOv@Q>2y#w`Ny%hw~&=pEGx*=_Kn!bm?Nr zk=*+dfTL5|9*2_I2Q`=0WWKWJ`3&%EouZy)mQ5D7`WnnUd-B77OYJ0KCzGe8_r?bL zcnF27r^{8{y#|k53v!yBq*G|YmvPRBZBHSK4NFe)10uo=296tEEeymE4CE8FjAlQ! z3{;Aw=41?i_~*Sm8F7ltsoaxtYaC4Ax4>Vp`NyQiM`o*7W;@BA#Pm!!N6f#~qso}g zAW4|lf^@YVokN(n{r?ezW#qK89)F^A6MH(NDeX!btzdh~(ppCM`|GAE+HFXpvvD4Fw|t&%by=A&v%z2|rdIt}GS{ZVBZ1wBVnOF-+8v3J z%(-u@0`9Oy3;;NDZEQRV^L^5d&y1#>=&~`S{BGYR(+=#z`pw+X-hzr*Pl)EdNQR8K zqfF6{<_&B}J13lCq?|m4F?utBagi0&VOx*pb!kZ#nea-EQ=;5j2GZ4l9VVfPBSCqW z$Me+j+f<{!lINUwg?$Fbe!-&~N%;HGLJfM|bAB``g-E?iJOt2$0`;w1Aq)iIb%&ljNh>lZhQ zTyM9;-|UuAA%w!qWftugh1FkpRylt3Uq=Hh0u8J@aueHkp+3K@D?Zgz2&+79SlI|# ztrXeQnFz}PwmKn-`Gp(%S!5LEyaiv@VEBTkbVihB3_;WPe4lBBSLXXhiDc&l?%587kY_wtE% zhQ`Biek){+f~mW%=z(u@%&MW+t82~-69Jp&t@qQZ0%HKGhE?+N ztiR4p3eCqrezBvY4v1Y=0t?(bat+_}g8fapaFUjrDC9^MK9i!3s!-v*@ld4bi-J*_CTam~= z;ffavuA7gGkXIU1kB2_9Q~$^Sh5_KwD91Wj3>4>gCZ0_1{KXlIe?{i7u(F+3+?Gz< zr^KeQT#sviG2ZaNs$#GlR_nYMOT6Rf9_oL?rUx>_N(3BDN*Yyi-e>nhCgJ7a6Qz=+XfuRvte)2Z^Nk< z2xkP2>+Gj&WjF7OU+o70irwQLGY4Yi8|f!0Dh!M-f)9(c{LUhZ{B`~_S`(hOc6R?h z?wtB5|D>qL`B_*|1C>wNG|dlq5mHSo^nxm z@3KCmYA?4Le?7=8y&e1+Y-4@T=TwwRIG^6#~vXg7*?bXUJ>6oPhfEdQ7w(y z#yy)pR6FtI0qDqpn6DvLwYTeDUSP98u3d#y?(&kMUdd_2OnbXQdq{!0tbetQMlZZQ z(q}<(GjM_M#_8O`O!6A&g+T5y%MATo`>6eS&YN6!e5ulH?jWIp-uvio_a_<8=V9&_ zSG%Kkyy=U-tw=q8^&c|;-@ci#n^PW$+HL|CA%N(6b2#Hj-24mB6S?^pV6cCml)L#B zkdNNz4E#Sn`M(d*{GU($??e9glmGvJ-G43iUlaZBuluhZ{$Gvx-%tL(8S}qp|L=_a zuQC6>d|iQ{z1nri;q!cGf~+$>cbargQr{Ofp0;Ge;^skrtnni|{dR$} z|Hun zExSFIhosqAerZd}e)fIyZ<}9w|Bb$l&h?9VHiD4TLR*MbM3o%I{4O@pS)UMKkrm?S z&@fAl7iQ?|Z=Wyj+g+#~8xm&VDO?m71D;mxM5VWJJUr-T{HP!a+11g|!u_8ST}QM0 zgliZtvHI_NTjK1_ez+be`{V0f_Se#sd0`{u{?L=fkInt&{@ahtAdvK;;HKulqTs!t zU3>40#c|;of3un+@_w%&FDI!ejT`5A3quKgP70@Ba5G`6zg=P=*Y;Y+{A$-&_vECA z{rr3)*mmWjHj}4!?tQ1N-x|(HF)Ce8!pQFDzr7@4oba#oj00 z)!yDlKu#Cx|3db7JP4X5GMGB!*I(=5tAQNV=jnq`Xc_-!r}qAVrY-)?cxp;Lz_;Q| znc|j~lq8(V+Yeu`(~}L7l$~vFB+Vadeg^r z`-?HIZ10*{($&K#jjiU3ssd-e<<>mR&{x|3KZjEPI`iFa59JntiWE-H_K~GCrQC~n z{BdpVXZoP4ZOlU=v7_u;jlo<)^D=s5;`W}Xv+27&FYB;H*IKgpH@_#=1N1lc>vt@4 zCurm2X6^AwK992EBv8TaEr%(RxO~67#@x_zbil*m6i79 zEXR7(V0Ct~^VaH+@OLut>v){~T-p_>*jqkPv8O-Izl1eS<{8ek@E4!`_k53mo5uUK#KSbfx_%CujLY0n?^%b5+gK0$uF5ujZ}aBR_@xCM<6hY5>~MJlEad0|w);3z zEpP72=aU=feh+EQ;YAeSqta4Qs!QP|9nHXvf@?it+ux43`}#hWHn(+Pi}uoV>@SS~ zD``B)k^dhlZ6!>{g&Wc6!p&iV0~4}WKMfhF|2=zX9}!tqVx-AB5a?S_Rh9SBby`Q- zHe2eX2Zm2&*xlwGRDs=H5FW=3f4X*9=zqkK@Gr#KdJW-uL;iZTs6Wuq+d}(^ukYvb zuQR<=+#$(55(|t+k4{<`)3YH=x8`IK>ze;ICv>1uFh7xKoVagdSKuUMZ%0>CM6`#U zt~fu0@5R;KLg%CJfhQ-0PQN|OVmAeA?U;KrKL(8cTktSN)RTkON+n3gp&dTr zK5Q}iA!@706CzV(}f*PSm*lT5JIc)?f1iya1sZ>$}F|^g_5apvCOs+kn8OEsU zTo)-h7NrWLH}NkR{L4J>kgPuy*ne$Q`88c)^v32Amd$-J4owAHv3LIjJ#8+(v!JU7 zxUeEdB!%tZ7w*;?fi#V)*G7W|x5~9O$N#+cy39x+-&l{c6o}Z&YpbYt9J;XD>DNg8 z)5xCc6BGr6{(wFd9g>xeMM&-~TnzA=lgbogHDV++cW+dC7>oS3lvZ^-WKahl$yGxR z|CFeT!Iw8)-TvcTRim?Qj{JE!S)PIR;jv-qtwGWP{jvq0I)Nf=)e5W*TE-Hj(aJsj zL@?oI{S{cs#S(__KaG98R=L6{z*8fsWhC8OMl|Scy#TjMUhuGZLr$ilXw06wkx=tPkb9yCbClZw|6ab}yGSPM0lL*h`PuA~}JMmy1UErUHgD08qe(je`Au z*7Krz#1Z!|yUJ(=z1>RV)#~c`Un!1+xaykntPcJ*_&3$#U|qNsyc|s zS{plu-?^Ik5bdA%uLM8~80O^u9*IUyZmn6ss#KGQ^g4QXf!avb?;G{rqkq-_qo$wa zCYsce^tbgm?QoUa&3Ijf6b()#wv~99=o`XF$Lz;=N-bpF1OYps4M3=uPyYmXM@xx0 zse@Hs3Omnx!Q-USyJVxRjEc{wvr3$6w>E-r0>QpMFvIzvicueDGwjRPzJLIOc)nvV zlb25$!huU(VXXB0Go^i>lVWCT-i^d4v|r9Yt)j<(p?j-mC0Ca#zbNz8et%MQZ*aiu zo3uED2oU9xZLW7zm4%T5X29Ez*QH~B0Yjo8|Bo|0o(f@!~NjvnKv~X+ssh7_~mu) z+kAFgw=7d)gZg@|&)DU;+avYD0tmhN)8isO**Y#hlaV94f1+ISfO#n@j;<34R5XWe ztWv++g)w_~G=kA-K^AsJTfr}6HL1E2_wOvY+-#-^0u&#KUE;AtiDG`8Q6j0~XaT8M ztWdeH+bK`HF2-r(xf%I_`_1;8z(@Un7p!{NVCai>iljXu`fQiI9{QA*@g1CZx0io6 zYu=c*2_&uZ9$JO)H=&ZoN4&D~xzU_5qg@rrJ9XarR%k2U+sAbiOSou;Lhf_HH?Hg{ z-*>ca*WB7@!W~pp975w9QD4v6*|JsC$^5sh%Yf_%3;K0*p;voK`)+x}2{YGH+`Jhb z3{C6fAtXOpx8S^)n6uD@#$RTK+BTR#`{ujAp@bD8MR7f-&vEf!ja+CQn~nO~{ubz4 zMe4s*R?nu9@(`%4NtC1oyuVGurV>M+0EqnfpYPPO2b^pt$OOTH%K^O$Aq0Vp40CK| zn~tuvb^(o}>z@BJyp@(3Z)6S%Oupkkc}7f3N}9Mal%-*8+%P^M&B7uN{IPR!sfr5; z8C=EyQ}7BbZT222*sArIicdMca=^Q~z(p(;lRx8D2nb#MF1M1evj2Ab`>pMXatpJW zdbf%>#8X_nA1OYGrT`D=MsFnWY%NvL0m+2dm_mjQJp^QiG;)-qa{;Q2U=S91bA$6c zT~wPxGmUM&**6t?yj9}N`T;5A;us2{xX-p=G+E?ukdvd&-gBHIM7q(G<-CQMDQC#! zUr04_-lBA1M$++!x-Hx%P_YLTt119#skqMhTv$Lre|Cq8&A65G+J_xoB0|ENzjV%^ zhWh&08-_d?g9OXgq+5J4?{$jowK*%D=p}ERkIEXrME$e3r%jyA)prPLmEZkc_08Xr zif>`OvgUPZJhx-~#`80qy=HdOy-gkCuq)97ytMlI9$tcTL(24*!ks<_(&BnU*IUZc3+{G&PN>dRtYwwkAcnz#Yci#oADo)%jNwfg2k9LbZMDTV;)=r#Grh zH_|Ks^REEjAPd8&!cKSjz6jb@O{H%F_zyLJ7qAMbQQZO9$Oi`px?ZC7si~w{>H_#4|Ujs5MO3Oz1J~f;j9Umtu zeF{$L(wyN65jyt*zz*=vH@iTCjqwX&D*lpSI8>Z(c{znnO(kh=c-W-v%q|!@+YeyT$FR*!@Wi+~b;~(ieQ!an3J28ao!PVvZ9SMI;^g;a(CSsW|NDy4 z&rIh5>}4o=xkY~;&c>@#A^+F)s#4ngRE(3!f6!G1kXil&I%oUH{*2wK3Kg1ZV_vVS zTJ!VzX-Ovly^yJ4s+`pH;>TM68K8wryR*HW>#@>x-#aXl>l#qTVSV%FO_vmfno3_Y z`+^RDNSALr-<53iTjA@GVwTg#COyk(&`B1$OE^zv{^=HhY6&((L135 z&9d0OmSthmYv}^uj1Xj2`*tzq`j!4~ZNbAYQ>rrC`f40L{H)e9NpVCB{XHr{JpHkZ zLP@Q%-l^vz_Yy8bf3&QnEpqEC`Q~0*(}lA4baxxA|2~@u?TXLgDE!dGPQ*m^fls%p z>hTbOwJbrkv-b@RS*7q@>o>K{szg%qUElqzA{v99_5Dz4)owCh4HSl2edLA`WHO_Q zO;t}Y%CLZFw)*F@#!qtQW(tFtVY{N+{)fJm3?`@JrttB84$l0Vq=4pi^`)`_-LB|Y zu|b>11n2D(1tvST&K>l<`VY%peUjJP%*?Vpgo!ntlc;*t5!bMg> z(37g*tXl8npR2WSTeoY%VlOjlq_%JN5dGcBb9?COa2xa6<_$FW+!~m9AUiWv>=$+h zK^2klEDHb+=!T?+MX&oTu&|;XyXMQbOzpF3J)(&HC6!` zranMVE*B6W>zbK#L&`rdHMXTfp96}eo^n8Nn;1C#Exf4K6i6(Ke4c*-W6DUq`icZ# zA5One-Ni!Pw%uLVbx6m8hRPD29G&;2V5b2x6rHo}@I+pQY1Wyhy81`@FNCO%s+}sd zVsfnt5oEwS9>&pMHK+6PaQ!pui_EkS>~90lZgQWunsLXYd0ykY|V$XtVlwh;sVlpjqb|{Gl>iNE=IWP07swo+I3cq zC!1^Y7zdW~R@~MwB9d6HzMkhHU9o))p`1!uYe&rlZN@co_O9;o-1VU;m2P{ZYYG;< zb+Vz+E!EtlMW0`nNkh{IQej0O0sv84{OEd;+Pd~SOrcD zmG(OT3}B?%en{-o?%F`Qku+2eV;%vcrlxkBEN55_&qq)CupZ1EWk`9SnSu+4dcQa= z*5-klI;?Po#02<{k5t|rQ4DXw;!f!FYt>r7jN~X=dR*DN zCydU=ukUUNj$%M7t5W{E!S6$_h=-vX$%&(CjuWM=I6Ev#{f_PnR$7@7bQ>MF0z()j zcbR}@T1Hz|HO6@8`G9Xc6Dqot$EF}@{if^0wzb1v_=2!)NS0|;?Xa0ztQhA#1S87q zDFpKOxqQ~{$GZ&eZFWuDXgzbPud@>uF30z}EiGl9zIDBp4cGwR?;L-(%&5EFN*6$_ zq*!URJr(dV-#BqfNoQNQ%R$I#%=pzF4o+kwAMKC#k@Hj0q&jyf^1?Q<_V}Od>fN7G z;tm)*3XH|K1J+Wt$3|;`xT85W+?TR&^c0>!yT*CicAtfGDV?^nmyHA$W_O2)9`EE^ zdW`pNGP3-a9q)Bx=*1Iu1LJs8_tW}^Kvb>(wm^x4gQKPH;eA{fZJa)3kYBJ~xLeMK zZ_hY)(UON2gIoyg4`-ST@>z%1LT(a~%a`HzaLBb9C7k52iXueD^ZHHQ;A@5X-^7k` zSnUyS+`$;_JUB|^Rpx@MH?<@9Hi~9ZXUSzwOp;x@&2w!AdNPL>855&*XkHTwuxi2& zZ##W9jm!ve?Eq9YQaFI_Xz3Kuc!{06Jye@F6fMqP^BrwRkm~5v{9VI;!|d&tU3T4-<%iY7%Hdqh{R|l?|Xr zh5?wKqHYbpMH3sZdF!(;f@5EmNSx-IYVTk_aB}+2kBucMM?GMc@1+QidF6GFQ!5vr zls0$slJvnNIT!`3v~&f)o9G$*B0F7KTg&rXjIUm3@jtp13%ufsF)lAJF9lC*mNjWS z&ZB^n*H}Od2i46Ok_!lDvD1DGop1#_1=Us+6s_k0=*`Uw@$^oXnHiZE0Bkb@AeOQ* znsb}2IcePuA0b>giFJ zVIb&tJGt+4hZrgCm>B*V-^F0hR0QTnm`ZQ4<<)Wr0qkrf0+1(V4u}8gtrUIp20FYY z*x1lC9K#Uc(0=q3o!Oaqaba1odFdZum9x$_!@DKsyDPxW^D094ujAM)_OVv0b~kkU zHM~obOnNCOFfiF$Zm^m7Fb7Z*@>J^zz>5SyQxr1LHp-b z^$*MXWcSRI=^uIlYtnbmjR+5!Ffd4!T<`|-T z9KYPGja!>AcqekD;PQIA0a|d`)E&Rm-OQ@C(97_dH6XCo{?6BBWJP^u0;sPg0$8W(I_fExEOo!moIRNgB_>tCY`rqX40Ol^bxIPun}UQg9HCjOOrX-O2s0dQ0JCf_JITsj9OG#Yf9sVT$2z1bEXgAM_n;0NJCy;?Gt=_>u#BG0lO#}+@Y)|v1@A+v5Z zbP0q0wgqX8RT-+-T8w3NhQ3++bmAWRs+7DuECUN@#j&4dT+4VX*Ccg__cipTO|k*9 zo4IGZcNW`cM0mc%v&h>227lk)+pC~lOq5kPJSu%@8XJst!~ysWoF-dQ7uUkhBC30V z69+PM#omQVR^+riKw4T!!-hy5N=#lC=E>O%StzPn!26>|f*iU)8iN|K4^Bm6SqqdK z6MvhvA8n{c?t6`jonrQ}FzQH!5I+D$uO?ocBx;tA2L+u1kUZ@QtM=zz5x&OnnUCun zk$|4tUD7QG0GvaO@-v!MShn5*Gr$e#=;-q7n=&Rz_Y>ZU_p}F`9kNf)&Tdg@0lPhz zVu3$)Yh@)zKlX&ju=vB-%iE!>Qp+BD6z<#`jn8qt^ z4!U^!zHW#d(G+mH`%zwE=J;LU<3I9gOV^y_yC|kEOodeXWDd z+A?F}uLaEq?A2p}J_*uVZ+{-;H&I#?(X3`EA#M~J4Dty~3OC0m3>nHV|sm{Q* zWH=GszXFrmjLLPY*LRW*;;s3@?p%?%RbDjP_CIIe^!AzA<0;PQ@8(F!DT`G0qJH$? zG)*w7s9wf-swXldlbnN>Qu^S|F;}H)16h~iu&Bk)QLFY7>gAmWxZeO_FJ7+QM^gs% zHLuGlv(wvORQ~Zdnmk>+zC(^Yun_L`fwkOs;}I*%mWowR9_Z=qReGJV^uQp^s`8cQ z*Q2hk>l(CI(tdE%o5u%>cdp8>GE}Y}Y03G@JKvI9Y;sBU+}@|i={!P@HO7AC&7ILH z%r32eNV(b!?Ufv^?S9e*J8mi@MFd}OW|1C0=6x=hBYSu&UWpjo*x8Ski)6r*W1n(ZTZC+v_z}u)Y&fNIE3Bx&XUz!5Uwm{s0cg zm%B*t#=hJi64m!=elCERksF$^SN7co^(5ZIUL9iat$Tg5T4V@TO4{uCLyrcI7iWOS zW1)uu=O@c=hK1+bOMTY!Kwp>FY~PQ{`&(bNmYX+zjUpIo;a_2Dp=aWWUD@7#cGE?Z z5;>0dS+NEb9HDd0suDw3Q4MpDVlrhwc(lx2xd40&CodU|?S z7tVwiK;2=<1R>giY!W>5Km~G-j)dslQa2uSd$1oKY-MFt`Qw|*tjIFBJFt=>N5+Vg zv*1?80eI(TEoMDEyQ=gEAHtD|1t`s_mRzYsvC`$Nu@OT=@=M;+?k_6^c@Qcge(G;T zjfnSeg(~Ob%BeI+V87HCeOAeNHD**v{ULIx)qSUxtNrcgSCuKxD@+9DSA-6}=v`k-%?>3j0Fbo5 z{w)EgklI9eZQ%6-w+4(qAU$5Tx(QPaUzweHme+Kg#!W|TS4$U(JjG0n#72WJtBbVa z%`rxjh9r+CMe-ag;8a8UxX4q{UXA+e2l*bsQ`MKN3puX@Tlb;5oI5Om*gQ1_0eG$q4XAIOwue?K-bOD0GUAbv~!T(H&Y z+7-NtAx4L`HKY?b1aT-x#JoF&NdNY3oCE@dNFS%o^xI8QVg9e4JcSUX(*O|iNn+Gz z$y~{{#87@h%CMW(3^hC*mQh^arQu_9e(`^{hli;ydd?t+Nrj^Wf{BGv$7X zT)toPEk7FmX7oD07XpWmn(1-s1%e$sI)a}gBLy-z+VbTw(`OY z@DUM~wK;rGW*ssXM_UL1bzeb~jYa848EtMw=pZYX(PtHaltX|)19cI|=)Uf+*=Ase zFEhK$=YPW4XoZDnZVXwCg}TYzYiVIsj?!i7ugPZzsEuZvav>M1ve=X6_&(wD)9aW) zcq52t@(3q)2hLnvXAe%RJV2)+-m#rhks^`0BIqBR;(i7!hYxj$wD(+oH{4 zykN+plJXMg`Kmd~&vGr3-4proZeYLjdoF@p%@+eJGw(=JZ~g60XWVZ%KWlxZXY+(! z&P_*(d}lKW#y6pdi?lGK%0D;j>h717ovSsk8dQP6zMqZLZnU2mXLBOx5;eB;US;~2 z8WrTTAKFOBMbzI%aCF>hshaVu0;543G;>Sw(OXK|#7M9+NJjh_P3XI~(2wspSt%iw zmi{dOY*`Obq=33sa11fZJ2dgHfC|^V!v^8fyu>SxxX{&+oCjvZUzKW~e^%KNIit_G zp7&j3he>(wQN9({QBltTPCnu&1v%CGl_l*dEQ0KrqE6 z7ub%lN?GU3m=FP!@{O7Or2NVSg-hSZzMWq2>&{+Xp(+>u=p*XeMJ1dFZ9~vy?WB36 zpBL*Wpf2FP(4s`VR8zId)`I>x-4PL67=7zV?EbeXcSlME4I%{Y1dxQYe!mO%T6NE{ zhrP<)3Z3fIc+RzQymK1OWt0CYn~>qV4uk|^WbyFf!wf)UJwNKn-}L1JxRSYC#q;^M zB5n)iwaIkBqJS%0^G8t8M;^1=G0KD^3x`G28+>1dmP@#PCB*AaJ4H(x2U>C1apg|d z&K9VK0kW9gB#eMRREeTzbs}b?TxK%*t|AmlFI*W=uh8OQh5Z{@NOS>#9|85|G1{iK zfchNIpw)}(piM>&C6Nv=Wak#J{o6*pj$KdvNQWpVRRh8B@oP7{izPSC-QN9`OV^SeG5L(QiGFDQRRc zry|xMMMm7(xf21Q24ul6HB8oN9 z9|`d&tM!KjVkKk40q%3Ki~mySDIiJB-HqFJ&=?aCC8hlufsk*hYpi=ctw%$iz5iG0 z@x!Xyc*u^6iugV805JSVD(9#D!y0@{JvGNj-+`vkAmeP2ptS6l7Aep6C)Vf!GAiN0 zthrf(JxkONBaV{d`K&DUmlXo`5^^fX2Ut>5E=$93NmfRS^vkPrp5rJAU8$}q@hh#;oYo4<`5F9VeiL*zM$|m4=nj# znT4P(JPd4P@c@!L;JVPn+Db6?DF`Br-gwu}ekQeh5n$xkSPO>538l7+xEfB(&0i`e zWC@2S^?PMK@(@%~ROBE+#c1)HI^UXW^|hk(PK;F{44jKR7=pL!tbZJ`)>FE$Y{M9K z;a=>`)uyV&54eL`4X5Ryh1wQi_~5{&P121b9Mq1+$h`>11MC;ZO>>TEs-@+}lb{Q_ z^y9XQOHGm@&*K0yoe1K0PZ$uar^fFkLz!O)6nQP-C3j?j6+WUx)uaqzqBfVVktjEk~k0GM(m#HJIf1c36qWX!v~z$tdcC*Y%{~wy{)i% zVq}oi4%e@}SNXV@AhPo!_19caq-K0~*(`?XJ6l0Vo(p?tB$nJ{9@-y&(0#)3IrQT* z^||A+2z?wL*}=;f>uu2O@w0v;x2bA_-0@XIXjD(A}yHG~d-IgBIiV3U|x7VTMf`gJMRf1=Z^?+GP9d; z`TbZH>(8n6_4Ri=2lwWiQ+a@t*7bP80@!OMgUq{JCmgZ3fALp2@KHVW%7ZYym9Kh@ z7gC^3wPWH*JY@V4K;E;bkPdwmWT4P}F}$m3>E-u(+-#Sf0I7Qk(2v&D043z6{tX0A z(A?(fW|lVPutLqRz4mK*USzxzO55oqYh6F@dTBW6zdmKf36DBOpGWs3E0a_L%FqSGh%DJXrLtM* z^DcR_M-~cm%a=gBCgf0vf$xjy$_en6O}@>d<`n0TEbMhAL21Y2Q6eiTaPFuiUmUD( zlI)579Q2T`Tu6YOLUIj`wfOf2&T9l)XE!Uw8fZ+ML2}Y`k+qt%8?us* zIFm~nHU*`00Adp3_$WdeZJs2?@7%FO#@d7CdN?SM&1w+t_wm_D_B;Vn)c$AId7Sap z%4`;u*KF+g(3E9Ej}STVLVJD*&+hUh=jh3_i}2u{K@MnMQj7%%s(m2piy{JL9#>dy zKK;tba{Z)lTy!IeM)kj}g^0^oSgC>|SLMlH7+&;76@m6DlnDr6&P# z$nw`=0tVSx`*^7yRTnU_m*A^Iw%dIjsNwf&*g4v}=*dsSt`t9UdB^M9ZCH z>ab#kaezXycPoe?d1#!ZFjL%%!w}4ny}d8rZ#c$WGuffsu{mC%*Ifl5wRGfFe$5m`bE1of4{UZ%TnIX7H=5XblwIX8;B~XKHy+Qsw&4 zwPAPdIaAp+mo5Ek!Cx*W`6P%O5d1c3rE4~i2f?Zb-WdgiOoVl6L%M$Z*SOAe%(Qmv zQu=qmSo7pstu9gl@7@7aT6>%H1)>cipN2&YS9}U7;4|}$oFO{2x8Ael#D|J>;9(B^ ztA;O>Z4EkyBn&wsVB#b6NM`y^eLI`hQq#`b=X4w6FnEqFSyQ_|y;7S*uE%cgQ#R)z?f(nNQiEMEgUYI2 z@hnPQAy*eaHKKJqFBlrTiohrbKA*!?HQR@;@1U>`SDm(|UVO)wHxJe1Mp#FGd&(Tq zz`A;Kzu-(nNbtQ+{9uakDGZGLl+!H{YG&yrrH?VzCXrLg#EoLFz%~7uEh;7B=Aauf zK=E52&Kvm~Semz~kk;}+T&O`97!Ic9P;<{b0VvNEcC@Gg8sr{_&&Or#MT7F8)={M{wrA3vjE!V5!hR6|@N# zD!Mg-$r`;K{a8LrVpuo4(V5%E*Qt;l&-~(vHeec)|uJaZb^>3P_m*^A(i3UT+>o^AW4Ybgn0Ok=%V;5XFz{5VRVfGL?|vot_nVE z8t$OxvuAfRc}1WPkS6#fsAVu_cfkjU`$vfo1R3dapOlTAqQDh@kM7NobON4F$`a2v z9Ws7QHs9U!H!CZ*Z@j(P&{Xsqn4w3Y;@jbu1c9kMN6(0n3b}i{t7ZL@N^MVyYjW-w zzk;vvE==m-Azyw9w%};F7A*W)<)==XytQ@)+~w=}d90-Ihsp%EFeLL@DHJ`=no7&1 zL^4YGaY=7gBu9U=y3ZF)Fz2E0o8nd0{m|e)tK975?T*!TU*odsCR{!f;7X+bz=1K} zW2JSr)C=8+-xcnydj{_2J8gW|5V*OYW-V2M))ke3=9Y8CPyf|E#PWZVfmEyvORV{>HyO6mEbH1Q0>)()eE;W>hjK7$jqB zaG<#)J?*kUw-#d+7i&RaYtSHNmD_Tb0Ib2)0$hX==AzyNf}&PuWX7tsD55=rA*QkN zEjxG1uG(I`zUOpe=(Fb6&tihgBE7`46@1&$@7XJjHZJfbKl$L@{~8GA1h6h8#SLb9 z-_u327?2diGQmG>)=ozYhN34)&b@$0q_Ka&&0%LInj2!>R^xhj22jVd=|tUtKp=;+ zCF7G-$C#j{WpjCGFlI_E+JVSGcGAv~2!*=jzlPAMsu}v*%h^A1kQ41al%+K;d%%D; zOPxD6jniMj$-+Y}cgje%QHhK4#^s)f4zfxuL`WoO7YtVa0oPxj8A8>uuND{Cvcx7D zO@guKbY8GvcYY;oqvLAXd6thTOH3n#bu z2Y$h6iRX`_4ZRxGmgRnlIy_Q!vIOdQsg@^iYk;1XnG9!GERXYNO4XI>_r*t!U=+|O zXOye0z~u;E{<93OM86I=^A!vFvU&wGVtx0_Z%U_Udk;O7``*_^Em!QJ34kHjLw8c zwVj4XlavDa{pD!RU2bI{Q}*?h&Gt(i4xxj;0C^-ZW`F*yDE&$~tG@XcZX;S%f!|L-PF`2eyP#CJxl9cIkYsuW<8>#65EhriSjueFpr*qmV|X zG(X6BLNLTwn`ZMKE|im#I$D!xuEGaJPH_wx!9k9P#6C`R5~jYh{~mB&?qCKdOCCm- zdJ(FHm((Q*u!u0uTPU6I3c7dFURruG-646b^Sp(g!x5s0NjUGyQ&`P4#V{Si<=~>_ zELU+$$+e97+oPqBdX0_A$@Aco2@#Ie6!u@(?d{jYU{rp7zWVHA5bt3S zpyW_QH3D`*B}PB;#-Nq8{MDsVn|I!`*nafi1s8l?Dbg|IOpIgUWbtq2}$8_=xDZApZ`g$8wC4 zKBcG<{t9LhySsGv{OA4N_Y4`u-u{K48C1p=gdFhiM{Zw;WN6f75iCac_cY8mG-ZM?6P43Bm z{5(;QL#WP+DouJSqszNUo&kXQKPCNSpZ7FcV`Lt;Bk#O&vbi&D4)-#7(wtah1%k>V zLB?y$=etnn8Tl3rwxWkwcfJwtZ64E!Iv%Yv{G@}NPUV6a_E+15_?$JzqXiG`;Z zK!Yt7jF}AN-41leihp*wqdSRby}_*}rh~rbUDAs0P+nu8w8LjT19ImLw7<-c6>l&! zP@w)(nP9B{@wRYWV2~A1S45n}8g3UMg52nO&d-ukS%^|epdYOICD zu+KhW7sT*x96+wI5ZkjG^<2l0WVc@&e!BadH1<(sVfF{Q8AOo+{a~2r5zropdWi_7 z$p3`6BJUP*nQsxesK$36`usSI=Xog?lX2Vqu1@@4Z*U2Ocm}Mufo5D!+l9y-8IaxP zWP9CNQ~M~OZwE;EJEsVQiLyxHfq2VbuDN`&Fw}gEwLS@w8I+$9LAIn!iz9*$S~+~& zqp3m_Z1B@)&j={#cWjXhGz888%^?-d#H6gH=%nnUtbiVV;G;v1@KPXU4|yzS)!?4p zMGHuXJvHb_^;)m=zxAkl!wI;{qCHY%1B=8w09My6)Nr;8=A^DzhyJkictAn>Hej|a z34>fC$V$>d`ObL^hfjqvU;i2<^Ojm>ERKh4U4@*bB!TYVV}lQb4QJffQv2()k!1ey z>jEJjU?d`KZL8{eTpsD_Y~7mve`&mS@F*JOOhf2FKZrX9tVQr5%A;&|SZPYa6TVEN5{v=Raf&F( z?>hMAXU2iLTAv>=EBUVw^^T0_QQ9W94*m7)$k1s88rJoGExrI6NboUHE-w&Lq;~vy zOc46yXURP}Dq_i4sYtAD(*Ws@uTOh_EOtu6zpTitrByC;PKa!}N8e0+^(;Jx9+7MC@tgTbd_ zl0Rn&M0nIbg*eF7TfEOF&L}w?+Uaa!YPpmba!kCQIM39?hff@BS?3Lq|~N1wE^k7@b`V^j&Z(o{<~w`_fH1Ataq-p=9+V^ zXFiWIj*i99_ZXPvN{Mp30Asu6EZRa|&wQn>@Y7N^VSDa@0ql*RpVe1>|7MaXlnqBK zn=Hsi>kwxAG(HLOhB*j|P*V|d>bsCa4I~~mm`T;9bGOgt zwwvWQa4hb=wQBA<(XUFt45b#-@^Ez|PQQXe*MDMR>irzAu*$J=GRJU2C3Sv$K5pSG z_RQnjHhcHVdIjlYu##t@nEUb@BcDW148NutL<4h6$fD(9{gxBT!ZvrJ5V~`+y`3{U z?|r^8wGYpB4Qm@|m^Xgnwr58o_`ug@wGwh6-rDg_1xD!1VI1M&nxBp5Xsh}XML#L{ zaCTM)#R0Fe|DsfX=4dQ5RBzsBpPaasTd}M+(!aV8GV2u3nrWW2`?(#}XUcbZzE0#c zpTk+FMZlr4*{L4{@4vnMH+< z_-AXVkx*BzO)8*|vk5qs?mo!32IWth^6F}G&B^gev_TBfKD468(ewvsDc4z&v#ZcO zW~C&R492le&FlLQD5!3k|Hy^DCa%%>wT|xO)}>lUqq#l4{<*3}WIPoY=&dR#$@dCt ziW_N@+;3^=dVEi!Q=wr2^PoXM*6lONK(TVXFk23|YL6f%EX@7t(r?LqFtoh-!8rM) z_KCNw@OpKou7Ce~d0O@I4b@PllagnS&G}MPxw@Z4PSQg7^3m5E+|JLZ_FUj06|6r` ztm@rPL+}yxh^^8fyi!jCDd-^pVcfdi-H9HImTlN@lnv@*A$zayt0*dRVkR+bpot24 z4=ps|=kzDmSW;u7-Cn|sDaH76>rvQ!OLlLHCwIgFbV){Y~`?gWvk;p?T) z5i#o-g93_%0i7V)EYI8c_-1-21{D5(+L0A5PqtzFt{aIt&oP zyZwbj3LTYqqRg^*CXbeZI4QQ(FCQ#EiDMovvp*e(B@r(4W! z#k)Zl5}wCG!78q>ybEFdhK-fDTMw8gA)f${GJ{A&q#gH};HxI*#DUgjpT!oseU7Nd z-Vhp>t4~L4s{yXo3 ziQ}KPH{;00XTwniiiELsBTv(OS<|ltC)%29MHA-pL{_^K#9B=w{X>Y&D*Hw>aehr` zkx{+wgC)}XUPQ)n8*@n_BFzX@o;N>D!(BplEh$;uc64+kDc~}`d)hkV@T2TCY|pxd zskMV{g=X2H@_t(q#0tkYw)1&p{T)X6EF&|FyLZ9jPRB_Fn6hRZ>`swIL)k7A0JEAe zwtS%H5EC4qr_*qeMHB3!7@scdj))Rm5}JDQ<6f5nwt$HV`n;!A)&mY2%#-hE^cX@$ z^g{)TziL5Roe35V9t8Wr@@Y^0omyE4_XNh$c^?0RQg;JHJC6?0>B)_%w08J|lEvwc zkA7Z+crA>vZQ)6-&&?NW0WA0P;Dg51M1EWH)VMGjVYcx@Vdu>(p77fD)ErvxuuubdNOso=g1t-3|}&a+ZMNeP(cIHYA)b$fNtPbWIon-^G zx%Dbvt|UsqFUq5-sgtEYJX*wya9mmm8xM5$&{7;9#PQzoJBn;sckdAWHSD@q&*&Iy^{%&atO*@KkMlqLyWe~28|*z zzlM~rogmwlHCxtT7oMa@PyzR&D_6P{G^$@oHplc`Nm{O`^u0#YD}P(p)h=6!5!|{n zRTflY49`yrsfy`*{^z<-VBUwX`Xv!Uh6Spb9&u;QC(ZhPQ|l~mVBZ&nMB>OB(PNjV zne#DtA(4UpCo?~@yEU(9LQD}bE;>lyS&C-s?1IPireVJ*FQPaOaBW?-a^Sh2hU+j( z@wQL|_s~h>wXAVJdl204zR;mW`-!YZGz%W~gQJrZip6gR#7g7W3~xeOe@K-iD8T-B zS_F)4@iMPOF#Lu%wz~2KPj!D(yj?eCctm;hlS$s;rKZMFv0Jm-K&_0&6Vjg;Q(#2r zore)2xaDO$X@&XbVMQp%3i*N*L{oov*=wV=}bN_@2k}JLbaV#Ul~toa=cD4X(;=Q|>gn9Bn|XJE+arFipG6 z2nEBh#v(v;wQIW%nyJO7=7PVU9{F?K6;3PtLKGAPUB2)g?(b)F8J-7wpsC1iLFvz6 ze+OZ>;z3C@+)5r3NO76>&|AO6R6~%jj~Pije`uL&d=c zz6ZB2_qPAF>!q?1B?Xwub2^o;6!rvG`of_mnHqYs_6^Am$Jufg5GpEtAvC8v_kDwm z?0b!!vL0iPUr310&S}iTO-^RU$_3VI%SU9sGAWLjbACK_0QI9x@vA>lq=iy1gbTVE zk_?;bg*~!6cQgmyl-tOfMEiKX5+eozE%c@%td*(yl}d_;8}6+{Ql2}Cs^1?nQ1hoG{8b(DmI#2 zXAiTv>*;<7o~1B&KA+1%Xum@3&9Uf!M+JDZ1+XLFw4*yj)H1IrJ4nb`Zsi*$KG^eqgKixMb? zAZD8MU4XWQ0g1!dyqSR%NAeIf!?}zF@rNK7!vskJ73S#e%tuMHT8gWp;e^eDwh316 zZMcokhHMqI)q1ri-Wuide4D7uvKZ$K*gFv-SIh%Ks2SNb1&bABVBc6Gwh96_UhN8@ zYZ0B~$%P#`njs5zV(X%ZTx#aYQHE9Y7a861+L+5jdR9L_k)Zz^UZ!qc2qL6m!)vu4 z5CjHEi3k)CR}xG4idobwB>cIxWZKL_z}H)e?CIk2ds*5Pnx&eT)u_9Z2m6`kfi71U z(lbrJJ^;X@vgL$Tny4quM#iM+($n=MM?O9*RKU40)n)iLXDlBLQA?BtWh)~vr})()~{XDf3hxb-#1T{grpY%k?#8PHD& zzJ`K_^AIAW@iY~;*v3#Aa|3vxsw3^n8l~!&XzQL^ZyB`<)#T>|krnSgY=aiAcJMF0 z;SIeWrcF_8smd;Bv?8LytA8sS$-f$#P^E8egy)pZIm0lk#QY))(#6#&x9WrALZ=TI8 z6vzIS6CY|euu}5qC`2MvxP#b=L?;}Z;fePN^3*;#n5_=E{GACk35qXJrF5~}uHB0# z?O(&}PQE034NGzisOn8|oYn3MxjW+h@gR{A6a%RA*D#$};GcPp@-;rW=xA%tl-B8L zYiYU;vT#mixo7AJ!^-XhpO_$(_(aWVPitKZ|C4TvvxdCW5r>=(~B;#Ds$>cS8FOV>&mF$xO zMJ~?ZY|9s}?~OG2)ZMNbC5)N+7c%S!?Zq!7Z`K%yx1C<|sFIRhM4;Q2q{l%Ei0uP{ zv5mhal`K&oewCW>CeH9(CJOd&HLg#6;gk5*1U$SV5<%tnF2j3P9_Q#1^bV!ZlUvNA z5>}=jDA%Jqc78k!h`Tm79v2}xDoZ;J?Nt?gf2CVH3AQS5qhv#Y?3WDf0ZkcczWiUq zbBpgB+;~zv1+#h7kmc9*#+3+{zLTAuBhtH@>~pfW;d14FEyrXuV7*APc(j@%K=OYyXsDa%J0(dFf2H# zGyc(Z&y_~}36!G;FtxVn1%vOJYY#;(&2m-t{0*NQ+zz|hM4@P+HdNKus>}3(=DNM| zm9%N|H7RP(krKZiXS_L^pXmT}z1jQrG(q)(H-XT~e1npefTyTK>{``G!Q-dw2~vG= z|NigL$wa7>>a!X|e`w5|JY{tW8t7JyQ8lSgTS|tFBH3Az1eY9c*)-QD_Q9ic#_78hrh|=@-goyAtaO=fzJh-g*j%k0RnWmxI{$&S3)>$eed{vM>#SO#?0TkPGt ztuI3_Q2Z3u8<#QN8Gb@%;ko2RCe&Yo?0LjW7}mcnpZQR{i@2^LBi-=*e4hAsIrF6D zf*g++sli9fX`>r>?DRB~p^R>gO@}}CrgW@Ocn4h5(F)4HA_zYLK0$NQ#)hM^lcSfp z)NOlk&yzZ68Er+0;4o65_s)o$=1(S=7lDCosngs|cr@v7Dt%83{-|6BOdFbLAo<;A zOQi$DiHVjEB~lna9AqietwHa0Utc`*aGh4t@R7ae@sq$a=2mT|$1hWew#ah9LT~49 zz@F4-3d=~OUWis@iR5VZ)=_~*eDG>tPx0u@SG2=QQiYSnz$GEEF%e#4LnwL) zCo??6v8!`gT}gl~A1-9c;E|7Q@SSYl7AAbl_7C=M_iyD>vp=F?ZTkX)oozA%J=WR# zW+7X*t{P$_y{^*ZKh?Z}{&kYzFwai|Uh>A|w6dPH@!}nc%I-pUa$EGb5J%aVl;2B2 zR6=Q%Z_Vo|>_UZ9Kke!UpY73lzYQ1s$9!k&n#UY68e+r0I5d(Jm*7p!mm1tC=@f%fOOKBsK%mCIty z<$mJlXF-iK;_ZuaU;Xq2Kl$o&twGH!IT;w2)HXRi1s-t!ely+R@BeO-o2cgRhqc27 zK>zH`1G_mtZWea(Uk?L(O!Cc^Kt$ zl4A({ohz`|K|K9Gyt3@x(BD!2-*NxX#dC9|EsnC%QXM8 z%zu2wf0_SZ*8fja{rkKAJ;VPo9sgy!|82_upAN!|jjZe4^YMdw>i(@vW7TiDHdXnE zyp5Y4h4Qc~jZ#Ku*Y&e~7Vn(k;<{|aIg0iPU#27T0UcDj@ z?bY4&e-=F0I3Mu7-BT^RQ`a?-L0bG?KbcQIaU@LX>3i2Wy_KOVa>0{4MQo3R(IqkR z6>yyXIh5db{OcB$+>%br8aAKQ&1;X*kXB=6mDd%7n9ZpTP zmhJ8AIAm18F_Jpn4vrcwEykbr0?_rkll)8`Xh)|rHRG$)H@XQu>-{piU;aq{>rnT2 zB?zJ^@)U=K!_n?esZ|o~AWLIqDi3d)J55LB*{*Rr0g@$(=_+z0`~WyJq4C#DL}8*> zH(Z0IXxn?W3X}Vy;{JZf-3)|^F%Qwd91@DOXR7NH-aGyrS_^WzNh1p*2i%mobG@NR zXcgks`N18h^-R$_u-*J4@j26X4;L?AojW+y$|~|)sa7e%Fh-7K$Ju109qy@XVg1{= z!g@0UvCrFlxmG-Ff^%wqnb4mmSEaXvRHN5t+9+q6i;{VG2j3%Fe&ZFom0SUI7mw9n z{?zB;{`ZI;zKv@C6uj0agTY2d4Bb{XIsi0Cmd*}UY&V<)L-R8plJ4}awIGGW=e|fU z8SiR3Vcr#zT*TJsQEtyVH63gXT>a-@PRVP3uJ-beKAxw0)WyKy7|g+~!Jq4woJz?- zu_we*f@DRvSM7si*G^OunE&yt7#`^9+tQA2vrASFMmvtjyA81p z=h+^)+Nee!Cs6s4vnW$fgm%}tN9w3tSL%MxHX+#5GQ!-Hxj_FLa$`9;$JOnr1i^(A zO1ZD;(aID#;tN|R{YziwbS0)@_f-8j^W3OsQ@JL^3comcWK8tF`NPlj-M`(Gdj2IF4^Qbfs){iHn(hopSzdJ;Ik5Id4INb zE$;q^MK3AM0!MDU_xGEy|E9T`;t5X<*DC%{s&!#LTZMwdmc}OLF`_tTc18 zSdt}!CYnTmKg-w@LH1_n3KHaNeR805ToSm6g-pdHWOw(5C}g`&lA6?RBiqKiNuAkE zTI)Q7t0M{vT&(En7mGv#MTDP&b#=NEbrV=|9-?`iN7b48awIWuP^YYmzLU96IY1_N zvNT)t{S!{hrQpem51@=Q`w0lCq}zfT(rA`hB~^$R&dhPI9|V z%G2@XGv9_1(eYF z@2sq$q2eQQ@siFxUS_5Bx}aNR@zZWT`9b-1# zREkNnt&(z_VA^e9#}(9|aN?Y1DCn@8xw+BY5W-5<-NF6sCM4{+1%uvyUdq*{Qcwl2 zd&JrnRK*NM+9-qaP|POMhr&$mWbpK#DDpn_(Ba#s8LOOZI69&;rCcVtR{7Lw8#lKR1RFu2^QNp z5XCmqXDXJ$fxrLj6ii=A$cpckvXiN>RcDU4%UEXTc;Z)YXW*pN?t;^5$?7n3@i)={cc^ z-a@lbUFXN@UEAn|2a5)=>X}|E^RiWfW$pD?F@5j*xRd@G#10Tz?0>vy^3|05B~_xt zgCh_}=3pIsXY=ap06iF&Xt74|W>Z&x!9?hWUdb+KaB>uU!%!h|DKb~F_@YSA=Oxz>*aO}Z~T96lb-Eu6KgyF4Z(YLU`C9_ ze0p=$341BD8=8s7*tz> zdsN3*xQHeGoS$0GHR+S{A*@1UK??$Z1M|mNX=c1Q917m@ZC<`N*keJ>c#DMi4^PD)|%8wAF?-75n*U6^^q3Mx6dU|@qM6s~b zMpVtvAqBU)>P>!ew`BGz^u7HOC%MrwdAoV|x5#H0Ldb4C|kO>!V{Rwdr#wIKz_GjfP%B@xS= zmA=TUE3_xwE^NB4n~at2hha`PF-El$7DBq*Ed5((55DdG5;A8+g+J(ZTiu9De*mE? zFWDBLrNm^574>%Gz$ayS0I>$`f0B-Ced(ajEZZ$`+I%EiU3TE z$v|~n8gRAIadUImJFMav);oPxN)_Yu2|Fs$tza_kPk5@hrjss-3Ai`t0)v9^IrS<( zy?pud-p8BVkRarHX3on+LMHf-{yWn#^gUGr4TZiBo!! zoyv+J28@zRsi|=xci2@`U7qC?=VO|jkgiH`>^ftwe>It6!+D*8w7#bZ7*H~WEoDYx z>O?nm7B=s^G8@GoI+@_h!LaTPcGg`ep?t~_%kEv-%C72XU|@g%RBV!aMXk$;Bldvn z={XP{Q|&kf%uN9l(<(+8fCNv@aeW{g^y`lTY%KzysPG_#_?FA->&!6kku14rAYXQq zO~-Jdi5~30S9Y78yM5-%>re9awRY#7{2b6{cPL`G; zQOJ>poa-;M0p!GKZb?|^KvsFCW+(x`Rg}5l&gqW&*ipOUCah|MS39*>4*O+XSMwp+ z&h=jbSjW$Ae)s|tt_GUhC4q8Z7Emb6aZ3uJ;8vZqxs0|y78IZwQ*hGJxwkV{W9*i- zrSl|mBCQ&|rM#KVFosRDM3LM%QSBOS#H|0a_K%q9O-8N|2b<5e;34TCAf8*Oj2Kwj z0W2SB-_6d+Fg}b+Wsl-2nu~zJV_D)t;F5pl6konD{~S)Uu@e8*$IWHG*OwoxBpj3o0H( zC@ci6QIb~cFL5{JVZp}Bp3*ns-6lJ_+<6W5-{E>wp7*&;k3hqT0A(LO3P{MA56lLF+ov+vUag8z zN#lDF9d7k%ANQJweWnS^gc#bi=|qQ=#d-TjLN`L51x>bcra1?^xwyGa4DXL6m3Q~K;d zh)D-UJ&L06VpH9oxc*OQqW*<|F|*R=(gWO?E(l*WoA#1#{;Da3xn_}!<*E8(5kX&u zg@v`YanXiE{N$#wZUL18o;2q7!|5nwx_^N{QZ7NDVQL0%pAh$keyhpfZ@zj zfsN{SBTtDqcT4P%5wWISp2}XeL9UJJq39a$yt0mcT-;8lyo7M2i)sDvSj*!#fX4CJ zi3^Ez;G;A%yO1wmvKSR&)d@yDdYUlCCT*u)x?VLY*e+nH>gWhyVl`)5PTG7j0nIie zkfSEgO2<6Sbu#~o>2-EjfQRq5W(Sa*PYp`ULn~A>ju$cm<`W7 zqpu^~zWaE0KbWz!DN={l>&pW2L37P-7TNw5$lHiBGQV?V!!80SHurd&5L6b^9t@lx zZOQW6%&LfN;RMx`mxJ0$nGTrg%=v3sTbm0y$dkp^hpJ5?qUb`6XDNwi>J=l?Ps1!# zIM|vrdxus>(m&Gh{`Pv}zQ2CS9>*mlf zHL`@(>yl?DG)RH#c!PA61Z_t%iAlpQ+UwJ1tJ1D>ZVtBX*lK$7e4G2Gdj)9HS@xn&B|z z`fTfQfyVU9Sw{etL~M>zb^FZ$nmyI8Io2^pk~EONW&q7Nf}x=Z;nCmdV&LwWE?4IC zh^^pQ5bg4~C!OBF@Jdu<^;%GgAucv>IkW~YCwAt#6HZTIxL*kud#Rjkwpod`H1&wP z?nG-95&nc-uI@|dZ9t^`5^xP|6qYt;0N{RbgdOB9P+E^lP9!LO(%MBQQ6XgYZZIV| zn1Y+DBf7K0Hy0}+;oCRd@3Fh5pc63zVdOB-ewhN`1N#}+n3$@7b>piD(VlVE3lcW{ zY7Wf;4Y{KGGc`-|Uw`!)00eGDEANkrANOi~fC#j@wWuzK))@p9KD>mwg0~e=TY|gK zIzH)Aubn|$1a_Qrrq-$>E8G@z?VOoNs^jffhw>XuRdrXI`Cy~%9qflHyvrmrNkljq zr;pVC>G)WOE$$LC!P&QnMw1reo>pF$y1~}L@Pd7Zd)^NB^=T!-gM;r3Vr~7|JhCh+$*)QQDaFREp_r1|w%<#9KF2 zxcBomoW&3tI0mB1eAo}X)EtO%JN?;vttt&YoUXNJ2!)C!Q1V&52*jtD@UWKH+@7uo z>0WiFm4x=-vB{%7kxw^{On$ zn%wp!&(wT4vpD-`s0hq`Cjo_yUZWe2pn$;8{&Hvc++4B?a#pV5U4I6MZ&U%1aFo?T zteQk8l7IrW^4oXEX0F6^kV#9NH2Qw{LtklO7l(*-osZW!^b z!i@N_Z*IIM-Yc~|*5Gp0^2b0?3p%I(px#fO8&!76pLZ?fuu4&5`RbS&OngRQy~H?1 z5Q)8Ry|uXjhr{eOw3N-QE~pdH5&9)tGv5*uLliOH0XaDU^q&Fz-b17{XiJtvgr*GH zPo+s98Vz1?r5Eh60HOHqyQ<$yfX(UI=$=AoPW;?oA7XH>+_9t$+PeZQwRkXY^_<)O zWFavh&_tQGpEfl#NRP{GUp#C&PX%7`+SETSW8k|c3p_) zXMS!EXLj}oTK{q;Q$YenREVHn3ZsTDjl@MSx55TIchJd5SbU>_%z9(R9-DwNfgS<3 zUnbxARg>x>Z%2@>pzy}-%TY3q3G}IjRrU&Cn()F@x8I#Y)H-j4eUg7cAkjHk#`E2I zi))yY@bv|*XkkLt<|vW)m%F0#{{9QRnq_6CZzW3O`Kc~PbjH`IAe$=Ovh|p#pkLNc z@O}ou?XnYln;COuK6_pc>tBwYIB$$act|p1e;dAHa#uHE0sPad5=2{-weJNB61Wqe zp$SP4LvY<>bZTZDwoeb&(L0(N8=s3iZ&UZ0fbP1H8*)}1S2b9eiE@%aI_c}Sr;w5p zh!EeSW8@q=Qqf0iYPO{VuO!@lW#O5d4ZBtm zu`0oBZ4RxDTPQ?C9P0R3FI&RE0}B;8TJ)U#>FEiMtLu4Fq7!oEdFPQZuNF#O7Ac5Y zL4?y^h_=JH@Y<(?ojp7)pGy0>#pZDP8dDA};Wj&;6Dn4gX|tuqaccYPRc*ewJoA+W zfo~>K6zh{b;y@?%NPj5R^7_sKnH-wOB^KxVsGTQhS2(n#rW3FkxkHdZaqCtgA4+J6 zRqHw9CkWd{>R=e&Ua%IwZq(_1)_Ex)AjB;EMBF`nk8XwOne7SmGNvxmT0gPcFkdgvCT-@*TEt#ZWpa-#aNT0q0xz2q4}5MB&UUexj1J^Nk}U5o(xyv^{4=>|BXt zEjBSUy?aY^Uc1zYyA=s41dmzLCOP8$wW`!Utp6Zfm2N*k;UOq;owB~?Dy2H~V9ajJ z?N~cW`JpnK3SKx4=1k63p?f4-Ii)3AFql+nG8QCv#LU8tW56B1o%1=ytNI@r8)MF^jY3loH+>a`S7($C=5qN((ng9&kzZt+%H$f9t zJj2>5V4I}A{{(Y&0*WbgjNxA>kdi& zBinhACBry=;=SKhfU&nHRa_hcq_0cjm$cA_bTW7`#Ylv*r zf|JOdGvab(LM*n<`b6{PksplMBzzsMS*4pj%|Rc>V%rgn$ z`ZP5Mf(~71>3d$iDf%mV3;_mIX}u3VD?(;v4Q%;DMvjk z4eP1_ZMtw+yRLE{nf>3&l(0F z>rjYjIsyi`MELk4-aU||daz5Ak895_r;thCeDX{D2*X{< zN)sjFdgPy`E>UG?3Am~9v$$>0_8;e)^QlF61Aize^v=@yo>T5~K!Zb^VqpynTLvsc zC9sDuBKIjA{BZnFBqWjONy5&^VmF)hfpck6#!)N;@uJsS5hlGa&GOGcB?=0DTp>&L zm`RGOgTw*pfe1%H%$=(7t1;5S+byyz3`ZaCx$9FN3}<|+oN^%xXe@9SJ8F}Kj&cBF z+vnZQ+O6QHvz70up1z-v+0WuWbN+_1A<5%SqZP3GR4|!GMP;p`9WZ55yu9|UP2Kls zhG65|vo=Z+78(o~oF5y4gXOt|t-)jNoh>zWSZ;`>9IjQUI@u7~(CfiuOe;(Ey=3bQ z(*!;V3c4*(_Q-_=c>9)p*jCyb&!K+K6-O(QIbB{qC2#FG>dk~K!Zd}yG1Sh6l{}~X zs-iXw392&>E?Yieu#N!EW6XP&7^pYx!Jk!}z386J&(F8&r|KNpw=m*Gb(^$ihP7JB zp$P?7y`KFUoQ-BjBEwA^?q`Pk!Pg;hbB`rDhj4=!4-Pu#LJbTJuLtMdVX~^;))!KX z;dyDF@cc$RcbnvPX|fp9vQF4&vOm3uqc;SSZx5PI=AU^G(b19J5m;#CuWMtP*5K>5 zIY?P|PmSO11Kpt7Efwc7Z`(#Px7g1lh8-r7Uh17q4Cb)a zX2NC*9WSlW5jqr;cYR=2D+uC!7ajz=h?h{BBqzs){~5_uaS>5 z)Kecj=b$_8?4R^Ha;HmfftZXHpMpyhYQ6F`h?Ty*Q#P=7OXWJL4zKrMwNO%ocHz>b z=J4bDpgyFv8 z0Cm%e~vOP6YO;I-S7L=82rONY4_V5x8|;s5;X?y(GL}SPz%K z?WPB;@jRUp3VbX6L4dF*!T^-Pmwzl};7)W!5*c8MbHKtRJ%tF+=(gHE65v+}iO{oZ zl^R)xg&?p=YZ%_DMw_73uaBx9>`Bm8V4t1)S-q0*rPal7O4e?+Gsn!2WcWOOh{qg~ zD{?}B&-7K?GdjZa+NBaVYs&}`PI!EGkhyakZ^)X_5|BY`Wp*l)c0H@HUBKm2){{1E zJXTFddc0hD&2U@niG(a+ed%r@@e+lRqqi3?27<)n+Gh(v|I2kdDwgvXChPByN&6yL zwXt04xlS8Oze75vMjZ$kw8H zpCG;8MWgX)0QXK|k?qufP6S)8ym-Zp|I!DnwuTDHp?!&CVKAXI#}qd)x34 zCcdfWYtiey#`InHeoU{jPxjf{&p%$i%p5i+r1+hpqczdBMDg2*>C|)G1{?Hrgoumt zsJk~xjf4h@Mt2Gq!H^U#S09S{QYHAb#w%)!Mf>G{J__!S%IN{k-Pl*Nvxg3vsI z-brJ?ZU8}NI{Fz%@%tUaprVv-hz>qkaisYP6^w&keJL*EX6iJL#$y{3UbMP{35T&^ zKgFPsHvhS_Xa0|hnOmp#uQndJT46zEz}LPIZ=rT}^L#OX)uKui`x^N|75Ith<-l6; zVwCP7fWG>7J+K7td`c!P%9onXq%dBIu(jw6E+)*yCNv>b$u_6 zhrWUE4ZGT)VxI6CBz6^-==5+G6*dLVF=89=w8tAEzvH!p_}P-6IdOB_l12IKExuk2 zlo@xZ+>#vJxw;I}fq2ZRpwYaZi}y8$g|)srOWK9o=9k#AxBbD9?rdD^H_qaNpw~qC zyHd4Js_gaarJgi-62-gkoDvLS_64;=X4G>BGz1YAqQNovzuk!dzm%kK<6=BB+g8w; zXieiuTu}Pm0gy4Qk}93EOuYKqDl=KMbDP%FmXT$ySS1KSZh}5o9JLgf^F8M)O_FY=F8B z#O=g7vV@JMks<+6{MIvLUNkYk(6(PU-N;#JTs6$&NWfisPk@wSkhU>AtnT+ANy>Tq z#{ei*)30L9s9ctwl#ri>k!H+3p_TOZ)kVLdN3a)n7hWiA8&& z#{HV!zSB2SdtjIfotnmb=(2UvxVOxNd1d`W8>3}4`s;(9AlxB>2Zl8^CV-x$YKt!E zx)i=vV6*=MnaL|3^`zHy>5Rb6IyFHcV_b(t#7d0;Uh`rd-uDjaLYEyp~ zc%c?Mera)ko&EJk0TM3McuK@~O_|PuhKX2hR^571VIb3e-Y#1PD1B2|P#+CU-6Ede zLLXV$38a9w_g6YaK9R*jwbZSGs;7qaGRHIT78n{D4B9lv=~xGn(0gl^4=A8b!$+ri z4{htvh`|y53d)Cx@~i+6jNM#j$r@q$g6K>YNhM3q2guw}jzBWh>;y*m=a}cgv>ILL z$y=cA(Bz#C@g5C%7|xyfiyY@@c5$ZYy@adKQ!Pz+xFU>@xXJsx#G*Ks)ALyckx+1l z>7c3#nUw!Jkl$KsBqTz_ek|B@T)QfsY4A?mG%OL)YtjAKgHe721QVaAarU=be3Fo` zb@INtZ_>{}CkW1m4+5x^$=!Zi6Xt*|D2Y~Sr_FGAa&SZ%a4feF_wRPbm9?v%uWD&4 zF|!{sepirKP~#2V-cos4rRom^!s)hpeaU{uCl>gya}V_4K4uE;3v3{&FXN&r{Bsm? zo%!6N`{4bB4h90}>p&cLY5}r%i8N&%XsNK81FG|;f?I@XMJnljXP*mpd2ol0j+R!j zvbF>v@y_RuN%brGnq)nn7D?-L?vCYuo$eu&Y!K`vJ{p2tCfYWuS{9?xG!3;m`XWA; zbar^s#Ll`0XKZ5+d5a>uL-2jij!wiz^o^1$lqG!2;UP(yJ5vel$$Aq8M$la_;sIHY z7a>s#FFtVpPB5A1J;|tYOD-m5utg(vw&Bzv?f)a90j2E5ffj_n6k3TF_tw>K2 zxqobNZ62;w>$Vm7qNb2&Sm7P1@C3`EtgXwET!74C8`c39O9qb*?coS{p3P( zuFSrytbjI+h&xJN&6k>c0wSarK-X#DIiULdw)c>Fu9EfmFGBO@3$~uOoFtyiB&3%M z1sH*7Fq_c4y?)EUKJRUJ)S3)dLF(2dasghdR~cw(kQCB$(xu;7Hzg`tb+NaSwhVXv zAQaHWKtNY?f~njz@7Ch~1C)MRli*6K(cX|Vs=?0R4(?&8W`ACA?^ml!EIi4N)fh;c z@+vkz_~Wp$%ak5=ZdvHn<5)6S7?KW0@P2y@@eI7kWh*IC|CKtdFZXxpYeC__KR!a-_)<4yoH9 zf{HvbUTF5t%~D8JzijGr)f``w*0Em7$S$xD8R(CC3fH4mz$X~mUs#AK&RK-gAw@lp zi6+;isy2O^wt$yr16=!zuZPXUun^s1U)a45PFJ;T3sQ8o$p3V4f%_bI5AegfFuNmt zcC0ROOuq#c9o+{XM9y5TBqZSFIxb$RPcMM~PS>L?Qir22^IX;S;q%pLgbW?K^} z%P)pBlP?Ka2KvXMsnfYmpS%b5XNKO@W!sgz!oqlqf%EeALq!%eIKYL zga!gwJ0XYh&-`V&0GXI%fT$;?llEj>`KupyPSeMgH z@UN`Lv1xYGmLGP{R8je%cx&Fx&zHVM#f$gh9Uzo#aj#yZIq7tUiE7}8J)qeNvu`_d z?}=v(r{vc^Mt^MoJM|$4W&bclRJBoHgfGb0`GC{evAdx4^Uj?ie$7*v6qXs`EXv-6y-(V5vZ^m){q}J7~7l0~x6iacHF z&yc&|o0fqB$$-eay~Q5|ItDK;dq5eoM3um>xz4}`hXP&eO))cetyF(A3}4_bkH_^ z*lt7Vc7%R5EymerTh~3&3MW!D>bUqWR$zS5|MXyDl3@aJcEgyWnn~MdvevJE?+vXJ zWaF_3HQ2shlcCVdpy|U#wQRj-!DWH(c&`%*XIeMh(E)O#QNKT-|e=32r+ogPvoMx+WWtBxOYavbl%8~W`-NI47X(afJD_@jBu3S2Wk z9c7HEa(3vg#yWlL{5h+fBjC5?ux|ThU%bq3XV=g`3h%;Nql;g)@5}^`9iL*ZoC}l3 zNs0D$pWQ~x$L2Z_r(1z4esT*gJ((CAx~jp#5TQn z3+B1Ur|YTM!b~2)gGqv;Txc|j*rFb&M}^sKCZPn_mG|*`PmR5gVhZL<=*4gqTUjTmTd#XI)$13_%U|K)iPyH#%CWqIU4sRhr^rQP zvOghVqN;$bsm$}dx5SN?o6^{&->zTbNL+ovA!Fm zW#e0i<)`h2LKr%*i*UX={RfK-hDI!9x$U>6xuISL-_o)J#@66aWWuTV=siXu?M%s4 zHbU%fzbxY5wLyfSl``4$=xzZuc;@@llU;AbiH~MGXTTRP`VBH4)$15k8OZ%(+n6gv zK-EmEt_MJ{qP)*faM{xEcm&3xMwKFkt%cXeD|+`+Qe*W%iCELy<6T`-jq^&%CcJm{ z?07HRt=dd#FOY=pJ98+Hl7HV_{|VifLfP{%+y=Tp+}@^Vd4J_^_8ae+`DPqUY)CpQ zqvoXQZ=OnI^NvYdn1B!kISq=y7d`Yog-z_5^9{{NeQifK$)VFa_A2;;w?>IAb8}~P;Y3BvE;^HGYE??bBrbVQ8lr0WqJ$8j+3PDM=BV5XrH>XIOchhG% zzs~Y3f|$7uSAOn{s7eNy4_=RGCVf5Ca2cVItI;_DX*}Iu_@lmdYSOwBQ=lIuXd{+W z>k$99@+n7^_xxM(BT}Md6K<~)Qa+;YC~y-8TD3Imc+fDTZR{HX<%Cm7o0DALfW^P> z_{Fa6^GJQ-I48ABR?JP|oR@)B&5)V^gM)x*{hpY5;iB`9GHH1NB z45(Z}_O7Kh?}bKe10)^(!_Ps%tEupCE%}jBEPbNw!Wcdy(;9C3px2!0kqu~+tAVB~ zL^_n;w>6Zm6Eu6ea6Gryv8#ifmV`2(0@n2QLq1-3)tg(;xCfbZ$v>E+RPSv8FI`@z zCFsh?hd*Cf$)F&FQlO{nJy^K4sn{W2j)gx7$ts2=F}-Bih`|QUs3kmqJx03E!Rbdy zpa`aIYi&#Q11ak(oEwroOw3?*N=4Myp6JdbJlEc*GY>~|a^FcA97X`c$yp7@4z z%faf;5Auu%5KElLxwn0rk$y$R%WS6k!^yuI+M_szaZo(9hwxC)KFj(^OVpM^c)B{c zmaD+#kBdIQd$Pi(c}7^D{^tR>XMWYp8OrK*R+96r{q}g7+RA7s_l#8e1k_{|wfVoN z;)pg)#F@U}URzs=$|KqB$WBR80F{bjD1)wnc+vZfwY{2;o!_dmQ)&cweGcsF#3!Ym z_I$c96x3Ftd^5d2LkYil7_XSu8R&sX*9@b$$TFS|) z@47Lr^BD;pIgosM;GWtby151f(Y1!*QLc@`VST{5Yw1N6ko81Otx?E}+)nNs7n*Z* zs}UE+P_=G2jCn&DWJ!+~UGmH>W{Uf>o_Rb>VE>`X3m?SFggSLB{V7}MOYFH(&$_T^ zV!+6V;oz~eQ?q~;T}MNsfE#zr_p*AS@Xo}#WCueoi?Q5L=k)=()gh}piyQ+g5`ECZ zZzZ*BeqpOy;Cw8hlMVvdfX-dY9F6)igmUYI0~rY|e~hFT-k(3AG>lnhhT-< z{P|K5yRz65`>>)zzT&nd={q1&6Sixbs$9#|wXB(VVp!)B{pZWi9Nwds3CL&Pwz4x- zoTVao?%aBCL1W!lU5F!k5lFw=1oU!qieYE782zE=M+vCNJUmf6|?c|R2M%qLu^*wz}YWLmx}2Y=#Q0ks2G%&x~`sx9sB(B zeSA%J;X(E;YD1t!Dk?Ney}jpc)xvM|7~wY03oDN0wu*?mUL2j}9^Xv8j!m;)>p!`R z6TN&QJ>(T5o7Y*}@haUp_=)SzRrXDK|7E<+!3y5*R~~IpH&Jn2zcpVNK1FQ`L!2a@ z$RKrd;z@GzEdMi)&O$` zL*h=CX5AmbVq^8V`0Zd-Y$OD^P4hj2V0}Yz^qH`45k?<~GY#viNB<_Iu;Jr6yYD3? zMg3$|IMsY8H3j$NenR}#h<=4dTc}*X#Yzw9AT=sBuxBq3lPUp=N1DTf$a`JH`ji-H zXT1KP4(dwiIs&f?m~B+9vTL8C-?ut?sf!^zl5^Y>KDry$eUB+()QJHP|5)+YqQ?Cw zWK|NAO}-MnLHL@hZhkv^EyYxnwFY=%@tL$*KU^hi5PtioKT77r67I(2?3uJV?xUi6 zKJu%JX86bKO8=rt)l4N5$)c`Vr=~h$ymCSA1&rJpTWT!E~K@(tBGk@l9CNn1h!!A!rh0KK;w2ndggcIs>H)7)12sM>u=r zP{E{b+4HTaAjUzQCk5?vMp{eC$+|hS%faG1Q#m6EW*5g9mNbLaXIkuao~Np{K=!IS z$i2*RaKOc-!B*+028qqLG>(2`qJTSHy&Y@Yjn`PpDm`qHqDV{FwlUpc1kGLavY72; zGTz?yOl70r?UTznBSkAu!C)(LPyPVz(_`xyoM#3T?GJJ z&8-(RR`U|g$Z#yN@p*d?s}88u!N5-!Gm5n+*Fz?W?`Pg-rsW!(3BXE@YoC`6o*5Zo z3Wi{7yJu(oi1~wiT0opzqOmurflV$bRLyui8cmofKXuTb&N1Ld@tTZL@BE~2Hub%G zU@9H@AXcX{K@6+7B?;!d4o83Tp8e0%2YgS2M#QubVp;x-x|0!Mbb{+FVi3}1UH!Y-$isx z2F6GL+%loNoL*8ytAeq_rvQQG%1~MXwK$sDs_^YvZ2-t@p)$&(cP~|LJ}9zK$p-Dj zEgE^%M=-z6aYVPKDJt!x^b=w}pEL0AjyC4V?} zx}DYNxo(Z}fIjXQ^WOO1ZEZrb8G&IjF<+Oi;CzoywozboO5SBr8jFWfDKcg1w7%rUz8HMWvE^VL=;Xe1;|1y<*64oR*OQZ5 zlJ060@~Vdc8B2l`8+W}_-Bs!lT#(E z)u}`hvqhw2Wc$%n+PAY0et?J4c5gx%I?j)S_;S>=MzeME%|h&pgoCh&%VFl_T7FpZ zX{vRi7pmZ(B1ooNn)fhBOg!uEwerj~_YY|isV0{|oeobqF~#I~&ZU9JeV>P%;0KB> zKYa+!b5;B54Ci97E3G>3X=B6Ry*E5=P+e;ZdKsL;)}ab9SO~40(!Wnec7g~uN?gCi z0i8T}!sN4sU~;Idf1XDadiB<%FpNs;@5?Wv7l!+J2acT`o=mOm!fofaS#e6xlWENo zrHm&#$Bj>~ej#;o$dSjyUa$Pt!*J4l@-3$#4yyAghlcRbQ?02zlZJM>@EXst|9&Ra zgI+GL#OprYnNy#T#xpuA!q!8RHplIOTI+ysp_#}xsDLm}d zNup1Cl4o;#rRy4Ee&aXm3tBK3BHYPxRi7VxT^w{elJS_FD9#wrF6K0kkG+m*^~!sA zoNk>Jr#`tAOe=D)mx^ge=1U4&u;V-FpgPw&mhf<5)xr~uv@(LmkA(qyuxo0B@N6vL zok+dww^-KcB5BrtwH9`u=YHTCJe~gBG_cw(KgyttF(i^}FxczugpuI9Z`%C-n5d!%<^W>c5F3!+6*A zT`JR>ZLi^n)vmt~C~gPk4ik#_OLgH$Yfx*NWZEowm67(Dmm8U=4hH_wHMFsvVMyD# zkLEAo#j=xF$9^QMD z#AyMR%xx#=IZRGO@>1m@|Ld#r6J%UuNnJL^JWN}-CzhvaUud{%$tYd2fipW^e%C89 z0Imc+^7d2JaDctYFBqr(aq#j&uq;MR<7n*Sc0&PAt<&zPg%K zt|gr6!2R{7H`|XsTbQQ$%nEBr7^%+@y-F0z_bXKk$swGy$(q;BW57Nta@PG5w=d`7 z<5`%-7M$`%F!@xjdfaDs?##3VE}C6ali*CR*d{*t@<4r0i)-Q2slB9-s;7Rzjh=t6 zBL-mzHeuUf-AOmP_*z`;YFnawGRF7EOn&NeR3IL7BaDW=zRXw(K@?@&{oz(XMD5bH;ilemtE-mw zl-SHVO}PqRTtkrRA#EmaW*f(QU(y8}V_CN7*wZyB`!>4c>c!o}qj(yAyrI1$3GgiL zigiPpTo|#M$_QUA070B;sf-54+ZE$$i#vTkb{m=8lbAO0*i#zn(bJoa6MNQD4w7Tz z#1?QLw+cP0h0uyyN%#J}CK76(=@w1}U(LAGU()Efqqll0b28*n1vWed9yzPpYiqLC z_4(G%1b8Sv+ch3v<(S5;X}cDlcvMcjQ;7{wfEtz9d8w$V|Ms? z%X{6dJ82%(X?)r4w4<5LQzR-1O68%NkK3yqr!%v+IQCdQeRPC+jJ{pUnbf9PPK0Xm zWv*H0CAAgE);OF`KTC_!U1^AL{y0|>Kno(YyfoRDI#tN}4kj7;`*GK^Er^->KmsW? znyT#tJZ@^)`ql+0o1566cIcXOT19n_81L5I9;ytQ*Y!qI?&9QH7C-+@ngo5YIm&+Q z$>kSXyv%T(gemJk8O97;Ju|aYDk6D=a`=S>+|f_8sLr4JiY4nU7tAjc&bys47`g*N zpkZ)PNeFk~O+1V~^+gzd(|O=G@G?oGpY64?)?NF9q351^wOM_ zgBN>H8E%S@6|DV{|u>b|{bLM`nV=i4&gN~;j)`dK@vx4NVj zQJ4ObbP)=_ILV-WMd3Nm>fJWIQ!Uyf>}^#izUnD4bW)8l+jXN!(;VVSx8Hs8nOzm< zn3p@G5e%>DwSDZ;zEDBS@ZLvvF{7K<8a)brDe;l%YZfHyn5P#bM(s2{j+rrps`$U> zmv5!JwTTm6Tkuwy>ZSHcshl1))!%x5yUF8x`{(oSOzkn(=arUv zZ$3MBerjs{rxZ^^ugT-6>=$ak=zjk*zx}88ls@}gdg`-s%Z)w+;Q+_OG@=?DB{z+> zsOIKf;kAsL(Nt6!_}jVgCs)W5a})Yr{F+d3-t0`Dcx10#O>3xvboj!1#~rB;cbRCI z&tJWF|17z4nKq)$^fb>-DpK&<=k{crho)~n4ir~DyN$c8l>Ij9>3#Li*YjI8k69yi zvu-}!F=cwH08}Qx{4x?X{5K+O=`NIxq_2JUPSTI6r(?8xdp~05&*u%sf5H zpMSOmcFMsTlNcEu@btXkzmPN%-^vvV8#kx-84}(~6lIz}3Meeurn}m-1Q;;PR~zjr zbX{$ftG5kCy}ZgO!4zMuA5{uy!oLiY77DJR!6^ioe}DS_fAs&OVfuHlfyMO`%*FrP zRN;tT&8q4(=c`HWdw0$G>QDc#nfsqfzLN|pr~fv^RXPQN*}q`)f1YzT9MS*7gZ{TA za5wq?@u2_h7eXakF@9u{5$-#4Pv2j=e$Tkcf42|L^mOj`$3{@WkZ!))m7cs?$cXo$9JIM?dWc)>x#XBzSR8{bpl_IeLg#6F9; z+5U+WDmeK#z2jEfMBPGq&Cg0%TgKg{ zL4$aMiQg+NN{FTPY;Q>+Z#Th<%{Tw|Q)a>({_U%~$#CdbpX0?C!raGiyVyjWmNX!V zJVy1{o2|dxsj23hJ74zxn=t^fWuwAf-2PC5bbm;W?+k04)~3dv*?jwHZSnk>K~V0$ zjfqoDLMi3#iQ8?_pQbvs1vo>vC@Up0#NqmA6hPsnq}44RWnE^37ws47g$3<6h=Wu6 zV$0`p-tP_P&3@)=?E-EmpzZ;Zfx>XO`UFxR$ zOmcNZ8M0vMKp~FT)j!$1`@1HhmaA?q^8SWR+kw47C%JnU5d=Tn%-TcocVG*^7n)60 zyEq>2ngQTc`2>(ZW)yc%_MXEk#c=-t{CzV(Y_QBDz^IlOtED`-?%?XG<#e#Wufgb( z=16V}f)!&zpsbBI<6aE3@hkw^M%!TnT`-2a>XWH3LIy%F1K|vNpI#i!1%z0S6u!bE zVPpYy>4^6M&y+53?%y}MxVg&ejn90zBBrR7ub*05b#1?0$oc~_y%fBs$ud7n%{&S; z>4o=CKw!hiclIy&3EI<&Y+_A4f76wyR#X^o<~HYqA+GhPD}Uol|L*qOTevGpssUh^ zwHc+nb7fl~C|doz>jm?bpm5(Ib$OQB!7` zn#JG6h+0HQXQjgzhMN=&-F~Ffz2CVSM5evZgUG=#jN`FSP}hFL&~_zDVMh>!aF#~c z<7Ao`Mkjimk?e(AkOcrUpC8Vf6R!}hP%lG6!@1enAB}X4qBdjvG>_i+6I1g_dmk@S zQNF3O85dl9fzLVT-hi%Z16UBZAVM#cI{gMONAFQQdO#_VV&F!zOyEmFv44FO7FS@T3AoTki`*ET>_uJ}@We z7IWK(dJ$LAF?YYy41muAU0&&k3&y_KDbo6e)FEnodFdJsDvo- zMpwk1&Gn_D$;3wSLS88)6*o)IFLs{Eu5g=g zq~R){wQtX+-iP(;B9dyb%XdPP8yZ6sJD1T+U zag|lE<3UAhd%Oc?CSVkA{8%RwXD9mOY+p5!vTRo}!Lb=)Vhs@w)y);BJX`L+7+Y7% zapTFERJcPX|;gXyV?wfSb#VEm&|cxKtyGm`i$rU0Eu1Lu@+hv23d}d z2t!yYww-$(3~H0o?UHUCfzez9F^Vu7m>k~$&dcrv!81T-UL~sK5o2(t09aG{^DG05 zW!K5ePzT+hkQ=PixXhYjJmK!6A_a+)qrN4zBbHC8CEZqb;|A&wNiN8^?^)RA`wUBs zzZX!r^A#NHua`fy!wkNvRFM5P=j5cjJ3?^+4(0Bu*PK?^T%)#AYZ30+&CF{B!!Rf5 z$lo8VJ5(qrYar)&K1NRaEJ9A*B#rW_f^d`*SJ&|99U+F}T}<3&W<=PQzI(OmHkZLk ze1D3Wn26hE6B1#@B-upPd{PT&? zSBw%K)?F*Um+|^7ZEdX2v8jIvS*(^bFPG1Zf;ffr$q!~KT9pUNidxwSF>9S+xZpl6 zLD4J1tfg%M&lHB>+0QB3=coU87F2te5MsadF44JB2Y`ksp3F0OLM*|V@#0-*W+Cac z7d8R-L@0RuVcBOOr;fI~c(*u|@q#XDtKMN=0eF&xp8@-?Vvhq$N{YEy$ zQOY9MBgozZ`1pF~zqdgDTFw4b@7s5%L}7r$&E`g8)Ic=XGc5P za}qrPAe24?R8%!9s7i%3>j(CAzzm53(gy8^8{>n4t?QDU&bmUV29G}@O-vIFo%TTxV5f;GfhyW%N+1;#5CF)=+ zx(oZH2j|x1pf}y^ZLhEJaI)9U*NZcd_d{Kfhl~+``jAz)|F&C~Zu-~q6kUHI>2UsZ z#1`E#q91v1@#>fBJG_}Xhk2>Rx+LBmWt#0hm3gs(@O{jv5gys`;L$}w>Jr`5n|GCm zVLoo1{@2yhjV^!nm+3LB4BHj%oQt&_kxu4A4vw9c0cv?q%wxZ@>$`yR3fSVSA_UC! zcGEK71ihlOGp6#8M(IEn<4==(=fYWlQZ_@vqA);pL{V}Kw-?-PduC_ih4!l}c=S{1 zBGy{G&05omaK#JKUH}rG_|7bK^Y`@gi;Fh(_3g23z_58R7PYf6?$(j^^l#cFilvnn z8=Y8(*KXJFf;SN^_y-*SPZhyJne-qKU{*l(K+6b7;5ub@o2qUvk*N&eEQQQP-`oWq8w58TKA!PNzcHYi%D1L)lQoBM;ZVP1GT^eT~4x`kjAjj3aqH z+2GRvjBxLa1n;yv7!|z<(8$$!r19amf((ErP_nH>n}S#i&3>d!p+|HbJv)d$ux3)| z3Yl!UywKaw*P~-<*(2W#*Z0n)61}#+I;iwAUfB5dV2L2BwWUVBzKBk^AT!<8H%asM z2o{+ks-zcQB)Q{PIC#)x`wYBB0)&kyE@0cYzFwXDBjkAb63ZxEszJ$(D7mI8GbO=N z!@m)v%GE+mlMEOZa&iJ*xgHV1I$)&1@!QjBBNDf3b!%cq@ILtvDf-EX=O48w3g@6w zU+C5$Elha4bj8$@jIv1g5hJ^9ZalR2?!x-$o^dt&35=LOnP&EIsI_?-iDhI1K5mi0 zQI-J&7<)!Y=E0+PQf|PIW*+#SQg9gdtRB%kUW`--^;W@dZEogo?j>njr6WShKa0K) z%vpZjUFeHK68FS;pB^$~y~_E4AQj}tDd16~az5}HxD7!wNqIlh^n}k!Sw$VIB9r0a z-i|x{W@=SlJ$!^JbWZlFyFPCKn;a0KXeI`IoQA zYsQGsjtz+E{$wJbS+Mg;zdRx-@0XA?oMO-GT6XChhKdno*z&~Kz4GN2 zNGI*ZGMIbOicR#Gx8Pz zsfuOlu5KiYsgZUJe#F~OLuq;9fvoW-9nm=tzVR(I>K8MY}> zvGf$b9TV^D9__bBG5%${etn`!9ZDl!i+W|nOu)nM*gtCq_!Tmckrp2*kA20fo-zRZ z5vUQ9vdnJZhFy?vhFR&vDFF=ci{zFte(9SwWA>il?v!RdTAUq9-SlfmG^{y>Lwtl_ zzFhEu;7f8oQv0DsqAgEAAB&=@0s>oV4c=ZflAe|El3rut+~TPGVaVVn61$n#G?Al` zmD1X_gg?}Bvl`mGZEC`;b9%+{Dr*rTnA{pJNTL^W?b0`i4{2bzci{zPklK-aeO_qc zi$?mdnK0PfoQ2JyPTa*kSvV65pMXou2oNTqZ2T@iNQ?@7copag+$wT6!%oZHVB#((@Q*V=qH}*#i#uKPvJQjUe z-uUhUS4QjaqC7pfuRa&AtiXGHu^KKE@s9mjXtto-U83sRvL+ zvjp+&#buA637ygB0G-FE%`!`%lq7(x9{|1We)D!3NG5>Nd60PXFNM5uCqPJfo#Ybw z0Vm6Z>iR%iX*)BRze5trt~SsF9Aa5LBJSHC&g$&5_$|-;R$lc2)O0TYP_OR&vuzyF zd@@DwA4&XHQwmEwI-K~V^wD2hMUxdE-fiw4k6{opWzgojo1C+4;{M#F%+((yX4!+# z0n=`bmnK(fhwPb^|0UQ+lT3}q+j6nb8-PUoe3_tT6pzx8ez5!Nh9Ie3E@`M7kF$Rk zKB++gpa$%s-(YW74f+n_PC2>93p|0j-Y~S`8eqg7fz;7Hn}q_cx2?P$B(R#wfHUHd zQ*r9>Dn1gR(1j&8DKXuUhWkStyI|oVXAWluKgo40&rc520G5|oI+TQTp{zNsAiU*# zZttKTl`kX}fedf=Yea`nM}`+nE7wxBhgN8LhNWbV;9|1bV&pjl;G6_heN7IBQ>+YA zw$e0Bi9i}C$Fax{X3+RZycS~6=rHN=!mJ$~$>;f-+Ty?jIrx%9TD$fM0@vS{M00ZX z6}L)q+Ix4aM9+j%5?-6J+_LJ7GPEtl>$Sgb5!cfLLOfZ2_QscpZc%b*eM6JEZ1wdX zUDQzCE1;{IZBvd{Gu-+B5v}c~3O&YSq}prnIQZ@%Vb3O#LdF}@m~_K#OS{;-*E>tI zCKAEf)R(t75k!S{sg$@w%dKBYaqVPBa$U;4{nMSsR+u3FNK>dn$RdiAS1v#AkR3)r zpQnp_qF1=`4(i`9ZY3%D+7k$EtTMUyBP*;&`&ad60|J-n+Mr9z-Epif!IbKBki((n<|ZTGLGL%h zDe|RSWUpjSTUBLc_L+sdCUmahQnC-#vqngr@M)_b(7qqK4_8eLLC$*;kR5vQ>@K&z zy^~HeE8=e$-pVeTos|C|7W^&XTEMoa73SJ=ZoT@Bj#>kaceRIyG3*9Ufk!U+dMwJy zf0c?|Lv#XF@3wXEdO5^lxL`Uhg?N9bQrW%BZ@lqW2}%ABiBW>O2B6&W0#c`cyt*nu z#N7m=TorR&wO|bIRd6TT?R!^BjfY_)G{2q`*1vq_6>wUbyKeicYCO@u8|L0phA-@M zai$e6xAT~RmIQe9EJQQfqwYFJJtB3?oDC%f!*4p<6tEhbt`w7vK4~=GuI8cGF)SKt9EQ8HmNEv^f$R_OT0<}WiT4|lv-2Bd0Hj1yxPAcJ|~TXg@P-rfhj3<_p0 z>7d=aRMWKg;MdSas_$R;MJ$E9p!O0UB5ye&cuqlygfhs_Ce~nrH}XmUE>GO{>QCTg z9|Vq-613uddAcqt&=VRvIpCbB2sqX!3vjxHUVbp3y_>NGv|L*fGp212hz? zZt6DL}ZW0 zJYI2FYiB&C!3}~4P~76sEqxb(l*!?p{7#IR7>T_u{u21OY7$6<`D)Xx?Mm+9H|j0D z1BZ}U`y)_Kae@>GIM&M132}O%VK7nI^~mZQ{gv%W74%dQpL(AvE|=O(PjTwthl>eT zO;MpA^?=XZS{407C&Z1yGR|IJdk`F)fFgZjU)1%-75jW3=^YumzEI;yLyK@Jz_n&D+DCI7_Ol>ig4x-XT_Cg7YuJ@F2 zZcTsJ7OCFrz2TZSjv!$aA6a!E@NJ`_zNTDVW}@=?c~B$lT^{9QxeljWEDpX(zo1Zz@?Ejz~BE4@NKRT!j&7bZ0xQ$)!3Y2=t)A`1L0x9 z8F?UTkk5EV?pkLxZ1|Yd3!sC+LKU#8$8mQ@1JlWQc-foKa5RNV6wrgtd&M%Xisrs5xnM|+ z$$ahN1dvWGIMQ%2ZvTf?WRBL?Z7OcBf<$KRhOWDd2BBA3BvHP^JW9suA>liw45AQ$ zcj(4dovRX2XADoyJX%l8p3==r!ryvr=pDG=mWtjEj)ZnB_a+rAQR*`}D*>jt`!Ohj zn!SJMxbC-h|Dqo7S{=cT0_v#=pcnRa5+-`o*pCd0*cu_g5Uf;a^N5P0GlfYZ9O@at ztCtM>)J&TEB=#}fUZnFilhsrQz_B-bkh+z2Z`?g+<|BzOV()ggi7st2VR-QY;y5$< zjnB(CvoMVhNwIIltLfIp|a zO+k3L>D+{2<^`EPHCOd%KaWmf<9hdG+S6M(h`;Z$GKg|dUym{i5OTixb5 zrhP|YoZm{73ep8+#bQ;0d34UgR<|Lp3zc%w+qNX=M?oziRQT=350YvN38)5D5lt*;|sC0}vR5c&%x4rKJPS`$KU;ce~cmjcA7jSCtCd6Py87jTL3zkZr z=38qvh;KD4=}Pq6MBiBTI(~+pT2xHXtMjP)%J!Kk zJt}PN2U~(9p8YyQ*V%Qj{9D3MHF)!M6^mb0f; zx2IB7Xr!rRb-WZsFl_GwBRomIZExQ~UkANVX|kHE#N~@ACx6#At*xrE_YOK#NFWI8 zGwsq>zACV)hg%3P0pBopjcfJ>wyLxpDx`(i=`9tLnsZJHcklZmn?1G(In zP?0bh4k7>U@N=(}^&_{6?*Kn<+nG><)#wp(td}EnXcKi?n;I6+0QlCyjB8M^$iQ?r zvz3nYPwjzqpDk!rM1y9@^*c;qRf_K7W;|07U}zbGyl!VI09~I56CfK`5ZpdXtzk!I zn=9jo_pPPN<8a-gOjfvdi}vJ7778HJ3AaT(zN|fp5DKgML8)U;N4s4fq;=1BtkmMc zwh4@-*zw<+w>*)?@-ZtSdyS~2Y2#+~mF#qwS*QQ5MHz@6u`q#5a+a{sl7^WWMQojU zCs9O6(&bax9qTdlO)ei$m#@szyCmr+(l_WmlI&vy*N5s(E?7C&22lG_8)zVTb+Rv# z?iFNf`SMo<4wAu=^kn-+s^%i1fz9{(51dE;^Wt2(az9)sq;YIotw;ChAy*}asI7@w z#Gc}Z7XGqbHvTtPaHz|WUHHC^sfqq{IdYarj2W!K3U$6z21ExA< zc_^~5r#hve4Zz_0DfEP;Db@B!3nbvD4U=Y*&S6SE@*~DS=OK6)T6SHVb#= znmD~UKh-p(o#6p3E~w$~?4gI`4=B%Ac>o?J^TPI94(XQnyS4YdV?YFu0BpSA;6c>p z{2B*0&t&(66Ip?_AasJYH{R?|v1Wgoh1EmN>f&!f^fc_Rsz38v_CLEYEY)X}a47zB zRz%8kHjFFflBpMx~CRnc<{Tg!zrEpzt2;ba+bW^j!rd;4HQ95=y8aV zR}e>7PuIs~6NJ~V`p!BpWKMTK>WC@$QJ*Tu=h^EIaz9V)Vhwqx3E)T>Sk292SeY5& zgChzM2_b{1usiRn%cxN;TC*EK&`>3+p;@hOTuXK>7l;jOnU=#jZ#J6*S@` zs(!V0Y?B3AE-V_-Z4;cvbSQdSio3(-V`Wy?oI#tt#ZtP0*sj8CdhgcHo~P*@#yJ=p zj;I0^by5Zq;}WF%$~4t^RY;rxMM!hQUzF|yM|L`J?0nGv2)JfGmcX!GyzPceah;ta zVfA?jwD`P?!tOehJ{(%L@zztt5(H03=>$9UPm33`16DTze*)=}2Dh#Hft=|9@y(xy z26;+FmQ0>dMvq{as(;f$xL2Ye&6=#PVGTIfzBNCGYv$|)iR~`kh9#fI zao4;L067>3nOmn8194dl6Y=pm@llQUXcio_^;b3oxN6l-%p{pXRI8)2ocZ+2D zrw=uR1Z6i_oyxv_dxShJ-~eASed_351fSklW#CcO75OkKK*>( z%6qR8@SAi1kXhp*f3eZDwQeB>BQab zBTUd9BpZYLBQEPBfVpZv`a=%C3Mk55_d%neFdURPGtKf3MLPB-GCIL7%Oq#_kptnQ zrYDBt{lwefaK4(vr^tr@@LxRa@IWBaC=A;@<^_uRT8M>%kyw1e2b{)OfVgICM$EOr??-up+2yZP$KzF!D(A&O{d&jA zBgEt-cI~2Jn%Bn%t2<+2cTMCFJv-n3<8RH7zSXcz`KSbQ7sFag3ehK*-Gk66UN`@Y z%hQ7CYMeqUZe7}iSU{%!E;5n1RBwf?huDX)Zw+P-t8bw9zvme>JoPPFRA>~O7p6dU z#udbNB~+j-=>+{pU^8W`^{xr6#fUvu*rq}EF<=u)M{^rIbXgTtjf0+iUwORnSw>5m z*7f`(6yn6Go0|*G+zVa)$_ia_Ki;LJ5w%WR=+YFHzK8qo&}k8szFaTqeGZXNEaS?l z(8CekO>qcq&nzb;6FPB+<0YF&KpbMlvL~8P=@ZDjQHC07_=Ql{8%>PDJoFEV6uBCy z$gU}ig~{y*KpuJHOEU`FOK(n8nFMyi)*FDrpXRqK&v(M@?fW0%u`{y6&>3)0@DDS# z!7`xp1V5zQx0A<+8xNd)oV_@gK=JWy4x^j(?ftdk-du9BANHU>yR7m1+8x#iy72bv z?s&ZU_s{+%DwN}p^Fb>n2Ujor(b~!V*Q6R$J*CZ!B#$-kq7MsdHRNEID ze4qE^520oE>VOUBPvXKhY~wtuvgyue%4}Omc9z@P5L~8Q05(9j*ZXleB5Z0|GkZvr ztDl$KBX9YS`tx5^Q^F|TOV^ERozQ2H5xbGfmTPts@UZxRbhX7X_Jum_0%+^r8;+=) z#D`9X^JTJxf&WrIE-f67E6m6#ZzI*Uf}dQ!MsK23uTR_noVSsN&5xw0mTLLsW~Shy zl?iWY*O{q>SR(+k=puLUgtElb8*dR%wM}1f?o!CeX~P@uMbd-0-vTlZ6QOw+OPfhVtSjDjk~7=r)^mFKT)!f|d=YgYJ)**m_vk zO4?2cYql83fg=ap0E$S^eUj@2TTVQ2@10bn8<;FmQ#_v`686f@WIS8%e2$QZT~B?v zHp^b^3AQ$j%gFVHGf9~RR>5}p-gf0NlNnk`Z~cDildZq?%MY&D`W!*Qx!j|!k$#6+ zgJC)2MU0&8#r7BdYR~&4+m2EZ&e2o1ahLZ6pbOKUaevO}P?ysQNF4vF;mkg1-%No$ z?}KMRKC7T{!cpHEhuK9IIS)NAS>}w0=JNT>e=+6x-;tn+BE{gKaF`*m@-C_HrzlcL z%gO5t)O^Hi0rqP=7XXK1A!|3BZ;)5sBj+ueJbu#_hs#_Hjo4ET4;60i>Nf@`A;b8&P{XQEfBr8L81%Pq> zxUrIr55HX!)OL63mbn1YiZ5sQzi^(5<4iHxf8GnVJhH>_Xh&dB2Q$G@@@BDOjjB`# zy$aie??(2#WDp>XoHSVd`c~_hL;EsZtOSq(*|)^{8Sd~2Ed-=8N$d_kG6Y@Tfs;Br z2Z{J_wm?Cfu}oR#qmL?Q7;hc`%Ug${r-81V?WW=F&_9`c;v@{=g4>y=$k~qThU}U(!YXKlkvRy|1d@)~GR1(T*lkhxJJlv4F2h0zr z01Oy%fUuWk0(lxl<^FY~oA%k7{SB$y2^=mY6pOnfm&hJ=7J(k+E#a1eFnz zKVu8YtRW%#-I7M{Oc9KnCBty@NPKeH3q8b_cK@oHSEse1z)oDPmA4gTE>h|}dj)R{ z@kND|zoHc{0l>K0;{9ZN$|2k}zhjfS^%nKeZ5Itu_@MIycIEF+&HJtkesDJyv442q zfl(`_X~@jVjTO`;NEWZeSnNz|y*I3=$b8!a6wF)`w$9G6TxLM;jeYq0709xP03FHm zX~;Md7qg9->%7k{fvIE+4jgs#EY+2JS>7`Uw-QAn$e+9vKk>6tgc}zcc^}Jbx{~F^ ze!C!^sRsdq+VasA_n<=(%D^?0c#1u8btsWY25C|FD+{q~aZKe@HHn@z8RmA~T#@bJ zo8Ba`&i$1V%>x(r{=Pu#soH?-%2ztFQ<^Z`=_gYxWtBJ(HYNQg3^mA1z%zJrrbJKDXvcky+2V5=iZJ2?ZEC85oCV`dk4E*zj6(_ZY3#ie5 zMv87N0+XG&`T1s6E3iGCo=69^X<)HopXi+zWSXsrm}@X6MVqET zStY|G68!tGj|T)nqgEcj?L0dUG2N&Rb=;o0QRRIeSXo_NoFoheUxY8&XZH{5XRwqM zVa|=5DDs(45qY5fljCWjXLuKgX!ie9W{PqPU3(tOE2F6!PNF%{%w8JcH+%_P8$JVN zsjSPuiiD^sfN|Dok>K<=I?DQVWR|;9bnY}}J?~*FSQpr-q5$VphRCd!IFz}9k`rJaRKD7m@i9i_=RqeY|LSR7l)U6K z|C2LQWwLDOxY5cLXE@(5j!gsgY|FDx-*($mS~#qIm|REj|Iq^g20)~9TN)+~jviYl z=^*kqUZA6miv|~}2#?Kka%rS2sC1zKweKCkv{|Y^HHMY z(|SZ|aP#p2)>U2FW>3}uuKXu<{^|Q4=tt@d}%>MTh z79#C-i0{0RVlsIZ>=b}(0X*OFJHN$q={BEnTH8mPKvutd&J?2^Ci}LWnoeTk3K9-6 zxtlA=2QgS)H3`*u9tsYbVpeJRR8gFd%WgZ)K3qB86jP}B)`4%IqXBvO<3+3YHYSUh zan}k}v?CM;t6mn9_F0+Da;*J_@4os@W8O(P{otS37vZ1o*uJ|AI5bCL0B|&OdfM$V z1pP^J3ixuSB+#{nemeg7B5o+xwfDUx2$EmxpeN%Mc9dUX;zzm-cTYIHZFR9(8=kA25%*F#Cjf1JixGTldtL#0fL#1TC}J^Wgm2|Esq* zkB9Pmpe0Pnv)06vKM zQDmyg8~tI!>b$nVf6*gO_i$e@xyx(rpfAPjMNj?;iU4vHANM?=pMZRH&MBRD5i@{5 ziTgH<2-GR{_$9`n5xTxoxq08qHR$3m^+GM|Uu4ws#DevfSv*yyW%!+(cP z-a>}6cjhYFPGJpxX$qA94}PB=@^h0n8pCZveM;uXK+I(l_!eLw)(XtNe6TQ*7$_!# z(k;hVFjVerUW=xEK%vp+YK*qF*6#W#-6>20^c2hiB$dZhlOmLfBO1_~Sjf(+Mzw~s z?t=bZpW-=r({DcS*Go)w1KSfJ0?71BGqS%U7h5S?+)U$uIrjC9mF1W(`S3S0-P zEvYBIID6yMpfb1zHL zER?$#tJHLph@2$pd~Kb$^d87x+J38y-27X_o~;-BteBDjabIhqj#d8PNDevJDT@=i zbS+-c3R%hF*|ir0ARvNvDlSik5fXOiUz)!Mbe#rkyb%CP%u66{ZvaH3^Nu`9L|Ol) z(iItike%XRn%cF%6a}mI0HN-Z-_=LI#}5FW$)bfwfrykFQ{FjzuAjoJ znFt&-s==d!w#679Pwae5W+OdCv>ZM_)u(E-jk}jg@hy=Ce%SQe*GVl`Q(ha&tAB4e zv;4SYY<2d@!Q=&v6LH5OX4&=9=>cL%d9q5~rW%PLAjm<3S5ftf>_QIOzf%^d0G;3h zz!oi4i~8eK5p=eOeqw8Ttjl;?T>B$&f383&CNWV-@XT4zo-v>m|4a_20o*LfOpP~( zi>w|4#dUwHvVMwU0aCR$`XNnf?qhd=%)*b?@~O`%fLLbXO@GeK<3oCOoRG?uuYfw% zM_Ri!`H0kw@6tA;he^VK8aJmq7R=FdE!L5Y9zZDSG*J0`kK`zGT3e#iqE?cs!~jrW z(-?Yz`aTOFM06IY0k{JQ$&_up8=q^_To@{`*S}=$rYH5dePgT6Z~0Rg(09YEQ}h5u+PXfDX|$+Crb@X^xy^oZzLsow-Cy_UjFFC^OfcX5<4gNkVYY zRP+ziW95K*bdw(jBY_*6wbub=d|*#^4QxY_&YjoAaKBO<_ZNX5{cesQJ2_f~sNP)E zxF7M=wFDFTEdTNB`$aZ?X=Ij!z#+a&PY)0kNf<^2#BYrvr^DC1g0FcHnV z5EufG8h?NY&)-VkH!6t8BJ0X)fcB2eg$oxJRDfePa8JK2q{(0s?w>4T9%giX=J%Dk zkT8xpwgZ&;`qR zX0?N@5qmZva1FpzQfh+&@JP0DJJI+v>Im%sirDEroHURNX`_C-lJ6tFK#_RvNU=80 z%y_)tjCntlDBh>H@E5f}?YaAM*j?ubKFr8uJiG4NsL#+Dp!#}2MbWzIW$}0b@FI$r z2~Ozl8kt#DvW)iI)ZYO+Y)fdL3y!++3fm_8BcsFBatZFTy|aiEzT}vot@O2F0Gmaq z{^lX%Hqm5X$0;PAxgVdb%WQ6~yYLEJ+J>ctMP`R&e!_Y0Q)IsSk)-PTjsZl*#B|y5 zR^sSWRj2hHMYi8hfI$2nhHYkCyH|Wo^o=7W<%)}P!y-W7dr@kltjYQ0x*h^1r( z?JX8Cz<~J6p)Tj&aUFJ;CYnUq7t4=$^!(C4esREf?G4WnfGS{mMY;(9pEefca~l=} zmF#1`);6vso<~tO2JcJmyOc2D=?S{V*YQ61%OQn4meiXI0I@n4pcN%4+^@Q9NmCq`@Bvxjyah`1K6M&s`TFG*ny3CNU^QKyzM7siUHgiLy`<;BkM0}x$+W1H-2F4` z0McE!L z@3ZoXLr8Oi12b~|PE8z#u=X`BNi8XSR&(@Mt(l`rx)|fqN2@ zl3IH^w$oFg8lJz;gaR?}YAd}$k8=WVI!2z!cSkb&Z5sUz4?;x3J=@y2loMAPP_7*- zzTTQB@70f`w;ka2O+mHi-wB=|j6rjjePgC?F_xZt=EA1S6a)MZp`Nq+izVpneYu3c zU!93=#*z$;JvR%VIc8E1e}N)Cj~u^j7F102(B1pqz-am^O58z$-;tg&*f=wzTU|gT z4TBmH*#j3nziTsEZ*!2J%5;NDr%!Pp8RQ(|v|@+5*%7O(WED|@@zyd z>9z!h=hHFw!Mdj%Cjo+^Pn~efW8lm927V^<{mywVsFd{pq)oKfRdOqgP*ZYEm#Gmf zQXRgF`3w}QfwXKTvlFNFM0YY;WfBU-Yzm^Lvs9d>_e+OH;rLkkniLFB|F9^B(4#Qy_~wwn2RUmH z{b9(lS;VjYjpK2hpOWXkeCFP#ejkxbK4EAfV7U9j{$nz~o6x{?;StTkCsbNlwt&r8?on=MomW9a0NWi_SI zvJO9bffln*M-Q?1T^8Xd@HTX0&KR0|x*PQeH0B;O(GQFUnfanzPqTs#KMF=(o%}Iv z%v)J0s%{ME44@t0%&)$5O}(r>+Nxz=__HDhFF7r1mKjeJ)A-r1;=Ol;-IJ z#4$a5X9oF2f5xV2`-^=vY?*K{L+VfYo*Lb+HSZubJqms`*{tC?`Bhs8sFqZ^ga6if zN>Ay~xG8v`jt$^aDl<7r$&7wg)GeV`?}VpnrOTrcub9cbWytjj($P+l3H@R3dltFC zatCXk;BWg2D~_Tja_;^1`HmcDe7l$TVLk&xL1WRj0axmvYCgi5bN-Wd@Wn8p3mR0+7sw5D^_rj9n4ISKJwkOPi`jaxpA{qBTsk&@nzk$9T-lgxg4W z?Wjkb_qIPRb&>(Q@iP0qqz|^U3XpdjzK8YX(+gVf5Oj~*Xn8@3-!H(o(SA1fa>pso z?11ZFQG9;ytDw~Uzs7C%MkT8nL~@kDuwP==Bku_Aam-~(c9nnkkHER3;&}+QvbWGR zOdYa^)xCmy=fcUY03dRViJ^6(L0 zS2<#kdUh}Bft1KO-FFuA0_-hc1v7c5{h;~&yWH;jlE;m~^<|%~Md66$Q*yKnZZWH# znL|7wpvQ7@oSE!aUx8l!;zBO`{_m7F>$qR8IG!%MI|S_InG(A6rS8Hm`I5@DB`7AS z$!qlO=@L|5WZ&JLczgiXPdW5?@i_grGhY%retqSK%nFjvbMLFA=*rY#WMcWjCd`Wd zd@ruf+z{hL9T{?`jMH=#R3x{!LjxBA*=GJ$> z2=C?x(Bd3ol&kvN(9@D{Jq&HCRudu{Mt{A#s7HI;_MzA*yc^lc48R*&?qWEy`XhO)Nk{PGv@cbw@+fG9B?2;w#tz(m`wV~gCZ;Gnu?M-c$utjx2^LtWojv~s%nP{`QZ&x98 zzx>#V&}ZC3bJ_3UMF-+)e<)1OHRgZL6WnhSzS_?b7nztPwhF{NzOdh?jv}EZs9j-GQfOyboc|m5>luAgAz{n;V42n$Z z$8>UD4>_V`+w_`p7`13jfqQyw7Pv_ZdlSuJ7wKRV!9^P-v#wy!?~GXF2Yg>foAMeh z`*=dnl%AUiCbcCcGa14bvg*E3cNK$A+J!Ag(b!NDs!nmiUG^M~Gk$NzkBYp4Z-pu= zd+9B_P2`>X)5)>mRMY6lLSA{R;zG!2FHNC9_cC4IQ{$bJu-{J2(OzN3L4FTY6{JBQB2>(X2mc4|c-(RmhCQMSN>&gmz47R>wB7q)8%} zuk9*Xg@Fl|AyE={UEtpdqVW*G8mE#FRja>WDl{DnLbbbmxIv+zVE1UjrJw{Kb7pQy zjh6SpE%3V)AQE&bXdQdd{^rw6P+Mm)lg)&@J6eT_2?vVynif{|P6#z?1RZ+RK0R(O zdJuMPb;;(bVDP~s;hL!@Z&Tl#fS+#r`dV~_j^hjw?jj+``5~I5Le}z&;LKHg4O6qI zs&`c%;}^W=0A;;-mn(QK^UXj?as7`qZM8T0wm&$P%$t-?2P!eO)PvtsiI{GG!Rh@7 z6atJ*AAAZPr#aCF4xsAX5BkpvJ$DkwQpw{rWr97i4xIS>8Z>KW?7;ko(J_XeR5vnaEJ#nL~v}+ZM0Cs ze^4wv6^5t~NAyz~nNRLal^>g^^~Oa)i@0l)Fc;>UD@q;}2Fi|M)?C`)dx-dybaE|u z>w?h8o1Wmks;3GSu4VjI#!&4nIUoGGU73UPZxm{g$I|s;bh}wD_ zI1OdLn_zh9)O@Tvho(Xt*dxkQU{8PN8}|zG%Hv5)3L{yeP=(7&VT}s!v~So27K48H z>erieSFcsyV}c-vscTxe*#BF9n$7{T1eL;XaTCFIkMn9`o|8UV=ypnv!=J{0d-rOZ(sGbi3kn;#(q#da_B+Aq}wP_s5w zBpz}bbAu;!S2ty7q01+Dzh%&t2lYA=)lL$*H&v)>_6M_q+hR4mp(?Zh0~WH}>fB_@ z-6$fnP;1c2P8Qw71@;i@&9%qmsW&2XAl4?tq*O&f%0O}1jAV~fsD(Gqy=hn9$9sx@ zhZP7sZ>9nd>gM0|Z>Z>dKlQQ{_gLD*I(fi>u8ETo?XlR=D@~G&nk2oGR5XW9e2pwp zgb*rsrHqx8nJ+5_{Oqv*XBOoe&P-_e)p3(2J67PkXTp97+SWWvTU1=jzenI_n2}ip z^}bt3-R=*Dg!Q5s#>be7f*+?kABuoT$kqb!?ysOpa4KTG6#6g-uSZ5**qxwvb^c(z zx^ro5tg@#dVSje?D?J_Y`9UdlG~jm}w1va6WAR>VH~6i%{c2+8jVw=|Z|Knr7u2|Z zogjeu$0E3b%fG{j?u@q&^54$$}1S)|#H2y<9)*rSUBG_hv_e%S!t`LfLuXS~_>Gtk@jWA@u$%=ka;U$t>e9 z18PW%L2ScFme~o2b}~x|hluN;$!X{+LZVR>ZMV@opf~-N6iMPh4Cl&p<@sg1J&)|b zhl-{tZ|`6f8GK)1GPNU{^P$E&fI> z)!eslsg@F&OXA-QEBnbyxT^8A|C}xDdAR8q<=Yyh8z<<}l0Fn&8*hc{C$+G}I&$wm zZn&aZ%s_@mVp`Un@~i7wU5&C)WSyH#r$01yyZ^~?1_vgK`8N24BWb#JYM@h`)1YTi zSEAjr)so|CxTY%g=M=IT1frX#`M5NEJd*>huZUIQ{HCr@L^5Ir!PLZ(1g5iWPQ|zu zaB5UcO4XdmLGXZMT92IU2p^PJ-eTM3UV4xK;dYOypWMyIhg5c`Hi8X)k}c~Cg!@!| zs;2A87{qts(O5YZ#Qr{NW(6j{NCUl()0u*PjC&r!%!AnnulW9AMv8$LbA+9lfASC( z?O{8MJlL$;t)sg0qDlUEWMR<4VRz7)B98&w*%midVevx6!FB@Gaj>SmG z@Pu0@k}t~=iw_R83uGZ*4Rhe@X0sp#_tN$B2dVs6+U8GlStgM5Ajd;zHgt>;zticrROlPlu85)r>wY1+PJwig>Xc9IKDbPp#tceu!E| zc5?>R?wi;q3|^wnEbckU{8_(}x=sL#J~?7C5wivzJ$*bFcS3HaxSjp2fJ5d@7l#C% z<|9qC*!ztcobfe4}|Ja?Qh!V=Q;yLw1c*|QWYwrC8AdRIO zoWbPV!iO-?4sX_?d>+hDhzOdqbhh8EaPW0FLNP>p3JU{wip=I^?d&W%=gpN)`Krsl zQi)mJoUszo`zO52qIM8+(^h}zFd6JB4*}Cbb9Oz@>%PW4jkSxJA#w^?QO`=t9|W6N zM}l+}EF;cE64-~?Y(?+WYHfr|yL?9aqF%I#SX8U@JO-Lq=g{w5&%2`(jULS>+ z+fra7xA@*|XSlXgftT+rlgpurtxI%kN9wJSnEHB<1^6fRZD*6AM{ekSwE9LveJ?Al zJJ;eIgYP@B4Xo({CT>63UYKiwvi?67UIy{{s!}>3Nuz~}DHVNcKPO^~O2HPla<1FuqgR^Sz2&NMaRNJUIM)K$h0aF02K{H@m zoEVAt(RbOqLDVAennVutys6%OPvWhnbnX3MXj~O2b82Q?jY|4K2b37=P%c{f@TBd* z5h%ebPEtFl6&Bpmx~XMqGp_(urmFQ-QbAmxN^3AKrG2_4@R0PTw#pXMQ$$z122Oj| za!(hONpQgVX9~-F9XEUmnKP~zE8P*h|EDfU4@umZXvO^kxd3O+IH!ER>9Wn@^_ydF z`73a;zuL+cyWZjSrYl(&wECB2GFE(CV;z3kX4(AEIP+VQ~3fDfpwxzHZ9|6 zNY&o!cuAql8!-|mc;W7mghD=uHgak3j~jmN>uX8bCsH_%VX@k=AYJsAD|5G4$iHMY zQ(kiUoXJ{NdOdE;$HaJgk@=l!n&hT#OQz-Z7kUn6>o!jxi@|&v_;Xa9H`pv*9L@5o zG|&f=FL#%{bY2lo6KLjMJ7Oou-x1r6Sx|Vt9tkSpKAC~kpGYN5Ae#;48!0*6%jMjNh@86%`|7*xh>{{H%>4Vv2{-PF}C*R9|Che5ChSk`GFo9{3l{<6Z-Tta7NgZrA~|otX4k@5Hpqw@K3J5IEl%l%Z$(R z3K=J6e=S9F7@>}7;a=_>Jlk&lwi9fGsTh(E@oplY={&m2rE}s(y6QZ7zY$2dcdNVF zWj`}X4_jC5DsM)0)V1%x!*2jUB5-Tl#AKT|MB8qoA>cyrX!8Mfb`qWj`*RE{D zJwiPrJEPt$9L4UGQbwmV2lb}2d&u3`)rlHO?mr|wnn3FVFky1;YFZVP5s+BNNkCW} zyWR73c_37YYGuAAJ6yjs!2a>h50q%c8H6!chfkW`8k<3;(Jptvtdpx|@?*QTCziGBK^B*P>aSSLz9zG?~s!7Q$(Acljg=okWMM zUr+woj~p-=8W$BN1bcVgMM&)RHIJ4bIO33$uq$2?J@{to#NpYekASD0#1aJ_S{+-Q zavr>w`fc5j?45FRB_^gnKZ*2Fu{C~~k&N;l>7sLxElvZ`+zxG`8FPYEx=2vO!p z;$07RxRE!7f{zq@qW~c{+!Ii;ckX&9)|M3NofN>DEZHz6@-Yz82Cbt$j~@w-;8SM* zF)#sOxd3z?F9j#^5?RHK+T5p?7|9jvEP3`W?5pp@ z(W@JJ(5i{@8^53f+`#6x@$0z}`aU>w*2@qi?uo4_esJlUeT5)F9P0`uXN=1e=PI3# zetwar8%+_+4MCYrEy~@hS2;OKm|IXZuG!kPcfn&$#oFK)7H@8;#?P2R&i;~#C?th? zw_jrR0V_fHv*C~7(}thVn%O&K{{ioPP}EUSOTmxaTl<>g#``){{=`ZG1hA1?LT{Y_*_-8GW(V(m@)Naj zbG;XTB6m;^F6m}N7-A!6RS)rybz2u?#+y_U3@Py}vHX(3w^#szayIFWei@D_`DGf+ zqBfKCdK2;v(=?#&I%EK0KQ4_HVPF69_N7_`GsJJ*HBT&j^B^`PuYBzp|_J2&_hSFy(<{u)jOXQrCSlKNJzk2V* zvWCa$SfAEen+3-aZo+Ox(#);2{X6VP{g9bk5ZgQNE}UP ztOU~t{`7aXv3ILJ;#_4Q+T&V*XM&|IlsKM%>{z(41q8LZqp=iG^gHI0OSbmu*<_}R;CH@i zjJe&!qd<`M>V^sU=wWpCQ$gHHR)=zX=BF9E-?4X?z<~hIii0oetbKaZQ&R(!$7wj- zmvsSZ$oTQw^nh9eJ1Vux&$B_PLCDqu&YjKL-$66Jc7n>MWcz)edG0l+QQKT1_A32- z{YdR+%K&r1@HvS(wv2o1WEOVE>50!6sEQS?2|)+bTF15><%caB)U%2#9^;tOzW85> zt|wJOSmAHLZ3{|$gz1PPf2!6U<@h-d$n*K{x6p4}?H9GcLa0YqfRo>9>9u4?zAqyO zuZHSaL|LnD>_5@_#WpHD#W&c(B5Z&&z%rEl{&bS0*)OQ&N{PC?>+Lp(M?3?W9Z}=2 zq!}@;9KE~k3~3;V-D+}5WOFd!3$O)+-gN+IPCC1Csqu!bP0Rq(Z)S<_tNrQR^MiXScY#-jeuH!& z{XLzM2YkB9VE9ony=7fmc%j3Y$_pqB zzS?FW`K7gTs(-48jUx1J?GxrV#>U799B68;&0ZAyCu8#wd)0-nz;3-+{HusO`P!*I z`$FqN1SoS1+*IfU=4Q~fC;rr8@ZG+&4Y4d~*3Fx(vwwR|_Pa)iHh zcjVG+)(H+p5AL-qza_?eR?PL$o&KAU82Dvn>SOTuoX3KV^$?WsJTT`5T*C4yuhahMmt5IsbLJxx z0X>pg?{!WaJA2*t=petBjk3x9M7zmSOp6NHe5SRi5QAf8ejqRkx-HYD6$_)krKNg( zSMZz%n02xe6X<}VyJl1k55Y=kjujD_xZqyNuy#9~E$I(z#YQahCFCg=^{>OJOf1q+ z*aW{)z_7o=YrY(xB(`dhX&AgF^FFZ3l>IeI!>7g0BY*EJF!(N9Lj2RLY!`>lnt^nm z%n5+ysB-H*jUaQyIilSi-CEH$o^V+P{Rv*FJA=m2ch*;DQOw?E3m5UKh@N^W&mbYp z!atfJpTNG->B`qts;*KTgu1o$N&W_R?WFXHkaSDIQ?9|F=P`!g980Kx~o(^$C2W#z3TKV-|*7qW#zPFr6ykQr55ftJ2 z0ZHJ!@+{Z}22yE^s)&Uq00jWx%x%oCYb86>(Tw7WYqVXXSlz*8PV#&cK>B)-M&}D( zw##b1I=9Bv8eO>_EAGVC23kL2UiJZJmlc>@6~fwa=DhqA=E%18fjdDAPjpIjpGNtk z%{~aIg~K+0^Q36)1XpAH(hcU6D-C?j2HvTC@6llH8aKV=a8 z70M{mdbb#qIeXvZj-#!MbKL`YUfanY&jY$!?ZWG-^>?cG()4Gv$cSkp9B~~-L6e&r z#q6Fcxd$vL6el>hkh_PqBOW_SXy;PJsPr!T&P)-> z2Aytky6ZhCS*W8sxWFBj%~#e=PNV2Ad=M;UAD4xf*xkQ5le`V{z~5*NTy<(g_x*Hl z7@W5G=*O3nI!$}@`HH1fj?8!fHPLPdpZ;fJgLV5splDvP&bD=-@5jMS-|@jB#==YX zn0c=uBi=Q~O! z2-2-G>qT9(*x&)`MD5R>QsYDD0yTqC(g_W z?(Y{_2;(eh=4b1h5jm9FMfi1RxYo#@y(}fFL;sazYTYf9{V<3&`=bqG@z$@POv4MY z&QW&+R>QBJ>he7F*CY#;0F%uf@u=1-KH*bRqoop8cvCCS& zfV15fbIHNGJ|wjB3+Vx%I-|XX)LFmQ(91sd{Q#2mhCS|FB-7EwY*dLC7o|%FlMo}7EBsb*#YLh4!bAG&g|t46YxE*i?7Z(Qxz zx|&Z^(~VNUYfxF>T|YS6XB>N=zI9>B>&`t%27dFL+3uIP6GjxS!`ZV}KkFaCJVrdAVjR-+am%H!ywKESG?!TN zJ-pWMHj%{ns!WXg)Y5BL{n$WmvCR1rc7l!sK_yyQR!HWR>n+Ai5+reJjMJuQNAeKj zKpDf7-UemvcF@digy|)--rqo-6tKrMf)trTjmNAv{C2;jkY+!L;jXTQI~q<0Q;%c@ zCL-il8#172vX2@~xU_@YeV(At%jNq;etT>6Z~2ph-|l&alQ+Uqs*+qD?L>N0w*TJ z3{mpR^DUVPg`jRQD9Z2^Yj$g`Ry=Bpz zzg>|W2+>A7n*njx6#Up z8r>t_=#|4 z@T7s^=sP)XLZ6M_z8R2jXJ(Q&{{W*XU|HP@>UKXUj@zKiCU`(QU=mjuxnk6GWv>$C zdu3EbVW%=BsFc_+xysv+*7mSv#Uu7Gh0f)`AwKlTec5jNZpg-NRUJq>7&kNXrq`cS zLk^3ah-2t1-=M9Gf(Cz%Ct4ii zU>?T@yXY2XEd*N7)XKkdB&+q5J`fqt3_6u2*CTBv5gujW=IM&JNN)FOtkD-RquJr;6os*u_QgeguFovZOeDE zVB69bz{)qTg=!=~BWc9o@Bk#oVTbMaPy8*1ju|;Mx%!f*qD2j9$=0`ALU#}90Hs)z z#{IZ`%OA_UZj^5ix+xm(ne^(w337eWXxgf;f>|;hPT!|T5y-I zvNtmVsPu~kni`7&GoCJ=@ruL&cin2+Y|OOYoBE8Y{X`b2FHVxTHbox$?|$O^XFwekz7{YB2NzcW zX~O|P!%;W4qOWgcyrCLM`kmgFzFm8C`JIf5EPA`7Lm56^%iQ8{^dhlWhUL0h+ICiD zqSv^xy^y&?Hr}RTkRtO+=^^fPNG5euq__~Y=w`uR6{}*!Gqt~{N_v-x;WC>0&|6I_ z87Di)=2U1oZ?mv29+?I+IdcsZ{YMj4H^er;ur1aRoEqQ( zt9j|900Ygo*csZy4p~9*~z&-?rT@!IYeGsq!yF}ImkGI5n`;yr~`a~kh<^5!slwV8HZ(dX=3Z4AhHS%u_| ze>kyj!k>M-`b03tEI}L3w0~ctCu<<_#R>2nqUFB&!#n1h$LLf+bks#-v^{jPp-m?+ z!I3!x*B*U(Y-?dQP4lngcZi990%mG=sxd!mB}P_18BV_+`W)4Mayy1p z(m1nv>*JmCaJ=BB17eNk`N2p*9nR&flUxpSyG=s!E%A^MkY324Y7$kL=~yx!7bjjwHaQL1Jg@sH{LXA&CvB!!RsksTgMVUJ1@KSJNjf*{+xAUo@yEA6UXTZsyKl&o(TK^sO0*ALtoF@6Vz;#y#{laH0@6aeZ zZnkP}zaD+Q9(*uA`pEVC^S^F0&3|xu_E|Su6#`)@_vywD>0K4;EF|!0c;9iM?(ZxEZ5(jv-~Rtc9OAZ|7+;^|7!o2q5r=c{vSvD55xb?;a^Am55xcCi2r5ye;n~YX8b>n v_#ZR=A4mL;8UOfyuYmuW@fUAhY5p#zkdwPu70`V@a+ErT&LC7 literal 0 HcmV?d00001 diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_user_suggestions.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_fixed_style_with_user_suggestions.png index 573fdf197336c0b39569f73b1ef2d250095687b3..a549a811b21cd15578721d754af568bed6dd7997 100644 GIT binary patch literal 47742 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 literal 37363 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 U&hLVOOM={>AadlB;A07h0TE&u=k diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_user_suggestions_in_dark_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_user_suggestions_in_dark_mode.png index 4664259d4efcd6db8ad5fc7188652b48c07ed7b6..0917c432d2c151c51a16e1d631cb01efb32934c2 100644 GIT binary patch literal 26148 zcmeFZXH-*L+b)a>D2nI?8z{w%fG9;nlP=;0fdB$Zhlm7_grYz|N`ivocB>E!Euo20 zq$LUjq{dDt0fj)MtCR?#NC`27z?s?4^S$Fa&pGd(Z=5r}^PcgI{8>rXnrqE@&w0=L zzOL(D_b=L6?%pZ0Q%Fc?x7CI7jzU6PAwojie(Vqhzr2^*S12Up$Fe$acIoEe>`2tB zBd7vX4DWLNUy~=UT-ds0>+NHEV-^l!CB(c4jzuoNnVl~zJ8tceMoin`Sor78s|A03 zXP>xg_Wm!Cm%QOIPV`hJ=QVR!KX$cdVpg?{mBPT~j11txhu_5Mo%%yF=JSISLbp!0 zn+XXCOA85^i3**?Zu!^4z3~6|_1_M``GRu=zy9}!f>!?d>%SfTTigF~$A4@4pU?3> zw*4=6{I|AWZ~6bb@UI5>x8eC0gZ%Hb!vD^;{}*@R#@_!TGy6a9_x1k^x&XZ1zpVCu zIsEUP%74D_|MTJbU+Q1}^V?kiuiphh=l*5r|K;%iI4c|x{#P&efAF;U&u8EN4P6lW zuWyC_Z@M7u;l2L-Aj5m{FPBRs^c=EWuX)0p_lnRJ;jOmqU(-G$bQ-xveEvh^kkBEK+sb}b3R-7L7RpAdtXR9LQ)_Nc+rY{WhzfnYI0tPHG4m&8HqZL4y%lAsf{I#g|5eJ`rYP(?=QfTt?!AXNcZTYY2vqkfyv3n3df(@wr$Qh+%rp3lm? zBILTGuoLzq;UV{`(Cc-GuP(J|@lj}mz_)y9u6pI_0X)Pl%dZvykn*j zc)yHNXIG!Qh#7im-$QAwvUF$nQi4%*82^`}jrwIx=GASty0kSPwJB&hK1-LhE{5VA zD;s9Yyd=G2dOiII{4y&)rpQx1c?U_U*j1#wDYU{J_=}URkj-H|5WNCT@t*1Y>!4S} zXCKWw*>B*3HG!z$j*DHs`hiy1+tM}eELi`x!p4zu#Kg2i@oU+ z9&_yA?z7CMRWeC7*3AFaTI;dbX?q{XOLnR<^+=#a})Mi@QPoD1)r2d^8B2q-=9zVUw7LUL8O% zyrTBQg{5yfsNk=3is0>%T?r=WwHJ3E+$oeK^xVJs%5Ke8Z{!kxE;PPeLVp6g%?o7kEfWnct>Uj*9JC15nWZDi25Z?46D+GqTCP0P_BcS6~OHYP~~CS0bCu1XLUEf zjb}KOq_ET;6enykK*BMroF^2S&Qn3+zmt9bY$xaEK z&74t>5pV;P<(I0sjm>HM_=eU7y^)CCnU}3{tlIfsqns9(;F`}CBN@j0m0lK8qj{xg zrps_)wsu|6x*Tt#U=R8^X8!2|jk5U`-aP0Gx1Vo?MUHST%sFo@RoHfF{ju0bPwe#j z+sEIPS(bg3CeD?V{3|#u(+q~vuZcxq$`T~E&)K7Lz66J^Uz;f}k7^p1 z?c1{b$fx~|n6=*g$XysE>N=PVm6qbUF*Bv?3#Hw0Q(CA~ZQ( zQk^0uNS7^lYl7+%zga za=`DPndlW^HM*H{uDjILo(f2h%I|1@M{1q!oOrr$Iz3OD_wbl_nsUaH>szQ?wsCAE z!#6vq%8Kub@UoW2t>?1ICo80q!kt*Frz6B5 zLJ6HOMDg0wX%bJLneA+`(>Yyab&T&uc%y1-JH6TCsiE_m>YZ#^q!Ti=Rr1ghNAz&e zCmo|$jHS9PitfM;pT0CKGwb*a_xkb0)D6|ZCEx~-wim@9r6Yk}n}H>{&Ze1+I#Im8 z`bFeVRaQHuu?33V`GJny7$gH!uc6ENoc~=slVvlI47K;1f-=|CR=N)X6s6sm+ ziU;771 ze;4N*fC~xZeRe^n4{Bv$jw?}*i5H&gen_MZ;v=$X@X*GEme>((Z3-{b?gHH-ACN})+EZ#_q&^ofB4YpNBKA^B7EFdWhi z4eS~St{a(Yg`_~kmzu@z%MlfDFEV(JlW4!K&7C(r3B!^NOE<$^8wG}o(54pFK0~#n z-Ud@?*@_SV(f2@BJ0;lmc4Jnn<*MTeCDuoIdX#;zY*}7 zc2UfI+uTE=y``6_&{~>wl+!Q&o6C>%MqLm7@(X)a*E|=D`W8piVbH5*R#6o_iyZz! ze0=lhFhYT>Rau~dM)Y*j=e?~4NJg1mt(CcXPKR+QWnnpBF!t#-?5x_DIJ~~jQ7#s2 zvV*?-Qn&VSTH{UTsCBd&Z?qxKExr*|^l=(^h*;yQlgm95&U^4%Ua@ng4#8#3M<#aM zQs~v0jX6ch;O&Cg`h6VQM^sWPte#x}u5WE|{k!~+BYNi2@ZZVeV(vw%JHRYBeE=@0 zCJ7e}KY8noFdp)@NEqM$tqboNtU#d~e*UIsd%6CgNihNEyX0bL9ilLE^keZt3e<;hyIQ8Py!j|f zW1bqR?z6Sujzthf?VVS+dqwX+r) zkBVE4`&G3R9Df2Jc%j5E6Vg{#Bi-67=b0~Yg_^3WloANQS))`SlU#V^DL(vXJ=4K44zic$rwj}*zZEm?cW1JY9a=vL=AfR;XvPFt2``!b82PF zz(OSRM3i3l(!i<-Z?<=wPd>pTu$ftUDi4B0@ov@reI4+TNdx4DLR-rem#U96$^U#u z>~p<;_{ij!DbGpIG{3M%aJ;8|y+##uBZQxd3(se%bu$}6HWc;>43?_kWU;+y@1bd_ zR84kVbkx&sb1?Z=+k)P4-v%F8pG)Wz1PlkSFMv>PMst2&h}c=xGmc;L!rE2)cIypa zq|DQu?B`@Kc?Hv4!%h3@RzWPPxhx2rF}BInHCj~)6nXR} zldy+`A#15_GQ-;g4Yu6MU4u=!ttY;fHBEu^o+#fD+jW{cceHBs$aocWRgq6J;kMcL zv)b0G;*fK0)wjAfly6QhfU6rf3|XDAR$0`wD$-nk>Q+78V+I_yv?(cBMH;{)gr4)& z*PSFzPsUj7P-WS?$qV-54XpOLz`W#HqZXr+G4_wVYtvaL8E&hJLr78lk#f3>U#|Yx zfJMEXR9a7z`p}8nhTTj9by;q>T6JDdqITlcV5jc#D1lbsrpz#3HMI@aUj_MzT^->= zPWBy6MK#?bquAI?R2cu87^EojsE>akFQo8ArzY2KcfE$0@}_-3y5^iD!95X*IJy+| z);xT|c_$(6KBupSE)GeBwN$=QrK~KwE+0hqr=KgW<5OnJ%4hf*B9}16Dp~OOB^&)M z$3)!RFv~POQk?_B%khx^;i7?)M^A|O%7u#Jg>hBMk`e^6focQ^?A0N(Q>wq(W2)oj z*S~IOZ6)P&?0c$uDBJ9$NO->&Le%lv)OwmPK3=na;&F_}oPi|>P#j(Lkal5tPD79{ z#YMB>T8%H6cX(p3|HeOe~ zq+klaRB$@?{zBK#W0_<-9aZu!h^o=@$y)8xWKq1D%g$fL`@VD2O(|x|j%NezI0b&U zDd_iLe%^P=%@XNkv$J%4MpHH=o0oA;nexQxYvHMOmeb+BIP_NQWOFU5Hjk6m+6`77 z@uw3)b17=)+ooc&@^d3^iwdQE+8p(sh;%_+|gRL_VrMfQUdYW7kpw+9Iwzs2$>P8}22jGO>(`jeZWHKxCHtk;phG=z9F0TJ$5r0;2 zDy!NatJPLe@taKN#h={W5C=lmlHaHdyhl8(IH4a^2(#H)U$6rb2)UsC2MD~ja^t6$ zdrqJaw||;*276R=b0+~wbUU~vc2`U@a9)+>WjO!Jmqh9gLyO>hCeoLyK|;nDI!-n! zoxZlQ78+b;Q)v!*g|@4LZoNP#h#8^;kw(yOL}lQTCIqIhw;`{%_GH2HItAQjN#wDV zd_l@X?iu1fq`Rgo7-n^~)F*|{rBQk-vRcD(mQ1P^XoNIiW}g?rLy|{^MDTQrsh1U| z%;vgfr&=W{*r>mo6-V4UGP_%eY1#6ly7}87{AU@sb+|>#ujL0-I@F2G8!Q9K7{cAr zbz!{r_QIc5bAPOTF4QlsL)*7@I9@L{4|KxlXHKQedaPL&o(dFw=*UZD*R-@~E3v`c zed2H08?8g3_BMSAk_$Wt5A)789{~~BBqQG7SM5A(t4-tm!N|kPCtY)Yq`tD`! zMgnx_eY$SiXGvseLq>0L?-5yRi+N&IBC07;Qv57i~*8LFmZ5;%KnGdJtIs z@n*?tz!PS;wg~=CvhdrfJ+~yMdQLZvM24$RW$AVM5TC7-TJ5HuO@JbHXTO0+p15Z~ zoybx?mENL1M>G@oAqOcq0p!Hyy~Hco^4zNKhG&#-rMVIinsTu}wvE)e-n`sp$bivP zHCK%KXV17>9MjqL0z{;D5_;l#V4F`OmY}u{`u+nY+WLNnuCsDC77x~^m{-8CqVt{Tf#c_7hxnx#6Yq?s#Z+5w-CT;Mqux9vXcusX3%v87vRupOz zO)1h30e$2bEHxadhBO)H{+UeP-7g5QG5Vxp$OnX2LyLxC1e|*_a$x~TKkE6(vY3tV80ZD*TV6V96PQEi# zB%kDdZ_kWPdwb&USvgIzCRgw7uj?sEGP@wd29&3U`m=GzCtRX2Y|ef)psuh8#s(fl zEZLl*ymfq~^#0h32^TbB$I{I_4y&S>{<<(8O4v3v`H}EWDc7zS{y zl7IcCD7aj3-QWNHPrm)5Y0!!y_0o823Q5^6$5p+$6Veyfq3&XfhZMO30Ia+y)4Ks< z)ZO?RuuRfAX37OhxBb#DJC{0pq53ek`6kWoK6m$*6=k@$e-H(!)dP#dDJ38H$A{9W zGgg0EWm&0r0swwyFjGuQncgwAS(@55j#IHGI=crJg^)Us2ktyjURVT3P}$^{UkV@_ zdRV1^6T+Q(tRN|-srs7fXI$E5_1x-7Tf-9P+8J)C>LADx%W(E4^$h?TFK3Y`Ee${4 z?kbOJS$vnraR>$kwcX+>x-?dQ%e9|Em&)_$2jtTSelmQ0oZc}WZ1C)1?87Z=*=bkr65QK ztrGz#A^b={8HAjexdh90?CmWLUQr%06l6<#A1j1|@P+NFoSUK9@Z;%>ef*jedt83= zm4p{CNJ8iFJ&@@I2ZW7*@yv1Z>7w5232(0F{^U?L`GAT5=?Y_^3Q4T@XR~0N4KY98 zY;P1HMuJ@}!A{COUdL9y%T2en-V1B<$aPIBy|^hz@l6$~S>JNNJI{uO-=lp?q56|3 zUh=A=!XBm=m0J95r4vFIFC(x58Vbg1d zl5vCVZSAa(rp1pjXupB6jnz6fMklkQc4=4;NG~AWBKd5_g1bMv&xHi?^Oqq*=#|fw ztifaQK_LAv*a=a6ZTb8Ank2j(2hW{xp}6xGQ{rcTBSem&IWvGBvSFvhuRn{KuV`*6Jr0;E>Ly87;aMBmQ14KcEh^7i+Q(tP-X5HplrkXDtlXleNxd@gs^o`d)^m1*Z0m5C zffAGZEZLxp^|E5QteiMQ{wM}U<~E2mg>6cPQuFTXiJ-P#UW<#k$`8mzIeSqlbHSmk zn4o8mbj!>;`JAz_{Te-KX_Jt$QnfmO7WAjgfuRR5wE?T5*Vm({*pHbTMcnLKq(wqx z%DkioH`lv2=^dffG~JPe&R%=d5#NCbI}MskB{PWJ=Ukp|gC%4ZECCnddxBb6?|X(2 zA$mgR&_KT3LwEykzOg(YFS>Xrwiys6Gs;C%g^{iD@o}=EwSWpCwmLecwb~i8>02JT zudUWmyi8pP4;*c9l-?k6n{xK0!=X(#^a2~&m;cW26>w8!{iqULSYG3=?+;=tn3bVu zqzmp+weF68j=(1=8H?VZ-+JED4ThtS#{tNmWcV(FQvHbTS(suKUJvHRIO@=aU&m9_ zDeFsY-@qgpfDXg({@4K!{Wh>s)3z3ubN~)h;LboVG;>xP^Ms|fB(?$cCjx8rEk`-! zcK=8CeEQ1v`tN_8G%$F3{8@-M4~i^abp_DR=JP?lOM-8A5}t3z)%j zkW`~8oRw|$&Am?I&~{RGTti+yCv1butP4JXSnX3S2*^jT;!6~q2pJH1i~>4!Z6~Du z(YZWB-fT7c))v<@iBRbf<4>?T0iEJ?a|57TtQji7A8(^kUpNRJ@?O)k>xc(E@3qrd zo#M@7zdq{42;)1y4tdUJQr7)Ow0q<11#5@pL-PyCdLxQ&%B;|8Ra>UiWWOun-h`Pc zKPzp2!HVQx8LX5S*kC6laraKZ>43DlV%MU8%o#yk>luEz(8BA#`{QE75e>zxq$;T} z3+1A~iuGI}=TWC*8jHj&?Jrtgdo@=(G}xu6g;kKM4|S63IJH3kl=h?s&@Rp} z-XLQ}=yFm%XFvR@_;2>ruE|c*%V`CJ^`Vy#=@vHIL%^nYbPq)J)b`%CI%zmzxvH>K z8P`aT)TK?_uvLApRT2Hd7G|!$kB7@&hc}0^D(k#m-oUoL0q(PR#&C>lXKb`4fPvn1 zs@DxWrd){;uvE<=E|LmT4zvkA%L=Nob@7g#yj6!cfdDxAQi#rV;HM&o zKEB&y>N#ewdfN}IG1g9F{5z!{vsdJLW!o?@v(F*A6Tm$!v%}}!dYrSixL72r%(9O#8bIN&7g`5y2UQQ>xpCZn6*P2_gPNWYe+#zrh*Q+GZd305;rn2qnQuOD0!ocL>;1>2BS9UIeluk^k=zgHWv!beeb6NQB zxZWcFnq+`SqeCe{9FQ5T4~=lX`+{f2I_kusd;s< zudan%83PkQx&3t-zi6QtC;kS9LJF0@KXICm6&7r6J0a7DwT5kN4u`z*87WL_wFms* zZ%B89^`lD`-jmIfa@M7H+u}}Z1#}(xYH^cr*GzVs@{W~F$WuIegxgYvQLWUcis`Ece?ZE zSNcuysSVS5bOMN*5}o# zrkb~pkxoNpzzmgx)OB15X?IP4zU?S6m-9FgAuAmk zW5u=z?TW^#$_8#9giQ+EU0v~0`fK=!&B%_8?*}PA8a5p_Xq~STM<^>}R#@qoY=`8+ zrp)24E2ngPfFWxf{5iHyq<(MOlTU5-sBW3rT6Lku`>o@oT zf`U_vr-4rA89k5A=FEA(MMZ}=%d{W1_!!O1b%|FE0+$6d``g0NA~mCL9g;Hikjapk zlS7D>d>hT?8X&?bFSFGhD3n{8OVsCs_72Efm&`ZVH^{&eqolZ zCXfnAIU}>I&C;2?vi@#JX{ojP#acH+Le*R(?P}#v8%xWy+v0HWCHZmxZ&{P=t4_$Y zxrvwke6@vUk|sk9$M3)tJ4Lf%+YPEi-86XBiysd&w!Cnw?vsHp$#pEAY^`0-{hAeA zl=RZ;c0Srx-K^`6_`B!&@hEtGr%a@k;1iNU^%#cNS5UHoY}@Q@N@Xs6xFn~!Iu^f4Oiat!SuRAR_^6xJDz`ZDQh%!lEbB*`B78yR;T4 z+%@gQbU&?bd$~ri^UuVmn5_M1IMuK^h-}>d7f1+(DK zjq7!jK&QcB129Us8Y&%J$MBBrW1U%|DmLbp9CIK*ST;I>bnF0+3J2p5(Q%9!KtT-ogsX@S(dA#A> z-V^s^=x=nJm^^t;Hqw>vDmGeb6~q}0_hlHt2q+GaO~mB39tnq%c#O1->y?byx97wl zpwj^<Uhfa8wT^#kD!@*2k-dqv1XM~hJJ+O^@*3u-KG?b*J^#-Z@PdtT5v+Z zmk3R|tZQ=%i(oUL2=cMmkpecaTcA3fA9HUsw8DzqrzX|G=0d z3wKU|=adi>Z&rNd-SDq!`re}IYjP(=TreV;=Z<#=7^>vmyxKfEYVlqv=$Lr=cn;sH zAf2sjl+K=r)5%tKyr%R-*$B+w`GLqd+LjV&cqDLL zMBnt+SQL|=@gjrY)sjIdyYofzk`1=4zKu6i=@i?j;N5T<%!;m{XNYT4wUIGPfE?Sox}Lk7`;)Ow&XpKcIQNAKK)Trr1WGOd$HJw8^E!r}Vb~?4OO=2=QKyCe_;wvTwA7 z*RM)?x|5oP|7;=(>wA3)9}wwbf6gOt zuw4g-(vClN9&xB6MNQ!Rus+IWzr)VFll5;WjcyohmGHx=QkoovCNlkyAUVm@OaX_A?;2-)QW@2)n}=mi))676oH7XCCO?Zjf!JYHJ^jt{sR& zCtJR?)1ub&cNU2$F6gsp8-Dopzvhq=R!G>heUPHnLJ&*0sxu4L+hw8HzypX$ql~jz zGS82UPsQ4qF$Tpy$-v#WSz%I{O|@MgF74#^+{r4gnyPiYn92F1K}{P^KUd3jQzMI_ zQLD7tDyW#hK>Jr0oY^&3+I-xsm{LG%76BTdz_pEum)g9}(10<|c(Jb_I3zxzPfTV_ zHWxAIRcV}AE4oo{p10Nb;-I;j_iESI_`q3Mb z_qmGg5a6`0F63v$O{-j3ad}-Rs!CbPZa;W^)E*(?_-o=IYy-Bl(DBpM12UUEy{p#+ z$dg>e4wX*XpZO7N+L0NKG|hMHxVYvo4*sE?tX$A{M|!R8f>cVK1@3Ghlde${QsQX| z_zeG_hp%C+p3@f9TGd6aHgfReItLP=rCXrOZb^5Uo>RYyu7`5G983Zlffh4P1i!+! ze$}l%1{8`c{)tw<u2gVFLYgxpj4D&4Ln2taDN6(W7dxTc!7px9X5} zqS0$jE31P5;Gb~0TAF?VcB^G-PoSQQec9*iyC1HL;Ez05F_-Q{K{U;ZS7_6rPpJjs z5d4+XZ%XgnIg&qGYYci)+uJl6?rHsPjQA`%&>6b-+MH0%sXWdp05x};A$ka{jq7_4 zwJSJ{hK7=}1vZM))hgnf9#xcoRS<%(HghvLR3}j{JFg%mo$6pAp0>59#!qioR$OT@ z_9Xw0_8&?8ngjs!ulTAyb0tXqNk0526?VULJ_Pe-%7((-rOToo3_|!?D;#HP!zu>G z{BK?e7_agKd8^_dOQRjf(^`_l31=L4=rM3xUq-AP=~8e~{)}9$rq)|815ODIBph8< z2=OqJ>;=Px(h4Ld5n4TPW2zJHCF@fiM=%Y;WTTU-;-gJ?y2ED5VlNq4#Xd*X1JIxdu1a!fvQ{ zre==gmEFqJG{WPW51hJ9)wtzJ{8kN?H7d5{N5_v0|B`P&n3G@tO9t$<0?7&oSi*`D z3ZUD)*}Ai}sv?d%aTS`mAyVsArm9d6OLde1HLc)l^jIm;{w$4aW!C4BUlA<^nRJQu z&Q1-|ZxM6g#vUhRgpG!)ISygjQw^Pq>aChbRb<`6A59rg#n6@lG3}^Rf+2|n$YDhtnq3rxt=-ux424-~G1MN?uzMd93;Ib`qh5$)5k zJI$z{(4&M6l}hsOrS~sv@6)!Qc+fa<(0XUazC(WJ?ficRCl6YwpYI=WKXZWl6d`L% z&lb)XP7Kn#i2` ztwof^bUN$rLHm@3R7^>i$-nb{%1Aws*uGrktU{LLHcEd9tDJl}bphLyzfZF0S?JD+ zs^rn)=}=kOjJ*RfbMVFi=jw}{tR>gcC`16kHb|9jb1kTOp70F5G|=wrH*uL*a;Iw_ zHqg4gK`Pljen;VT=$0%_7Kh;LnH;*av!a@^^>k|`H_!1*o!t1o_2`N^6N@6z;#s6J zt}~#8?V8SUHYij%2FFiPi-pN|Uc_xIwSLu#wCNvV(ee*kS@(9aW5xqbYPKOJ=pWf;uOCD?aQdEwWBXJg85vw-eAe7 zX86;U$X;8J1UtyW2X%f^$|)4;B9Ydgs*!c0)t2HKOX<-YjBreS5upjSk@EQ%rjTQZ*U3y-`K}7o<#E1JD+5(10fvTp1X+xBhN|g;o<}JpZ z#Wy2ROuOE4%@F<4hUoDRW!)q;0ns%>DkEmEJw!#3l2$e4c^iqTcx ziKdmYStfOJHHbdHj|{TDh7oAnU^K4g!^DlgN=@M`!>BCxk(zlH>ow#M!#>su)$#EG zW6NEX}Ug74n=))Qww%508 z1r|x`&#yU;>aZ)P-yZ)+_V(D07P2iHUsK%y=?((a|)Qp{HvGNN0+Fk zPur)Gq)CT*gnCb)k@E!OXAL**rI*{P?9u{wMd!U|{twHMRv}|CVJQAeW~BD}ec{fr zlgqOAqP&X+uU0+y4Ge1Zi^+*PBl)Yfc%unhD}KFCdZtU%{F%xIpT_CFmHVML90bpH zz1-G)iEGzvXe+f{H{*{jCpa<#yIALD4+`cSeh(;~=ED8TU_2@wPd`=?_3GHza z1rMOBtig>7h9m`+8G~Mi8olv*-MB^JnI5%k(>krrlonpa%>51tQpnKN`vyg9rh0Jg5XSKQ)7^p| zNYzvo3YK>J&R?N&wPx(ijg_K7#f6dLZoklhACLM>F)?Vyl5ISCop5_ktM{@g>j}Bt zF;rU0Oj)2~{~L+5-1=d5pt>9&pZV+!f%u*z(B&YyjX4!Wke?HUP$1#qo)tjzme_hk z`Tp(0722N^!rz_H%szaT$Z}uB^SVfKl!>o1_IteOY}a#L>|U7B6ZhPh4@9yunD0O;l$Q1@i4cl29^ZR_qpZ1l`WPNX`A z_D*lMpE>!B(^Sc-U&te~Zq>%NMxJyIk976B1SB7*)cO4d#Ul_vnS?fX3LxK*6aneNHYtk# zB!DeQ4mqs09EYtB zY}OMG#B!P4OnS%qeBK^*MJ0Z5X=aSFevZGsxiS9$HD?+Sbk0p->WFJ}4+w?-GNuK^9EgwYft%%uPY@5J~m+ zle#Bq{53GiM&}lVvzu0D%1QHs6oKZ`t2-2w>GV0-8}|i|RSok1jIuVC4~mYA4Gxb1 z{@8fbexpm5un;hr?n2DxO=`xw-OB}hNbL|3!)L)5t#w0bLMJOO0-JiVdDo1+GreO1 zEe##PjPX524bqzACb#6ve?4|{n;4`nXsvi=lfOu0X6pM5)pi&~kKFfS)!)e7s6#J* zeBe?yuN`KlEPFFQZmDfeM<7xn13JqY%tItQofKDunQa{7htwsIy|DEFfn&7_s7nOU z#g^6%BFYhfq?vYKeZ6hZY`DDS9c!PwE1wuuVxDdSx|H=BynQ1NfCGP5CYkC1+IXgp z!VhMg9sm>(tL03lXPA`>_S$YpK5v*g(;ENloqT`m?+XEdo+1jWzUV3P;hm>J*~z&p z{h5Q=fHS%bZf?nbFJ({fMvosJ`%$|AxVB2nI-oHl8H?>a)i9dHpEtZ-N%U*E@nbDGlRLjXAWD7tF8kozW`+oh^0EQl|M0h65Qb;CZS(qm z7tha%p2vg=Md5&`pVpyPw5-jbwrl{+E}axeRHP}*?Obv`NqlwHW$$!o78{UBlQH$c zdsSLutxCRH;gre7a$@@{S=Kl^ka)$?cvkT_+Lv`Q?QgX$0R`*D6a^_IBa}|4UA{M? z>e$4wi<2+KA9b$@YUEbVc$Xe+k7)rFa@?M+u3r*6w;*kaiJfOH_wGJM9gbh|_v(n_ ze?<*yEK}Qt)?wIzC!0QF;bDqx^*nt?v#EoWUw<^mHJY53=Ta?am|dou>n2Ee46Z(? zYStdq@nDd5tq)yzK8+l3%wGJqC;k<9dRmB8#iHCx6lX% zwXp5D$n^~Sx%1`!V0Sp9v7ta2C=z2(2MW)~sOn2eR)X#xxp?sq^id~(?z}Xk)}~81 zJ0NogM@trLM|~T=eFrII#Ct*M4$HrozEx+;zPkE`7zEJ#3q$jv2=AqJ5s;B0e`?3CD5LcOy@+Q`3fS`Ipq*Sxx#+@%%?%z)IqNoXd*8%sQlL{W+QOu7 z(`Deb0F4dlP;P?fS9QnOKc9 z9Ddx|b8zC5`JOq4^3x!RcN_~C%ZNctdDVUJ-abhcHdwwb8FCv@;w zl9$vMpw7GO;zbq|134n+gmW?4g6gr}&(Uy9#B_mI2b#I9x*^Fm;0Jq;NlQEz3Za*JI$m1$2C}g55Qnk*DMe8)Pc`BsK>^N zEmY0sQ^EroRhw}$%Y9m~&1;PH(~HanFJ~{k;JsSBkW*n=ywUJ(V=r@($F}op#5gb! z7glc~u>y(t0LtceKi9tf&*#846`EuNHxpKnmkZ)#9w4L}L{)LCyS1qk#WecBd3pv#B%bfz-kk87d*8PfhzJC|-I zn9tuF0rSDhs@}8*lz6z2^y;K8n0c)=uQ*fdtetG|X_{M3(m)9i_w{y@Py53_fewoW zrd~8UI(Svp)^UK-spwSOCk_!)p5(*jmoQ-u1tl;<4vq_-0{Tnhs9&Q%szL6AbkG$E z?dxY!3uaqtz#K#1%!c^}w&(ST{Cu?avV%)-d(A-x`l{qDIYT64hPAy?i?iS&aprwm zBdmM+(+G)&D`=V2p&8nhVAU1zj!){k9`z8bLkYoy!HRWa$8k+M%%{`g8~MhZ*+Gl) zed}{cXh2T?ZdPyy*K=Ec(>^QE#WziCc`(>ivB>&I$GZOV;DFxk%8|A3lu`%~9z==W zx_gES^$hc5e{jqavc;|p=KsMRLWSP`+9-VSh0X-KPeIqGdrFe2~-dv zD=1G$Y{;snRCkg8u`L<}-vILJFtl;1w7z`_|3&j%(Q;ldskpxKNb7noXCS1}kJ}%s zQMCC9$QvC5K_2Rt+B0(dqHHI+3=F4;Hue2zxm{U{c5EM_3qd+^*=*|niEyT_WGN7ppGfSilFF!H2G;uysXkMFKm4M-1BB(3j=7W%e`$0{*zC4k z%Yi>_nHsNu5LF-bIQB3IXP@a(-*@$9$k2BmGgL?WLb4ZDis&CB+~>1$V~v$w!0qr6 zWoV$TYFz7#1BI9ob%7vsi`b608qcgCenAw?5bMABDB$R*9$QvRi^OFWVs*u?@T|i4 zu13JNuC0nre>u#JZ}b@jc?ys!()q_S?9{1ceYu8qhd&+B%>Bt7RtW1q(f5azONH{Q z<6D4CjedRBueFbSv@TRD`pY}$+6Vek1js(<_X%l0#fIO$KzIp9xxDS{$Ca~6_SkDV zSwKhXdsk*27?K==bq7A|0E;Q^OjzF{`xBFn6>Pw{!FKK}9n@G(cBE_lU|bd95Xjw< zUi){bd5_dCKWr$S1{s#&gsm<9=X}PagCs^gKeD$hUAg7MT|r}?+%Run%_P+yRrDF} zk}Y-)caHDddnfCli(bnq$TV@F{Br(qP?+(%7Z3IV%N^Cj5G$26z0r$z2l2uL@l?5p z-JLZD5m)?4YwP@6@C5D-CEkJuc;^TPF*47fpn-k&Ebi=MiH15_&ZUv2&)KXNjiQhK z|42kRNd~V9d#}&G@Y>qRtj%? z1_AH<%57b;Ty60`&TRws5>AAcTaCB&*`6=Acdr_}vUCSgy+4!K?-debW%>wPQ_j5N}GYy!+M3~jJm8Ic_G)TE@58{sv3CH zf}Nbu#ejs<2jK@if=;XK5qhpAs8j#@6#+&aPyRA?ndy4uV?^^XHLB*AW)p?1nYvGW0J{VL5y=*3>W zlYhT(Kq~a+yTduqzu#35VGs~uL~UB1)Qo~`d3~+ur8N9IWrIb@0k1Onvv5{E`Qd3b zvnkV!anqbjfByozlJKwvBJ?D*GfM&@sN>D`{KvZyz9vAM*7`_tqlx;MQpDSpxpF_f zGgX8ZzGWGCHPuVvw3o+iE=8jOe z<8Kahce?;m(zW~4o_-(r-MTTC?U}+EZ`@-TvE_k0^!QzO0!7!bX0-YZG1CGgA>F5xUe{RL(#jU%Og;t0 ze90^?Dw($2Ce&<&H*t*q{)ghLZ`>@He;j$uj!D}sv*$8PE+$^b=g+Osa=%DQ-QfC< z?d9qz=qH4#H(NBEg$~touUdf0WF4)<8Leu18e)V$MJFqj%m1Vy+T37s08DV~sD9(K zhdz}3as?YYs z8xMxPdtmWRqR*Stz_>jA@lh=1zqNJU;cUL$ziP$|Ap}L#-a(C)B3A5GqgqjWgc=Qv zyd*AE*>wc~z*K_XYJomZJ=bZa< zP7?NaF;j5Yo*rI~_h1O@Q+pqR$&!o5_nynH$^|G^G|56Jb*gQ<*sRTIen{OZT#>zD& z=Ju}($%lWXYl7Zk`jJ20&M?ZVdU~SYp!PplceDggvQ%38*c>iyzRL|Swhet-S^3KA zIMx9q*HSPpM7?m;i~SQofV95_@QLHF?bh~T0q0@T4FG#@MLsG3qVs*y<njnCOT6rE{0*u{f73Ty|PPOpR{d4~2(cD(}dJ@GQjar8h>-P*cG_Xehr_4iZr+)g=PDqOLT}iMllpKJn*lE~-{n((DzN~Mf zEZA*ZN%dZ7^>^oDShYQ%WI@k6efCc6|0*g95L!|nx7-67j)WSMRl8OVOB*VwPcS|EBK zKfk((>FKvX*}GG=sKry#Or4XUoSX#}17~TkQ8``Ke0zw&?b}aQ*4Fd`0$v*CU7f7F zav2Y1$?1&ieze@r+r*~u2-#0@HDFVKoQj^nd|9WNowvXF=~JDdp&QXJ05! z&BP-C)SPGa_VKbTiX^|4LcvOSSUvj90 zw}q$)8$S^N3?c*J)KA)8>dEB5>r!DT%;Nud4howjN-rTVVJ{J{=j#koUM^>UPcwg% z5kQf@DU+DUtJ+0nhLx3-#Uz%uG-4|m=3zf3yN-LBuYH`GYH%|N@ZW^&{%qZ{LNW+T zNjoEH;NE1pw6nBabhpZV!gnH2x`l)tmX$hn22V2bA~RFdJDVEALqq8R$Gy2-b=zDC z^-#>m9F5KoIrfw7wj|LJ!N`PHook!9p)-y%D|{mehH8e*PcJKX`P|9Kqa0SdG|RQ= zIPnF+`*t^D%ha zbg*O&L#hE;F$@ErmofH@IyEHho_Ml08^3iXEY`{cv>IQ4Fhj@Y<`IS%4On7If=o2}L z6N>}@ES!UPX`GcmyD6p?829nlCP;J3~tJdcSe!V@y8v?0H$zv0|8?d*KDX1 z3>pqgN53?!7d}J!ceJDHg{p~-b!x;?GdY3l-iGSe=@ht|o);H)8zY>;l=OrTZ0&3> zp+?V(6H2SAN74gFI1rH#%7TF;;9a3AKWF}7)ss998SIG2B}yw_b}AqSir)0C(px-f z5Lh+A1T!u85E>d9GL3jugB$G}gfMF079p9T%epDpUwSd8ol%;H4Ijx7%tJ_2k`o1> zVH`_Vx^#=20;&&U&&49GSp2=tBHe794-vB*`iXG{I}?aaWAcEH*VwDQED`ZwjD^sM zO$=X`+mN7-P1+Q|Md9AFAZf^AAPs_UyK?4rzr;HzhW9&jGi((Ggf&Vmbnbl9G$$2O zCyhvg%D9p2c_+Z)fxUf{ScaC+%GNE*<6$I|Vk z_ND|5BhNmSFKjoasbD<^@pytpO{TBR(CeFaSZw10CNAo+63C`Z3)sy{)&`mqIr{1= zW#!-ED#&#hyMzul-uE0LsRVD*r1515OqeL(^7zzGc82&oIKIVZM6%1k@iKMOfy^Za zjqHm0-@#5sUJiQ!m2A3nFd|b=Gdnwbd>`o9J(uF*;!w2Q@RRP4!WbE8M__heSiY6s z&h(wl@64{Vbzacr_u-YdA5PA17~MX|A`;8j>Y(z2a$D~lk^>4deU*3kKA*sRQkW^K zZt&y5>2d)N;eLK6#O8=MZ6dqNKJOS1g6zXGRt}TS$3;3XTlg{^JHQ2L9XTrq2Y z$G^9-6z6e0yAURR3Ti2S{_b!4-8Z~dK~LBba6DexuZOmD`N7+`-abX^+x%+~CXIV1 zXIh+1*_U1WhfhnE-pGpJqoBT3geZgO<>jPZ$c2KSuO9@J{g(0jSN=}3mP_X`?Au`F zyT8O5(!iJAZhsx+fFi`oevl`NA2W_META~2^h%wkV#q< z=eMp-G~5G=XM{`b&h{9k+S94#o#{Kj^U)HjqF1LJPnV0cP%WgCm6d%W?7V0k?be-= z(RmkcVQ2S3zr1~LLT6BcQGv=Vr^Or9iEa&iak~v?mcpYd#-(_d2&CDxfcys8<7@Y; zt8O;vF!HFBPi+D2cd1q%NmF;VO5Qtfy4!IyqP2JEQG^eW%KIHnD!A@(FcNwcODeY3 z7Ax2_85UTXdiE`jXtt?W<2;N?AV6Zm`O^ONn6lJ%<3LLYEV zH^;b-l1O3UE2FHT5vfIC$jyuLQD5+ec6NE@ca}t)7cHYiH1Y}W_dlq*5C4i(0cvnO z?bb#Md^QeAA2rH7mbzn4q5=3pmtey6C8Iq1&p2kOO#DZD3i_~}bZGD{+I2P}!SLql ztr(Td$M_0C_lpA{*bNDX5u_6Bjbh?iGUij(j?#mO{ zN%)#~+Kw71G@rizr#eK*n8c?hBrPp15u1FMV&mOs!AmKL4cE(~kb+ByvpMz4Z}jD*P+^w?_X}{na`>6BFwQ-fMwX zeR~AfHqS}1@Ie4C43=6;AKWBOoDB}Z_ERE@nfmx7o3-fy5L@8{14{tfF(zjs&P zTK*9r%qFO?OX|0YT2C(vk71hJ-}ArZ$yYWIY3O$ve`<73Ev^>AGu!B4kuHu) zG*Za-388CFEgjW^(52!5H@|PwJJ6P8#nWH?K@}VVv=$Tur1HoTEfp0Mn*OL@|MczU z14l;CnuP|p)HWbhelC{4hlyJsY|FaMPjQ(x`Hk!DsP^CO^+!Cpt3HW0xKKxu5hqX1 zrTIFi(7&F5LZNYG1dUZD{BR^0IeiVgV?waLd*Lg$*(PsKRq)jhsc@#X7^ds)J8kv# zvioh1<=mQRC5x1K{!#JmIM>wQH%VSYFnpn zkEG;Xoe=fZ4E~pdo%tMP?uh`BRJg#h%*@Pj({#nuNUBWDsQG+0ajQnL_P@ZHC{g|W z>bwX{4ZA@I=E>Rnx;_W=C=)Z|aAN->s7V7~lRKiO4wY*E`~BC$g1wl1{`gdYALjIs zUv2(-h~v(-2ZrGXQ{#p6Z7BI;m{~Ni+NY+DCQhiA2a@NnnfBN)d1Zwg3Tu^6a22!$ z?YSxk?Un}98|{rY6Z{5ew>V=o1OU1r#o)DTIrzzE+jwI7o06WhXSZ+1Ru;j6#< zsvzcamffQnyhP6rR3V64*cr^<)&H!t6rV?UUQ_e?Yhh8WoK`$+7XP!&JsjXNkuu&3 zZt#ZxDf;9(?D!$I3lig5*4QW?-U1k;OOWg&`a$ArHhz2iN~_?-0+nu~x7y(^$1Ml( zyejL85vjJ;7OSEpNC13VZNIizkU5c~V31*tIf(=3l{zTnJuO7?qJ zCcz1tjOgfSsLS&CsaoX&OHW2`}izv|?Z}%>sy+cur&QNT`ej zCR@ze^x9o3A7bv*lCW^4>CjS7yrkNpsbgI5ValazfRMav_pNwfCN+9|QCXCG#1w92 z{+@UypYgpICzq*3zyZSNaW2N3EKqwi_5pNM3yn`BP|N*%-kHcD<2YsI#Aai3K*4#z zwzCfT)Mw$1r||H`Hb$V=Nhj;`K_pnu(C}B#JMc&phb-n8tb-hITImP{GRZ)|eD!7< zuFf+$9*qD(+YHHDP1^ z(3|}HB}~HX1O(D==93<%8k_}Y7@92A`wXSs6J*i%z)WZUx9hk9tO3#tn^rDJVVAXg zjWx5Bv4Xj_j!DV;ygr<#3A>0>czPaI=l3#**V^?aKMpaa>J#Lgcby5H3111niY8sa zIo-)tbvwngxc?#dp;r<8i*u5nW zRTih%{#q?kq2(Ds4Ph<90j0MTsv!sTI8BWk>^uBI076wcYBitt?J{S!kU#UyNC0Bw z!0xG%F7dlVnmVKlEB2i-PPDG5Jez3>YW=6=Eof5a^NI@dYURqe(?GOAA-vg?|kT3)dFn#2eVCsb@kt@GdTR~z%8RCOBWG)dVFsAAVN1l05y z)amyiJ>o3zIc}Nj9#W5iUC?bvTF{knzk$U}>0&M=!l|sO_6Dg?8?lR8bg6a9b}pn7Glq1LIqCcEBa$Nxq?AS zbdHwkPHM^!>E^BW3jNoA`*{>D1r7~!9Tzgosxw((JxN+ww(L--Z9N*5{XrPSxwg|S zhzEawYJM=t6cPO!uVyelTmkR@X(NQGkNKvmk2cYIU2tURfAmYY%(o z8e%;$7;o6FJFBWLXsJ|PzI~4ktA}@sQUkkw#kk)pJ*iHNjqyKw3t; zC)rb|`B}74z~&!b71YL-#kN_W5rcYU{K!cSks1#KKvw%??`0@xm+)s|g>vx!sTn$35I zc)m~ID?{q{De<#I)nlN|CB!!EY*fx4b^2)eq$qOg3R8%&6wXblE9X2}5+xZYIWc$W zP#H4}r7G~#Dc8&5(loUZbT?(di;3l#<`Rj{lPks@8}se0tpeP3aYZ>X$_ojAt;kW( zd&zk5d&zp;BYf&wlpi6HckyqIG1ix)m9T82bZ+0_!}MfJUfE(j{W5G6K6Ijj}a1 zFtF&R5|-$FXv{h#EC+z8F^Yx#+6T3n=Qpb@sx9jpvlaM`|0jt_^MAQaAU|-P()|Ae z9Ka61hyQJ$g#mNKga2(XC4tXB{I3Ht?w{}eZD5rJZcYRL_hEYH>_u%F6%#169{3Z1 O3wqkdTGhxq(f(nW{@f^?By0xBTAiIh;45~PdtmRLfO z-aABELg+0CB!ql7KF>MN@0oee%=^yw&N<(i`Tj`;lKbBK-h1t})^%NLCGvs3=7sYd z=RqLQ1+Dw{9)Un7B|spW<+Epi|Dbp-=Yv3oVOsa@82L`F&CsS<8njg_1-fN5gL-a77FVO3R6aV84xbXO||M2?byZwjP|Lr#ae*NEW16=sG>;HBeVEn&b zzXhz>KPUe0SN!{o|8~Xy+Y$fy{QsQl-)8);Y5XS_4m1n;Pd(#*--!Q>TlMdz^0%$} z|I)%Q=>1Q7{r7GEzhU;x=l*`Q{$^jfVPPU%3CP zeG1@({`SQGWuNrFXW`vW{@sWFpET6}dSLkdf3;6J@&Egjf1Zhd9gY7T!Rt@>aiG%? zZLlRxjv-P~EWIbH=c9z-#wO!~!gT3kn(rx-zMQz-6%E}uDfMUwL1VX+ zY)bfa^0mxG^6%4EUQA-a`I|w+CY5`je)`htLGAT}1Vgg_oi35OCoBD*LKx^l)qIt1 zanR}n*w5=RKktM3j~HZYss>=S!HnWMljiq9Uw&sUT_(GN4f%VY`CLB-Vrf>>>$+Lh zoy#qO-fxo)WCJ}t!9w0qm$0?I)@8cK=SVj#FZSh(tP`ocLCd7y}=|}iMk{} zIQi|a+zC0tHl0_8*)lzd#i}yiEyS?O!lzOZ`2u9-Tk}2FuWa|8j!4Z1$Su&#lh!%N z{xIDqh2O@)uzJghK}xj&3f`W?YGbN?k!HilyAvN9)ah=10axvG z3fHYzC_zHKfs1yU%kyKgx3*)r(v4QZ%7V@b^r9v}i=E z5I76zJEqisXFg<>nfj|-H>)df3-nR`-tjGm9*-HV3>B#co!bS@XQw3+b4@5kXtv39im#u*oME&f_dS2zHj{1zC=Vs=FhF5PP) zRPlA;TQ6?1DCE^Q)cvkjN~*I_v()1I?~pD&IYy~e=V39uW%KOLz>6n7wq&;qOE5J5 zI4@kiobkwf7M!IVN+lnf91^tlKLf7Qu_6GShr(I+31?v zy_kq;Hbz5cW>yBXuf|v5FDKHwmaxiB&a%APpcijnyge;yn@)}?5Pi-)$m}k6Ltsv3 zH!!WO(J{+-XP39u#FSST^n%x3w5FRz78`|dAMJGt8T3 z{8u;=hy$Gd^bH*h6G+pxcfF6%17AyzK6MZSWW3Y8(Z z8hjd`RUNtTinj*Bq*Ev>7Yz#-1VLwE@5<1HhH>wNN3DuxLUkiriPpXPrg;)T{NqUH z^f+2n!M)QXRhLBEFagDVQ*c~-D=j4XqW|M?og3Q3ul(81cLf7^nuVR(e5Rngc8q_) zq=gi^5rl!|WGn|uDg#7j=8L3tdPchfa_FkaHA7ZdZ^3-ua!!F@OX%&D`Q%k z@=Tj*M^Wc}`RxR5#s{rehYkv;3XTvG5*iHHY)R!+eGBJT`3xoPY1!vMz5Ul~#s*U% zK``jyb~_G};ihj0*WHe1zuj?D0bI5IyR&)A(xyDea}$v_NDZLE*Aiizy$3rq#@}~_ z*{2GqK?~`F#85Fv%h#2FLMa7XQHWDm;K*9}Qjd?XLt6~HAC~$%grU}~qnSdOa)^~4 zeL-mFm3#Tr|6nO~cQxM3fB94Rpry}D^3isD@ZyvTWp9Yf@#qfCS(y4&+v8){7_=}O z8x_^|uDg}OV&FFI>F6-k2WeD-?$yzGpf1<7Y=x_F0Auy9{nQDdziDyhuE2-X)I$BN zbn5W-*RNmq4tM*oV?k&raVZhDLge-67ROcfsp#-R_a1V{zse6D29|n`9=5Sm#UR|; zDAL0&VUS6p40?-M1?~s;-s2#|?u~NW_aZi1IEVBMo1|C#+%greST_Iq=FKQE)8u2I z7EZ6H_U2r{$IbG|Y11$b*o4F!et2S<{j!01-s9KA~RP!x0)3LfvXb2ySJi7JUX6CbW|mCa7ys1?vk7J z4*lGz{EpK;OOsuN!KUiE(^TAUaJN&N6lSfUOV(v70XN;?p)eQ9v=gC;_q!3!_3D0> z3l(1xyhL6IDBkRro$(yn8?|stMyNI)kyagsKR=B1ztE>bc0S7fNv~M?-DUK#Q(3cK z^ShNg>TV9TyUqdkBA>F~j8x2@(qUQAB5fNFjJ!$1T7shpc6G;tH@ibP{AB6-{ z_5gz$-OrYt_2rA@RYkPb(wzCLgV+K%S^1AgggWHNe)ej4lc;L&`t3>UXptRoYp{gW4v+Rm9nV zR32e^kJdiJP?PbeAs1Fcb(QR$dE*17TnC-=c< z4Tbe~Bxd={!s-+cw|=gM>WT|p3U`hgQ}S9F9t4-T&NPm&75ME9XaXN`*$D+@i`%pf z`)-_#8$Wu->H3*TVh%8dGDcrcw`TV^m@k7(uIF}D(9SQxgWAdOuYg1Z)84Q*s6)}D zd-{+8HZ!`Gt%fmxvbxnKG*Caf7r1Q9dX)LsMOLL~gC!lqG|F~3$E+Mn5^m6kIoFJs zcx^PTeeK$T(((qr3;{FUxi}yhxWA=-wsc zJ-|_Qi8c*SsA#0kBdU58N_wG{8hYyqkvS!wath_DjiKZfupvs@t935#>fZY-51(MF76sf`SExtR2wOutevpS@C2L~CNVonU!iDLO?H<_Vhj=to!zJ&(l23> z5Z}xv5X39^HPlx!ZgYu?7ml&=DO$L-c;T?}+bE`8!ge6AW%@c5o8t2a3rCZAimkY{ zDc2^KpqvsUWCTkDeTjJ2-PY2TPU#=?N>WUz_1o%?#Jlbuo~BKyZLmhYidCrgbm8QF z99895Y#`&(@smMSsXZZ5GSvEeBZKPUm)Xr6iw=}IV9pd0K4YO4FjBW!SJEEN>#hL( z(r|V)=k9~6qbmWW?|{GEfJJ&2luf#eIkpm;4x=2w%i+lRTSnVfqXM>|P+bm-gArRa zqp;MfxelcHmHI3uxg@@*sjd4p|6pMsr4l%I^j3Bo_9A-AAIhEcej!GDepL29QJZ)E z2;5(T`REXkHD@I17XO9Liw6WtA@Y(+8N#65_o4 zm}V&%+xZ%$oesVO0viP;N=5Y8cW`obTPw;A8kX1IPuM6F8v~wqwiKbP%qTi z);J$GJ$EgHxHT-LTeIAPkO&*f!?*O+Bp^@Jdh@rr6~I8 z0xZoB7fc%pL~R#l-v$9 zg+RTs#@$^+dJD8;<+Tc#Q>W zd%JTqP+tH}R;s`aTOn{51TBB)-em$EEUAji$!qfFwVG5ZPoV7e`RHs;lZW=c+aR^w z&`=Xn7i>xvw=(8FzM9^XP81qc@95Ukl@mc=Gd+55tlzT<=NeNIV)2bm%v#aGj>%3C zbE8FtlwI*7Z*0o7?%kVa@lfN~CD~LLn0+oclPcd2xcN@jVK83-Em@dwuF}z6oL2B; z!P)ooUkuk7^Uy%h!>dpi;#I9keo@j6nCD+N`BR@f+9WeakFr5Dm&UqZJ%2i}Y>6 z!83L|T2a&1v$}!Ys`k)6PJ545N{yKEMb_^zKTWr-+H>4jyiVEN+&4uN{*mjxT${8U ziZ!H_S!vWP!|lwWd-K#S2>3Z?hYOZvO=(H5s1#yA4&Z>uf5E_(3i+HRZ|5e@Wlb4( zOn-6D@%&DLLgg&XVsedm?-T_ER2FY{!z5dPJQ@ytrz_`ch7I(75D=LLq~??UWB40x0Ab%Mhfm`PwS9V)$Mo+LCWYD*HyE=SiJ zH2M#nFm_*3n@G35>XP~FGOOEP+r$-nn-f=TC%rm8w5H!sv(JfxjwqB=Yjt!#MoOqs zQQ6)f0nCu@PtZ1R_uOclN%zFP#k^Wai5~d*@J|1ty#yRkrR>&6qhN}EAd!pN4+>*Z z5h2eX>A+WI))I3z6XuwUro$P5uO0H(rOW58uE|TTn!e=rPgn2IrJn&2i0? zk#m{po4W?Eh&?arz|6SDqL9JZ42I6|bnCr*`IDIUce?VOMl+Nf_M>9Sg_Sc<&c(xeE*jz3X)`pfedu*Cc!$P`hFW2`$q;&Ez8 z&DfB(V5kkR&;0!48DR5;S0B!T*CneB8(((5_H;4+a4)mFhdF~@7puRKTDvv`?n7?B zp#g!1ME_c@emwb^EaX7_&OOAQCtQ58Fj&F;9=6&EIWid9X>1t(bp-ki&}6Fnjuoz$ zf5=={YypDu?=OH9#&@iT{dqZ-$o}YL|9Sy#@Q0%RCr^J@<5*Su*UK?Mdl&xhtC7io zs@F<`N%69(iWg_&!>~tyOeVu z`4Kg1Q){NKLDFkxC2siHic8U}RmDe}+#A|7-VK7WjXMklT9S5}J>xBI_me5@ zO9NcIO2A}Alui!G8<$u58GoBj5-<+yNTcxHZ>en(rqwa@oIWH-eH8K?%{Y2MpYBC$ z;rH4Qzt<12j1J(e#sYWp^!uND8j!|7YMcPAF4W)E$KD~-ZhVwAKkj)};90B(_h2(y<5Y{o;CBYNzVaAh?)YiKhf0M>i$kSj6Vx}}jN;(l59u$r)EpKG z$lc@5hrS#wFmyx@8A}aW`}FXSrbQZlQzY^%(VPdo7ta#2pOoD?bkoh0(eTOO6@$YW z9I=c5PLp%D9xXE5EtgXA-&?Mpd&ddKk6KhboNC`S$X1dM?yGlSaGb8gq&vZF;+19a zt78?t#5Dl<;<5uav{Xq0@!CZ6%byo;OQ{h3=g&n?1OABRYXVN;<*RJYp{mF+{l_-( zio<2k))mAP=X?~ZD)DCKZvY$&X*Ig4JIcn|KXZiIx6mYUw=vT=nIhuKChOu5%$iO?B#bF$F$UG5o}KwgNh!-7p6rPJX1(@aQfOTM8^g zyG<-yl6&Q`nR{K3BMH3>nX+HtT{4=gLiGbuE7|&WAhPYs1Rr!kRxZG_k^~Aw>ZZT8 zalyPs%>~gip3D7*c!3P(_mG9YAVO6&fX}55**~Ap0$3L5tbmP%18JA$?KZrtY|!EU z;Xc4L=pU0og*id~B!Gj-+*}1n4TRf|&~pc?YV`8gD5No@KA%R+=WVtuMIZfRXr{2) zygTSnn3aO;3-&z@MXSU1&h#)9#p#(f@b2<1WKorL;iNUzhc2!rS zj?xA!)Zy^Rr`n;zxdlIp!;eA4W_S_%^U=pVP2n3FS{Vgf?@5QkLo6`R1N*)Ftuf@0 zw42BNT=*ELgnP$zSM>8#OYJ%eMi%+2PQAGqxYWza{*=)=HuAGCamL5VnbXQ|DOn-W zy+?X%kz5Wy-@tmIqaz>}T_nQ+S_m08W=v_Q0}$3AG3Vuva|ib2M@r%=dmVi7`Ps?= zB!-KCJ8SIxWN0t;wyr0uherb0xY2WnEu~d0-G&C_;B^rcoGCSH!+&K+Bdq(I<;E}5 zHrEmWZ^g|5R>O5l{1T%*Pb*B16%yz^OQ;#M%2)+wUbU5(a;{Q3AhGZ`o)0ttPd(%nk{0DM-wFCVpDH{(6E2b=;-{Wx&rp)_%uojxxB z^`=W2#shodw<1;*@=AbT`Q;x!%O9@$#ILbI&2I2hJVs6D*}kd0bZY?v&w*pU9mWlE zodR_Q5Ban=?HX533E8>=RugD(PZ#gfr_e_omDq6ewO;_5U)B*LMufQVW!lX&k04-q+Th%HZ=f7 zxgiehW*ZndO^Dq^X@-}cxesayN(S2B6WEBBEL;gd&@d?7 zLQ}udFzm-4+f;hC(`JGiT!${E19iRoJJMH_O4&dLrEjVde8eynZoxZAfnMvZ=p&@J z>Q$z2Q)^o8U7PfU(t;3rh3moGNzWEmSNN`O6YJOC(usCJ+D}cw-*p3-t2ws8=7-xf z>(nq0V`RG=^>BChzD|rNGoS8-FkP-kj@NCir9Km&;!(`RR@?b^EJx7;=>UvGv6}#9 z5E(spVK%=N(-AXC{XXnLZW{7%J4EhjkBqr@;vrU~oIrG~pmH*UBxN_NEv);a<)+qZ z%>Wln&gc@PJ%1K+7MAuc11o53f=P@A7LrfO-9p^QF64sD^(^qnBe3MtZ?6ZPq8LAh z^Y~w%@n0>&0Yn_YDsZ`@7%#ljRnk}|2a%`HqXA~+jlK-l89d7V`wYjqbf>wF&8v>R z?4Ra3tg}1%jq8!|Lp2P;nbnH;Wx*p!UQ7bOP<5x#*ol2*b^3)G^PxN^pk|SXL)8NO zGl2bc+F-U9nVG$bTpWMXj_Vjg80H$A>vbJ{Z4v)kZ@z98{ zOSC%tu8gq4Yqe}QVmx0I6@i&jwbO>4iSS7P0A+S85vOn^ygOlr(@GQbHDFe(^;al+ z{Nj}Lt1b09WQJSxPqo%sd|0=Ppo+0gPg=BVK;bX2B;lKxCI)VIz)ziH2<}iEmCJlY zMr_P9rQU^;aP4l*+ZtKFDn@=@*OwF>ec<5Sarwl>?N^&EM0kd4;|(-#D*KDr1i!g3 z)*Tn8iWcvzG^gGK*c7n(O%D1*nk%-L7sKVI`2%F>=C7L{_;|!lYaaTohw#ERv&p%a z1x#nC-?`KTl<yBm<>~x{8)$1nCn7{vxy3waHZM*=Xj9HcDxWYR+luRD zWF6TQzRJhqUZR}-VC}bkciO;W!Z~*{LDzW62y1A{ic@j5MhD8n2rcsiF3%u>Ul|cL zcp8@@HjAG0@U+e^5x0i|iNuQP@YmTl9xbDTLH4Q{*v4VAnmVDogrdqWZ zL3v}ZQsIt!18^+F`NujlXQZdZ6v|IoW*!~$%-Dy?*3vU1`ViCzJlc=TeN-RdyLZnw zx`W&5Malz)$GvPF!*#{O^AVD7A20MjY9?^|OpE6v;)imMs@vXrXdK@z`E{YJ6hUhx95!{$^`bZH?*otWnJrP<3aB@~x<;l>o}NoI85DS0M@;ucMsl-o}0at=O~&@UN6PdO&gM z>F4Q{IB#Z&5CAtE=i@>ZYuG<|>6@xl1uwl-ZeLSGrzZfcdo5P_xSC&ry`3_Sr2B#j!o zS!uoHZ_Frd*JoZ-nj6o+4`3W%Y+UbLlPNa`C z`4c?NNXfP?V0R&YmLg<-{RH5#te#u?=X(`jwb_XYA8e#m{vf!}>-O#5MLc<>JKt=} zb=(A75cj;ih6eDuVV)bvI~+)=i@Zvk>1n;ptCpjoL)Cm%3NG6@jA>`{Dg*k8&lhB? z1OgL$tY%)!_0|3H=EsS=8&#S{Jo-+X#S|5y7Q>();#k)~4T&I+cYl;~y zX;)!h)SO$#zzwW`%mb6`&ZfQl$svXLjEYu|&VP8Po4);kLkVAMG!S4bwE6`1^9}It{9fgE@SSo>@sEN4#E;rP=#;>ITms7Yk2=tQVCFx- z`9DC<{{u7suh8?q0q1|A=fHweC9kzf=`x8|Mvq-O1&W5~o8YdryxC{6UTUv2qW6a9 z$WsL)0xk(A+zL0n)}{*_$r8L$fWf(NN^m!N=~&iI-MFBF({$*#VK3GDtFZ7+d)9k} zQdRXoIF*usyJh==l)~om%&Ap#HpS4jPUuk*LY53n36s61( ze^<}P@afzc@`#5PzlBHt;Xg2@mAGoDdLgSbChG0yhvGZ(Zth;XRnvOCS16ovg|_Fl zjlMQ_c=?>#S-?CF_Qt&`l+F+NVYYXbPD;u`rrb1Ee116idBOujZm2{Yn{A(?rLbWI zyXNA+dt(Mw1rY@CjmRbOFt(*4B~t!jV6x)cdj-#xMVfQK?(%#{EzE|fcSq6kPUN02 zv}osx@9CR*zLN6i1f(~L>Y5i%yN_`(3HQ91iMZhj^Sc{#v{SiCdH|eMhvwd-!o`T| ziYxUpk!kbQ>vClQ{pSh`;zGjrpB{f6ilAsa{j4@d8L8$ueA80ZhSDo{&ifrt5`NQb z!l6!Td2wh;$@;vws^E{}pZk$2na7_!{rzzw{6m~lEufSydrjXcLeHt*5;{H|&yt(g zvly1D3nR{<6}G-iyr~K5st_|YVb)n%S~}=^R|`{t`jdbRI;R%M;=K<}%(~Rg?5s`! z>F{C5nTrz98Xca?vrqy!lP}J}2h0SB@YFQnp}WYvL_STpg=+(U3-ySM17s3iAknm-efEyp-41&`k=!#&96ZPYX(C%DD31*wNr37<3WC&JR z4xvnm*b6Vr(IFys@Axl=#1GPJQiNwnBnyYtXi->2J7oi`S#U=%bMh*3YkV%4ge&yJ z{y{r~Xw`$oB+m|TIAHmqx&idC&UK&O)U#JGpW09|L65wN3?>0kstVBU{&DNS zVD*>3eOoZlV^)=WmaS$J#;yt1R5_H>?1F9vC5$TVt_{0mwu=Hr7P4OvDFq)V=6|U6 zPBlsx&pQ_*B;#JxLiRr13E6p;e>Sv`D&Uhaq=9ZYT!($+;$>Vn|KKp>- z^6P{mP6@Sly<^hJ*37e0XkU8*I6q!hM`zuFcz%Lxvva&&!BPTyvf2nO=ySHGJNFd2UBPrAz@v;3bwe;(T| z2k2uS7h9JN?&+>&+Dz>$@F2%G3R0~)>wuz!#x^1Z&_N2Yr4*9&+gG~!qS;kvVE{lC zryh`2D+-T+q^fBkH+Y}|g5-#=1a6LPzivehVNgk9sB0bDPA3sJAvWZi(Z?lwk|?73 z-f=m{!K$g1AO8g&rTR94D)pdmm&{ZF&Q`TD5a-1W8#?tu6}G<73>~Lmo6#oNm`Ab=jxM*wHjN6dxOBPHsV;_ufqhvDaMcNk?XHyy1x35zuJ-Pyg& zCd{o+by*@f5Ocsn2U{w6>#(Jz>R1c$P9bO^8 zZ(R*fv1{3Lq~m?8PzD?}ar8Cs7(f^OsT8IQwHIl%om}DjOMJVA)F^c!Qcb+o26bP1 zS_Y8qnkC~K1jTXESNSkas0i&;QOlj$WoryH1M6a|Pc&toIo+&kbAnUlrg z-N4z+a8so0HE2Gsuxi<7IT`0!&|mx;A6IvpS7ZN@Qz|)VX$C9d)qz^W6nubz`L? zfS}H9MGNX@nz?nLiu&=&LE;WF7^G1SEfZ6alN)D}vs1Wk=JU&S0DI(j0bxHYG&_n$j1}n6!+Is-fu-K>1yf;yyIbMBg(LAw z<(}w1o&ygYVn(#dKRd_fH;~TI#4D5oHd1M#wZ>+1q*bY*>(YAtc1(JA*QbJ&@K@F! z@+vDtFbLFi`o5&Tv8ZeO!%xf5T(4n>zPC86V)(fT>@n@$zBC0${WVemL8FlOmv}=R$#!O|2_WO81h3IA z86m}3J_&C$0hL&*&F`+-T3`NbcCBKoUyWgjT;705A9Qga7jTV!DTJB5oa7Q6**Vhp zAc`&OrwXHCIJdW1EFioW^Oaklf}bs&$5wEwxCf)mrdgAsO58Y^Dx=l>zyb=ad^RI} zA5Q|{YPP6U5qzQid{_ZSTG!PKdm6UH^L=cVKBXr^h4f z{9LnZqL^l*;7n^*?av5;t~h(G*>w5Y*QC1w`jv4xV3x#a!@B6mW_JsBN6&4Nb;f+U zVddMGhlh-J)s;{=BMc|h$6K8u8dMos+|z`uzxY~?F!-o*F&Dy+K>mmWilaKBA|em& zv_7kg$Vf9Vbmm0Hvn57h#e#UZIVi`@e^{w`xWtEN+YJAOSE`F$15lbr;^bs<(pyl0 zZ4Z~dyS0j_bE+>AA-*Wxm{XVY7{bhyL{s`Jc*J)vNgP}zc6KWH)tOOh%|>KI4KJpi z`OK7JthmQk6lv_WnsJdc@ga0p9|~rQo@!mzV`K%3sy?8cOdAoDYQOP&1Y&W@@{|e6 zbeg5`&X|gnscyH(y;HHAvgNaqiSsuLt;1%mQOgm0ai1l91nBKspH*5nMHJLyj8P9O zUq4k#y#sp6cmdX|hIS(bLQXXCUp7T-NO*OzP+HqN?r_aVa=Sy_2cGmXhHG6Fa1 zA6*@uKd^p|ekU-^a)zEOjX`sS2b`WXE`umcOHgW0L>7bCr5%mpavNIjE4ex$3;>XF zf&sSk$!YPa*>e?9o{3BI)`>KBJm|IXWB@4Mya!HVII&g}%<*zCeo_y0)93fIDoq=> z^Zd_ad?T7CL9wg2!4%zB(wKF3m@U=9?aWDsMoiy1)a(^_1+Wa;Jd_3ql?f5!jn zgH#T{RnkEH_XkeVJ?SU~iuik|cAguVXSf1h#YI+Zs^%H<323~X_iNht5)H5qQg@`j zpJbH)3YxXMj4ajFIeZU`clC`qwJ{cjRDA$_)XF^`{kW`s?3J6g zxjDyH2-B-4rGd)~kEN`wt=$lqq(nAQn&3Z%{_^9z2)XST(vi6m`1n}5E$q-C8PZQv zRF}5`?{xSc?$oCYK4Ed80j<;>0venzxT;&CtNJj*keQXctvmw&(vBQ~JGdfprC{Ig z=_@4_<5N@=Z!dj5Z)So5J=-#XL3jUA56vR)QS@o3QAp@fVdN@yD3|XADf8uHA=RDw zK(7@Ik(WOGb45%)v>>Z3%^>dNZ37DsclEd z-~aKtSPtiLSX6{{FU;p@&(0JRxfo0+Z!B{&-ntwff5w#3Vx7VLDAkNt;~VJP+gqye z=W2F99^lf{>eFZf@8#1hDCcy|6snyR^_p@*4zKpZ93B{d*;Cs8GVGPAY}m?TQCOZN ztGlEYUJzGPE^qtG0;E}^a=Pl5*q9zrBM>vJ%%7iBaJ|2p(sS~r*rHc&q3d& z(@rbcrT~f}@(IZ76iOxd6CG@;$1P|`j19zMU0LDQQ)^b5oO81bXu=2@0DZam*u9n6 zLecuMs%?sy^||Q96W{LI0cDR)v8|hvDz-l!>4+?)(u3#{$Ls3U4R4NW7&v}X0-4=M zskD^&TUW{iTCaA2UgNDO#r29UqS`8WVEw{ASwqo+y~^mY=gO-XD410y!^e^@}?|gZ;sMK9@GMz0QvOX z3j152+niBQ_qC)cC$XEOaS$^rB{5MN(HEePcp3qdg?OlYfNNOmPfq0Xc<2|< z$EBKqf-@|$2}R1`;A~ z4h_g_3>pcwT@$v+VJG*Fhu03^6aU#B_OC9n|8$SqkjinJh{5rr7k~bI|F|++Ie?&h ztZlaV<2xZf>j0^QAg$mm&?J+`K!*+M0fh8kM-*ma_AJcE#3Tg}o(zu*xHo58b_33Q z`*DL13ncShaCeQEuCRFO`qsKavqCx@NIUk;Pi4toB5ATzmE6)8f&cJQGMnuBZx9y$pa zLgew16av-%$+L&!>~3GapK+M3cX!y|nv>VH-s9J<^1${M*|f(2@LS)Hmgn>&&@OOD z*`~{oa(I-k;N^&`Y>VU0Q1Dz%NHMpAg$Y<4_ZuBrl_HNw1vwr`dNNu}0=oABN?aQ# zQ~xE-#wW4O1Eh5Se8$$q=;H^JBz&qAD?18)X#+WE*@TL1288KK0;OFUyo$fArTD$O zk4w_S)iK0W4mB5X1;dyX)IxhN^bU_Jknk?;gjem~J{Ab&hv!39c_l#jNT}nQg$*w! z`Nur3mgM{iE_Kc>P+N(vv7E}bt>i@mSw2PZ8`g@u~Dh-ViZXs z!@(g7hUR{$e*WB*2Jz5<(yPb^;oUw+^2}jK+l?N&pS0J7s`Nlzu?24TBWAxIda-sF}28G;P* z3rBvjqzaY`aPSGZFBi(kUuXjt_)bSM36jF;ZjbuR&pEUt9o4Dx!EYUfiW$~@;*`bV zTUAsD__F4!L90&^L0t#X|T*`?zHJ;7?d|Ji^nt#yuIAD5G2;g|p z=YSaaJT@oK{E0##bA|Evj)4SFOW&L}{X@yTrvAxokIbN2AU(jgM;(YCouIk7(mB}C zvgwo*abu5NwPoA>0n`h;@Tb9!$*Jt-dBr8`%0?hObQ1$uSi55w-T;ZqGV*&R&?YsZ zMNJi=l?f_Vd-Cc!Arh#?Ujux;yS53})yRfxbmVXmjjXG;G4@6R0vFoJ%)BS5uTKCb zvm0?kf8gkQK#}2Cn}{_h`Ovy38HlIzdvoIr6+jt(G>W!7O}GjOOWnHxEMu8b?GenO z6uvWNp$3&3;!+0nSr$*7cXvPV_<;*JbDR&-%mb*J928P}40{r5yi1t+&f|^mHug_S ztG<2?+`2lA!R}z(&z-avI&sT)Qa&~+dQ9bh0TsHVuFX0<@-;loKW-fEZf|D1PR=`F zz0!J;Qv&e0J%#*rghug7-)W$VD&-jZm{5PKhoZz>Vb4<>cF4@8BckP}Hh9Iq<(BAd zGCCYaQY#+1Z*NkwxWy|>>C(q$4RHHi76Nt}+FuCx7x&nYwLqI?u6()tz%cRVRd|iY7wdC4z&lH| z9CL#$LdV1%Zlh^aA7IOphL9&FZ}%lm$=(oxXC)6($>tEdTKkO|yywU| zgxjCAhBQ>brhJf5XkqVts({JUFu+H!ETfUsx2zK4nV0#PT(-e4Ruf=Key>!*8gEF} zEPPnsf8HK;-D0Pv_0$^B!6SCeg5dz>Q=8S&^P$3Gg4!U!lcm!uEPwO_n5cZgoInX= zuq-;TD%$vDHQ`yoCKdkcnfoT%zP)paVXVasy=&-?!Bb;;o4227ONwbZ%-`5$m7F;W z4zTC7F!pPA54@wE_c|bet*jN*7?-?3vdl?4;qb#Yi~ctNT0ngEVN^R>|1i!EC|aczuIUiq(~j) z@A=0O<@;KQhX^8Z(#QFu68nUj-yxr%t<>COW;v0E9s3%$T_&r~HAB{?>U^+39O0|> z`t|dx*Q!ZLd3h}>&}H>jYdlHNpcb&N$tgFa-VHg>?Ud#5%5U#_58VcHtqJL*Q1mW$ z)zc93kx2hLRjX=M;e#DH?EA}v+hh5|rybsQoPz=Kf!yiQOJOn1LYMeEna(#t5VU$} zJPEDQtWD5khVkPbV^`dOgE~zrgu>uoEOF4WBwxYF8s@v{>b-$Pq`)?uZ{Iw8NTsBy6BR2uI)&% z@r7oom1a38$@4hLp^5JY#CON`cwV0|l-?Q8l|=&B!E=W)HJf(JeAi^CU3=~GByMlw zkezabU$x5%f*mNa$Ic`QL}VsB4AMm-pceTF+p(Y|SkvOqho?`U{#5EPRqNtvFb`o0 zOBr_3j2{~wmfPF(S{)q`%<@{r+}U{K1qm4?H!3?WDhEnhGE_uW!_TZnv52)sJ*5H&xfoJy**8r*$%hw%ih=o zQZ50m!u;Q1bgZwEP5_!?HnCURydwrGDsb{~?JE@Bf6ZP&kS-y|_G6{g|<35MooNgGBahd$H=C)Do-FhYOUtnoR7yB|*WrAE= z1FI~bb5L4>D5S>h>#Pd;NNi6A z_J<(sN#4$r=IdJUCo|DGx|7)6jJL)T-A-+FbRS&pm)4@Y z&vZ|}V|fbs{=S8ET#V9{S9$zNYbCbV&#`+=_U!qals~}{_-57MUssBYi$k%7;Sg@( z-jIP{CK5{a4!~yl)B}SqnoBnO@<7;`z#I=R?q#}BJJ-sHOv*C5R+3G!w+G!O3=@sI2-A<-^s{~kwABu3XEF8YOqgUk{Em9q4%4zGxu3HydktWp_=!6*FifyugY4p z#CE%0+O1FD-RJv1sfmiGXZ!`aT|YfpW2${s<3OYk5fhe-Xj=Z!-iv-p_*IGe{yx6> z!=VR#7GrmtqisCLqK1CQebfug1D(qfJI?nzo&fcGz@z1A-qlD}gIV<*9_(^{u-Zf; z(dRBhHp<>_TQ+$&EDUG%@e+Z`xB7d}Vl96Q(10$g_^8%OE)A~!Z0`;3w(062a22!O zqAlqTsujSa=2aFTe|ahoo*X=t$RzQMsQ$|yZ20hD;-g*O$edgLoA)m`saA_p(+na^ z&edl7^rTCBFLp2z)6y|TC$i(lcwA?jVHtFQo7-<&E_~0zJmsCETDq5o?Xe23u=>VT zA#U+ir0090hk?bNRI4{riGPga`n}v%9{}vNo`Y4|w8Qsui^8hzX|g#z^0AUeMx*(b ze(hh{12okJX(yJXVBKssV_{}yW_OPhppM7c-7Q*?QR2Hj2qlZMy%2P3SOx}0@zyDQ zucfMh5u?g*lATFI72zt|?jM~J&m^$)r!I7yW51v~Jnu0uBb$0xV`=CYAt6%idy3Ds z7`U&{r_t=cxa4kq(hcnVaO1-J0DhDdqlF%+z6kKGu(-Nw(sDaRHIX!Yno2eVlyGG7 zeX@#{+wH}MztZ;n|BRs54E(@EuApt;4>vQOcY(|j+Iu6>qqQzm`NXci7w3OQ^H+2N zkGTevPhKdH0Dg{4LX&tWDI`3ZfI@X*h}PCi3wijH7&9;3VO#BQ^+)2#g{2E+b+q~} z2`py~okE3djTCuI+&<8a&iMci@ zOON4XlTQU6kb55X#aoqpIb(VfbX&p-#`h+))jp^Fo=)J^iXZnoL)ed^yQA0!Hotp) z7y9D39x3&@`nGMDZj<-=w0h{kob3Gw!5Gm7Jur9>==A$Q)Scss{PbnC@YZ_;9%1Uz zw>LDkw!bcANIRuCy)Cp77c|JO2EO--3D_fXOF+u{kg%;fMNE$k6xcl}FnX$@(Zu$& zhyMPTL7?!M*AmQUq&WLX+Xq@O3Q#A>J3$VhtYh*Ci zZ4_F}7)>g&L8JI=Y7sO@Av!J1{_>H zUo_&}W@Tie9oN?|Z{8w_84Xu13O8z$d;J||#a_5+3hptRN9#PEnu7bPR%ct0p=Yj9 zGQ$=sv^Ldq#w9R#8vl$s%qOovWlR_X0H;m4L!1tVCqBg(dt*ex91k8>9l*{C+MkOv zcv(^(EkO;_suctXD=t%($kM48h_`{r#YQR)aOj+wl#d{ylq-9_h4O&Hr`hWw zNl83YvjNDHTdWeirc2GRHJZD6(UyI#En?T_*=hvR5GD}%@UHw-qJctf@7 zJb2v{Hko0<|5Nl1PD;{v+j|5axA%9NZ*oq!R(E$dbFm;NC00pkg8%^K4w{)c!`LA` z^EoPFA%AZ5nH8d zyj$wp4kSEnXV197Tx2C{v6`YM&Xx;(mH6{wPHfoXcq9DdJueTF9`eww74MIKsC##X z%&lI{MHIN^mG>oA2Qn&QY=xp4{rEgv^UiCl5$~l{KK!bnfb^cTZ(R-m#90@Z^y>>} ztt+E+;3O0pojM74%%B_w*80Z!GyA&ZYB}XRGw(!ek;q{ykl>U0H5dx&#&$ht}1b26fR^9q0`Ltba*06 z$=VY#*?NTq8VBGV-RyY8;;1ThjE$> zzj|A5x~Bhc9b5ZD81+M`^KUFZxx9CCjWLjQxapXpq~%kCrkX?r6cTpCAmd=#gub%(O{!ip1>_@RCUIx@wu=G5kF z(U^eTAF+;;2XP=C+zL+6!H!vtAS3inHRM@Rxjt^%@yE^lamS_O$OxR>-tHlHu3-?T zrlxnNW~ZNiXiUYucylO`ETdMVK@{i$Vn8hD29Cr8B1Wd6FJGuZs-iD2IcUisDCOTo zKLC=8NxM?i+5Znq;ZFY%{jXu^r}7sZ<3G`ZZzRdckkW_5FjeUkXh$rn@g(uaUsI?h A*Z=?k diff --git a/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_user_suggestions_in_light_mode.png b/stream-chat-android-compose/src/test/snapshots/images/io.getstream.chat.android.compose.ui.messages_MessageComposerTest_floating_style_with_user_suggestions_in_light_mode.png index 3c5f119455cb30f2caf88a1c3d16536c83809e9b..9530e8126b6e95c532dd96e0e502bae2b39b51f3 100644 GIT binary patch literal 33041 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
oOvj}*7kkww{F>Om|jxnF804@z31P@y}V*DJ9r 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 n+9Z|)ZxYrXL@7G>q7c}sAKqd4>dtN+- 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 kVy (Ljava/lang/String;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageAction;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lio/getstream/chat/android/models/LinkPreview;ILio/getstream/chat/android/ui/common/state/messages/MessageMode;ZLjava/util/Set;ZLio/getstream/chat/android/models/User;Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;ZZ)V public fun (Ljava/lang/String;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageAction;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lio/getstream/chat/android/models/LinkPreview;ILio/getstream/chat/android/ui/common/state/messages/MessageMode;ZLjava/util/Set;ZLio/getstream/chat/android/models/User;Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;ZZLjava/util/Set;)V public fun (Ljava/lang/String;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageAction;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lio/getstream/chat/android/models/LinkPreview;ILio/getstream/chat/android/ui/common/state/messages/MessageMode;ZLjava/util/Set;ZLio/getstream/chat/android/models/User;Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;ZZLjava/util/Set;Lio/getstream/chat/android/models/Command;)V - public synthetic fun (Ljava/lang/String;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageAction;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lio/getstream/chat/android/models/LinkPreview;ILio/getstream/chat/android/ui/common/state/messages/MessageMode;ZLjava/util/Set;ZLio/getstream/chat/android/models/User;Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;ZZLjava/util/Set;Lio/getstream/chat/android/models/Command;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ljava/lang/String;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageAction;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lio/getstream/chat/android/models/LinkPreview;ILio/getstream/chat/android/ui/common/state/messages/MessageMode;ZLjava/util/Set;ZLio/getstream/chat/android/models/User;Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;ZZLjava/util/Set;Lio/getstream/chat/android/models/Command;Ljava/util/List;)V + public synthetic fun (Ljava/lang/String;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageAction;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lio/getstream/chat/android/models/LinkPreview;ILio/getstream/chat/android/ui/common/state/messages/MessageMode;ZLjava/util/Set;ZLio/getstream/chat/android/models/User;Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;ZZLjava/util/Set;Lio/getstream/chat/android/models/Command;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/lang/String; public final fun component10 ()Z public final fun component11 ()Ljava/util/Set; @@ -2370,6 +2371,7 @@ public final class io/getstream/chat/android/ui/common/state/messages/composer/M public final fun component16 ()Z public final fun component17 ()Ljava/util/Set; public final fun component18 ()Lio/getstream/chat/android/models/Command; + public final fun component19 ()Ljava/util/List; public final fun component2 ()Ljava/util/List; public final fun component3 ()Lio/getstream/chat/android/ui/common/state/messages/MessageAction; public final fun component4 ()Ljava/util/List; @@ -2378,8 +2380,8 @@ public final class io/getstream/chat/android/ui/common/state/messages/composer/M public final fun component7 ()Lio/getstream/chat/android/models/LinkPreview; public final fun component8 ()I public final fun component9 ()Lio/getstream/chat/android/ui/common/state/messages/MessageMode; - public final fun copy (Ljava/lang/String;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageAction;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lio/getstream/chat/android/models/LinkPreview;ILio/getstream/chat/android/ui/common/state/messages/MessageMode;ZLjava/util/Set;ZLio/getstream/chat/android/models/User;Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;ZZLjava/util/Set;Lio/getstream/chat/android/models/Command;)Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState; - public static synthetic fun copy$default (Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Ljava/lang/String;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageAction;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lio/getstream/chat/android/models/LinkPreview;ILio/getstream/chat/android/ui/common/state/messages/MessageMode;ZLjava/util/Set;ZLio/getstream/chat/android/models/User;Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;ZZLjava/util/Set;Lio/getstream/chat/android/models/Command;ILjava/lang/Object;)Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState; + public final fun copy (Ljava/lang/String;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageAction;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lio/getstream/chat/android/models/LinkPreview;ILio/getstream/chat/android/ui/common/state/messages/MessageMode;ZLjava/util/Set;ZLio/getstream/chat/android/models/User;Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;ZZLjava/util/Set;Lio/getstream/chat/android/models/Command;Ljava/util/List;)Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState; + public static synthetic fun copy$default (Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState;Ljava/lang/String;Ljava/util/List;Lio/getstream/chat/android/ui/common/state/messages/MessageAction;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lio/getstream/chat/android/models/LinkPreview;ILio/getstream/chat/android/ui/common/state/messages/MessageMode;ZLjava/util/Set;ZLio/getstream/chat/android/models/User;Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState;ZZLjava/util/Set;Lio/getstream/chat/android/models/Command;Ljava/util/List;ILjava/lang/Object;)Lio/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState; public fun equals (Ljava/lang/Object;)Z public final fun getAction ()Lio/getstream/chat/android/ui/common/state/messages/MessageAction; public final fun getActiveCommand ()Lio/getstream/chat/android/models/Command; @@ -2398,6 +2400,7 @@ public final class io/getstream/chat/android/ui/common/state/messages/composer/M public final fun getRecording ()Lio/getstream/chat/android/ui/common/state/messages/composer/RecordingState; public final fun getSelectedMentions ()Ljava/util/Set; public final fun getSendEnabled ()Z + public final fun getSuggestedMentions ()Ljava/util/List; public final fun getValidationErrors ()Ljava/util/List; public fun hashCode ()I public fun toString ()Ljava/lang/String; diff --git a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/MessageComposerController.kt b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/MessageComposerController.kt index 86954c367b4..cceb49d248c 100644 --- a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/MessageComposerController.kt +++ b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/MessageComposerController.kt @@ -34,8 +34,11 @@ import io.getstream.chat.android.models.DraftMessage import io.getstream.chat.android.models.LinkPreview import io.getstream.chat.android.models.Message import io.getstream.chat.android.models.User +import io.getstream.chat.android.models.UserGroup import io.getstream.chat.android.ui.common.feature.messages.composer.mention.Mention +import io.getstream.chat.android.ui.common.feature.messages.composer.mention.MentionLookupHandler import io.getstream.chat.android.ui.common.feature.messages.composer.mention.UserLookupHandler +import io.getstream.chat.android.ui.common.feature.messages.composer.mention.mentionRegex import io.getstream.chat.android.ui.common.feature.messages.composer.typing.TypingSuggester import io.getstream.chat.android.ui.common.feature.messages.composer.typing.TypingSuggestionOptions import io.getstream.chat.android.ui.common.helper.internal.AttachmentStorageHelper.Companion.EXTRA_SOURCE_URI @@ -90,7 +93,6 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.io.File import java.util.Date import java.util.concurrent.TimeUnit @@ -274,10 +276,11 @@ public class MessageComposerController( /** UI state of the current composer input. */ public val messageInput: StateFlow = _messageInput.asStateFlow() - /** - * Represents the list of users in the channel. - */ - private var users: List = emptyList() + private val mentionLookupHandler = MentionLookupHandler( + chatClient = chatClient, + channelState = channelState, + userLookupHandler = userLookupHandler, + ) /** * Represents the list of available commands in the channel. @@ -294,6 +297,11 @@ public class MessageComposerController( */ private var linkPreviewJob: Job? = null + /** + * Represents the coroutine [Job] resolving mention suggestions for the current input. + */ + private var mentionSuggestionJob: Job? = null + /** * The URL whose link preview the user explicitly dismissed via [cancelLinkPreview]. * `null` when no preview has been dismissed. Reset when the detected URL changes @@ -371,12 +379,6 @@ public class MessageComposerController( ) }.launchIn(scope) - channelState - .filterNotNull() - .flatMapLatest { it.members }.onEach { members -> - users = members.map { it.user } - }.launchIn(scope) - channelState .filterNotNull() .flatMapLatest { combine(it.channelData, it.lastSentMessageDate, ::Pair) } @@ -406,7 +408,7 @@ public class MessageComposerController( handleCommandSuggestions() handleValidationErrors() }.debounce(TEXT_INPUT_DEBOUNCE_TIME).onEach { - scope.launch { handleMentionSuggestions() } + handleMentionSuggestions() linkPreviewJob?.cancel() linkPreviewJob = scope.launch { handleLinkPreview() } }.launchIn(scope) @@ -596,6 +598,7 @@ public class MessageComposerController( old is MessageMode.Normal && new is MessageMode.Normal -> true old is MessageMode.MessageThread && new is MessageMode.MessageThread -> old.parentMessage.id == new.parentMessage.id + else -> false } @@ -692,9 +695,11 @@ public class MessageComposerController( _selectedAttachments.value.containsKey(key) -> { _selectedAttachments.update { LinkedHashMap(it).also { map -> map.remove(key) } } } + _editModeAttachments.value.any(attachment::equals) -> { _editModeAttachments.update { it.filterNot(attachment::equals) } } + _recordingAttachment.value == attachment -> { _recordingAttachment.value = null } @@ -892,7 +897,11 @@ public class MessageComposerController( activeMessage.copy( text = trimmedMessage, attachments = attachments.toMutableList(), - mentionedUsersIds = mentions, + mentionedUsersIds = mentions.userIds, + mentionedChannel = mentions.channel, + mentionedHere = mentions.here, + mentionedRoles = mentions.roles, + mentionedGroups = mentions.groups, ) } else { Message( @@ -902,32 +911,55 @@ public class MessageComposerController( replyMessageId = replyMessage?.id, replyTo = replyMessage, attachments = attachments.toMutableList(), - mentionedUsersIds = mentions, + mentionedUsersIds = mentions.userIds, + mentionedChannel = mentions.channel, + mentionedHere = mentions.here, + mentionedRoles = mentions.roles, + mentionedGroups = mentions.groups, ) } } /** - * Filters the current input and the mentions the user selected from the suggestion list. Removes any mentions which - * are selected but no longer present in the input. - * - * @param selectedMentions The set of selected users from the suggestion list. - * @param message The current message input. - * - * @return [MutableList] of user IDs of mentioned users. - */ - private fun filterMentions(selectedMentions: Set, message: String): MutableList { - // Ignore custom, non-user mentions (for now) - val userMentions = selectedMentions.filterIsInstance() - val text = message.lowercase() - val remainingMentions = userMentions.filter { - text.contains("@${it.display.lowercase()}") - }.map { it.user.id } + * Drops any selected mention whose `@` is no longer present in [message] and returns + * the metadata to attach to the outgoing message. + */ + private fun filterMentions(selectedMentions: Set, message: String): FilteredMentions { + val userIds = mutableListOf() + val roles = mutableSetOf() + val groups = mutableMapOf() + var channel = false + var here = false + for (mention in selectedMentions) { + if (mention.tokens.none { mentionRegex(it).containsMatchIn(message) }) continue + when (mention) { + is Mention.User -> userIds += mention.user.id + Mention.Channel -> channel = true + Mention.Here -> here = true + is Mention.Role -> roles += mention.role + is Mention.Group -> groups[mention.group.id] = mention.group + else -> Unit // ignore custom mentions + } + } this.selectedMentions.clear() _state.update { it.copy(selectedMentions = emptySet()) } - return remainingMentions.toMutableList() + return FilteredMentions( + userIds = userIds, + channel = channel, + here = here, + roles = roles.toList(), + groups = groups.values.toList(), + ) } + private data class FilteredMentions( + val userIds: List, + val channel: Boolean, + val here: Boolean, + val roles: List, + val groups: List, + ) + /** * Updates the UI state when leaving the thread, to switch back to the [MessageMode.Normal], by * calling [setMessageMode]. @@ -984,8 +1016,8 @@ public class MessageComposerController( /** * Autocompletes the current text input with the mention from the selected mention. * - * IMPORTANT: The SDK supports only user mentions (see [Mention.User]). Custom mentions are purely visual, and will - * not be submitted to the server. + * Built-in [Mention] subclasses are submitted to the server on send via the corresponding + * fields on [io.getstream.chat.android.models.Message]. * * @param mention The mention that is used for the autocomplete. */ @@ -1215,26 +1247,29 @@ public class MessageComposerController( } /** - * Shows the mention suggestion list popup if necessary. + * Shows the mention suggestion list popup if necessary. Populates both + * [MessageComposerState.mentionSuggestions] (users only, legacy) and + * [MessageComposerState.suggestedMentions] (all mention types). */ private fun handleMentionSuggestions() { val currentInput = _messageInput.value + mentionSuggestionJob?.cancel() if (currentInput.source == MessageInput.Source.MentionSelected) { logger.v { "[handleMentionSuggestions] rejected (messageInput came from mention selection)" } - _state.update { it.copy(mentionSuggestions = emptyList()) } + _state.update { it.copy(mentionSuggestions = emptyList(), suggestedMentions = emptyList()) } return } - val inputText = currentInput.text - scope.launch(DispatcherProvider.IO) { - val suggestion = mentionSuggester.typingSuggestion(inputText) + mentionSuggestionJob = scope.launch(DispatcherProvider.IO) { + val suggestion = mentionSuggester.typingSuggestion(currentInput.text) logger.v { "[handleMentionSuggestions] suggestion: $suggestion" } - val result = if (suggestion != null) { - userLookupHandler.handleUserLookup(suggestion.text) - } else { - emptyList() - } - withContext(DispatcherProvider.Main) { - _state.update { it.copy(mentionSuggestions = result) } + + val mentions = suggestion?.let { mentionLookupHandler.handleMentionLookup(it.text) }.orEmpty() + val users = mentions.mapNotNull { (it as? Mention.User)?.user } + _state.update { + it.copy( + mentionSuggestions = users, + suggestedMentions = mentions, + ) } } } diff --git a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/LocalUserLookupHandler.kt b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/LocalUserLookupHandler.kt index aa981af35ee..be54ca0e90a 100644 --- a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/LocalUserLookupHandler.kt +++ b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/LocalUserLookupHandler.kt @@ -19,10 +19,12 @@ package io.getstream.chat.android.ui.common.feature.messages.composer.mention import io.getstream.chat.android.client.ChatClient import io.getstream.chat.android.client.api.state.state import io.getstream.chat.android.client.extensions.cidToTypeAndId +import io.getstream.chat.android.core.internal.coroutines.DispatcherProvider import io.getstream.chat.android.models.User import io.getstream.chat.android.ui.common.feature.messages.composer.query.filter.DefaultUserQueryFilter import io.getstream.chat.android.ui.common.feature.messages.composer.query.filter.QueryFilter import io.getstream.log.taggedLogger +import kotlinx.coroutines.withContext /** * Local user lookup handler. It uses the local state to search for users. @@ -39,14 +41,14 @@ internal class LocalUserLookupHandler( private val logger by taggedLogger("Chat:UserLookupLocal") - override suspend fun handleUserLookup(query: String): List { + override suspend fun handleUserLookup(query: String): List = withContext(DispatcherProvider.IO) { try { if (DEBUG) logger.d { "[handleUserLookup] query: \"$query\"" } val (channelType, channelId) = channelCid.cidToTypeAndId() val channelState = chatClient.state.channel(channelType, channelId) val localUsers = channelState.members.value.map { it.user } val membersCount = channelState.membersCount.value - return when (membersCount == localUsers.size) { + when (membersCount == localUsers.size) { true -> filter.filter(localUsers, query).also { if (DEBUG) logger.v { "[handleUserLookup] found ${it.size} users" } } @@ -57,7 +59,7 @@ internal class LocalUserLookupHandler( } } catch (e: Exception) { logger.e(e) { "[handleUserLookup] failed: $e" } - return emptyList() + emptyList() } } diff --git a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandler.kt b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandler.kt new file mode 100644 index 00000000000..e34605aee54 --- /dev/null +++ b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandler.kt @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2014-2026 Stream.io Inc. All rights reserved. + * + * Licensed under the Stream License; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://github.com/GetStream/stream-chat-android/blob/main/LICENSE + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 io.getstream.chat.android.ui.common.feature.messages.composer.mention + +import io.getstream.chat.android.client.ChatClient +import io.getstream.chat.android.client.channel.state.ChannelState +import io.getstream.chat.android.models.ChannelCapabilities +import io.getstream.chat.android.models.Role +import io.getstream.chat.android.models.UserGroup +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.StateFlow + +/** + * Aggregates every source the composer needs for mention suggestions into a single ordered [List] of [Mention]. + * + * Each mention type is gated on a matching channel capability (e.g. + * [ChannelCapabilities.NOTIFY_CHANNEL]); types without the capability are skipped entirely + * (no API call, no result). + */ +internal class MentionLookupHandler( + private val chatClient: ChatClient, + private val channelState: StateFlow, + private val userLookupHandler: UserLookupHandler, +) { + + /** + * Returns the mention suggestions for [query] in popup order: + * `@channel`, `@here`, roles (alphabetical), groups (alphabetical), users + * (order is the responsibility of the configured [UserLookupHandler]). + */ + suspend fun handleMentionLookup(query: String): List = coroutineScope { + val capabilities = channelState.value?.channelData?.value?.ownCapabilities.orEmpty() + val getGroups = async { + if (ChannelCapabilities.NOTIFY_GROUP in capabilities) searchGroups(query) else emptyList() + } + val getUsers = async { + if (ChannelCapabilities.CREATE_MENTION in capabilities) { + userLookupHandler.handleUserLookup(query) + } else { + emptyList() + } + } + val getRoles = async { + if (ChannelCapabilities.NOTIFY_ROLE in capabilities) searchRoles(query) else emptyList() + } + + buildList { + if (ChannelCapabilities.NOTIFY_CHANNEL in capabilities && + Mention.Channel.display.matchesMentionQuery(query) + ) { + add(Mention.Channel) + } + if (ChannelCapabilities.NOTIFY_HERE in capabilities && + Mention.Here.display.matchesMentionQuery(query) + ) { + add(Mention.Here) + } + + getRoles.await().forEach { add(Mention.Role(it)) } + getGroups.await().forEach { add(Mention.Group(it)) } + getUsers.await().forEach { add(Mention.User(it)) } + } + } + + private suspend fun searchGroups(query: String): List = + if (query.isEmpty()) { + emptyList() + } else { + val team = channelState.value?.channelData?.value?.team?.takeIf(String::isNotEmpty) + chatClient.searchUserGroups(query = query, teamId = team).await() + .getOrNull() + .orEmpty() + .sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, UserGroup::name)) + } + + private suspend fun searchRoles(query: String): List = + if (query.isEmpty()) { + emptyList() + } else { + chatClient.searchRoles(query = query).await() + .getOrNull() + .orEmpty() + .map(Role::name) + .sortedWith(String.CASE_INSENSITIVE_ORDER) + } + + companion object { + private fun String.matchesMentionQuery(query: String): Boolean = + query.isEmpty() || startsWith(query, ignoreCase = true) + } +} diff --git a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/UserLookupHandler.kt b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/UserLookupHandler.kt index 60899102d23..df38f291629 100644 --- a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/UserLookupHandler.kt +++ b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/UserLookupHandler.kt @@ -24,8 +24,7 @@ import io.getstream.chat.android.ui.common.feature.messages.composer.query.forma */ public fun interface UserLookupHandler { /** - * Performs users lookup by given [query] in suspend way. - * It's executed on background, so it can perform heavy operations. + * Performs users lookup by given [query]. * * @param query String as user input for lookup algorithm. * @return List of users as result of lookup. diff --git a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/query/filter/DefaultUserQueryFilter.kt b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/query/filter/DefaultUserQueryFilter.kt index bf11f9568ae..0ef3d7383b4 100644 --- a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/query/filter/DefaultUserQueryFilter.kt +++ b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/query/filter/DefaultUserQueryFilter.kt @@ -28,9 +28,11 @@ import io.getstream.log.taggedLogger /** * Default [QueryFilter] for [User] objects used in mention suggestions. * - * Keeps only users whose normalized name (or id) contains the normalized query as a substring, - * then sorts results by match position so prefix matches appear first. Normalization applies - * lowercasing, diacritics removal, and optional transliteration. + * Matches by whitespace-tokenizing the query and the user's name (or id when blank): every word + * except the last must equal at least one name word, and the last word must be a prefix of at + * least one name word. The same name word may satisfy multiple query words. Results are sorted + * alphabetically by normalized name. Normalization applies lowercasing, diacritics removal, and + * optional transliteration. * * @param transliterator The transliterator to use for normalizing strings. */ @@ -48,15 +50,30 @@ public class DefaultUserQueryFilter( override fun filter(items: List, query: String): List { logger.d { "[filter] query: \"$query\", items.size: ${items.size}" } - val formattedQuery = queryFormatter.format(query) - if (formattedQuery.isEmpty()) return items + val queryTokens = queryFormatter.format(query).tokenize() return items - .mapNotNull { user -> - val formattedName = queryFormatter.format(query = user.name.ifBlank(user::id)) - val index = formattedName.indexOf(formattedQuery) - if (index >= 0) user to index else null - } - .sortedBy { (_, index) -> index } + .map { user -> user to queryFormatter.format(user.name.ifBlank(user::id)) } + .filter { (_, formattedName) -> matches(queryTokens, formattedName) } + .sortedBy { (_, formattedName) -> formattedName } .map { (user, _) -> user } } + + private fun matches(queryTokens: List, formattedName: String): Boolean { + if (queryTokens.isEmpty()) return true + val nameTokens = formattedName.tokenize() + val lastIndex = queryTokens.lastIndex + return queryTokens.withIndex().all { (i, token) -> + if (i == lastIndex) { + nameTokens.any { it.startsWith(token) } + } else { + nameTokens.any { it == token } + } + } + } + + private fun String.tokenize(): List = split(WHITESPACE).filter(String::isNotEmpty) + + private companion object { + private val WHITESPACE = "\\s+".toRegex() + } } diff --git a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState.kt b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState.kt index f83b5c5f44c..cb508dbc6cf 100644 --- a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState.kt +++ b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/state/messages/composer/MessageComposerState.kt @@ -36,6 +36,7 @@ import io.getstream.chat.android.ui.common.state.messages.MessageMode * @param action The currently active [MessageAction]. * @param validationErrors The list of validation errors. * @param mentionSuggestions The list of users that can be used to autocomplete the mention. + * Prefer [suggestedMentions] for new code. * @param commandSuggestions The list of commands to be displayed in the command suggestion popup. * @param linkPreview The link found in [inputValue] to be previewed, or `null` when there is none. * @param coolDownTime The amount of time left until the user is allowed to send the next message. @@ -51,12 +52,19 @@ import io.getstream.chat.android.ui.common.state.messages.MessageMode * editable unless the user doesn't have proper [ChannelCapabilities] to send messages, otherwise it's disabled. * @param selectedMentions The list of selected mentions in the current input. * @param activeCommand The command that is currently active (selected from the suggestion popup). + * @param suggestedMentions [Mention]s to render in the suggestion popup. Prefer this over + * [mentionSuggestions] for new code. */ public data class MessageComposerState @JvmOverloads constructor( val inputValue: String = "", val attachments: List = emptyList(), val action: MessageAction? = null, val validationErrors: List = emptyList(), + @Deprecated( + message = "Use suggestedMentions, which carries every mention type.", + replaceWith = ReplaceWith("suggestedMentions"), + level = DeprecationLevel.WARNING, + ) val mentionSuggestions: List = emptyList(), val commandSuggestions: List = emptyList(), val linkPreview: LinkPreview? = null, @@ -71,4 +79,5 @@ public data class MessageComposerState @JvmOverloads constructor( val sendEnabled: Boolean = true, val selectedMentions: Set = emptySet(), val activeCommand: Command? = null, + val suggestedMentions: List = emptyList(), ) diff --git a/stream-chat-android-ui-common/src/main/res/drawable/stream_design_ic_megaphone.xml b/stream-chat-android-ui-common/src/main/res/drawable/stream_design_ic_megaphone.xml new file mode 100644 index 00000000000..7702a5ec1c9 --- /dev/null +++ b/stream-chat-android-ui-common/src/main/res/drawable/stream_design_ic_megaphone.xml @@ -0,0 +1,30 @@ + + + + + diff --git a/stream-chat-android-ui-common/src/main/res/drawable/stream_design_ic_role.xml b/stream-chat-android-ui-common/src/main/res/drawable/stream_design_ic_role.xml new file mode 100644 index 00000000000..9b3fd3ea022 --- /dev/null +++ b/stream-chat-android-ui-common/src/main/res/drawable/stream_design_ic_role.xml @@ -0,0 +1,29 @@ + + + + + diff --git a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/MessageComposerControllerTest.kt b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/MessageComposerControllerTest.kt index eb5789e81c1..91579ce5531 100644 --- a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/MessageComposerControllerTest.kt +++ b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/MessageComposerControllerTest.kt @@ -36,8 +36,10 @@ import io.getstream.chat.android.models.Message import io.getstream.chat.android.models.MessageModerationAction import io.getstream.chat.android.models.MessageModerationDetails import io.getstream.chat.android.models.MessageType +import io.getstream.chat.android.models.Role import io.getstream.chat.android.models.SyncStatus import io.getstream.chat.android.models.User +import io.getstream.chat.android.models.UserGroup import io.getstream.chat.android.randomAttachment import io.getstream.chat.android.randomCommand import io.getstream.chat.android.randomMessage @@ -75,6 +77,7 @@ import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.RegisterExtension import org.mockito.kotlin.any +import org.mockito.kotlin.anyOrNull import org.mockito.kotlin.argumentCaptor import org.mockito.kotlin.doAnswer import org.mockito.kotlin.doReturn @@ -1678,6 +1681,60 @@ internal class MessageComposerControllerTest { assertEquals(emptyList(), message.mentionedUsersIds) } + @Test + fun `Given mentions of every type When buildNewMessage called Then message carries each mention field`() = runTest { + // Given + val controller = Fixture() + .givenAppSettings(mock()) + .givenAudioPlayer(mock()) + .givenClientState(randomUser()) + .givenGlobalState() + .givenChannelState() + .get() + val user = User(id = "u1", name = "Alice") + val group = UserGroup(id = "g1", name = "platform") + controller.selectMention(Mention.User(user)) + controller.selectMention(Mention.Channel) + controller.selectMention(Mention.Here) + controller.selectMention(Mention.Role("admin")) + controller.selectMention(Mention.Group(group)) + + // When + val message = controller.buildNewMessage("@Alice @channel @here @admin @platform hi") + + // Then + assertEquals(listOf("u1"), message.mentionedUsersIds) + assertTrue(message.mentionedChannel) + assertTrue(message.mentionedHere) + assertEquals(listOf("admin"), message.mentionedRoles) + assertEquals(listOf(group), message.mentionedGroups) + } + + @Test + fun `Given mention tokens removed from text When buildNewMessage called Then those mention fields are cleared`() = runTest { + // Given + val controller = Fixture() + .givenAppSettings(mock()) + .givenAudioPlayer(mock()) + .givenClientState(randomUser()) + .givenGlobalState() + .givenChannelState() + .get() + controller.selectMention(Mention.Channel) + controller.selectMention(Mention.Here) + controller.selectMention(Mention.Role("admin")) + controller.selectMention(Mention.Group(UserGroup(id = "g1", name = "platform"))) + + // When — only @here survives in the final text + val message = controller.buildNewMessage("just @here") + + // Then + assertFalse(message.mentionedChannel) + assertTrue(message.mentionedHere) + assertTrue(message.mentionedRoles.isEmpty()) + assertTrue(message.mentionedGroups.isEmpty()) + } + @Test fun `Given an active command When clearData called Then activeCommand is null`() = runTest { // Given @@ -2814,6 +2871,10 @@ internal class MessageComposerControllerTest { fun get(): MessageComposerController { whenever(chatClient.inheritScope(any())) doReturn inheritedScope + whenever(chatClient.searchUserGroups(any(), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())) doReturn + emptyList().asCall() + whenever(chatClient.searchRoles(any(), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())) doReturn + emptyList().asCall() return MessageComposerController( channelCid = cid, diff --git a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandlerTest.kt b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandlerTest.kt new file mode 100644 index 00000000000..93944090bbd --- /dev/null +++ b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandlerTest.kt @@ -0,0 +1,167 @@ +/* + * Copyright (c) 2014-2026 Stream.io Inc. All rights reserved. + * + * Licensed under the Stream License; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://github.com/GetStream/stream-chat-android/blob/main/LICENSE + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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 io.getstream.chat.android.ui.common.feature.messages.composer.mention + +import io.getstream.chat.android.client.ChatClient +import io.getstream.chat.android.client.channel.state.ChannelState +import io.getstream.chat.android.models.ChannelCapabilities +import io.getstream.chat.android.models.ChannelData +import io.getstream.chat.android.models.Role +import io.getstream.chat.android.models.User +import io.getstream.chat.android.models.UserGroup +import io.getstream.chat.android.test.asCall +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.test.runTest +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test +import org.mockito.kotlin.any +import org.mockito.kotlin.anyOrNull +import org.mockito.kotlin.eq +import org.mockito.kotlin.mock +import org.mockito.kotlin.never +import org.mockito.kotlin.verify +import org.mockito.kotlin.whenever + +internal class MentionLookupHandlerTest { + + @Test + fun `Empty query emits only channel and here without hitting the network`() = runTest { + val fixture = Fixture().build() + + val result = fixture.handler.handleMentionLookup(query = "") + + assertEquals(listOf(Mention.Channel, Mention.Here), result) + verify(fixture.chatClient, never()).searchUserGroups(any(), any(), any(), any(), any()) + verify(fixture.chatClient, never()).searchRoles(any(), any(), any(), any(), any()) + } + + @Test + fun `Prefix matching here but not channel emits only here`() = runTest { + val fixture = Fixture().build() + + val result = fixture.handler.handleMentionLookup(query = "he") + + assertEquals(listOf(Mention.Here), result) + } + + @Test + fun `Each matching source contributes a mention`() = runTest { + val group = UserGroup(id = "g1", name = "platform") + val role = Role(name = "admin") + val user = User(id = "u1", name = "Alice") + val fixture = Fixture() + .withGroupSearchResult(listOf(group)) + .withRoleSearchResult(listOf(role)) + .withUserLookupResult(listOf(user)) + .build() + + // 'c' matches `channel` (prefix) but not `here`. + val result = fixture.handler.handleMentionLookup(query = "c") + + assertEquals( + listOf( + Mention.Channel, + Mention.Role(role.name), + Mention.Group(group), + Mention.User(user), + ), + result, + ) + } + + @Test + fun `Mention types without the matching capability are skipped`() = runTest { + val fixture = Fixture() + .withGroupSearchResult(listOf(UserGroup(id = "g1", name = "platform"))) + .withRoleSearchResult(listOf(Role(name = "admin"))) + .withUserLookupResult(listOf(User(id = "u1", name = "Alice"))) + .withOwnCapabilities(emptySet()) + .build() + + val result = fixture.handler.handleMentionLookup(query = "a") + + assertEquals(emptyList(), result) + verify(fixture.chatClient, never()).searchUserGroups(any(), any(), any(), any(), any()) + verify(fixture.chatClient, never()).searchRoles(any(), any(), any(), any(), any()) + } + + @Test + fun `User mentions need the create-mention capability`() = runTest { + val user = User(id = "u1", name = "Alice") + val fixture = Fixture() + .withUserLookupResult(listOf(user)) + .withOwnCapabilities(setOf(ChannelCapabilities.NOTIFY_CHANNEL)) + .build() + + val result = fixture.handler.handleMentionLookup(query = "a") + + assertEquals(emptyList(), result) + } + + @Test + fun `Group search forwards the channel's team when present`() = runTest { + val fixture = Fixture().withTeam("ops").build() + + fixture.handler.handleMentionLookup(query = "plat") + + verify(fixture.chatClient).searchUserGroups(eq("plat"), anyOrNull(), eq("ops"), anyOrNull(), anyOrNull()) + } + + private class Fixture { + private val chatClient: ChatClient = mock() + private var groupSearchResult: List = emptyList() + private var roleSearchResult: List = emptyList() + private var userLookupResult: List = emptyList() + private var ownCapabilities: Set = setOf( + ChannelCapabilities.CREATE_MENTION, + ChannelCapabilities.NOTIFY_CHANNEL, + ChannelCapabilities.NOTIFY_HERE, + ChannelCapabilities.NOTIFY_ROLE, + ChannelCapabilities.NOTIFY_GROUP, + ) + private var team: String = "" + + fun withGroupSearchResult(groups: List) = apply { groupSearchResult = groups } + fun withRoleSearchResult(roles: List) = apply { roleSearchResult = roles } + fun withUserLookupResult(users: List) = apply { userLookupResult = users } + fun withOwnCapabilities(capabilities: Set) = apply { ownCapabilities = capabilities } + fun withTeam(team: String) = apply { this.team = team } + + fun build(): Bundle { + whenever(chatClient.searchUserGroups(any(), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())) + .thenReturn(groupSearchResult.asCall()) + whenever(chatClient.searchRoles(any(), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())) + .thenReturn(roleSearchResult.asCall()) + val channelData = ChannelData( + id = "c1", + type = "messaging", + team = team, + ownCapabilities = ownCapabilities, + ) + val state: ChannelState = mock() + whenever(state.channelData).thenReturn(MutableStateFlow(channelData)) + val handler = MentionLookupHandler( + chatClient = chatClient, + channelState = MutableStateFlow(state), + userLookupHandler = { userLookupResult }, + ) + return Bundle(chatClient, handler) + } + } + + private data class Bundle(val chatClient: ChatClient, val handler: MentionLookupHandler) +} diff --git a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/query/filter/DefaultUserQueryFilterTest.kt b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/query/filter/DefaultUserQueryFilterTest.kt index 7d17333ace3..be44767128b 100644 --- a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/query/filter/DefaultUserQueryFilterTest.kt +++ b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/query/filter/DefaultUserQueryFilterTest.kt @@ -16,79 +16,122 @@ package io.getstream.chat.android.ui.common.feature.messages.composer.query.filter +import io.getstream.chat.android.models.User import io.getstream.chat.android.randomUser import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.Arguments +import org.junit.jupiter.params.provider.MethodSource internal class DefaultUserQueryFilterTest { private val filter = DefaultUserQueryFilter() - @Test - fun `empty query returns all users`() { - val users = listOf(user("Alice"), user("Bob")) - - assertEquals(listOf("Alice", "Bob"), filter.filter(users, "").names()) - } - - @Test - fun `no match returns empty list`() { - val users = listOf(user("Alice"), user("Bob")) - - assertEquals(emptyList(), filter.filter(users, "xyz").names()) - } - - @Test - fun `match is case insensitive`() { - val users = listOf(user("Aleksandar Apostolov"), user("Jc Minarro")) - - assertEquals(listOf("Jc Minarro"), filter.filter(users, "JC").names()) - } - - @Test - fun `match ignores diacritics`() { - val users = listOf(user("José"), user("Bob")) - - assertEquals(listOf("José"), filter.filter(users, "jose").names()) - } - - @Test - fun `short query only matches users containing that substring`() { - val users = listOf(user("Aleksandar Apostolov"), user("Jc Minarro")) - - assertEquals(listOf("Jc Minarro"), filter.filter(users, "jc").names()) - } - - @Test - fun `query does not fuzzy match unrelated names`() { - val users = listOf(user("Aleksandar Apostolov"), user("Ara"), user("Abel")) - - assertEquals(listOf("Aleksandar Apostolov"), filter.filter(users, "ale").names()) - } - - @Test - fun `query matches substring in any word`() { - val users = listOf(user("Alice Smith"), user("Bob Jones"), user("Charlie Smith")) - - assertEquals(listOf("Alice Smith", "Charlie Smith"), filter.filter(users, "smith").names()) - } - - @Test - fun `results are sorted by match position`() { - val users = listOf(user("Johann"), user("Anne"), user("Marianne")) - - assertEquals(listOf("Anne", "Johann", "Marianne"), filter.filter(users, "ann").names()) + @ParameterizedTest(name = "[{index}] {0}") + @MethodSource("matchCases") + fun `filter returns the expected matches`( + @Suppress("UNUSED_PARAMETER") description: String, + userNames: List, + query: String, + expected: List, + ) { + val users = userNames.map { randomUser(name = it) } + + assertEquals(expected, filter.filter(users, query).map(User::name)) } @Test fun `falls back to id when name is blank`() { - val users = listOf(randomUser(name = "", id = "alice123"), user("Bob")) + val users = listOf(randomUser(name = "Bob"), randomUser(name = "", id = "alice123")) assertEquals(listOf("alice123", "Bob"), filter.filter(users, "").map { it.name.ifBlank { it.id } }) assertEquals(listOf("alice123"), filter.filter(users, "alice").map { it.id }) } - private fun user(name: String) = randomUser(name = name) - - private fun List.names() = map { it.name } + private companion object { + + @Suppress("LongMethod") + @JvmStatic + fun matchCases(): List = listOf( + Arguments.of( + "empty query returns all users sorted alphabetically", + listOf("Charlie", "Alice", "Bob"), + "", + listOf("Alice", "Bob", "Charlie"), + ), + Arguments.of( + "no match returns empty list", + listOf("Alice", "Bob"), + "xyz", + emptyList(), + ), + Arguments.of( + "match is case insensitive", + listOf("Aleksandar Apostolov", "Jc Minarro"), + "JC", + listOf("Jc Minarro"), + ), + Arguments.of( + "match ignores diacritics", + listOf("José", "Bob"), + "jose", + listOf("José"), + ), + Arguments.of( + "last query word prefix-matches any name word", + listOf("Alice Smith", "Bob Jones", "Charlie Smith"), + "smith", + listOf("Alice Smith", "Charlie Smith"), + ), + Arguments.of( + "last query word must be a prefix, not a substring", + listOf("Hart", "Arnold", "Garrick"), + "ar", + listOf("Arnold"), + ), + Arguments.of( + "single-word prefix matches the only/last word", + listOf("First Last"), + "L", + listOf("First Last"), + ), + Arguments.of( + "full match plus prefix on the last word matches", + listOf("First Last"), + "First L", + listOf("First Last"), + ), + Arguments.of( + "full-match words may appear in any order", + listOf("First Last"), + "Last Fi", + listOf("First Last"), + ), + Arguments.of( + "non-final words require a full match, not a substring", + listOf("First Last"), + "t L", + emptyList(), + ), + Arguments.of( + "the same name word may satisfy multiple query words", + listOf("First Last"), + "first first", + listOf("First Last"), + ), + Arguments.of( + "the same name word may satisfy a full match and a final prefix", + listOf("First Last"), + "first f", + listOf("First Last"), + ), + Arguments.of( + "results are sorted alphabetically by normalized name", + listOf("Charlie Smith", "Alice Smith", "Bob Smith"), + "smith", + listOf("Alice Smith", "Bob Smith", "Charlie Smith"), + ), + ) + } } diff --git a/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/viewmodels/messages/MessageComposerViewModelTest.kt b/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/viewmodels/messages/MessageComposerViewModelTest.kt index c72d7a56f2c..eb9c3f95db5 100644 --- a/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/viewmodels/messages/MessageComposerViewModelTest.kt +++ b/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/viewmodels/messages/MessageComposerViewModelTest.kt @@ -28,6 +28,7 @@ import io.getstream.chat.android.models.App import io.getstream.chat.android.models.AppSettings import io.getstream.chat.android.models.Attachment import io.getstream.chat.android.models.Channel +import io.getstream.chat.android.models.ChannelCapabilities import io.getstream.chat.android.models.ChannelData import io.getstream.chat.android.models.Command import io.getstream.chat.android.models.Config @@ -317,7 +318,10 @@ internal class MessageComposerViewModelTest { val viewModel = Fixture() .givenCurrentUser() .givenChannelQuery() - .givenChannelState(members = listOf(Member(user = user1), Member(user = user2))) + .givenChannelState( + channelData = channelDataWith(ChannelCapabilities.CREATE_MENTION), + members = listOf(Member(user = user1), Member(user = user2)), + ) .get() // Handling mentions on input changes is debounced so we advance time until idle to make sure @@ -334,7 +338,10 @@ internal class MessageComposerViewModelTest { val viewModel = Fixture() .givenCurrentUser() .givenChannelQuery() - .givenChannelState(members = listOf(Member(user = user1), Member(user = user2))) + .givenChannelState( + channelData = channelDataWith(ChannelCapabilities.CREATE_MENTION), + members = listOf(Member(user = user1), Member(user = user2)), + ) .get() // Handling mentions on input changes is debounced so we advance time until idle to make sure @@ -444,6 +451,12 @@ internal class MessageComposerViewModelTest { companion object { + private fun channelDataWith(vararg capabilities: String) = ChannelData( + type = "messaging", + id = "123", + ownCapabilities = capabilities.toSet(), + ) + val user1 = User( id = "Jc", name = "Jc Miñarro", From a3ec49bb61252215b8ce6223b4c8bceac86933e0 Mon Sep 17 00:00:00 2001 From: Gian <47775302+gpunto@users.noreply.github.com> Date: Fri, 19 Jun 2026 15:35:55 +0200 Subject: [PATCH 2/3] Address PR feedback --- .../ui/messages/composer/MessageComposer.kt | 8 ++++++-- .../composer/mention/MentionLookupHandler.kt | 17 ++++++---------- .../mention/MentionLookupHandlerTest.kt | 20 ++++--------------- 3 files changed, 16 insertions(+), 29 deletions(-) diff --git a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/MessageComposer.kt b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/MessageComposer.kt index 789cfc3b88f..cb343f3a7be 100644 --- a/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/MessageComposer.kt +++ b/stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/messages/composer/MessageComposer.kt @@ -102,7 +102,9 @@ import io.getstream.chat.android.ui.common.utils.MediaStringUtil * @param onCancelLinkPreviewClick Handler when the user taps on the cancel link preview. * @param onUserSelected Legacy handler that fires only when the user taps a user suggestion item. * Kept for backward compatibility; new callers should use [onMentionSelected], which receives every - * mention type including users. + * mention type including users. Note both callbacks fire on a user tap: a custom [onUserSelected] + * runs in addition to [onMentionSelected], so the default [onMentionSelected] still inserts the + * mention. To replace the default selection behavior, override [onMentionSelected]. * @param onCommandSelected Handler for every tap on a command suggestion item, including taps on * disabled items. The default emits [MessageComposerViewEvent.CommandUnavailable] on * [MessageComposerViewModel.events] when the command is not available for the current action; @@ -244,7 +246,9 @@ internal val LocalMessageComposerSnackbarHostState = * @param onCancelLinkPreviewClick Handler when the user taps on the cancel link preview. * @param onUserSelected Legacy handler that fires only when the user taps a user suggestion item. * Kept for backward compatibility; new callers should use [onMentionSelected], which receives every - * mention type including users. + * mention type including users. Note both callbacks fire on a user tap: a custom [onUserSelected] + * runs in addition to [onMentionSelected], so the default [onMentionSelected] still inserts the + * mention. To replace the default selection behavior, override [onMentionSelected]. * @param onCommandSelected Handler when the user taps on a command suggestion item, including taps * on disabled items. * @param onMentionSelected Handler when the user taps any mention suggestion item. Canonical diff --git a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandler.kt b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandler.kt index e34605aee54..2b8e3cc066a 100644 --- a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandler.kt +++ b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandler.kt @@ -28,9 +28,8 @@ import kotlinx.coroutines.flow.StateFlow /** * Aggregates every source the composer needs for mention suggestions into a single ordered [List] of [Mention]. * - * Each mention type is gated on a matching channel capability (e.g. - * [ChannelCapabilities.NOTIFY_CHANNEL]); types without the capability are skipped entirely - * (no API call, no result). + * Non-user mentions are gated on a matching channel capability (e.g. [ChannelCapabilities.NOTIFY_CHANNEL]); + * types without the capability are skipped entirely (no API call, no result). User mentions are always looked up. */ internal class MentionLookupHandler( private val chatClient: ChatClient, @@ -48,13 +47,9 @@ internal class MentionLookupHandler( val getGroups = async { if (ChannelCapabilities.NOTIFY_GROUP in capabilities) searchGroups(query) else emptyList() } - val getUsers = async { - if (ChannelCapabilities.CREATE_MENTION in capabilities) { - userLookupHandler.handleUserLookup(query) - } else { - emptyList() - } - } + // User suggestions are intentionally not gated on CREATE_MENTION: on Permissions V1 regular members lack + // that capability, yet user mentions still work since the server only enforces it on send under V2. + val getUsers = async { userLookupHandler.handleUserLookup(query) } val getRoles = async { if (ChannelCapabilities.NOTIFY_ROLE in capabilities) searchRoles(query) else emptyList() } @@ -95,7 +90,7 @@ internal class MentionLookupHandler( chatClient.searchRoles(query = query).await() .getOrNull() .orEmpty() - .map(Role::name) + .mapTo(mutableSetOf(), Role::name) .sortedWith(String.CASE_INSENSITIVE_ORDER) } diff --git a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandlerTest.kt b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandlerTest.kt index 93944090bbd..8de78ce4f44 100644 --- a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandlerTest.kt +++ b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/feature/messages/composer/mention/MentionLookupHandlerTest.kt @@ -84,34 +84,22 @@ internal class MentionLookupHandlerTest { } @Test - fun `Mention types without the matching capability are skipped`() = runTest { + fun `Non-user mentions without the matching capability are skipped`() = runTest { + val user = User(id = "u1", name = "Alice") val fixture = Fixture() .withGroupSearchResult(listOf(UserGroup(id = "g1", name = "platform"))) .withRoleSearchResult(listOf(Role(name = "admin"))) - .withUserLookupResult(listOf(User(id = "u1", name = "Alice"))) + .withUserLookupResult(listOf(user)) .withOwnCapabilities(emptySet()) .build() val result = fixture.handler.handleMentionLookup(query = "a") - assertEquals(emptyList(), result) + assertEquals(listOf(Mention.User(user)), result) verify(fixture.chatClient, never()).searchUserGroups(any(), any(), any(), any(), any()) verify(fixture.chatClient, never()).searchRoles(any(), any(), any(), any(), any()) } - @Test - fun `User mentions need the create-mention capability`() = runTest { - val user = User(id = "u1", name = "Alice") - val fixture = Fixture() - .withUserLookupResult(listOf(user)) - .withOwnCapabilities(setOf(ChannelCapabilities.NOTIFY_CHANNEL)) - .build() - - val result = fixture.handler.handleMentionLookup(query = "a") - - assertEquals(emptyList(), result) - } - @Test fun `Group search forwards the channel's team when present`() = runTest { val fixture = Fixture().withTeam("ops").build() From 850654082099bcd946f52b88f14d29596d5da2e0 Mon Sep 17 00:00:00 2001 From: Gian <47775302+gpunto@users.noreply.github.com> Date: Fri, 19 Jun 2026 16:07:12 +0200 Subject: [PATCH 3/3] Stub member query in non-user mention tests so user lookup returns empty --- .../viewmodel/messages/MessageComposerViewModelTest.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModelTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModelTest.kt index 373e71c9678..5acdf1031bf 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModelTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/viewmodel/messages/MessageComposerViewModelTest.kt @@ -427,6 +427,7 @@ internal class MessageComposerViewModelTest { .givenChannelState(channelData = channelDataWith(capability)) .givenRoleSearchResult(roles) .givenGroupSearchResult(groups) + .givenNoMemberQueryResult() .get() viewModel.setMessageInput(query) @@ -562,6 +563,11 @@ internal class MessageComposerViewModelTest { .doReturn(groups.asCall()) } + fun givenNoMemberQueryResult() = apply { + whenever(chatClient.queryMembers(any(), any(), any(), any(), any(), any(), any())) + .doReturn(emptyList().asCall()) + } + fun get(): MessageComposerViewModel { return MessageComposerViewModel( messageComposerController = MessageComposerController(